OSDN Git Service

Improved debug stack dump and NEXT version evaluates, does not compile.
authorJoel Matthew Rees <reiisi@user.osdn.me>
Fri, 8 Feb 2019 15:47:33 +0000 (00:47 +0900)
committerJoel Matthew Rees <reiisi@user.osdn.me>
Fri, 8 Feb 2019 15:47:33 +0000 (00:47 +0900)
commands.text
fig-forth-auto6809.asm
fig-forth-auto6809opt.asm

index c5437e1..8300702 100644 (file)
@@ -3,12 +3,13 @@ imgtool dir coco_jvc_rsdos workfig.dsk
 
 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
 
@@ -16,7 +17,9 @@ for name in  bif-6809lw/*.ASM ; do  echo $name :\\n ; cat $name | tr '\r' '\n' |
 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
index cb0fb83..98e2d5b 100644 (file)
@@ -427,7 +427,7 @@ DELINT      FDB     4       initial carriage return delay
 * 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'
@@ -466,8 +466,8 @@ NEXT        ; IP is Y, push before using, pull before you come back here.
 * 
 * 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.)
@@ -479,7 +479,7 @@ 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 )
@@ -607,7 +607,7 @@ DBGRkl      JSR     [$A000]
        CMPA    #$53    ; 'S'
        BEQ     DBGRdS
        CMPA    #$49    ; 'I'
-       BNE     DBGRrt
+       LBNE    DBGRrt
 DBGRin LDD     <XTIB
        ADDD    <XIN
        TFR     D,Y
@@ -622,6 +622,34 @@ DBGRit     DECA
        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
@@ -641,6 +669,8 @@ DBGRup      LDD     ,Y++
        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
@@ -1445,7 +1475,9 @@ QTERM     FDB     *+NATWID
        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
 *
@@ -1848,6 +1880,7 @@ SPSTOR    FDB     *+NATWID
        FDB     SPSTOR-6
 RPSTOR FDB     *+NATWID
        LDS     RINIT,PCR
+*      LBSR    DBGREG
        LBRA    NEXT
 *      LDX     RINIT   initialize from rom constant
 *      STX     RP
@@ -1863,6 +1896,7 @@ RPSTOR    FDB     *+NATWID
        FCB     $D3
        FDB     RPSTOR-6
 SEMIS  FDB     *+NATWID
+*      LBSR    DBGREG
        PULS    Y       ; saved IP in Y.
        LBRA    NEXT
 *
@@ -4276,8 +4310,8 @@ QUIT3     FDB     BRAN
        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
@@ -4293,11 +4327,15 @@ ABORT   FDB     DOCOL,SPSTOR,DEC,QSTACK,DRZERO,CR,PDOTQ
 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.
@@ -4307,6 +4345,7 @@ CENT      LDS     SINIT,PCR       ; Get a useable return stack, at least.
        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.
@@ -4366,6 +4405,7 @@ WENT      LDS     SINIT,PCR       ; Get a useable return stack, at least.
        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.
index 996bed6..fddea90 100644 (file)
@@ -608,7 +608,7 @@ DBGRkl      JSR     [$A000]
        CMPA    #$53    ; 'S'
        BEQ     DBGRdS
        CMPA    #$49    ; 'I'
-       BNE     DBGRrt
+       LBNE    DBGRrt
 DBGRin LDD     <XTIB
        ADDD    <XIN
        TFR     D,Y
@@ -623,6 +623,34 @@ DBGRit     DECA
        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
@@ -642,6 +670,8 @@ DBGRup      LDD     ,Y++
        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
@@ -4252,8 +4282,8 @@ QUIT3     FDB     BRAN
        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