mirror of
https://git.sr.ht/~rabbits/uxn
synced 2024-11-27 00:03:00 +00:00
Implemented writing to output file
This commit is contained in:
parent
1f80b2907b
commit
63081b64cd
1 changed files with 55 additions and 20 deletions
|
@ -10,7 +10,6 @@
|
||||||
BRK
|
BRK
|
||||||
|
|
||||||
&source-file
|
&source-file
|
||||||
"test.usm 00
|
|
||||||
"projects/demos/piano.usm 00
|
"projects/demos/piano.usm 00
|
||||||
&dest-file
|
&dest-file
|
||||||
"bin/asma-boot.rom 00
|
"bin/asma-boot.rom 00
|
||||||
|
@ -40,10 +39,12 @@
|
||||||
;asma/dest-filename STA2 ;asma/src-filename STA2
|
;asma/dest-filename STA2 ;asma/src-filename STA2
|
||||||
|
|
||||||
;asma-init-first-pass JSR2
|
;asma-init-first-pass JSR2
|
||||||
|
;asma-flush-ignore ;asma/flush-fn STA2
|
||||||
;asma/src-filename LDA2 ;asma-assemble-file-pass JSR2
|
;asma/src-filename LDA2 ;asma-assemble-file-pass JSR2
|
||||||
asma-IF-ERROR ,&error JCN
|
asma-IF-ERROR ,&error JCN
|
||||||
|
|
||||||
;asma-init-next-pass JSR2
|
;asma-init-next-pass JSR2
|
||||||
|
;asma-flush-to-file ;asma/flush-fn STA2
|
||||||
;asma/src-filename LDA2 ;asma-assemble-file-pass JSR2
|
;asma/src-filename LDA2 ;asma-assemble-file-pass JSR2
|
||||||
asma-IF-ERROR ,&error JCN
|
asma-IF-ERROR ,&error JCN
|
||||||
|
|
||||||
|
@ -142,19 +143,24 @@
|
||||||
|
|
||||||
@asma-init-first-pass ( -- )
|
@asma-init-first-pass ( -- )
|
||||||
#ff ;asma/pass STA
|
#ff ;asma/pass STA
|
||||||
#0000 ;asma/error STA2
|
#0000 DUP2k
|
||||||
|
;asma/error STA2
|
||||||
|
;asma-trees/labels STA2
|
||||||
|
;asma-trees/macros STA2
|
||||||
;asma-heap ;asma/heap STA2
|
;asma-heap ;asma/heap STA2
|
||||||
#0000 ;asma-trees/labels STA2
|
|
||||||
;asma-opcodes/_entry ;asma-trees/opcodes STA2
|
;asma-opcodes/_entry ;asma-trees/opcodes STA2
|
||||||
#0000 ;asma-trees/macros STA2
|
|
||||||
( fall through )
|
( fall through )
|
||||||
|
|
||||||
@asma-init-next-pass ( -- )
|
@asma-init-next-pass ( -- )
|
||||||
;asma/pass LDA #01 ADD ;asma/pass STA
|
;asma/pass LDA #01 ADD ;asma/pass STA
|
||||||
#00 ;asma/state STA
|
;asma-write-buffer ;asma-output/ptr STA2
|
||||||
#0000 ;asma/addr STA2
|
#0000 DUP2k
|
||||||
#0100 ;asma/written-addr STA2
|
;asma-output/offset STA2
|
||||||
#0001 ;asma/line STA2
|
;asma/addr STA2
|
||||||
|
;asma/state STA
|
||||||
|
#01 ( 0001 )
|
||||||
|
SWPk ( 0001 0100 ) ;asma/written-addr STA2
|
||||||
|
;asma/line STA2
|
||||||
JMP2r
|
JMP2r
|
||||||
|
|
||||||
(
|
(
|
||||||
|
@ -167,8 +173,8 @@
|
||||||
&loop
|
&loop
|
||||||
OVR2 .File/name DEO2
|
OVR2 .File/name DEO2
|
||||||
DUP2 .File/offset DEO2
|
DUP2 .File/offset DEO2
|
||||||
#0023 STH2k .File/length DEO2
|
;asma-read-buffer/end ;asma-read-buffer SUB2 STH2k .File/length DEO2
|
||||||
#f000 DUP2k .File/load DEO2
|
;asma-read-buffer DUP2k .File/load DEO2
|
||||||
.File/success DEI2
|
.File/success DEI2
|
||||||
DUP2 STH2r SUB2 ORA ,&last-one JCN
|
DUP2 STH2r SUB2 ORA ,&last-one JCN
|
||||||
,asma-assemble-chunk JSR asma-IF-ERROR ,&error JCN
|
,asma-assemble-chunk JSR asma-IF-ERROR ,&error JCN
|
||||||
|
@ -179,6 +185,10 @@
|
||||||
ADD2k #00 ROT ROT STA
|
ADD2k #00 ROT ROT STA
|
||||||
#0001 ADD2
|
#0001 ADD2
|
||||||
,asma-assemble-chunk JSR asma-IF-ERROR ,&error JCN
|
,asma-assemble-chunk JSR asma-IF-ERROR ,&error JCN
|
||||||
|
|
||||||
|
( flush output buffer )
|
||||||
|
;asma-output/ptr LDA2 ;asma-write-buffer SUB2 ;asma/flush-fn LDA2 JSR2
|
||||||
|
|
||||||
POP2
|
POP2
|
||||||
&error
|
&error
|
||||||
POP2 POP2 POP2
|
POP2 POP2 POP2
|
||||||
|
@ -386,6 +396,11 @@
|
||||||
POP2 #01
|
POP2 #01
|
||||||
JMP2r
|
JMP2r
|
||||||
|
|
||||||
|
@asma-write-short ( short -- )
|
||||||
|
SWP
|
||||||
|
,asma-write-byte JSR
|
||||||
|
,asma-write-byte JMP ( tail call )
|
||||||
|
|
||||||
@asma-write-byte ( byte -- )
|
@asma-write-byte ( byte -- )
|
||||||
;asma/addr LDA2 ;asma/written-addr LDA2
|
;asma/addr LDA2 ;asma/written-addr LDA2
|
||||||
LTH2k ,&rewound JCN
|
LTH2k ,&rewound JCN
|
||||||
|
@ -395,26 +410,46 @@
|
||||||
#0001 ADD2
|
#0001 ADD2
|
||||||
,&loop JMP
|
,&loop JMP
|
||||||
|
|
||||||
|
&rewound
|
||||||
|
;asma-msg-rewound ;asma/error STA2
|
||||||
|
POP2 POP2 POP JMP2r
|
||||||
|
|
||||||
&ready
|
&ready
|
||||||
POP2 #0001 ADD2
|
POP2 #0001 ADD2
|
||||||
DUP2 ;asma/addr STA2
|
DUP2 ;asma/addr STA2
|
||||||
;asma/written-addr STA2
|
;asma/written-addr STA2
|
||||||
|
|
||||||
&write
|
&write
|
||||||
#3e .Console/char ;asma/pass LDA asma-DEO
|
,asma-output/ptr LDR2
|
||||||
|
DUP2 ;asma-write-buffer/end EQU2 ,&flush JCN
|
||||||
|
&after-flush
|
||||||
|
STH2k STA
|
||||||
|
STH2r #0001 ADD2 ,asma-output/ptr STR2
|
||||||
|
|
||||||
|
( #3e .Console/char ;asma/pass LDA asma-DEO
|
||||||
#20 .Console/char ;asma/pass LDA asma-DEO
|
#20 .Console/char ;asma/pass LDA asma-DEO
|
||||||
.Console/byte ;asma/pass LDA asma-DEO ( FIXME actually write! )
|
#00 .Console/byte ;asma/pass LDA asma-DEO
|
||||||
#0a .Console/char ;asma/pass LDA asma-DEO
|
#0a .Console/char ;asma/pass LDA asma-DEO )
|
||||||
JMP2r
|
JMP2r
|
||||||
|
|
||||||
&rewound
|
&flush ( ptr* -- start-of-buffer* )
|
||||||
;asma-msg-rewound ;asma/error STA2
|
;asma-write-buffer SUB2k ( ptr* start* len* )
|
||||||
POP2 POP2 POP JMP2r
|
;asma/flush-fn LDA2 JSR2
|
||||||
|
SWP2 POP2 ( start* )
|
||||||
|
,&after-flush JMP
|
||||||
|
|
||||||
@asma-write-short ( short -- )
|
@asma-output [ &ptr $2 &offset $2 &filename $2 ]
|
||||||
SWP
|
|
||||||
,asma-write-byte JSR
|
@asma-flush-ignore ( len* -- )
|
||||||
,asma-write-byte JMP ( tail call )
|
POP2
|
||||||
|
JMP2r
|
||||||
|
|
||||||
|
@asma-flush-to-file ( len* -- )
|
||||||
|
DUP2 .File/length DEO2
|
||||||
|
,asma-output/offset LDR2 DUP2 .File/offset DEO2 ADD2 ,asma-output/offset STR2
|
||||||
|
;asma/dest-filename LDA2 .File/name DEO2
|
||||||
|
;asma-write-buffer .File/save DEO2
|
||||||
|
JMP2r
|
||||||
|
|
||||||
@asma-append-heap-byte ( dummy byte -- dummy )
|
@asma-append-heap-byte ( dummy byte -- dummy )
|
||||||
;asma/heap LDA2
|
;asma/heap LDA2
|
||||||
|
|
Loading…
Reference in a new issue