mirror of
https://github.com/GnoConsortium/gno.git
synced 2024-12-27 16:31:19 +00:00
784e3de7cd
passwd, ps, purge, shutdown, stty, upper, and vi. These sources are for the versions of the utils shipped with GNO v2.0.4.
362 lines
4.5 KiB
Plaintext
362 lines
4.5 KiB
Plaintext
MACRO
|
|
&lab LGetPathname &a1,&a2
|
|
&lab pha
|
|
pha
|
|
ph2 &a1(1)
|
|
ph2 &a1(2)
|
|
Tool $1111
|
|
pl4 &a2
|
|
mend
|
|
MACRO
|
|
&lab WriteChar &a1
|
|
&lab ph2 &a1
|
|
Tool $180c
|
|
mend
|
|
MACRO
|
|
&lab WriteLine &a1
|
|
&lab ph4 &a1
|
|
Tool $1a0c
|
|
mend
|
|
MACRO
|
|
&lab WriteString &a1
|
|
&lab ph4 &a1
|
|
Tool $1c0c
|
|
mend
|
|
MACRO
|
|
&lab Int2Hex &a1
|
|
&lab ph2 &a1(1)
|
|
ph4 &a1(2)
|
|
ph2 &a1(3)
|
|
Tool $220b
|
|
mend
|
|
MACRO
|
|
&lab tool &a1
|
|
&lab ldx #&a1
|
|
jsl $e10000
|
|
mend
|
|
MACRO
|
|
&lab ph2 &parm
|
|
lclc &char
|
|
&lab anop
|
|
aif c:&parm=0,.done
|
|
&char amid &parm,1,1
|
|
aif "&char"="#",.immediate
|
|
aif "&char"="@",.at
|
|
aif s:longa=1,.chk
|
|
rep #%00100000
|
|
.chk
|
|
aif "&char"<>"{",.absolute
|
|
&char amid &parm,l:&parm,1
|
|
aif "&char"<>"}",.error
|
|
&parm amid &parm,2,l:&parm-2
|
|
lda (&parm)
|
|
pha
|
|
ago .shorten
|
|
.absolute
|
|
lda &parm
|
|
pha
|
|
ago .shorten
|
|
.immediate
|
|
&parm amid &parm,2,l:&parm-1
|
|
pea &parm
|
|
ago .done
|
|
.at
|
|
&char amid &parm,2,1
|
|
ph&char
|
|
.shorten
|
|
aif s:longa=1,.done
|
|
sep #%00100000
|
|
.done
|
|
mexit
|
|
.error
|
|
mnote "Missing closing '}'",16
|
|
mend
|
|
MACRO
|
|
&lab ph4 &parm
|
|
lclc &char
|
|
lclc &char1
|
|
lclc &char2
|
|
&lab anop
|
|
&char amid &parm,1,1
|
|
aif "&char"="#",.immediate
|
|
aif "&char"="@",.at
|
|
aif s:longa=1,.chk1
|
|
rep #%00100000
|
|
.chk1
|
|
aif "&char"<>"{",.chk2
|
|
&char amid &parm,l:&parm,1
|
|
aif "&char"<>"}",.error
|
|
&parm amid &parm,2,l:&parm-2
|
|
ldy #2
|
|
lda (&parm),y
|
|
pha
|
|
lda (&parm)
|
|
pha
|
|
ago .shorten
|
|
.chk2
|
|
aif "&char"<>"[",.absolute
|
|
ldy #2
|
|
lda &parm,y
|
|
pha
|
|
lda &parm
|
|
pha
|
|
ago .shorten
|
|
.absolute
|
|
lda &parm+2
|
|
pha
|
|
lda &parm
|
|
pha
|
|
ago .shorten
|
|
.at
|
|
&char1 amid &parm,2,1
|
|
&char2 setc &char1
|
|
ph&char1
|
|
aif l:&parm<3,.chk2a
|
|
&char2 amid &parm,3,1
|
|
.chk2a
|
|
ph&char2
|
|
ago .shorten
|
|
.immediate
|
|
&parm amid &parm,2,l:&parm-1
|
|
pea +(&parm)|-16
|
|
pea &parm
|
|
ago .done
|
|
.shorten
|
|
aif s:longa=1,.done
|
|
sep #%00100000
|
|
.done
|
|
mexit
|
|
.error
|
|
mnote "Missing closing '}'",16
|
|
mend
|
|
MACRO
|
|
&lab pl4 &parm
|
|
lclc &char
|
|
lclc &char1
|
|
lclc &char2
|
|
&lab anop
|
|
aif s:longa=1,.start
|
|
rep #%00100000
|
|
.start
|
|
&char amid &parm,1,1
|
|
aif "&char"<>"{",.chk
|
|
&char amid &parm,l:&parm,1
|
|
aif "&char"<>"}",.error
|
|
&parm amid &parm,2,l:&parm-2
|
|
pla
|
|
sta (&parm)
|
|
ldy #2
|
|
pla
|
|
sta (&parm),y
|
|
ago .shorten
|
|
.chk
|
|
aif "&char"<>"[",.chk2
|
|
pla
|
|
sta &parm
|
|
ldy #2
|
|
pla
|
|
sta &parm,y
|
|
ago .shorten
|
|
.chk2
|
|
aif "&char"<>"@",.absolute
|
|
&char1 amid &parm,2,1
|
|
&char2 setc &char1
|
|
pl&char1
|
|
aif l:&parm<3,.chk2a
|
|
&char2 amid &parm,3,1
|
|
.chk2a
|
|
pl&char2
|
|
ago .shorten
|
|
.absolute
|
|
pla
|
|
sta &parm
|
|
pla
|
|
sta &parm+2
|
|
.shorten
|
|
aif s:longa=1,.done
|
|
sep #%00100000
|
|
.done
|
|
mexit
|
|
.error
|
|
mnote "Missing closing '}'",16
|
|
mend
|
|
MACRO
|
|
&lab Str &string
|
|
&lab dc i1'L:&string'
|
|
dc c"&string"
|
|
mend
|
|
MACRO
|
|
&lab MV4 &src,&adr
|
|
&lab lcla &count
|
|
lda &src
|
|
&count seta 1
|
|
.loop1
|
|
sta &adr(&count)
|
|
&count seta &count+1
|
|
aif &count>c:&adr,.part2
|
|
ago ^loop1
|
|
.part2
|
|
lda &src+2
|
|
&count seta 1
|
|
.loop2
|
|
sta &adr(&count)+2
|
|
&count seta &count+1
|
|
aif &count>c:&adr,.done
|
|
ago ^loop2
|
|
.done
|
|
mend
|
|
MACRO
|
|
&lab iny2
|
|
&lab iny
|
|
iny
|
|
mend
|
|
MACRO
|
|
&lab dey2
|
|
&lab dey
|
|
dey
|
|
mend
|
|
MACRO
|
|
&lab PurgeHandle &a1
|
|
&lab ph4 &a1
|
|
tool $1202
|
|
mend
|
|
MACRO
|
|
&lab FindHandle &a1,&a2
|
|
&lab pha
|
|
pha
|
|
ph4 &a1
|
|
tool $1a02
|
|
pl4 &a2
|
|
mend
|
|
MACRO
|
|
&lab CompactMem
|
|
&lab tool $1f02
|
|
mend
|
|
MACRO
|
|
&lab if2 &var,&rel,&val,&label
|
|
&lab ago .skip
|
|
ble
|
|
bgt
|
|
.skip
|
|
lclc &char1
|
|
lclc &char2
|
|
&char1 amid &var,1,1
|
|
&char2 amid &var,2,1
|
|
aif "&char1"="@",.index
|
|
lda &var
|
|
.cmp
|
|
cmp &val
|
|
ago .branch
|
|
.index
|
|
aif "&char2"="x",.x1
|
|
aif "&char2"="X",.x1
|
|
aif "&char2"="y",.y1
|
|
aif "&char2"="Y",.y1
|
|
ago ^cmp
|
|
.x1
|
|
cpx &val
|
|
ago .branch
|
|
.y1
|
|
cpy &val
|
|
.branch
|
|
&char1 amid &rel,1,1
|
|
aif "&char1"="@",.done
|
|
b&rel &label
|
|
.done
|
|
mend
|
|
MACRO
|
|
&lab bgt &loc
|
|
&lab beq *+4
|
|
bcs &loc
|
|
mend
|
|
MACRO
|
|
&lab ble &loc
|
|
&lab bcc &loc
|
|
beq &loc
|
|
mend
|
|
MACRO
|
|
&lab WriteCString &a1
|
|
&lab ph4 &a1
|
|
Tool $200c
|
|
mend
|
|
MACRO
|
|
&lab jeq &loc
|
|
&lab bne *+5
|
|
jmp &loc
|
|
mend
|
|
MACRO
|
|
&lab jmi &loc
|
|
&lab bpl *+5
|
|
jmp &loc
|
|
mend
|
|
MACRO
|
|
&lab ora2 &arg1,&arg2,&dest
|
|
&lab anop
|
|
lclc &char
|
|
&char amid &arg1,1,1
|
|
aif "&char"="@",.at1
|
|
lda &arg1
|
|
ago .add
|
|
.at1
|
|
&char amid &arg1,2,1
|
|
aif "&char"="x",.x1
|
|
aif "&char"="X",.x1
|
|
aif "&char"="y",.y1
|
|
aif "&char"="Y",.y1
|
|
ago .add
|
|
.x1
|
|
txa
|
|
ago .add
|
|
.y1
|
|
tya
|
|
.add
|
|
ora &arg2
|
|
&char amid &dest,1,1
|
|
aif "&char"="@",.at2
|
|
sta &dest
|
|
ago .b
|
|
.at2
|
|
&char amid &dest,2,1
|
|
aif "&char"="x",.x2
|
|
aif "&char"="X",.x2
|
|
aif "&char"="y",.y2
|
|
aif "&char"="Y",.y2
|
|
ago .b
|
|
.x2
|
|
tax
|
|
ago .b
|
|
.y2
|
|
tay
|
|
.b
|
|
mend
|
|
macro
|
|
&lab NewHandle &a1,&a2
|
|
&lab pha
|
|
pha
|
|
ph4 &a1(1)
|
|
ph2 &a1(2)
|
|
ph2 &a1(3)
|
|
ph4 &a1(4)
|
|
tool $0902
|
|
pl4 &a2
|
|
mend
|
|
macro
|
|
&lab DisposeHandle &a1
|
|
&lab ph4 &a1
|
|
tool $1002
|
|
mend
|
|
macro
|
|
&lab TotalMem &a1
|
|
&lab pha
|
|
pha
|
|
tool $1d02
|
|
pl4 &a1
|
|
mend
|
|
macro
|
|
&lab FreeMem &a1
|
|
&lab pha
|
|
pha
|
|
tool $1b02
|
|
pl4 &a1
|
|
mend
|