OSDN Git Service

digging out the bugs, keeping track of the build commands.text
[fig-forth-6809/fig-forth-6809.git] / fig6800to6809dumb.asm
index b05f5de..bbc3399 100644 (file)
@@ -4,8 +4,8 @@
 
 * To do: 
 * 4 IO routines -- OK?
-* adjust ram locations
-* then add trace routines
+* adjust ram locations -- OK?
+* then add trace routines -- OK?
 * then try in emulator
 
 * ASSEMBLY SOURCE LISTING
@@ -156,7 +156,8 @@ MEMTOP      EQU     $7FFF   putative absolute end of all ram (32K Coco)
 *      ORG     $E0     variables
        ORG     $1300   variables
 PGBASE EQU     *
-       SETDP   PGBASE/$100
+PGBDP  EQU     PGBASE/$100
+       SETDP   PGBDP
 
 
 N      RMB     10      used as scratch by (FIND),ENCLOSE,CMOVE,EMIT,KEY,
@@ -183,6 +184,14 @@ RP RMB     2       the return stack pointer
 UP     RMB     2       the pointer to base of current user's 'USER' table
 *              ( altered during multi-tasking )
 *
+* For the tracer:
+       RMB 4
+TRASP  RMB 2
+TRAVEC RMB 2
+TRAA   RMB 1
+TRAB   RMB 1
+FLAGON RMB 1
+*
        PAGE
 *      This system is shown with one user, but additional users
 *      may be added by allocating additional user tables:
@@ -339,10 +348,106 @@ NEXT3    STX     W
 * The next instruction could be patched to JMP TRACE              =
 * if a TRACE routine is available:                                =
 *                                                                 =
