Add new attachment

Only authorized users are allowed to upload new attachments.

List of attachments

Kind Attachment Name Size Version Date Modified Author Change note
png
ALLOC.png 346.4 kB 1 15-Aug-2017 20:14 Roland B. Wassenberg ALLOC.png
jpg
Disk-sticker.jpg 145.8 kB 1 15-Aug-2017 20:16 Roland B. Wassenberg Disk-sticker.jpg
jpg
Manual-Disk.jpg 143.8 kB 1 15-Aug-2017 20:17 Roland B. Wassenberg Manual-Disk.jpg
jpg
Manual-example.jpg 200.1 kB 1 15-Aug-2017 20:17 Roland B. Wassenberg Manual-example.jpg
jpg
Manual.jpg 16.6 kB 1 15-Aug-2017 18:32 Roland B. Wassenberg Manual.jpg
pdf
PL65-Manual.m.pdf 495.8 kB 1 11-Jun-2023 21:45 Administrator PL65_Manual.m.pdf, reworked 2016 version by Petr Antos, antos.petr[at]gmail.com
pdf
PL65-Manual.pdf 6,799.0 kB 1 15-Aug-2017 19:17 Roland B. Wassenberg PL65-Manual.pdf
atr
PL65_Compiler_SpartaDOS_X_33a_... 368.3 kB 1 15-Aug-2017 20:15 Roland B. Wassenberg PL65_Compiler_SpartaDOS_X_33a_360.atr
jpg
Startscreen.jpg 63.4 kB 1 15-Aug-2017 18:14 Roland B. Wassenberg Startscreen.jpg
atr
pl65-fixed.atr 184.0 kB 1 15-Aug-2017 20:15 Roland B. Wassenberg pl65-fixed.atr
atr
pl65.atr 184.0 kB 1 15-Aug-2017 18:14 Roland B. Wassenberg pl65.atr
zip
pl65src.zip 38.1 kB 1 15-Aug-2017 18:15 Roland B. Wassenberg pl65src.zip

This page (revision-19) was last changed on 11-Jun-2023 21:50 by Administrator  

This page was created on 15-Aug-2017 18:14 by Roland B. Wassenberg

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Difference between version and

