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.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-18) was last changed on 11-May-2018 15:09 by Maury Markowitz  

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 6 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 34 added one line
Thank you 576XE from AtariAge!
At line 119 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
18 11-May-2018 15:09 9.427 kB Maury Markowitz to previous
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-18) was last changed on 11-May-2018 15:09 by Maury Markowitz