-       JMP     0,X
+* Or add the TRACE routine in-line, since we are assembling it.
+       TST TRACEM
+       BEQ NEXTGO
+       STX TRAVEC
+       TFR S,X ; Mechanical! Mechanical! (So the funn 6800 stack didn't beach us.)
+       STX TRASP
+       LDA #':'
+       JSR PEMIT
+*      LDA #' '
+*      JSR PEMIT
+       LDX W
+       LEAX -1,X 
+       LEAX -1,X ; allocation link
+       LEAX -1,X ; last char
+       LDA #31
+NAMTST LEAX -1,X ; length byte?
+       LDB 0,X
+       BMI NAMTDN
+       DECA
+       BNE NAMTST
+NAMTDN ANDB #31 ; It's the length byte whether it wants to be or not.
+NAMSHW LEAX 1,X
+       LDA 0,X
+       JSR PEMIT
+       DECB
+       BNE NAMSHW
+* show the virtual registers
+* TOO MUCH OUTPUT! Have to trim this.
+       LDA #' '
+       JSR PEMIT
+       LDA #'@'
+       LDX #TRAVEC
+       JSR PHEX4F
+       TFR DP,A
+       LDB #(W-PGBASE)
+       TFR D,X
+       LDA #'W'
+       JSR PHEX4F
+       LDA #'I'
+       JSR PHEX4F
+       LDA #'R'
+       JSR PHEX4F
+       LDA #'U'
+       JSR PHEX4F
+       TFR DP,A
+       LDB #(W-TRASP)
+       TFR D,X
+       LDA #'S'
+       BSR PHEX4F
+       LDA #'>'
+       TFR S,X 
+       BSR PHEX4F
+       LDA #' '
+       BSR PHEX4F
+* 
+       JSR PRTCR
+       LDX TRAVEC
+*
+NEXTGO JMP     0,X
        NOP
 *      JMP     TRACE   ( an alternate for the above )
 *                                                                 =
+*                                                                 =
+*DBG
+PHEX4F JSR PEMIT
+       BSR PHEXX2
+       BSR PHEXX2
+       LDA #' '
+       JMP PEMIT       ; rob return
+*
+PHEXX2 LDA 0,X
+       LSRA
+       LSRA
+       LSRA
+       LSRA
+       BSR PHEXD
+       LDA 0,X
+       BSR PHEXD
+       LEAX 1,X
+       RTS
+*
+PHEXD  ANDA #$0F
+       CMPA #10
+       BLO PHEXDH
+       ADDA #7 ; 'A'-'9'+1
+PHEXDH ADDA #'0'
+       JMP PEMIT       ; rob return
+*
+DEBUGP FDB *+2
+       INC FLAGON      my version of trace
+       LDA FLAGON
+       JSR PEMIT
+       JMP NEXT
+*
+DEBUGM FDB *+2
+       DEC FLAGON      my version of trace
+       LDA FLAGON
+       JSR PEMIT
+       JMP NEXT
+*DBG
 * = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
 
 
@@ -691,10 +796,10 @@ ENCL6     LDB     N       found NUL
        PSHS B
        PSHS A
        INCB
-       BRA     ENCL7+2 
+       BRA     ENCL7A  ; ENCL7+2 ******* was a *potential* bug ****** (But DP)
 *      found NUL following the word instead of SPACE
 ENCL7  LDB     N
-       PSHS B          save EW
+ENCL7A PSHS B          save EW
        PSHS A
 ENCL8  LDB     N       save NC
        JMP     PUSHBA
@@ -717,9 +822,9 @@ EMIT        FDB     *+2
        JSR     PEMIT
        LDX     UP
        INC     XOUT+1-UORIG,X
-       BNE     *+4
+       BNE     EMITDN
        INC     XOUT-UORIG,X
-       JMP     NEXT
+EMITDN JMP     NEXT
 *
 * ======>>  14  <<
        FCB     $83
@@ -936,6 +1041,12 @@ RPSTOR    FDB     *+2
        FCB     $D3
        FDB     RPSTOR-6
 SEMIS  FDB     *+2
+* DBG
+       LDA #-$10
+       ADDA FLAGON
+       STA FLAGON      my version of trace
+       JSR PEMIT
+*
        LDX     RP
        LEAX 1,X
        LEAX 1,X
@@ -1245,6 +1356,12 @@ DOCOL    LDX     RP      make room in the stack
        LEAX -1,X
        LEAX -1,X
        STX     RP
+* DBG
+       LDA #$10
+       ADDA FLAGON
+       STA FLAGON      my version of trace
+       JSR PEMIT
+*
        LDA     IP
        LDB     IP+1    
        STA     2,X     Store address of the high level word
@@ -1880,7 +1997,7 @@ HEX       FDB     DOCOL
        FCC     'DECIMA'        ; 'DECIMAL'
        FCB     $CC
        FDB     HEX-6
-DEC    FDB     DOCOL
+DECIM  FDB     DOCOL
        FDB     CLITER
        FCB     10      note: hex "A"
        FDB     BASE,STORE
@@ -1891,7 +2008,7 @@ DEC       FDB     DOCOL
        FCB     $87
        FCC     '(;CODE'        ; '(;CODE)'
        FCB     $A9
-       FDB     DEC-10
+       FDB     DECIM-10
 PSCODE FDB     DOCOL,FROMR,TWOP,LATEST,PFA,CFA,STORE
        FDB     SEMIS
 *
@@ -2400,9 +2517,9 @@ QUIT3     FDB     BRAN
        FCC     'ABOR'  ; 'ABORT'
        FCB     $D4
        FDB     QUIT-7
-ABORT  FDB     DOCOL,SPSTOR,DEC,QSTACK,DRZERO,CR,PDOTQ
-       FCB     8
-       FCC     "Forth-68"
+ABORT  FDB     DOCOL,SPSTOR,DECIM,QSTACK,DRZERO,CR,PDOTQ
+       FCB     15
+       FCC     "Forth-68oo-68o9"
        FDB     FORTH,DEFIN
        FDB     QUIT
 *      FDB     SEMIS   never executed
@@ -2417,7 +2534,7 @@ ABORT     FDB     DOCOL,SPSTOR,DEC,QSTACK,DRZERO,CR,PDOTQ
        FDB     ABORT-8
 COLD   FDB     *+2
 * CENT LDS     #REND-1 top of destination on 6800
-CENT   LDA #PGBASE/$100
+CENT   LDA #PGBDP
        TFR A,DP
        LDS     #REND   top of destination on 6809
        LDX     #ERAM   top of stuff to move
@@ -2469,12 +2586,17 @@ WARM2   LEAX -1,X
        STX     TRLIM   clear trace mode
        LDX     #0
        STX     BRKPT   clear breakpoint address
+* DBG
+       LDA #$21
+       STA FLAGON      my version of trace
+       JSR PEMIT
+*
        JMP     RPSTOR+2 start the virtual machine running !
 *
 * Here is the stuff that gets copied to ram :
 * at address $140:
 *
-RAM    FDB     $3000,$3000,0,0
+RAM    FDB     $5000,$5000,0,0
        
 * ======>>  (152)  <<
        FCB     $C5     immediate
@@ -3156,7 +3278,7 @@ QUEST     FDB     DOCOL,AT,DOT
        FCC     'LIS'   ; 'LIST'
        FCB     $D4
        FDB     QUEST-4
-LIST   FDB     DOCOL,DEC,CR,DUP,SCR,STORE,PDOTQ
+LIST   FDB     DOCOL,DECIM,CR,DUP,SCR,STORE,PDOTQ
        FCB     6
        FCC     "SCR # "
        FDB     DOT,CLITER