At line 1 changed 2 lines
!!!PL65 Copyright (C) 1987 Noahsoft
Here's a working disk image of PL65 for anyone who wants to try what must be the rarest of Atari 8-bit languages. To use it, boot with SpartaDOS (an X cart image in one of the emulators is a good development environment) then run PL65.COM and choose from the various menu options. SAMPLE.PRG is a useful example program to figure out some of the finer points of the language (there's no manual on the disk) and S.OBJ is the compiled source. Little or no third-party documentation exists and I don't have a manual. I have one in-depth magazine article (in 8:16, BaPAUG's magazine, written by Simon Trew).
!!!PL65
Copyright (C) 1987 Noahsoft
At line 4 added 9 lines
!Background
PL65, like the better-known [Action], is a high-level ALGOL-derived language intended to produce high-performance code in a more readable format than [assembler]. The two languages share much in common in overall terms and even syntax and structure. The main difference is that PL65 includes a STRING type, something Action! lacked, but like Action!, PL65 also lacks a FLOAT type.
One unique feature of PL65 is that it includes two full-screen editors. The main editor is KED, and includes modern features like indentation support, search and replace, and block copy/paste. A second editor, the "micro editor", is included in the compiler program, allowing you to make minor changes without having to switch programs.
PL65 allows libraries to be referenced in a program using the INCLUDE directive, in a fashion largely identical to C's #include. However, it also includes the LINK command, normally placed at the end of a file, which allows several files to be stitched together into one larger file. The difference is that INCLUDE begins compiling the referenced file when it is seen in the code, whereas LINK occurs only when the current file is completely compiled, even if the LINK is placed higher in the code.
Here's a working disk image of PL65 for anyone who wants to try what must be the rarest of Atari 8-bit languages. To use it, boot with SpartaDOS (an X cart image in one of the emulators is a good development environment) then run PL65.COM and choose from the various menu options. SAMPLE.PRG is a useful example program to figure out some of the finer points of the language (there's no manual on the disk) and S.OBJ is the compiled source. Little or no third-party documentation exists and I don't have a manual. I have one in-depth magazine article (in 8:16, BaPAUG's magazine, written by Simon Trew). The package consists of a compiler, editor, library and a sample game.
At line 15 added 2 lines
* [pl65-fixed.atr] ; Thank you ddez from AtariAge for fixing the existing image! :-)
* [PL65_Compiler_SpartaDOS_X_33a_360.atr] ; Thank you 576XE from AtariAge for providing this version! :-)
At line 21 added 3 lines
!!Manual
* [PL65-Manual.pdf] ; size: 6.8 MB ; Thank you so much spookt from AtariAge for your help in this case and MrFish for the post processing. :-)
At line 11 changed one line
[PL65 at AtariAge|http://atariage.com/forums/topic/106821-pl65-cracked/]
* [PL65 at AtariAge|http://atariage.com/forums/topic/106821-pl65-cracked/]
* [PL65 'cracked' at AtariAge|http://atariage.com/forums/topic/106821-pl65-cracked/?hl=PL65]
* [Complete manual of PL65 at AtariAge|http://atariage.com/forums/topic/137894-complete-pl65-manual/#entry1666731]
* [PL65 Problem - WRTSTR/WRTLN at AtariAge|http://atariage.com/forums/topic/191920-pl65-problem-wrtstrwrtln/]
* [Software ad at AtariAge|http://atariage.com/forums/topic/234335-fs-pl65-noahsoft-language-for-atari-8-bit-computers-extremely-rare/]
At line 32 added 6 lines
[{Image src='Manual-Disk.jpg' width=553 height=356 }]
PL65 manual and disk\\
\\
[{Image src='Disk-sticker.jpg' width=602 height=241 }]
PL65 disk sticker\\
\\
At line 18 changed one line
PL65 manual cover
PL65 manual cover\\
\\
[{Image src='Manual-example.jpg' width=571 height=394 }]
PL65 manual example
At line 52 added one line
Thank you 576XE from AtariAge!
At line 137 added 147 lines
{{{
!====================================!
! ALLOC.LIB Memory allocation library
! for PL65 compiler !
! First-fit algorythm for malloc/free
!------------------------------------!
! by Evgeny Zolotarev (aka 576XE),2017
!====================================!
CONST NULL=0,FRED=1,USED=0
CONST MEMSTART=$4000,MEMEND=$BC00
CONST MEMSIZ=MEMEND-MEMSTART
CONST METALEN=6,BYTSZ=1,INTSZ=2
!------------------------------------!
POINTER gpP INT gpV BASED gpP
POINTER freList
!------------------------------------!
FUNC getFlag(INT adr)
BEGIN gpP=adr END gpV
!------------------------------------!
FUNC getSize(INT adr)
BEGIN gpP=adr+2 END gpV
!------------------------------------!
FUNC getNext(INT adr)
BEGIN gpP=adr+4 END gpV
!------------------------------------!
PROC setFlag(INT adr,flag)
BEGIN gpP=adr gpV=flag END
!------------------------------------!
PROC setSize(INT adr,size)
BEGIN gpP=adr+2 gpV=size END
!------------------------------------!
PROC setNext(INT adr,next)
BEGIN gpP=adr+4 gpV=next END
!------------------------------------!
PROC memInit()
BEGIN
setFlag(freList,FRED)
setSize(freList,MEMSIZ-METALEN)
setNext(freList,NULL)
END
!------------------------------------!
PROC split(POINTER fits INT size)
POINTER new INT blkSiz
BEGIN
blkSiz=METALEN+size
new=fits+blkSiz
setFlag(new,FRED)
setSize(new,getSize(fits)-blkSiz)
setNext(new,getNext(fits))
setFlag(fits,USED)
setSize(fits,size)
setNext(fits,new)
END
!------------------------------------!
FUNC alloc(INT nBytes)
POINTER curr,result
BEGIN
IF (getSize(freList)=0) THEN
memInit()
WRTLN("Memory initialized") CR()
ENDIF
curr=freList
WHILE ((getSize(curr)<nBytes OR getFlag(curr)=USED) AND getNext(curr)<>NULL) DO
curr=getNext(curr)
WRTLN("- Search for fitting block...")
ENDWHILE
IF getSize(curr)=nBytes THEN
setFlag(curr,USED)
result=curr+METALEN
WRTLN("+ Exact fitting block allocated")
RETURN result
ENDIF
IF getSize(curr)>nBytes+METALEN THEN
split(curr,nBytes)
result=curr+METALEN
BASE=16
WRTSTR("Block $") WRITE(result) WRTSTR("-$") WRITE(result+nBytes)
WRTSTR(" size=") BASE=10 WRITE(getSize(curr)) WRTLN(" allocated")
RETURN result
ELSE
result=NULL
WRTLN("- No sufficient memory to allocate")
ENDIF
END result
!------------------------------------!
PROC merge()
POINTER curr
INT size,next
BEGIN
curr=freList
WHILE getNext(curr)<>NULL DO
IF (getFlag(curr) AND getFlag(getNext(curr))) THEN
size=getSize(curr)+getSize(getNext(curr))+METALEN
setSize(curr,size)
next=getNext(getNext(curr))
setNext(curr,next)
ENDIF
curr=getNext(curr)
ENDWHILE
END
!------------------------------------!
PROC free(POINTER ptr)
POINTER curr
BEGIN
IF ptr>=MEMSTART AND ptr<=MEMEND THEN
curr=ptr
curr=curr-METALEN
setFlag(curr,FRED)
merge()
WRTLN("+ Block freed, space merged")
ELSE
WRTLN("Please provide a valid allocated pointer")
ENDIF
END
!====================================!
! End of Library
ENDFILE
}}}
{{{
INCLUDE TERMINAL.LIB
INCLUDE ALLOC.LIB
MAIN()
POINTER p,r,k
POINTER q,w
BEGIN
freList=MEMSTART
p=alloc(100*INTSZ)
q=alloc(250*BYTSZ)
r=alloc(1000*INTSZ)
free(p)
w=alloc(700)
free(r)
k=alloc(500*INTSZ)
CR() WRTLN("Allocation and deallocation")
WRTLN("are done successfully!")
END
}}}
Version Date Modified Size Author Changes ... Change note
19 11-Jun-2023 21:50 9.493 kB Administrator to previous
18 03-Feb-2023 16:21 9.427 kB Maury Markowitz to previous | to last
17 03-May-2018 22:17 9.427 kB Maury Markowitz to previous | to last
16 03-May-2018 20:12 9.369 kB Maury Markowitz to previous | to last ACTION ==> Action
15 01-May-2018 03:31 9.37 kB Roland B. Wassenberg to previous | to last
14 28-Apr-2018 14:48 9.37 kB Maury Markowitz to previous | to last
13 28-Apr-2018 14:47 9.435 kB Maury Markowitz to previous | to last
12 28-Apr-2018 14:09 8.188 kB Maury Markowitz to previous | to last
11 15-Aug-2017 20:29 8.185 kB Roland B. Wassenberg to previous | to last
10 15-Aug-2017 20:23 7.936 kB Roland B. Wassenberg to previous | to last
9 15-Aug-2017 20:12 4.182 kB Roland B. Wassenberg to previous | to last
8 15-Aug-2017 19:18 4.111 kB Roland B. Wassenberg to previous | to last
7 15-Aug-2017 19:16 4.072 kB Roland B. Wassenberg to previous | to last
6 15-Aug-2017 19:09 4.222 kB Roland B. Wassenberg to previous | to last
5 15-Aug-2017 18:53 4.104 kB Roland B. Wassenberg to previous | to last
4 15-Aug-2017 18:36 3.495 kB Roland B. Wassenberg to previous | to last
3 15-Aug-2017 18:31 3.42 kB Roland B. Wassenberg to previous | to last
2 15-Aug-2017 18:24 3.225 kB Roland B. Wassenberg to previous | to last
1 15-Aug-2017 18:14 0.648 kB Roland B. Wassenberg to last PL65
« This page (revision-19) was last changed on 11-Jun-2023 21:50 by Administrator  
G’day (anonymous guest) My Prefs
© 2010-2021 AtariWiki
All content in the Wiki is licensed under Creative Commons Share Alike License, unless otherwise noted.
JSPWiki v2.8.3