imgtool del coco_jvc_rsdos workfig.dsk FIG.BIN
-imgtool put coco_jvc_rsdos figauto6809opt.dsk figao09.bin FIGAO09.BIN
+[imgtool put coco_jvc_rsdos figauto6809opt.dsk figao09.bin FIGAO09.BIN]
imgtool put coco_jvc_rsdos workfig.dsk a.out FIG.BIN
../../lwtools-4.14/lwasm/lwasm --list=fig-forth-auto6809opt.list fig-forth-auto6809opt.asm
-../lwtools-4.14/lwasm/lwasm --list=figao.list figao.asm
+../../lwtools-4.14/lwasm/lwasm --list=fig-forth-auto6809.list fig-forth-auto6809.asm
+[../lwtools-4.14/lwasm/lwasm --list=figao.list figao.asm]
for name in bif-6809lw/*.ASM ; do echo $name :\\n ; cat $name | tr '\r' '\n' | grep "BACK" ; done
xroar-0.34.7/src/xroar -machine coco2bus -bas roms/Color\ Basic\ v1.3\ \(1982\)\(Tandy\).rom -extbas roms/Extended\ Colour\ Basic\ v1.0\ \(1981\)\(Tandy\)/coco.rom -cart rsdos -cart-rom roms/Color\ Computer\ Controller\ \(1982\)\ \(26-3022\).rom -keymap us -kbd-translate
-git push reiisi@git.osdn.net:/gitroot/fig-forth-6809/fig-forth-6809.git
+LOADM "FIG.BIN"
+LOADM"FIG
+EXEC &H1200
hex
* STABX STA 0,X 16 cycles until 'NEXT'
* STB 1,X
* STABX STD 0,X ; ?? cycles until 'NEXT'
- BRA NEXT
+* BRA NEXT
* GETX LDA 0,X 18 cycles until 'NEXT'
* LDB 1,X
* GETX LDD 0,X ?? cycles until 'NEXT'
*
* NEXT2 LDX 0,X get W which points to CFA of word to be done
NEXT2 LDX ,Y++ get W which points to CFA of word to be done
-* BSR DBGNAM
-* BSR DBGREG
+ BSR DBGNAM
+ BSR DBGREG
* But NEXT2 is too much trouble to use with subroutine threading anyway.
* NEXT3 STX W
NEXT3 ; W is X until you use X for something else. (TOS points back here.)
* =
* JMP 0,X
- JSR [,X] ; Saving the postinc cycles,
+ JMP [,X] ; Saving the postinc cycles,
* ; but X must be bumped NATWID to the parameters.
* NOP
* JMP TRACE ( an alternate for the above )
CMPA #$53 ; 'S'
BEQ DBGRdS
CMPA #$49 ; 'I'
- BNE DBGRrt
+ LBNE DBGRrt
DBGRin LDD <XTIB
ADDD <XIN
TFR D,Y
BNE DBGRip
BRA DBGRrt
DBGRdS TFR S,Y
+ LDD ,Y++
+ LBSR OUThxA
+ LDA #$9F
+ STA ,X+
+ LBSR OUThxB
+ LDD ,Y++
+ LBSR OUThxA
+ LDA #$9F
+ STA ,X+
+ LBSR OUThxB
+ LDA #$58 ; X
+ STA ,X+
+ LDD ,Y++
+ LBSR OUThxD
+ LDA #$59 ; Y
+ STA ,X+
+ LDD ,Y++
+ LBSR OUThxD
+ LDA #$55 ; U
+ STA ,X+
+ LDD ,Y++
+ LBSR OUThxD
+ LDA #$50 ; PC
+ STA ,X+
+ LDD ,Y++
+ LBSR OUThxD
+ LDA #$53 ; Stack
+ STA ,X+
BRA DBGRst
DBGRsp LDD ,Y++
LBSR OUThxD
STB ,X+
DBGRut CMPY <XSPZER
BLO DBGRup
+ LDB #$FF
+ STB ,X+
DBGRrt PULS CC,A,B,DP,X,Y,U,PC
DBGRLB FCC 'DPCC PC S U Y X A B '
FDB 0,0
FCB $D2
FDB QTERM-12
CR FDB *+NATWID
- LBRA PCR ; Nothing really to do here.
+* LBSR DBGREG
+ LBSR PCR ; Nothing really to do here.
+ LBRA NEXT
* JSR PCR
* JMP NEXT
*
FDB SPSTOR-6
RPSTOR FDB *+NATWID
LDS RINIT,PCR
+* LBSR DBGREG
LBRA NEXT
* LDX RINIT initialize from rom constant
* STX RP
FCB $D3
FDB RPSTOR-6
SEMIS FDB *+NATWID
+* LBSR DBGREG
PULS Y ; saved IP in Y.
LBRA NEXT
*
FCB $D4
FDB QUIT-7
ABORT FDB DOCOL,SPSTOR,DEC,QSTACK,DRZERO,CR,PDOTQ
- FCB 10
- FCC "Forth-6809"
+ FCB 14
+ FCC "fig-Forth-6809"
FDB FORTH,DEFIN
FDB QUIT
* FDB SEMIS never executed
COLD FDB *+NATWID
* Ultimately, we want position indepence,
* so I'm using PCR where it seems reasonable.
-CENT LDS SINIT,PCR ; Get a useable return stack, at least.
+CENT LDS RINIT,PCR ; Get a useable return stack, at least.
+ LDU SINIT,PCR ; Get a useable parameter stack, too.
LDA #IUPDP ; This is not relative to PC.
TFR A,DP ; And a useable direct page, too.
SETDP IUPDP ; (For good measure.)
*
+* CLR TRACEM ; DBG
+* DEC TRACEM ; DBG
+* LBSR DBGREG
* We'll keep this here for the time being.
* There are better ways to do this, of course.
* Re-architect, re-architect.
LEAX RAM,PCR ; bottom of stuff to move
COLD2 LDA ,X+
STA ,Y+ ; move TASK & FORTH to ram
+* LBSR DBGREG
CMPX <XFENCE
BNE COLD2
* Leaves USE and PREV uninitialized.
LEAX FENCIN,PCR ; top of stuff to move
WARM2 LDD ,--X ; All entries are 16 bit.
STD ,--Y
+* LBSR DBGREG
CMPX ,S
BNE WARM2
LEAS 2,S ; But we'll reset the return stack shortly, anyway.
CMPA #$53 ; 'S'
BEQ DBGRdS
CMPA #$49 ; 'I'
- BNE DBGRrt
+ LBNE DBGRrt
DBGRin LDD <XTIB
ADDD <XIN
TFR D,Y
BNE DBGRip
BRA DBGRrt
DBGRdS TFR S,Y
+ LDD ,Y++
+ LBSR OUThxA
+ LDA #$9F
+ STA ,X+
+ LBSR OUThxB
+ LDD ,Y++
+ LBSR OUThxA
+ LDA #$9F
+ STA ,X+
+ LBSR OUThxB
+ LDA #$58 ; X
+ STA ,X+
+ LDD ,Y++
+ LBSR OUThxD
+ LDA #$59 ; Y
+ STA ,X+
+ LDD ,Y++
+ LBSR OUThxD
+ LDA #$55 ; U
+ STA ,X+
+ LDD ,Y++
+ LBSR OUThxD
+ LDA #$50 ; PC
+ STA ,X+
+ LDD ,Y++
+ LBSR OUThxD
+ LDA #$53 ; Stack
+ STA ,X+
BRA DBGRst
DBGRsp LDD ,Y++
LBSR OUThxD
STB ,X+
DBGRut CMPY <XSPZER
BLO DBGRup
+ LDB #$FF
+ STB ,X+
DBGRrt PULS CC,A,B,DP,X,Y,U,PC
DBGRLB FCC 'DPCC PC S U Y X A B '
FDB 0,0
FCB $D4
FDB QUIT-7
ABORT FDB DOCOL,SPSTOR,DEC,QSTACK,DRZERO,CR,PDOTQ
- FCB 10
- FCC "Forth-6809"
+ FCB 19
+ FCC "fig-Forth-6809(RTS)"
FDB FORTH,DEFIN
FDB QUIT
* FDB SEMIS never executed