86 lines
1.9 KiB
Tal
86 lines
1.9 KiB
Tal
|0100
|
|
LIT2r 0000 main POP2r BRK
|
|
|
|
@sext
|
|
#80 ANDk EQU #ff MUL SWP JMP2r
|
|
|
|
%afree_ ( -- ) {
|
|
#0000 ;mem_length_ STA2 }
|
|
|
|
@msg 20 64 61 6d 61 67 65 20 69 6e 66 6c 69 63 74 65 64 21 0a 00
|
|
|
|
@main ( -- )
|
|
OVR2r LIT2r 0006 SUB2r
|
|
#000e STH2kr ( #0000 ADD2 ) STA2
|
|
#0096 STH2kr #0002 ADD2 STA2
|
|
STH2kr ( #0000 ADD2 ) LDA2 STH2kr #0002 ADD2 LDA2 MUL2 #0014 DIV2 #0003 SUB2 STH2kr #0006 ADD2 STA2
|
|
|
|
STH2kr #0006 ADD2 LDA2 nat_to_str_ str/<print>
|
|
|
|
;msg str/<print>
|
|
|
|
&return
|
|
afree_ POP2r JMP2r
|
|
|
|
@aalloc_ ( size* -- result* )
|
|
OVR2r LIT2r 0004 SUB2r STH2kr INC2 INC2 STA2
|
|
;mem_length_ LDA2 STH2kr STA2
|
|
;mem_length_ LDA2k STH2kr INC2 INC2 LDA2 ADD2 SWP2 STA2
|
|
;mem_ STH2kr LDA2 ADD2 !&return
|
|
#0000
|
|
|
|
&return
|
|
POP2r JMP2r
|
|
|
|
@amcpy_ ( length* from* -- result* )
|
|
OVR2r LIT2r 0008 SUB2r STH2kr #0006 ADD2 STA2
|
|
STH2kr #0004 ADD2 STA2
|
|
STH2kr #0004 ADD2 LDA2 aalloc_
|
|
STH2kr INC2 INC2 STA2
|
|
#0000 STH2kr STA2
|
|
|
|
&begin.1
|
|
STH2kr LDA2 STH2kr #0004 ADD2 LDA2 LTH2 #00 EQU ?&break.1
|
|
STH2kr #0006 ADD2 LDA2 STH2kr LDA2 ADD2 LDA sext
|
|
STH2kr INC2 INC2 LDA2 STH2kr LDA2 ADD2 STA
|
|
POP
|
|
|
|
&continue.1
|
|
STH2kr LDA2k INC2k ROT2 STA2
|
|
POP2 !&begin.1
|
|
|
|
&break.1
|
|
STH2kr INC2 INC2 LDA2 !&return
|
|
#0000
|
|
|
|
&return
|
|
POP2r JMP2r
|
|
|
|
@nat_to_str_ ( n* -- result* )
|
|
OVR2r LIT2r 000a SUB2r STH2kr #0008 ADD2 STA2
|
|
#0005 STH2kr STA2
|
|
|
|
&begin.1
|
|
STH2kr #0008 ADD2 LDA2 #000a OVR2 OVR2 DIV2 MUL2 SUB2 #0030 ADD2 STH2kr INC2 INC2 STH2kr LDA2k #0001 SUB2 SWP2 STA2k
|
|
POP2 ADD2 STA
|
|
POP STH2kr #0008 ADD2 LDA2k #000a DIV2 SWP2 STA2
|
|
|
|
&continue.1
|
|
#0000 STH2kr #0008 ADD2 LDA2 LTH2 ?&begin.1
|
|
|
|
&break.1
|
|
#0005 STH2kr LDA2 SUB2 STH2kr INC2 INC2 STH2kr LDA2 ADD2 amcpy_
|
|
!&return
|
|
#0000
|
|
|
|
&return
|
|
POP2r JMP2r
|
|
|
|
@str/<print> ( str* -- )
|
|
LDAk DUP ?{ POP POP2 JMP2r }
|
|
#18 DEO
|
|
INC2 !/<print>
|
|
|
|
@mem_length_ #0000
|
|
@mem_
|