OSDN Git Service

line endings will now work for diff, etc.
authorJoel Matthew Rees <joel.rees@gmail.com>
Fri, 12 Apr 2019 16:06:13 +0000 (01:06 +0900)
committerJoel Matthew Rees <joel.rees@gmail.com>
Fri, 12 Apr 2019 16:06:13 +0000 (01:06 +0900)
20 files changed:
cross_v/BIF.ASM
cross_v/BIF.M
cross_v/BIF1.ASM
cross_v/BIF1B.ASM
cross_v/BIF2.ASM
cross_v/BIF2B.ASM
cross_v/BIF3.ASM
cross_v/BIF3B.ASM
cross_v/BIF4.ASM
cross_v/BIF4B.ASM
cross_v/BIF5.ASM
cross_v/BIF5B.ASM
cross_v/BIF6.ASM
cross_v/BIF6B.ASM
cross_v/BIF7.ASM
cross_v/BIF7B.ASM
cross_v/BIFB.ASM
cross_v/BIFDP.ASM
cross_v/BIFST.ASM
cross_v/BIFU.INC

index e247b53..aea8ae8 100644 (file)
@@ -1 +1,319 @@
-00010 * The Kernel of BIF: A Dialect of FORTH\r00015 * with a Binary Tree Dictionary\r00020 * Copyright   1989 by Joel Matthew Rees\r00025 *\r00030 * BIF is architecturally derived from\r00035 * the public domain fig-FORTH model.\r00040 * \r00050 *      TITLE BIF kernel 16 Feb 89\r00070        OPT MEX\r00080   INCLUDE BIFU.INC\r00090  ORG $1200       DEBIF: $3F00\r00100      INCLUDE BIF.M\r00110     INCLUDE BIFDP.ASM\r00110         INCLUDE BIFST.ASM\r00120         SETDP VDP COLD loads DP\r01000 *\r01001   FCC '@' name\r01002      FCB 1 name length, usage (NFA)\r01003    FCB MFORE type/allocation MODES\r01004   FDB WARM-CFAOFF previous link in allocation\r01005       FDB BIF+2 owning vocabulary\r01006       FDB EQ-CFAOFF left link in tree\r01007   FDB AND-CFAOFF right link in tree\r01010 FETCH   LDD [,U] from [tos] to stack\r01011      STD ,U\r01012    NEXT\r01013 *\r01014      FCC '!'\r01015   FCB 1\r01016     FCB MFORE\r01017         FDB FETCH-CFAOFF\r01030  FDB BIF+2\r01040         FDB NUBLK-CFAOFF\r01050  FDB STOCSP-CFAOFF\r01060 STORE   LDD 2,U from stack to [top]\r01070       STD [,U]\r01080  LEAU 4,U\r01090  NEXT\r01095 *\r01100      FCC 'LIT'\r01110         FCB MCOMP.OR.3\r01120    FCB MFORE\r01130         FDB STORE-CFAOFF\r01140  FDB BIF+2\r01150         FDB 0 * LIST-CFAOFF\r01160       FDB 0\r01170 LIT LDD ,Y++ push literal from code\r01180   PSHU D\r01190    NEXT\r01200 *\r01210      FCC 'DLIT'\r01220        FCB MCOMP.OR.4\r01230    FCB MFORE\r01240         FDB LIT-CFAOFF\r01250    FDB BIF+2\r01260         FDB 0\r01270     FDB 0\r01280 * push double literal from code\r01290 DLIT  LDD ,Y++\r01300  LDX ,Y++\r01310  PSHU D,X\r01320  NEXT\r01330 *\r01340      FCC 'EXECUTE'\r01350     FCB MCOMP.OR.7\r01360    FCB MFORE\r01370         FDB DLIT-CFAOFF\r01380   FDB BIF+2\r01390         FDB 0\r01400     FDB 0\r01410 * EXECUTE cfa on stack\r01420 EXEC   LDX ,U++\r01430  BEQ *+4\r01440   JMP ,X\r01450    LDD #9\r01460    PSHU D\r01462    JMP ERROR\r01464 *\r01466         FCC '1BRANCH'\r01468     FCB MCOMP.OR.7\r01470    FCB MFORE\r01472         FDB EXEC-CFAOFF\r01474   FDB BIF+2\r01476         FDB 0\r01478     FDB 0\r01480 TBR LDD ,U++\r01482  BNE BRANCH\r01484        LEAY 2,Y\r01486  NEXT\r01488 *\r01490      FCC 'BRANCH'\r01500      FCB MCOMP.OR.6\r01510    FCB MFORE\r01520         FDB TBR-CFAOFF\r01530    FDB BIF+2\r01540         FDB 0\r01550     FDB 0\r01560 BRANCH      LDD ,Y++\r01570  LEAY D,Y\r01580  NEXT\r01590 *\r01600      FCC '0BRANCH'\r01610     FCB MCOMP.OR.7\r01620    FCB MFORE\r01630         FDB BRANCH-CFAOFF\r01640         FDB BIF+2\r01650         FDB 0\r01660     FDB 0\r01670 ZBR LDD ,U++\r01680  BEQ BRANCH\r01690        LEAY 2,Y\r01700  NEXT\r01710 *\r01720      FCC '(LOOP)'\r01730      FCB MCOMP.OR.6\r01740    FCB MFORE\r01750         FDB ZBR-CFAOFF\r01760    FDB BIF+2\r01770         FDB 0\r01780     FDB 0\r01790 XLOOP       LDD #1\r01800    ADDD ,S\r01810   STD ,S\r01820    SUBD 2,S\r01830  BLT BRANCH\r01840 XLOOPN LEAY 2,Y\r01850  LEAS 4,S\r01860  NEXT\r01870 *\r01880      FCC '(+LOOP)'\r01890     FCB MCOMP.OR.7\r01900    FCB MFORE\r01910         FDB XLOOP-CFAOFF\r01920  FDB BIF+2\r01930         FDB 0\r01940     FDB 0\r01950 XPLOOP      LDD ,U++ inc val\r01960  BPL XLOOP+3\r01970       ADDD ,S\r01980   STD ,S\r01990    SUBD 2,S\r02000  BGT BRANCH\r02010        BRA XLOOPN\r02020 *\r02030        FCC '(DO)'\r02040        FCB 4\r02050     FCB MFORE\r02060         FDB XPLOOP-CFAOFF\r02070         FDB BIF+2\r02080         FDB 0\r02090     FDB 0\r02100 XDO PULU D,X\r02110  PSHS D,X\r02120  NEXT\r02130 *\r02140      FCC 'I'\r02150   FCB 1\r02160     FCB MFORE\r02170         FDB XDO-CFAOFF\r02180    FDB BIF+2\r02190         FDB HLD-CFAOFF\r02200    FDB IDDOT-CFAOFF\r02210 I        LDD ,S\r02220    PSHU D\r02222    NEXT\r02224 *\r02226      FCC 'J'\r02228   FCB 1\r02230     FCB MFORE\r02232         FDB I-CFAOFF\r02234      FDB BIF+2\r02236         FDB IPCOM-CFAOFF\r02238  FDB 0\r02240 J   LDD 4,S\r02242   PSHU D\r02244    NEXT\r02246 *\r02250      FCC 'DIGIT'\r02260       FCB 5\r02270     FCB MFORE\r02280         FDB J-CFAOFF\r02290      FDB BIF+2\r02300         FDB DEC-CFAOFF\r02310    FDB DLITER-CFAOFF\r02320 DIGIT   LDB 3,U\r02330   CMPB #'9\r02340  BLS DIGITX+4\r02350      CMPB #'A\r02360  BLO DIGITN\r02370        CMPB #'Z\r02380  BLS DIGITX+2\r02390      CMPB #'a\r02400  BLO DIGITN\r02410        CMPB #'z\r02420  BHI DIGITN\r02430 DIGITX SUBB #'a-'Z-1\r02440     SUBB #'A-'9-1\r02450     SUBB #'0\r02460  CMPB 1,U\r02470  BHS DIGITN\r02480        CLRA\r02490      STD 2,U\r02500   LDD #-1\r02510 DIGITL    STD ,U\r02520    NEXT\r02530 DIGITN       LEAU 2,U\r02540  LDD #0\r02550    BRA DIGITL\r02560 *\r02570        FCC '(FIND)'\r02580      FCB 6\r02590     FCB MFORE\r02600         FDB DIGIT-CFAOFF\r02610  FDB BIF+2\r02620         FDB IABORT-CFAOFF\r02630         FDB XMACH-CFAOFF\r02640 * search vocabulary adr2 for (adr1)\r02650 PFIND  LDD ,U valid?\r02660     BEQ PFINDX\r02670 PFINDL DOCOL\r02680     FDB PREF\r02690  FDB XMACH\r02700         LEAU 2,U\r02710  LDX [,U] NULL link?\r02720       BEQ PFINDN\r02730        LDB ,X\r02740    ANDB #MHID smudged?\r02750       BEQ PFINDY\r02760        LEAX RTOFF,X deeper\r02770       STX ,U\r02780    BRA PFINDL\r02790 PFINDY LDX #-1\r02800 PFINDN    LDD ,U\r02810    STX ,U\r02820 PFINDX     STD 2,U\r02830   NEXT\r02990 *\r03000      FCC 'ENCLOSE'\r03010     FCB 7\r03020     FCB MFORE\r03030         FDB PFIND-CFAOFF\r03040  FDB BIF+2\r03050         FDB EMTBUF-CFAOFF\r03060         FDB 0\r03070 * adr1 c --- adr2 len\r03080 ENCLOS  LDX 2,U\r03100 ENCLLD    LDB ,X+ delimiter\r03110         BEQ ENCL0\r03120         CMPB 1,U\r03130  BEQ ENCLLD\r03133 ENCL0  LEAX -1,X\r03140         STX 2,U\r03150 ENCLLW    LDB ,X+ scan word\r03160         BEQ ENCLCA\r03170        CMPB 1,U\r03180  BNE ENCLLW\r03190 ENCLCA TFR X,D length\r03195    SUBD #1\r03200   SUBD 2,U\r03220  STD ,U\r03230    NEXT\r03240 *\r03250      FCC 'LITERAL'\r03260     FCB MIMM.OR.7\r03270     FCB MFORE\r03280         FDB ENCLOS-CFAOFF\r03290         FDB BIF+2\r03300         FDB LIT-CFAOFF\r03310    FDB LOAD-CFAOFF\r03320 * compile a literal\r03330 LITER   BSR LITERS\r03340        LDD #LIT\r03350 LITERB   STD ,Y++\r03360  PULU D\r03370    STD ,Y++\r03380  STY UDP,X\r03390         PULS Y\r03400    JMP HERERR\r03405 *\r03410 LITERS LDX <UP\r03412   LDB USTATE+1,X\r03414    ANDB #SCOMP\r03416       PULS D no CC\r03418      BNE *+4 compiling?\r03420        NEXT no\r03422   PSHS Y\r03424    LDY UDP,X\r03426         EXG D,PC return\r03430 *\r03435   FCC 'DLITERAL'\r03440    FCB MIMM.OR.8\r03450     FCB MFORE\r03460         FDB LITER-CFAOFF\r03470  FDB BIF+2\r03480         FDB DLIT-CFAOFF\r03490   FDB DMINUS-CFAOFF\r03500 * compile a 32 bit constant\r03510 DLITER        BSR LITERS\r03540        LDD #DLIT\r03550         STD ,Y++\r03560  PULU D\r03570    BRA LITERB\r03630 *\r08210        INCLUDE BIFB.ASM\r08220  INCLUDE BIF1.ASM\r08230  INCLUDE BIF1B.ASM\r08240         INCLUDE BIF2.ASM\r08250  INCLUDE BIF2B.ASM\r08260         INCLUDE BIF3.ASM\r08270  INCLUDE BIF3B.ASM\r08280         INCLUDE BIF4.ASM\r08285  INCLUDE BIF4B.ASM\r08290         INCLUDE BIF5.ASM\r08295  INCLUDE BIF5B.ASM\r08300         INCLUDE BIF6.ASM\r08310  INCLUDE BIF6B.ASM\r08320         INCLUDE BIF7.ASM\r08330  INCLUDE BIF7B.ASM\r09000         END\r
\ No newline at end of file
+00010 * The Kernel of BIF: A Dialect of FORTH
+00015 * with a Binary Tree Dictionary
+00020 * Copyright   1989 by Joel Matthew Rees
+00025 *
+00030 * BIF is architecturally derived from
+00035 * the public domain fig-FORTH model.
+00040 * 
+00050 *        TITLE BIF kernel 16 Feb 89
+00070  OPT MEX
+00080  INCLUDE BIFU.INC
+00090  ORG $1200       DEBIF: $3F00
+00100  INCLUDE BIF.M
+00110  INCLUDE BIFDP.ASM
+00110  INCLUDE BIFST.ASM
+00120  SETDP VDP COLD loads DP
+01000 *
+01001  FCC '@' name
+01002  FCB 1 name length, usage (NFA)
+01003  FCB MFORE type/allocation MODES
+01004  FDB WARM-CFAOFF previous link in allocation
+01005  FDB BIF+2 owning vocabulary
+01006  FDB EQ-CFAOFF left link in tree
+01007  FDB AND-CFAOFF right link in tree
+01010 FETCH    LDD [,U] from [tos] to stack
+01011  STD ,U
+01012  NEXT
+01013 *
+01014  FCC '!'
+01015  FCB 1
+01016  FCB MFORE
+01017  FDB FETCH-CFAOFF
+01030  FDB BIF+2
+01040  FDB NUBLK-CFAOFF
+01050  FDB STOCSP-CFAOFF
+01060 STORE    LDD 2,U from stack to [top]
+01070  STD [,U]
+01080  LEAU 4,U
+01090  NEXT
+01095 *
+01100  FCC 'LIT'
+01110  FCB MCOMP.OR.3
+01120  FCB MFORE
+01130  FDB STORE-CFAOFF
+01140  FDB BIF+2
+01150  FDB 0 * LIST-CFAOFF
+01160  FDB 0
+01170 LIT      LDD ,Y++ push literal from code
+01180  PSHU D
+01190  NEXT
+01200 *
+01210  FCC 'DLIT'
+01220  FCB MCOMP.OR.4
+01230  FCB MFORE
+01240  FDB LIT-CFAOFF
+01250  FDB BIF+2
+01260  FDB 0
+01270  FDB 0
+01280 * push double literal from code
+01290 DLIT     LDD ,Y++
+01300  LDX ,Y++
+01310  PSHU D,X
+01320  NEXT
+01330 *
+01340  FCC 'EXECUTE'
+01350  FCB MCOMP.OR.7
+01360  FCB MFORE
+01370  FDB DLIT-CFAOFF
+01380  FDB BIF+2
+01390  FDB 0
+01400  FDB 0
+01410 * EXECUTE cfa on stack
+01420 EXEC     LDX ,U++
+01430  BEQ *+4
+01440  JMP ,X
+01450  LDD #9
+01460  PSHU D
+01462  JMP ERROR
+01464 *
+01466  FCC '1BRANCH'
+01468  FCB MCOMP.OR.7
+01470  FCB MFORE
+01472  FDB EXEC-CFAOFF
+01474  FDB BIF+2
+01476  FDB 0
+01478  FDB 0
+01480 TBR      LDD ,U++
+01482  BNE BRANCH
+01484  LEAY 2,Y
+01486  NEXT
+01488 *
+01490  FCC 'BRANCH'
+01500  FCB MCOMP.OR.6
+01510  FCB MFORE
+01520  FDB TBR-CFAOFF
+01530  FDB BIF+2
+01540  FDB 0
+01550  FDB 0
+01560 BRANCH   LDD ,Y++
+01570  LEAY D,Y
+01580  NEXT
+01590 *
+01600  FCC '0BRANCH'
+01610  FCB MCOMP.OR.7
+01620  FCB MFORE
+01630  FDB BRANCH-CFAOFF
+01640  FDB BIF+2
+01650  FDB 0
+01660  FDB 0
+01670 ZBR      LDD ,U++
+01680  BEQ BRANCH
+01690  LEAY 2,Y
+01700  NEXT
+01710 *
+01720  FCC '(LOOP)'
+01730  FCB MCOMP.OR.6
+01740  FCB MFORE
+01750  FDB ZBR-CFAOFF
+01760  FDB BIF+2
+01770  FDB 0
+01780  FDB 0
+01790 XLOOP    LDD #1
+01800  ADDD ,S
+01810  STD ,S
+01820  SUBD 2,S
+01830  BLT BRANCH
+01840 XLOOPN   LEAY 2,Y
+01850  LEAS 4,S
+01860  NEXT
+01870 *
+01880  FCC '(+LOOP)'
+01890  FCB MCOMP.OR.7
+01900  FCB MFORE
+01910  FDB XLOOP-CFAOFF
+01920  FDB BIF+2
+01930  FDB 0
+01940  FDB 0
+01950 XPLOOP   LDD ,U++ inc val
+01960  BPL XLOOP+3
+01970  ADDD ,S
+01980  STD ,S
+01990  SUBD 2,S
+02000  BGT BRANCH
+02010  BRA XLOOPN
+02020 *
+02030  FCC '(DO)'
+02040  FCB 4
+02050  FCB MFORE
+02060  FDB XPLOOP-CFAOFF
+02070  FDB BIF+2
+02080  FDB 0
+02090  FDB 0
+02100 XDO      PULU D,X
+02110  PSHS D,X
+02120  NEXT
+02130 *
+02140  FCC 'I'
+02150  FCB 1
+02160  FCB MFORE
+02170  FDB XDO-CFAOFF
+02180  FDB BIF+2
+02190  FDB HLD-CFAOFF
+02200  FDB IDDOT-CFAOFF
+02210 I        LDD ,S
+02220  PSHU D
+02222  NEXT
+02224 *
+02226  FCC 'J'
+02228  FCB 1
+02230  FCB MFORE
+02232  FDB I-CFAOFF
+02234  FDB BIF+2
+02236  FDB IPCOM-CFAOFF
+02238  FDB 0
+02240 J        LDD 4,S
+02242  PSHU D
+02244  NEXT
+02246 *
+02250  FCC 'DIGIT'
+02260  FCB 5
+02270  FCB MFORE
+02280  FDB J-CFAOFF
+02290  FDB BIF+2
+02300  FDB DEC-CFAOFF
+02310  FDB DLITER-CFAOFF
+02320 DIGIT    LDB 3,U
+02330  CMPB #'9
+02340  BLS DIGITX+4
+02350  CMPB #'A
+02360  BLO DIGITN
+02370  CMPB #'Z
+02380  BLS DIGITX+2
+02390  CMPB #'a
+02400  BLO DIGITN
+02410  CMPB #'z
+02420  BHI DIGITN
+02430 DIGITX   SUBB #'a-'Z-1
+02440  SUBB #'A-'9-1
+02450  SUBB #'0
+02460  CMPB 1,U
+02470  BHS DIGITN
+02480  CLRA
+02490  STD 2,U
+02500  LDD #-1
+02510 DIGITL   STD ,U
+02520  NEXT
+02530 DIGITN   LEAU 2,U
+02540  LDD #0
+02550  BRA DIGITL
+02560 *
+02570  FCC '(FIND)'
+02580  FCB 6
+02590  FCB MFORE
+02600  FDB DIGIT-CFAOFF
+02610  FDB BIF+2
+02620  FDB IABORT-CFAOFF
+02630  FDB XMACH-CFAOFF
+02640 * search vocabulary adr2 for (adr1)
+02650 PFIND    LDD ,U valid?
+02660  BEQ PFINDX
+02670 PFINDL   DOCOL
+02680  FDB PREF
+02690  FDB XMACH
+02700  LEAU 2,U
+02710  LDX [,U] NULL link?
+02720  BEQ PFINDN
+02730  LDB ,X
+02740  ANDB #MHID smudged?
+02750  BEQ PFINDY
+02760  LEAX RTOFF,X deeper
+02770  STX ,U
+02780  BRA PFINDL
+02790 PFINDY   LDX #-1
+02800 PFINDN   LDD ,U
+02810  STX ,U
+02820 PFINDX   STD 2,U
+02830  NEXT
+02990 *
+03000  FCC 'ENCLOSE'
+03010  FCB 7
+03020  FCB MFORE
+03030  FDB PFIND-CFAOFF
+03040  FDB BIF+2
+03050  FDB EMTBUF-CFAOFF
+03060  FDB 0
+03070 * adr1 c --- adr2 len
+03080 ENCLOS   LDX 2,U
+03100 ENCLLD   LDB ,X+ delimiter
+03110  BEQ ENCL0
+03120  CMPB 1,U
+03130  BEQ ENCLLD
+03133 ENCL0    LEAX -1,X
+03140  STX 2,U
+03150 ENCLLW   LDB ,X+ scan word
+03160  BEQ ENCLCA
+03170  CMPB 1,U
+03180  BNE ENCLLW
+03190 ENCLCA   TFR X,D length
+03195  SUBD #1
+03200  SUBD 2,U
+03220  STD ,U
+03230  NEXT
+03240 *
+03250  FCC 'LITERAL'
+03260  FCB MIMM.OR.7
+03270  FCB MFORE
+03280  FDB ENCLOS-CFAOFF
+03290  FDB BIF+2
+03300  FDB LIT-CFAOFF
+03310  FDB LOAD-CFAOFF
+03320 * compile a literal
+03330 LITER    BSR LITERS
+03340  LDD #LIT
+03350 LITERB   STD ,Y++
+03360  PULU D
+03370  STD ,Y++
+03380  STY UDP,X
+03390  PULS Y
+03400  JMP HERERR
+03405 *
+03410 LITERS   LDX <UP
+03412  LDB USTATE+1,X
+03414  ANDB #SCOMP
+03416  PULS D no CC
+03418  BNE *+4 compiling?
+03420  NEXT no
+03422  PSHS Y
+03424  LDY UDP,X
+03426  EXG D,PC return
+03430 *
+03435  FCC 'DLITERAL'
+03440  FCB MIMM.OR.8
+03450  FCB MFORE
+03460  FDB LITER-CFAOFF
+03470  FDB BIF+2
+03480  FDB DLIT-CFAOFF
+03490  FDB DMINUS-CFAOFF
+03500 * compile a 32 bit constant
+03510 DLITER   BSR LITERS
+03540  LDD #DLIT
+03550  STD ,Y++
+03560  PULU D
+03570  BRA LITERB
+03630 *
+08210  INCLUDE BIFB.ASM
+08220  INCLUDE BIF1.ASM
+08230  INCLUDE BIF1B.ASM
+08240  INCLUDE BIF2.ASM
+08250  INCLUDE BIF2B.ASM
+08260  INCLUDE BIF3.ASM
+08270  INCLUDE BIF3B.ASM
+08280  INCLUDE BIF4.ASM
+08285  INCLUDE BIF4B.ASM
+08290  INCLUDE BIF5.ASM
+08295  INCLUDE BIF5B.ASM
+08300  INCLUDE BIF6.ASM
+08310  INCLUDE BIF6B.ASM
+08320  INCLUDE BIF7.ASM
+08330  INCLUDE BIF7B.ASM
+09000  END
index ff4b89c..0501f24 100644 (file)
@@ -1 +1,78 @@
-00010 * EQUates and MACRO definitions for BIF\r00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r01000 *\r01010 * JMP to next icode word\r01020 NEXT     MACRO\r01030     JMP [,Y++]\r01040        ENDM\r01050 *\r01053 * offset from name field to mode field\r01056 MFAOFF  EQU 1\r01057 * length of symbols, must be 2^n for mask\r01058 NLMASK      EQU $1F\r01060 * offset to previous allocation link\r01070 LFAOFF EQU MFAOFF+1\r01080 * offset to owning VOCABULARY (genesis) link\r01090 GFAOFF    EQU LFAOFF+2\r01100 LFTOFF       EQU GFAOFF+2    left child link\r01110 RTOFF     EQU GFAOFF+4    right child link\r01120 * offset to code field\r01130 CFAOFF      EQU GFAOFF+6\r01140 * offset to parameter field (past Direct Page jump)\r01150 PFAOFF     EQU CFAOFF+2\r01160 * All links are relative to the name field (NFA)\r01170 * Use PFAOFF (or PFA) with ;CODE!\r01320 * usage and name length share a byte (name length < 32).\r01330 * foreward blocks marked in the mode byte\r01340 * usage and mode bits\r01350 MFORE      EQU $80 part of FORWARD reference block (in mode byte -- MFA)\r01360 MCOMP       EQU $80 compile only (in length byte -- NFA)\r01370 MIMM EQU $40 precedence is IMMEDIATE execution (in length byte -- NFA)\r01380 MHID    EQU $20 SMUDGEd definition (in length byte -- NFA)\r01390 *\r01400 * initiate an icode list\r01410 DOCOL   MACRO\r01420     JSR <XCOL\r01430         ENDM\r01440 *\r01450 DOVAR        MACRO\r01460     JSR <XVAR\r01470         ENDM\r01480 *\r01490 DOCON        MACRO\r01500     JSR <XCON\r01510         ENDM\r01520 *\r01530 DOUSER       MACRO\r01540     JSR <XUSER\r01550        ENDM\r01560 *\r01570 DO1ARR       MACRO\r01580     JSR <X1ARR\r01590        ENDM\r01600 *\r01610 DOUCON       MACRO\r01620     JSR <XUCON\r01630        ENDM\r01640 *\r01650 DOVOC        MACRO\r01660     JSR <XVOC\r01670         ENDM\r01680 *\r02000 * add D to top of stack\r02010 ADDTOP MACRO\r02020     ADDD ,U\r02030   STD ,U\r02040    JMP [,Y++]\r02050        ENDM\r02060 *\r
\ No newline at end of file
+00010 * EQUates and MACRO definitions for BIF
+00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
+01000 *
+{      bifc_vm.c:
+01010 * JMP to next icode word
+01020 NEXT     MACRO
+01030  JMP [,Y++]
+01040  ENDM
+01050 *
+}
+{      symbol.h:
+01053 * offset from name field to mode field
+01056 MFAOFF   EQU 1
+01057 * length of symbols, must be 2^n for mask
+01058 NLMASK   EQU $1F
+01060 * offset to previous allocation link
+01070 LFAOFF   EQU MFAOFF+1
+01080 * offset to owning VOCABULARY (genesis) link
+01090 GFAOFF   EQU LFAOFF+2
+01100 LFTOFF   EQU GFAOFF+2    left child link
+01110 RTOFF    EQU GFAOFF+4    right child link
+01120 * offset to code field
+01130 CFAOFF   EQU GFAOFF+6
+01140 * offset to parameter field (past Direct Page jump)
+01150 PFAOFF   EQU CFAOFF+2
+01160 * All links are relative to the name field (NFA)
+01170 * Use PFAOFF (or PFA) with ;CODE!
+01320 * usage and name length share a byte (name length < 32).
+01330 * foreward blocks marked in the mode byte
+01340 * usage and mode bits
+01350 MFORE    EQU $80 part of FORWARD reference block (in mode byte -- MFA)
+01360 MCOMP    EQU $80 compile only (in length byte -- NFA)
+01370 MIMM     EQU $40 precedence is IMMEDIATE execution (in length byte -- NFA)
+01380 MHID     EQU $20 SMUDGEd definition (in length byte -- NFA)
+01390 *
+}
+{      bifc_vm.c
+01400 * initiate an icode list
+01410 DOCOL    MACRO
+01420  JSR <XCOL
+01430  ENDM
+01440 *
+}
+{      symbol.c
+01450 DOVAR    MACRO
+01460  JSR <XVAR
+01470  ENDM
+01480 *
+01490 DOCON    MACRO
+01500  JSR <XCON
+01510  ENDM
+01520 *
+01530 DOUSER   MACRO
+01540  JSR <XUSER
+01550  ENDM
+01560 *
+01570 DO1ARR   MACRO
+01580  JSR <X1ARR
+01590  ENDM
+01600 *
+01610 DOUCON   MACRO
+01620  JSR <XUCON
+01630  ENDM
+01640 *
+01650 DOVOC    MACRO
+01660  JSR <XVOC
+01670  ENDM
+01680 *
+}
+{      unused
+02000 * add D to top of stack
+02010 ADDTOP   MACRO
+02020  ADDD ,U
+02030  STD ,U
+02040  JMP [,Y++]
+02050  ENDM
+02060 *
+}
index 1784e97..e05b058 100644 (file)
@@ -1 +1,438 @@
-00010 * Include file for BIF\r00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r00030 *\r01000  FCC 'MOVE'\r01010        FCB 4\r01020     FCB MFORE\r01030         FDB PREF-CFAOFF\r01040   FDB BIF+2\r01050         FDB MINUS-CFAOFF\r01060  FDB NFA-CFAOFF\r01070 MOVE       LDD ,U++ count=0?\r01080         BEQ MOVEX\r01090         PSHS Y,U\r01100  LDY ,U\r01110    LDU 2,U\r01120 MOVELP    PULU X\r01130    STX ,Y++\r01140  SUBD #1\r01150   BNE MOVELP\r01160        PULS Y,U\r01170 MOVEX    LEAU 4,U\r01180  NEXT\r01190 *\r01200      FCC 'CMOVE'\r01210       FCB 5\r01220     FCB MFORE\r01225         FDB MOVE-CFAOFF\r01230   FDB BIF+2\r01240         FDB CFA-CFAOFF\r01250    FDB COMP-CFAOFF\r01260 CMOVE     LDD #0\r01270    SUBD ,U++\r01280         PSHS A,Y\r01290  PULU X,Y\r01300  BEQ CMOVEX\r01310 CMOVEL LDA ,Y+\r01320   STA ,X+\r01330   INCB\r01340      BNE CMOVEL\r01350        INC ,S\r01360    BNE CMOVEL\r01370 CMOVEX PULS A,Y\r01380  NEXT\r01390 *\r01400      FCC 'U*'\r01410  FCB 2\r01420     FCB MFORE\r01430         FDB CMOVE-CFAOFF\r01440  FDB BIF+2\r01450         FDB TOG-CFAOFF\r01460    FDB UPDATE-CFAOFF\r01470 USTAR   LEAS -4,S\r01480         LDA 1,U LEAST\r01490     LDB 3,U\r01500   MUL\r01510       STD 2,S\r01520   LDA ,U most\r01530       LDB 2,U\r01540   MUL\r01550       STD ,S\r01560    LDD 1,U inner\r01570     MUL\r01580       ADDD 1,S\r01590  BCC *+4\r01600   INC ,S\r01605    STD 1,S\r01610   LDA ,U\r01620    LDB 3,U\r01630   MUL\r01640       ADDD 1,S\r01650  BCC *+4\r01660   INC ,S\r01670    STD 1,S\r01680   PULS D,X\r01690  STD ,U\r01700    STX 2,U\r01710   NEXT\r01720 *\r01730      FCC 'U/'\r01740  FCB 2\r01750     FCB MFORE\r01760         FDB USTAR-CFAOFF\r01770  FDB BIF+2\r01780         FDB 0\r01790     FDB 0\r01800 USLASH      LDA #17 bit ct\r01810    PSHS A\r01820    LDD 2,U dividend\r01830 USLDIV   CMPD ,U divisor\r01840   BHS USLSUB\r01850        ANDCC #.NOT.1\r01860     BRA USLBIT\r01870 USLSUB SUBD ,U\r01880   ORCC #1 quotient,\r01890 USLBIT  ROL 5,U save it\r01900   ROL 4,U\r01910   DEC ,S more bits?\r01920         BEQ USLR\r01930  ROLB remainder\r01940    ROLA\r01950      BCC USLDIV\r01960        BRA USLSUB\r01970 USLR   LEAS 1,S\r01980  LEAU 2,U\r01990  LDX 2,U\r02000   STD 2,U\r02010   STX ,U\r02020    NEXT\r02030 *\r02200      FCC 'AND'\r02210         FCB 3\r02220     FCB MFORE\r02230         FDB USLASH-CFAOFF\r02240         FDB BIF+2\r02250         FDB ABS-CFAOFF\r02260    FDB BACK-CFAOFF\r02270 AND       PULU D\r02280    ANDB 1,U\r02290  ANDA ,U\r02300   STD ,U\r02310    NEXT\r02320 *\r02330      FCC 'OR'\r02340  FCB 2\r02350     FCB MFORE\r02360         FDB AND-CFAOFF\r02370    FDB BIF+2\r02380         FDB OCT-CFAOFF\r02390    FDB OUT-CFAOFF\r02400 OR PULU D\r02410    ORB 1,U\r02420   ORA ,U\r02430    STD ,U\r02440    NEXT\r02450 *\r02460      FCC 'XOR'\r02470         FCB 3\r02480     FCB MFORE\r02490         FDB OR-CFAOFF\r02500     FDB BIF+2\r02510         FDB 0\r02520     FDB 0\r02530 XOR PULU D\r02540    EORB 1,U\r02550  EORA ,U\r02560   STD ,U\r02570    NEXT\r02580 *\r02590      FCC 'SP@'\r02600         FCB 3\r02610     FCB MFORE\r02620         FDB XOR-CFAOFF\r02630    FDB BIF+2\r02640         FDB SPSTO-CFAOFF\r02660  FDB 0\r02670 SPFEH       TFR U,X\r02680   PSHU X\r02690    NEXT\r02700 *\r02710      FCC 'SP!'\r02720         FCB 3\r02730     FCB MFORE\r02740         FDB SPFEH-CFAOFF\r02750  FDB BIF+2\r02760         FDB 0\r02770     FDB 0\r02780 SPSTO LDX <UP\r02790         LDU US0,X\r02793         CLR ,U hole\r02796       CLR 1,U\r02800   NEXT\r02810 *\r02820      FCC 'RP!'\r02830         FCB 3\r02840     FCB MFORE\r02850         FDB SPSTO-CFAOFF\r02860  FDB BIF+2\r02870         FDB 0\r02880     FDB 0\r02890 RPSTO LDX <UP\r02900         LDS UR0,X\r02903         CLR ,S hole\r02906       CLR 1,S\r02910   NEXT\r02920 *\r02930      FCC ';S'\r02940  FCB MIMM|2\r02950        FCB MFORE\r02960         FDB RPSTO-CFAOFF\r02970  FDB BIF+2\r02980         FDB 0\r02990     FDB 0\r03000 SEMIS       PULS Y un-nest\r03010    NEXT\r03020 *\r03030      FCC 'LEAVE'\r03040       FCB MCOMP|5\r03050       FCB MFORE\r03060         FDB SEMIS-CFAOFF\r03070  FDB BIF+2\r03080         FDB LATEST-CFAOFF\r03090         FDB LFA-CFAOFF\r03100 LEAVE      LDD ,S index\r03110      STD 2,S to limit\r03120  NEXT\r03130 *\r03140      FCC '>R'\r03150  FCB MCOMP|2\r03160       FCB MFORE\r03170         FDB LEAVE-CFAOFF\r03180  FDB BIF+2\r03190         FDB GT-CFAOFF\r03200     FDB QDOT-CFAOFF\r03210 TOR       PULU D\r03220    PSHS D\r03230    NEXT\r03240 *\r03250      FCC 'R>'\r03260  FCB MCOMP|2\r03270       FCB MFORE\r03280         FDB TOR-CFAOFF\r03290    FDB BIF+2\r03300         FDB R-CFAOFF\r03310      FDB REPEAT-CFAOFF\r03320 RFROM   JMP <XVAR not JSR!\r03350 *\r03360        FCC 'R'\r03370   FCB 1\r03380     FCB MFORE\r03390         FDB RFROM-CFAOFF\r03400  FDB BIF+2\r03410         FDB QUIT-CFAOFF\r03420   FDB RNUM-CFAOFF\r03430 R JMP I\r03431 *\r03432     FCC '='\r03433   FCB 1\r03434     FCB MFORE\r03435         FDB R-CFAOFF\r03436      FDB BIF+2\r03437         FDB LT-CFAOFF\r03438     FDB QCOMP-CFAOFF\r03439 EQ       PULU D\r03440    CMPD ,U\r03441   BEQ TRUE\r03442  BRA FALSE\r03451 *\r03452         FCC '<'\r03453   FCB 1\r03454     FCB MFORE\r03455         FDB EQ-CFAOFF\r03456     FDB BIF+2\r03457         FDB SCODE-CFAOFF\r03458  FDB BEGHSH-CFAOFF\r03459 LT      LDD 2,U\r03460   CMPD ,U++\r03461         BLT TRUE\r03462  BRA FALSE\r03463 *\r03490         FCC '0='\r03491  FCB 2\r03492     FCB MFORE\r03493         FDB LT-CFAOFF\r03494     FDB BIF+2\r03500         FDB 0\r03510     FDB ONE-CFAOFF\r03520 ZEQ        LDD ,U\r03530    BNE FALSE\r03540 TRUE    LDD #-1\r03550   STD ,U\r03560    NEXT\r03570 *\r03580      FCC '0<'\r03590  FCB 2\r03600     FCB MFORE\r03610         FDB ZEQ-CFAOFF\r03620    FDB BIF+2\r03630         FDB ZERO-CFAOFF\r03640   FDB ZEQ-CFAOFF\r03650 ZLESS      LDA ,U\r03660    BMI TRUE\r03665 FALSE    LDD #0\r03670    STD ,U\r03680    NEXT\r03681 *\r03682      FCC '>'\r03683   FCB 1\r03684     FCB MFORE\r03685         FDB ZLESS-CFAOFF\r03686  FDB BIF+2\r03687         FDB 0\r03688     FDB TOPRT-CFAOFF\r03689 GT       LDD 2,U\r03690   CMPD ,U++\r03691         BGT TRUE\r03692  BRA FALSE\r03693 *\r03700         FCC '+'\r03710   FCB 1\r03720     FCB MFORE\r03730         FDB GT-CFAOFF\r03740     FDB BIF+2\r03750         FDB PAREN-CFAOFF\r03760  FDB SLASH-CFAOFF\r03770 ADD      PULU D\r03780    ADDTOP\r03810 *\r03820    FCC '-'\r03830   FCB 1\r03840     FCB MFORE\r03850         FDB ADD-CFAOFF\r03860    FDB BIF+2\r03870         FDB 0\r03880     FDB 0\r03890 SUB LDD 2,U\r03900   SUBD ,U++\r03910         STD ,U\r03920    NEXT\r03930 *\r03940      FCC 'D+'\r03950  FCB 2\r03960     FCB MFORE\r03970         FDB SUB-CFAOFF\r03980    FDB BIF+2\r03990         FDB CONST-CFAOFF\r04000  FDB DABS-CFAOFF\r04010 DADD      LDD 6,U\r04020   ADDD 2,U\r04030  STD 6,U\r04040   LDD 4,U\r04050   ADCB 1,U\r04060  ADCA ,U\r04070   LEAU 4,U\r04080  STD ,U\r04090    NEXT\r04100 *\r04120      FCC 'D-'\r04130  FCB 2\r04140     FCB MFORE\r04150         FDB DADD-CFAOFF\r04160   FDB BIF+2\r04170         FDB DCHS-CFAOFF\r04180   FDB DDOT-CFAOFF\r04190 DSUB      LDD 6,U\r04200   SUBD 2,U\r04210  STD 6,U\r04220   LDD 4,U\r04230   SBCB 1,U\r04240  SBCA ,U\r04250   LEAU 4,U\r04260  STD ,U\r04270    NEXT\r04280 *\r04290      FCC 'MINUS'\r04300       FCB 5\r04310     FCB MFORE\r04320         FDB DSUB-CFAOFF\r04330   FDB BIF+2\r04340         FDB 0\r04350     FDB MOD-CFAOFF\r04360 MINUS      LDD #0\r04370    SUBD ,U\r04380   STD ,U\r04390    NEXT\r04400 *\r04410      FCC 'DMINUS'\r04420      FCB 6\r04430     FCB MFORE\r04440         FDB MINUS-CFAOFF\r04450  FDB BIF+2\r04460         FDB 0\r04470     FDB 0\r04480 DMINUS      LDD #0\r04490    SUBD 2,U\r04500  STD 2,U\r04510   LDD #0\r04520    SBCB 1,U\r04530  SBCA ,U\r04570   STD ,U\r04580    NEXT\r04590 *\r04600      FCC 'OVER'\r04610        FCB 4\r04620     FCB MFORE\r04630         FDB DMINUS-CFAOFF\r04640         FDB BIF+2\r04650         FDB OR-CFAOFF\r04660     FDB PFA-CFAOFF\r04670 OVER       LDD 2,U\r04680   PSHU D\r04690    NEXT\r04700 *\r04710      FCC 'DROP'\r04720        FCB 4\r04730     FCB MFORE\r04740         FDB OVER-CFAOFF\r04750   FDB BIF+2\r04760         FDB DPL-CFAOFF\r04770    FDB EMIT-CFAOFF\r04780 DROP      LEAU 2,U\r04790  NEXT\r04800 *\r04810      FCC 'SWAP'\r04820        FCB 4\r04830     FCB MFORE\r04840         FDB DROP-CFAOFF\r04850   FDB BIF+2\r04860         FDB ROT-CFAOFF\r04870    FDB VAR-CFAOFF\r04880 SWAP       PULU D,X\r04890  PSHU D\r04900    PSHU X\r04910    NEXT\r04920 *\r04930      FCC 'DUP'\r04940         FCB 3\r04940     FCB MFORE\r04950         FDB SWAP-CFAOFF\r04960   FDB BIF+2\r04970         FDB 0 * DUMP-CFAOFF\r04980       FDB ELSE-CFAOFF\r04990 DUP       LDD ,U\r05000    PSHU D\r05010    NEXT\r05020 *\r05030      FCC '+!'\r05040  FCB 2\r05050     FCB MFORE\r05060         FDB DUP-CFAOFF\r05070    FDB BIF+2\r05080         FDB 0\r05090     FDB 0\r05100 ADDSTO      PULU X\r05110    LDD ,X\r05120    ADDD ,U++\r05130         STD ,X\r05140    NEXT\r05150 *\r
\ No newline at end of file
+00010 * Include file for BIF
+00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
+00030 *
+01000  FCC 'MOVE'
+01010  FCB 4
+01020  FCB MFORE
+01030  FDB PREF-CFAOFF
+01040  FDB BIF+2
+01050  FDB MINUS-CFAOFF
+01060  FDB NFA-CFAOFF
+01070 MOVE     LDD ,U++ count=0?
+01080  BEQ MOVEX
+01090  PSHS Y,U
+01100  LDY ,U
+01110  LDU 2,U
+01120 MOVELP   PULU X
+01130  STX ,Y++
+01140  SUBD #1
+01150  BNE MOVELP
+01160  PULS Y,U
+01170 MOVEX    LEAU 4,U
+01180  NEXT
+01190 *
+01200  FCC 'CMOVE'
+01210  FCB 5
+01220  FCB MFORE
+01225  FDB MOVE-CFAOFF
+01230  FDB BIF+2
+01240  FDB CFA-CFAOFF
+01250  FDB COMP-CFAOFF
+01260 CMOVE    LDD #0
+01270  SUBD ,U++
+01280  PSHS A,Y
+01290  PULU X,Y
+01300  BEQ CMOVEX
+01310 CMOVEL   LDA ,Y+
+01320  STA ,X+
+01330  INCB
+01340  BNE CMOVEL
+01350  INC ,S
+01360  BNE CMOVEL
+01370 CMOVEX   PULS A,Y
+01380  NEXT
+01390 *
+01400  FCC 'U*'
+01410  FCB 2
+01420  FCB MFORE
+01430  FDB CMOVE-CFAOFF
+01440  FDB BIF+2
+01450  FDB TOG-CFAOFF
+01460  FDB UPDATE-CFAOFF
+01470 USTAR    LEAS -4,S
+01480  LDA 1,U LEAST
+01490  LDB 3,U
+01500  MUL
+01510  STD 2,S
+01520  LDA ,U most
+01530  LDB 2,U
+01540  MUL
+01550  STD ,S
+01560  LDD 1,U inner
+01570  MUL
+01580  ADDD 1,S
+01590  BCC *+4
+01600  INC ,S
+01605  STD 1,S
+01610  LDA ,U
+01620  LDB 3,U
+01630  MUL
+01640  ADDD 1,S
+01650  BCC *+4
+01660  INC ,S
+01670  STD 1,S
+01680  PULS D,X
+01690  STD ,U
+01700  STX 2,U
+01710  NEXT
+01720 *
+01730  FCC 'U/'
+01740  FCB 2
+01750  FCB MFORE
+01760  FDB USTAR-CFAOFF
+01770  FDB BIF+2
+01780  FDB 0
+01790  FDB 0
+01800 USLASH   LDA #17 bit ct
+01810  PSHS A
+01820  LDD 2,U dividend
+01830 USLDIV   CMPD ,U divisor
+01840  BHS USLSUB
+01850  ANDCC #.NOT.1
+01860  BRA USLBIT
+01870 USLSUB   SUBD ,U
+01880  ORCC #1 quotient,
+01890 USLBIT   ROL 5,U save it
+01900  ROL 4,U
+01910  DEC ,S more bits?
+01920  BEQ USLR
+01930  ROLB remainder
+01940  ROLA
+01950  BCC USLDIV
+01960  BRA USLSUB
+01970 USLR     LEAS 1,S
+01980  LEAU 2,U
+01990  LDX 2,U
+02000  STD 2,U
+02010  STX ,U
+02020  NEXT
+02030 *
+02200  FCC 'AND'
+02210  FCB 3
+02220  FCB MFORE
+02230  FDB USLASH-CFAOFF
+02240  FDB BIF+2
+02250  FDB ABS-CFAOFF
+02260  FDB BACK-CFAOFF
+02270 AND      PULU D
+02280  ANDB 1,U
+02290  ANDA ,U
+02300  STD ,U
+02310  NEXT
+02320 *
+02330  FCC 'OR'
+02340  FCB 2
+02350  FCB MFORE
+02360  FDB AND-CFAOFF
+02370  FDB BIF+2
+02380  FDB OCT-CFAOFF
+02390  FDB OUT-CFAOFF
+02400 OR       PULU D
+02410  ORB 1,U
+02420  ORA ,U
+02430  STD ,U
+02440  NEXT
+02450 *
+02460  FCC 'XOR'
+02470  FCB 3
+02480  FCB MFORE
+02490  FDB OR-CFAOFF
+02500  FDB BIF+2
+02510  FDB 0
+02520  FDB 0
+02530 XOR      PULU D
+02540  EORB 1,U
+02550  EORA ,U
+02560  STD ,U
+02570  NEXT
+02580 *
+02590  FCC 'SP@'
+02600  FCB 3
+02610  FCB MFORE
+02620  FDB XOR-CFAOFF
+02630  FDB BIF+2
+02640  FDB SPSTO-CFAOFF
+02660  FDB 0
+02670 SPFEH    TFR U,X
+02680  PSHU X
+02690  NEXT
+02700 *
+02710  FCC 'SP!'
+02720  FCB 3
+02730  FCB MFORE
+02740  FDB SPFEH-CFAOFF
+02750  FDB BIF+2
+02760  FDB 0
+02770  FDB 0
+02780 SPSTO LDX <UP
+02790  LDU US0,X
+02793  CLR ,U hole
+02796  CLR 1,U
+02800  NEXT
+02810 *
+02820  FCC 'RP!'
+02830  FCB 3
+02840  FCB MFORE
+02850  FDB SPSTO-CFAOFF
+02860  FDB BIF+2
+02870  FDB 0
+02880  FDB 0
+02890 RPSTO LDX <UP
+02900  LDS UR0,X
+02903  CLR ,S hole
+02906  CLR 1,S
+02910  NEXT
+02920 *
+02930  FCC ';S'
+02940  FCB MIMM|2
+02950  FCB MFORE
+02960  FDB RPSTO-CFAOFF
+02970  FDB BIF+2
+02980  FDB 0
+02990  FDB 0
+03000 SEMIS    PULS Y un-nest
+03010  NEXT
+03020 *
+03030  FCC 'LEAVE'
+03040  FCB MCOMP|5
+03050  FCB MFORE
+03060  FDB SEMIS-CFAOFF
+03070  FDB BIF+2
+03080  FDB LATEST-CFAOFF
+03090  FDB LFA-CFAOFF
+03100 LEAVE    LDD ,S index
+03110  STD 2,S to limit
+03120  NEXT
+03130 *
+03140  FCC '>R'
+03150  FCB MCOMP|2
+03160  FCB MFORE
+03170  FDB LEAVE-CFAOFF
+03180  FDB BIF+2
+03190  FDB GT-CFAOFF
+03200  FDB QDOT-CFAOFF
+03210 TOR      PULU D
+03220  PSHS D
+03230  NEXT
+03240 *
+03250  FCC 'R>'
+03260  FCB MCOMP|2
+03270  FCB MFORE
+03280  FDB TOR-CFAOFF
+03290  FDB BIF+2
+03300  FDB R-CFAOFF
+03310  FDB REPEAT-CFAOFF
+03320 RFROM    JMP <XVAR not JSR!
+03350 *
+03360  FCC 'R'
+03370  FCB 1
+03380  FCB MFORE
+03390  FDB RFROM-CFAOFF
+03400  FDB BIF+2
+03410  FDB QUIT-CFAOFF
+03420  FDB RNUM-CFAOFF
+03430 R        JMP I
+03431 *
+03432  FCC '='
+03433  FCB 1
+03434  FCB MFORE
+03435  FDB R-CFAOFF
+03436  FDB BIF+2
+03437  FDB LT-CFAOFF
+03438  FDB QCOMP-CFAOFF
+03439 EQ       PULU D
+03440  CMPD ,U
+03441  BEQ TRUE
+03442  BRA FALSE
+03451 *
+03452  FCC '<'
+03453  FCB 1
+03454  FCB MFORE
+03455  FDB EQ-CFAOFF
+03456  FDB BIF+2
+03457  FDB SCODE-CFAOFF
+03458  FDB BEGHSH-CFAOFF
+03459 LT       LDD 2,U
+03460  CMPD ,U++
+03461  BLT TRUE
+03462  BRA FALSE
+03463 *
+03490  FCC '0='
+03491  FCB 2
+03492  FCB MFORE
+03493  FDB LT-CFAOFF
+03494  FDB BIF+2
+03500  FDB 0
+03510  FDB ONE-CFAOFF
+03520 ZEQ      LDD ,U
+03530  BNE FALSE
+03540 TRUE     LDD #-1
+03550  STD ,U
+03560  NEXT
+03570 *
+03580  FCC '0<'
+03590  FCB 2
+03600  FCB MFORE
+03610  FDB ZEQ-CFAOFF
+03620  FDB BIF+2
+03630  FDB ZERO-CFAOFF
+03640  FDB ZEQ-CFAOFF
+03650 ZLESS    LDA ,U
+03660  BMI TRUE
+03665 FALSE    LDD #0
+03670  STD ,U
+03680  NEXT
+03681 *
+03682  FCC '>'
+03683  FCB 1
+03684  FCB MFORE
+03685  FDB ZLESS-CFAOFF
+03686  FDB BIF+2
+03687  FDB 0
+03688  FDB TOPRT-CFAOFF
+03689 GT       LDD 2,U
+03690  CMPD ,U++
+03691  BGT TRUE
+03692  BRA FALSE
+03693 *
+03700  FCC '+'
+03710  FCB 1
+03720  FCB MFORE
+03730  FDB GT-CFAOFF
+03740  FDB BIF+2
+03750  FDB PAREN-CFAOFF
+03760  FDB SLASH-CFAOFF
+03770 ADD      PULU D
+03780  ADDTOP
+03810 *
+03820  FCC '-'
+03830  FCB 1
+03840  FCB MFORE
+03850  FDB ADD-CFAOFF
+03860  FDB BIF+2
+03870  FDB 0
+03880  FDB 0
+03890 SUB      LDD 2,U
+03900  SUBD ,U++
+03910  STD ,U
+03920  NEXT
+03930 *
+03940  FCC 'D+'
+03950  FCB 2
+03960  FCB MFORE
+03970  FDB SUB-CFAOFF
+03980  FDB BIF+2
+03990  FDB CONST-CFAOFF
+04000  FDB DABS-CFAOFF
+04010 DADD     LDD 6,U
+04020  ADDD 2,U
+04030  STD 6,U
+04040  LDD 4,U
+04050  ADCB 1,U
+04060  ADCA ,U
+04070  LEAU 4,U
+04080  STD ,U
+04090  NEXT
+04100 *
+04120  FCC 'D-'
+04130  FCB 2
+04140  FCB MFORE
+04150  FDB DADD-CFAOFF
+04160  FDB BIF+2
+04170  FDB DCHS-CFAOFF
+04180  FDB DDOT-CFAOFF
+04190 DSUB     LDD 6,U
+04200  SUBD 2,U
+04210  STD 6,U
+04220  LDD 4,U
+04230  SBCB 1,U
+04240  SBCA ,U
+04250  LEAU 4,U
+04260  STD ,U
+04270  NEXT
+04280 *
+04290  FCC 'MINUS'
+04300  FCB 5
+04310  FCB MFORE
+04320  FDB DSUB-CFAOFF
+04330  FDB BIF+2
+04340  FDB 0
+04350  FDB MOD-CFAOFF
+04360 MINUS    LDD #0
+04370  SUBD ,U
+04380  STD ,U
+04390  NEXT
+04400 *
+04410  FCC 'DMINUS'
+04420  FCB 6
+04430  FCB MFORE
+04440  FDB MINUS-CFAOFF
+04450  FDB BIF+2
+04460  FDB 0
+04470  FDB 0
+04480 DMINUS   LDD #0
+04490  SUBD 2,U
+04500  STD 2,U
+04510  LDD #0
+04520  SBCB 1,U
+04530  SBCA ,U
+04570  STD ,U
+04580  NEXT
+04590 *
+04600  FCC 'OVER'
+04610  FCB 4
+04620  FCB MFORE
+04630  FDB DMINUS-CFAOFF
+04640  FDB BIF+2
+04650  FDB OR-CFAOFF
+04660  FDB PFA-CFAOFF
+04670 OVER     LDD 2,U
+04680  PSHU D
+04690  NEXT
+04700 *
+04710  FCC 'DROP'
+04720  FCB 4
+04730  FCB MFORE
+04740  FDB OVER-CFAOFF
+04750  FDB BIF+2
+04760  FDB DPL-CFAOFF
+04770  FDB EMIT-CFAOFF
+04780 DROP     LEAU 2,U
+04790  NEXT
+04800 *
+04810  FCC 'SWAP'
+04820  FCB 4
+04830  FCB MFORE
+04840  FDB DROP-CFAOFF
+04850  FDB BIF+2
+04860  FDB ROT-CFAOFF
+04870  FDB VAR-CFAOFF
+04880 SWAP     PULU D,X
+04890  PSHU D
+04900  PSHU X
+04910  NEXT
+04920 *
+04930  FCC 'DUP'
+04940  FCB 3
+04940  FCB MFORE
+04950  FDB SWAP-CFAOFF
+04960  FDB BIF+2
+04970  FDB 0 * DUMP-CFAOFF
+04980  FDB ELSE-CFAOFF
+04990 DUP      LDD ,U
+05000  PSHU D
+05010  NEXT
+05020 *
+05030  FCC '+!'
+05040  FCB 2
+05050  FCB MFORE
+05060  FDB DUP-CFAOFF
+05070  FDB BIF+2
+05080  FDB 0
+05090  FDB 0
+05100 ADDSTO   PULU X
+05110  LDD ,X
+05120  ADDD ,U++
+05130  STD ,X
+05140  NEXT
+05150 *
index 8f4fec7..7ba4407 100644 (file)
@@ -1 +1,243 @@
-00010 * Include file for BIF\r00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r00030 *\r05160  FCC 'TOGGLE'\r05170      FCB 6\r05180     FCB MFORE\r05190         FDB ADDSTO-CFAOFF\r05200         FDB BIF+2\r05210         FDB TIB-CFAOFF\r05220    FDB TYPE-CFAOFF\r05230 TOG       PULU D,X\r05240  EORB ,X\r05250   STB ,X\r05260    NEXT\r05270 *\r05280      FCC 'C@'\r05290  FCB 2\r05300     FCB MFORE\r05310         FDB TOG-CFAOFF\r05320    FDB BIF+2\r05330         FDB BUFFER-CFAOFF\r05340         FDB DADD-CFAOFF\r05350 CFEH      LDB [,U]\r05360  CLRA\r05370      STD ,U\r05380    NEXT\r05390 *\r05400      FCC 'C!'\r05410  FCB 2\r05420     FCB MFORE\r05430         FDB CFEH-CFAOFF\r05440   FDB BIF+2\r05450         FDB 0\r05460     FDB 0\r05470 CSTO        LDB 3,U\r05480   STB [,U]\r05490  LEAU 4,U\r05500  NEXT\r05510 *\r05520      FCC 'ROT'\r05530         FCB 3\r05540     FCB MFORE\r05550         FDB CSTO-CFAOFF\r05560   FDB BIF+2\r05570         FDB RFROM-CFAOFF\r05580  FDB SMUDGE-CFAOFF\r05590 ROT     PSHS Y\r05600    PULU D,X,Y\r05610        PSHU D,X\r05620  PSHU Y\r05630    PULS Y\r05640    NEXT\r05650 *\r05660      FCC 'BACK' back ref\r05670       FCB MCOMP.OR.4\r05680    FCB MFORE\r05690         FDB ROT-CFAOFF\r05700    FDB BIF+2\r05710         FDB BPBUF-CFAOFF\r05720  FDB BEGIN-CFAOFF\r05730 BACK     LDX <UP\r05740   PULU D target\r05750     SUBD UDP,X here\r05755   SUBD #2 past\r05760      PSHU D\r05770    JMP COMMA\r05780 *\r05800         FCC 'NOT'\r05810         FCB 3\r05820     FCB MFORE\r05830         FDB BACK-CFAOFF\r05840   FDB BIF+2\r05850         FDB NDOT-CFAOFF\r05860   FDB 0\r05870 NOT LDD ,U\r05880    COMB\r05890      COMA\r05900      STD ,U\r05910    NEXT\r05920 *\r05990      FCC /'/\r06000   FCB MIMM.OR.1\r06010     FCB MFORE\r06020         FDB NOT-CFAOFF\r06030    FDB BIF+2\r06040         FDB HASHS-CFAOFF\r06050  FDB 0\r06055 * ' see fig-FORTH model\r06060 TICK  DOCOL\r06070     FDB DDFIND\r06080        FDB DROP\r06090  FDB DUP\r06100   FDB ZEQ\r06110   FDB ZERO\r06120  FDB QERR\r06130  FDB LITER\r06140         FDB SEMIS\r06150 *\r07000         FCC '-->'\r07010         FCB MIMM.OR.3\r07020     FCB MFORE\r07030         FDB TICK-CFAOFF\r07040   FDB BIF+2\r07050         FDB PLOOP-CFAOFF\r07060  FDB DOT-CFAOFF\r07065 * --> see fig-FORTH model\r07070 NEXSCR     DOCOL\r07080     FDB QLOAD\r07090         FDB ZERO\r07100  FDB IN\r07110    FDB STORE\r07120         FDB BPSCR\r07130         FDB BLK\r07140   FDB FETCH\r07150         FDB OVER\r07160  FDB MOD remaining in screen\r07170       FDB SUB\r07180   FDB BLK\r07190   FDB ADDSTO to next\r07200        FDB SEMIS\r07290 *\r07300         FCC '1ARRAY'\r07310      FCB 6\r07320     FCB MFORE\r07330         FDB NEXSCR-CFAOFF\r07340         FDB BIF+2\r07350         FDB SUB1-CFAOFF\r07360   FDB TBR-CFAOFF\r07370 ONEARR     DOCOL\r07380     FDB CREATE\r07390        FDB IPCOM\r07400         DO1ARR\r07410    FDB XMACH\r07415         LDX ,U\r07420    CMPX #255       0<el-size<256\r07430     BLS ONEARW\r07440 ONEARE LDD #$0D\r07450  PSHU D\r07460    LBRA ERROR\r07470 ONEARW LDD 4,U         swap\r07480      STD ,U\r07490    STX 4,U\r07500   LDD 2,U         last\r07510      SUBD ,U         first\r07520     BLT ONEARE      real dimension?\r07530   ADDD #1 element count\r07540     STD 2,U\r07550   PSHU D,X\r07560  DOCOL\r07570     FDB USTAR\r07580         FDB LIT overflow?\r07590         FDB $0D\r07600   FDB QERR\r07610  FDB TOR byte count\r07620        FDB COMMA       base\r07630      FDB COMMA       width\r07640     FDB CCOMMA      element size\r07650      FDB RFROM\r07660         FDB ALLOT\r07670         FDB SMUDGE\r07680        FDB SEMIS\r07690 *\r07700         FCC 'UTILITIES'\r07710   FCB MIMM.OR.9\r07720     FCB MFORE\r07730         FDB ONEARR-CFAOFF\r07740         FDB BIF+2\r07750         FDB 0\r07760     FDB 0\r07770 UTIL        DOVOC\r07780     FDB DPFEH-CFAOFF\r07890 *\r07900  FCC 'DP@'\r07910         FCB 3\r07920     FCB MFORE\r07930         FDB UTIL-CFAOFF\r07940   FDB UTIL+2\r07950        FDB 0\r07960     FDB 0\r07970 DPFEH       TFR DP,A\r07980  CLRB\r07990      PSHU D\r07992    NEXT\r07994 *\r08000      FCC 'DCONSTANT'\r08010   FCB 9\r08020     FCB MFORE\r08030         FDB DPFEH-CFAOFF\r08040  FDB BIF+2\r08050         FDB 0\r08060     FDB 0\r08070 DCON        DOCOL\r08080     FDB CREATE\r08090        FDB IPCOM\r08100         JSR <XDCON\r08110        FDB COMMA\r08120         FDB COMMA\r08130         FDB SMUDGE\r08140        FDB SEMIS\r08390 *\r08300         FCC 'SWAB'\r08310        FCB 4\r08320     FCB MFORE\r08330         FDB DCON-CFAOFF\r08340   FDB BIF+2\r08350         FDB 0\r08360     FDB SWAN-CFAOFF\r08370 SWAB      LDD ,U\r08380    STB ,U  LS byte\r08390   STA 1,U MS byte\r08400   NEXT\r08490 *\r08500      FCC 'SWAN'\r08510        FCB 4\r08520     FCB MFORE\r08530         FDB SWAB-CFAOFF\r08540   FDB BIF+2\r08550         FDB 0\r08560     FDB 0\r08570 SWAN        LDA 1,U\r08580   LDB 1,U\r08590   LSRA\r08600      RORB\r08610      LSRA\r08620      RORB\r08630      LSRA\r08640      RORB\r08650      LSRA\r08660      RORB\r08670      STB 1,U\r08680   LDA ,U\r08690    LDB ,U\r08700    LSRA\r08710      RORB\r08720      LSRA\r08730      RORB\r08740      LSRA\r08750      RORB\r08760      LSRA\r08770      RORB\r08780      STB ,U\r08790    NEXT\r08890 *\r
\ No newline at end of file
+00010 * Include file for BIF
+00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
+00030 *
+05160  FCC 'TOGGLE'
+05170  FCB 6
+05180  FCB MFORE
+05190  FDB ADDSTO-CFAOFF
+05200  FDB BIF+2
+05210  FDB TIB-CFAOFF
+05220  FDB TYPE-CFAOFF
+05230 TOG      PULU D,X
+05240  EORB ,X
+05250  STB ,X
+05260  NEXT
+05270 *
+05280  FCC 'C@'
+05290  FCB 2
+05300  FCB MFORE
+05310  FDB TOG-CFAOFF
+05320  FDB BIF+2
+05330  FDB BUFFER-CFAOFF
+05340  FDB DADD-CFAOFF
+05350 CFEH     LDB [,U]
+05360  CLRA
+05370  STD ,U
+05380  NEXT
+05390 *
+05400  FCC 'C!'
+05410  FCB 2
+05420  FCB MFORE
+05430  FDB CFEH-CFAOFF
+05440  FDB BIF+2
+05450  FDB 0
+05460  FDB 0
+05470 CSTO     LDB 3,U
+05480  STB [,U]
+05490  LEAU 4,U
+05500  NEXT
+05510 *
+05520  FCC 'ROT'
+05530  FCB 3
+05540  FCB MFORE
+05550  FDB CSTO-CFAOFF
+05560  FDB BIF+2
+05570  FDB RFROM-CFAOFF
+05580  FDB SMUDGE-CFAOFF
+05590 ROT      PSHS Y
+05600  PULU D,X,Y
+05610  PSHU D,X
+05620  PSHU Y
+05630  PULS Y
+05640  NEXT
+05650 *
+05660  FCC 'BACK' back ref
+05670  FCB MCOMP.OR.4
+05680  FCB MFORE
+05690  FDB ROT-CFAOFF
+05700  FDB BIF+2
+05710  FDB BPBUF-CFAOFF
+05720  FDB BEGIN-CFAOFF
+05730 BACK     LDX <UP
+05740  PULU D target
+05750  SUBD UDP,X here
+05755  SUBD #2 past
+05760  PSHU D
+05770  JMP COMMA
+05780 *
+05800  FCC 'NOT'
+05810  FCB 3
+05820  FCB MFORE
+05830  FDB BACK-CFAOFF
+05840  FDB BIF+2
+05850  FDB NDOT-CFAOFF
+05860  FDB 0
+05870 NOT      LDD ,U
+05880  COMB
+05890  COMA
+05900  STD ,U
+05910  NEXT
+05920 *
+05990  FCC /'/
+06000  FCB MIMM.OR.1
+06010  FCB MFORE
+06020  FDB NOT-CFAOFF
+06030  FDB BIF+2
+06040  FDB HASHS-CFAOFF
+06050  FDB 0
+06055 * ' see fig-FORTH model
+06060 TICK     DOCOL
+06070  FDB DDFIND
+06080  FDB DROP
+06090  FDB DUP
+06100  FDB ZEQ
+06110  FDB ZERO
+06120  FDB QERR
+06130  FDB LITER
+06140  FDB SEMIS
+06150 *
+07000  FCC '-->'
+07010  FCB MIMM.OR.3
+07020  FCB MFORE
+07030  FDB TICK-CFAOFF
+07040  FDB BIF+2
+07050  FDB PLOOP-CFAOFF
+07060  FDB DOT-CFAOFF
+07065 * --> see fig-FORTH model
+07070 NEXSCR   DOCOL
+07080  FDB QLOAD
+07090  FDB ZERO
+07100  FDB IN
+07110  FDB STORE
+07120  FDB BPSCR
+07130  FDB BLK
+07140  FDB FETCH
+07150  FDB OVER
+07160  FDB MOD remaining in screen
+07170  FDB SUB
+07180  FDB BLK
+07190  FDB ADDSTO to next
+07200  FDB SEMIS
+07290 *
+07300  FCC '1ARRAY'
+07310  FCB 6
+07320  FCB MFORE
+07330  FDB NEXSCR-CFAOFF
+07340  FDB BIF+2
+07350  FDB SUB1-CFAOFF
+07360  FDB TBR-CFAOFF
+07370 ONEARR   DOCOL
+07380  FDB CREATE
+07390  FDB IPCOM
+07400  DO1ARR
+07410  FDB XMACH
+07415  LDX ,U
+07420  CMPX #255       0<el-size<256
+07430  BLS ONEARW
+07440 ONEARE   LDD #$0D
+07450  PSHU D
+07460  LBRA ERROR
+07470 ONEARW   LDD 4,U         swap
+07480  STD ,U
+07490  STX 4,U
+07500  LDD 2,U         last
+07510  SUBD ,U         first
+07520  BLT ONEARE      real dimension?
+07530  ADDD #1 element count
+07540  STD 2,U
+07550  PSHU D,X
+07560  DOCOL
+07570  FDB USTAR
+07580  FDB LIT overflow?
+07590  FDB $0D
+07600  FDB QERR
+07610  FDB TOR byte count
+07620  FDB COMMA       base
+07630  FDB COMMA       width
+07640  FDB CCOMMA      element size
+07650  FDB RFROM
+07660  FDB ALLOT
+07670  FDB SMUDGE
+07680  FDB SEMIS
+07690 *
+07700  FCC 'UTILITIES'
+07710  FCB MIMM.OR.9
+07720  FCB MFORE
+07730  FDB ONEARR-CFAOFF
+07740  FDB BIF+2
+07750  FDB 0
+07760  FDB 0
+07770 UTIL     DOVOC
+07780  FDB DPFEH-CFAOFF
+07890 *
+07900  FCC 'DP@'
+07910  FCB 3
+07920  FCB MFORE
+07930  FDB UTIL-CFAOFF
+07940  FDB UTIL+2
+07950  FDB 0
+07960  FDB 0
+07970 DPFEH    TFR DP,A
+07980  CLRB
+07990  PSHU D
+07992  NEXT
+07994 *
+08000  FCC 'DCONSTANT'
+08010  FCB 9
+08020  FCB MFORE
+08030  FDB DPFEH-CFAOFF
+08040  FDB BIF+2
+08050  FDB 0
+08060  FDB 0
+08070 DCON     DOCOL
+08080  FDB CREATE
+08090  FDB IPCOM
+08100  JSR <XDCON
+08110  FDB COMMA
+08120  FDB COMMA
+08130  FDB SMUDGE
+08140  FDB SEMIS
+08390 *
+08300  FCC 'SWAB'
+08310  FCB 4
+08320  FCB MFORE
+08330  FDB DCON-CFAOFF
+08340  FDB BIF+2
+08350  FDB 0
+08360  FDB SWAN-CFAOFF
+08370 SWAB     LDD ,U
+08380  STB ,U  LS byte
+08390  STA 1,U MS byte
+08400  NEXT
+08490 *
+08500  FCC 'SWAN'
+08510  FCB 4
+08520  FCB MFORE
+08530  FDB SWAB-CFAOFF
+08540  FDB BIF+2
+08550  FDB 0
+08560  FDB 0
+08570 SWAN     LDA 1,U
+08580  LDB 1,U
+08590  LSRA
+08600  RORB
+08610  LSRA
+08620  RORB
+08630  LSRA
+08640  RORB
+08650  LSRA
+08660  RORB
+08670  STB 1,U
+08680  LDA ,U
+08690  LDB ,U
+08700  LSRA
+08710  RORB
+08720  LSRA
+08730  RORB
+08740  LSRA
+08750  RORB
+08760  LSRA
+08770  RORB
+08780  STB ,U
+08790  NEXT
+08890 *
index 92b022a..2d7eb42 100644 (file)
@@ -1 +1,392 @@
-00010 * Include file for BIF\r00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r00030 *\r01000  FCC '1+'\r01010  FCB 2\r01020     FCB MFORE\r01030         FDB SWAN-CFAOFF\r01040   FDB BIF+2\r01050         FDB ZLESS-CFAOFF\r01060  FDB ADD2-CFAOFF\r01070 ADD1      LDD #1\r01080    ADDTOP\r01110 *\r01120    FCC '1-'\r01130  FCB 2\r01140     FCB MFORE\r01150         FDB ADD1-CFAOFF\r01160   FDB BIF+2\r01170         FDB 0\r01180     FDB 0\r01190 SUB1        LDD #-1\r01200   ADDTOP\r01230 *\r01240    FCC '2+'\r01250  FCB 2\r01260     FCB MFORE\r01270         FDB SUB1-CFAOFF\r01280   FDB BIF+2\r01290         FDB TWO-CFAOFF\r01300    FDB RSHIFT-CFAOFF\r01310 ADD2    LDD #2\r01320    ADDTOP\r01330 *\r01340    FCC '2-'\r01350  FCB 2\r01360     FCB MFORE\r01370         FDB ADD2-CFAOFF\r01380   FDB BIF+2\r01390         FDB 0\r01400     FDB 0\r01410 SUB2        LDD #-2\r01420   ADDTOP\r01430 *\r01440    FCC '0'\r01450   FCB 1\r01460     FCB MFORE\r01470         FDB SUB2-CFAOFF\r01480   FDB BIF+2\r01490         FDB SLAMOD-CFAOFF\r01500         FDB INULL-CFAOFF\r01510 ZERO     LDD #0\r01520    PSHU D\r01530    NEXT\r01540 *\r01550      FCC '1'\r01560   FCB 1\r01570     FCB MFORE\r01580         FDB ZERO-CFAOFF\r01590   FDB BIF+2\r01600         FDB ZBR-CFAOFF\r01610    FDB 0\r01620 ONE LDD #1\r01630    PSHU D\r01640    NEXT\r01650 *\r01660      FCC '-1'\r01670  FCB 2\r01680     FCB MFORE\r01690         FDB ONE-CFAOFF\r01700    FDB BIF+2\r01710         FDB 0\r01720     FDB DDFIND-CFAOFF\r01730 MONE    LDD #-1\r01740   PSHU D\r01750    NEXT\r01760 *\r01770      FCC '2'\r01780   FCB 1\r01790     FCB MFORE\r01800         FDB MONE-CFAOFF\r01810   FDB BIF+2\r01820         FDB ONEARR-CFAOFF\r01830         FDB LSHIFT-CFAOFF\r01840 TWO     DOCON\r01850     FDB 2\r01860 *\r01870     FCC '3'\r01880   FCB 1\r01890     FCB MFORE\r01895         FDB TWO-CFAOFF\r01900    FDB BIF+2\r01910         FDB 0\r01920     FDB 0\r01930 THREE       DOCON\r01940     FDB 3\r01950 *\r01960     FCC 'BL'\r01970  FCB 2\r01980     FCB MFORE\r01990         FDB THREE-CFAOFF\r02000  FDB BIF+2\r02010         FDB 0\r02020     FDB 0\r02030 BL  DOCON\r02040     FDB $20 ascii SP\r02050 *\r02060  FCC 'C/L'\r02070         FCB 3\r02080     FCB MFORE\r02090         FDB BL-CFAOFF\r02100     FDB BIF+2\r02110         FDB 0\r02120     FDB 0\r02130 CPERL       DOUCON\r02140    FCB UCOLUM\r02170 *\r02180        FCC 'FIRST'\r02190       FCB 5\r02200     FCB MFORE\r02210         FDB CPERL-CFAOFF\r02220  FDB BIF+2\r02230         FDB 0\r02240     FDB FLD-CFAOFF\r02250 FIRST      DOUCON\r02260    FCB UFIRST\r02290 *\r02300        FCC 'LIMIT'\r02310       FCB 5\r02320     FCB MFORE\r02330         FDB FIRST-CFAOFF\r02340  FDB BIF+2\r02350         FDB LEAVE-CFAOFF\r02360  FDB LITER-CFAOFF\r02370 LIMIT    DOUCON\r02380    FCB ULIMIT\r02400 *\r02410 BWID   EQU 256 bytes\r02420     FCC 'B/BUF'\r02430       FCB 5\r02440     FCB MFORE\r02450         FDB LIMIT-CFAOFF\r02460  FDB BIF+2\r02470         FDB ASMBLR-CFAOFF\r02480         FDB BPSCR-CFAOFF\r02490 BPBUF    DOCON\r02500     FDB BWID\r02510 *\r02520 BCT      EQU 4 buffers\r02520     FCC 'B/SCR'\r02530       FCB 5\r02540     FCB MFORE\r02550         FDB BPBUF-CFAOFF\r02560  FDB BIF+2\r02570         FDB 0\r02580     FDB 0\r02590 BPSCR       DOCON\r02600     FDB BCT\r02610 *\r02620   FCC '+ORIGIN'\r02630     FCB 7\r02640     FCB MFORE\r02650         FDB BPSCR-CFAOFF\r02660  FDB BIF+2\r02670         FDB 0\r02680     FDB 0\r02690 PORIG       LDD #ORIG\r02700         LBRA ADD+2\r02710 *\r02715 * some USER vars hidden\r02720 * fig-FORTH USER vars not present:\r02722 * WIDTH VOC-LINK CONTEXT CURRENT\r02724 *\r02730  FCC 'TIB'\r02740         FCB 3\r02750     FCB MFORE\r02760         FDB PORIG-CFAOFF\r02770  FDB BIF+2\r02780         FDB 0\r02790     FDB 0\r02800 TIB DOUSER\r02810    FCB UTIB\r02820 *\r02930  FCC 'WARNING'\r02940     FCB 7\r02950     FCB MFORE\r02960         FDB TIB-CFAOFF\r02970    FDB BIF+2\r02980         FDB 0\r02990     FDB 0\r03000 WARN        DOUSER\r03010    FCB UWARN\r03020 *\r03030         FCC 'FENCE'\r03040       FCB 5\r03050     FCB MFORE\r03060         FDB WARN-CFAOFF\r03070   FDB BIF+2\r03080         FDB 0\r03090     FDB 0\r03100 FENCE       DOUSER\r03110    FCB UFENCE\r03120 *\r03130        FCC 'DP'\r03140  FCB 2\r03150     FCB MFORE\r03160         FDB FENCE-CFAOFF\r03170  FDB BIF+2\r03180         FDB DOES-CFAOFF\r03190   FDB 0\r03200 DPC DOUSER\r03210    FCB UDP\r03220 *\r03230   FCC 'ROOT'\r03240        FCB 4\r03250     FCB MFORE\r03260         FDB DPC-CFAOFF\r03270    FDB BIF+2\r03280         FDB 0\r03290     FDB 0\r03300 ROOT        DOUSER  not fig\r03310   FCB UROOT\r03320 *\r03330         FCC 'BLK'\r03340         FCB 3\r03350     FCB MFORE\r03360         FDB ROOT-CFAOFF\r03370   FDB BIF+2\r03380         FDB BLANKS-CFAOFF\r03390         FDB BLOCK-CFAOFF\r03400 BLK      DOUSER\r03410    FCB UBLK\r03420 *\r03430  FCC 'IN'\r03440  FCB 2\r03450     FCB MFORE\r03460         FDB BLK-CFAOFF\r03470    FDB BIF+2\r03480         FDB IMMED-CFAOFF\r03490  FDB INTERP-CFAOFF\r03500 IN      DOUSER\r03510    FCB UIN\r03520 *\r03530   FCC 'OUT'\r03540         FCB 3\r03550     FCB MFORE\r03560         FDB IN-CFAOFF\r03570     FDB BIF+2\r03580         FDB 0\r03590     FDB 0\r03600 OUT DOUSER\r03610    FCB UOUT\r03620 *\r03630  FCC 'SCR'\r03640         FCB 3\r03650     FCB MFORE\r03660         FDB OUT-CFAOFF\r03670    FDB BIF+2\r03680         FDB 0\r03690     FDB 0\r03700 SCR DOUSER\r03710    FCB USCR\r03720 *\r03730  FCC 'OFFSET'\r03740      FCB 6\r03750     FCB MFORE\r03760         FDB SCR-CFAOFF\r03770    FDB BIF+2\r03780         FDB 0\r03790     FDB 0\r03800 OFFSET      DOUSER\r03810    FCB UOFFS\r03820 *\r03830         FCC 'STATE'\r03840       FCB 5\r03850     FCB MFORE\r03860         FDB OFFSET-CFAOFF\r03870         FDB BIF+2\r03880         FDB SPACES-CFAOFF\r03890         FDB SWAB-CFAOFF\r03900 STATE     DOUSER\r03910    FCB USTATE\r03920 *\r03930        FCC 'BASE'\r03940        FCB 4\r03950     FCB MFORE\r03960         FDB STATE-CFAOFF\r03970  FDB BIF+2\r03980         FDB 0\r03990     FDB 0\r04000 BASE        DOUSER\r04010    FCB UBASE\r04020 *\r04030         FCC 'DPL'\r04040         FCB 3\r04050     FCB MFORE\r04060         FDB BASE-CFAOFF\r04070   FDB BIF+2\r04080         FDB DPC-CFAOFF\r04090    FDB DROFFS-CFAOFF\r04100 DPL     DOUSER\r04110    FCB UDPL\r04120 *\r04130  FCC 'FLD'\r04140         FCB 3\r04150     FCB MFORE\r04160         FDB DPL-CFAOFF\r04170    FDB BIF+2\r04180         FDB 0\r04190     FDB 0\r04200 FLD DOUSER\r04210    FCB UFLD\r04220 *\r04230  FCC 'CSP'\r04240         FCB 3\r04250     FCB MFORE\r04260         FDB FLD-CFAOFF\r04270    FDB BIF+2\r04280         FDB 0\r04290     FDB CURR-CFAOFF\r04300 CSP       DOUSER\r04310    FCB UCSP\r04320 *\r04330  FCC 'R#'\r04340  FCB 2\r04350     FCB MFORE\r04360         FDB CSP-CFAOFF\r04370    FDB BIF+2\r04380         FDB 0\r04390     FDB RW-CFAOFF\r04400 RNUM        DOUSER\r04410    FCB URNUM\r04420 *\r04430         FCC 'HLD'\r04440         FCB 3\r04450     FCB MFORE\r04460         FDB RNUM-CFAOFF\r04470   FDB BIF+2\r04480         FDB HEX-CFAOFF\r04490    FDB HOLD-CFAOFF\r04500 HLD       DOUSER\r04510    FCB UHLD\r04520 *\r04530  FCC 'FOREWARD'\r04540    FCB 8\r04550     FCB MFORE\r04560         FDB HLD-CFAOFF\r04570    FDB BIF+2\r04580         FDB 0\r04590     FDB 0\r04600 FORE        DOUSER  not fig\r04610   FCB UFORE\r04620 *\r04630         FCC 'CURRENT'\r04640     FCB 7\r04650     FCB MFORE\r04660         FDB FORE-CFAOFF\r04670   FDB BIF+2\r04680         FDB 0\r04690     FDB 0\r04700 CURR        DOUSER  not fig\r04710   FCB UCURR\r04720 *\r04730         FCC 'PREV'\r04740        FCB 4\r04750     FCB MFORE\r04760         FDB CURR-CFAOFF\r04770   FDB BIF+2\r04780         FDB 0\r04790     FDB 0\r04800 PREV        DOUSER  moved\r04810     FCB UPREV\r04820 *\r04830         FCC 'USE'\r04840         FCB 3\r04850     FCB MFORE\r04860         FDB PREV-CFAOFF\r04870   FDB BIF+2\r04880         FDB 0\r04890     FDB 0\r04900 USE DOUSER  moved\r04910     FCB UUSE\r04920 *\r04930  FCC 'DROOT'\r04940       FCB 5\r04950     FCB MFORE\r04960         FDB USE-CFAOFF\r04970    FDB BIF+2\r04980         FDB 0\r04990     FDB 0\r05000 DROOT       DOUSER  not fig\r05010   FCB UDROOT\r05020 *\r
\ No newline at end of file
+00010 * Include file for BIF
+00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
+00030 *
+01000  FCC '1+'
+01010  FCB 2
+01020  FCB MFORE
+01030  FDB SWAN-CFAOFF
+01040  FDB BIF+2
+01050  FDB ZLESS-CFAOFF
+01060  FDB ADD2-CFAOFF
+01070 ADD1     LDD #1
+01080  ADDTOP
+01110 *
+01120  FCC '1-'
+01130  FCB 2
+01140  FCB MFORE
+01150  FDB ADD1-CFAOFF
+01160  FDB BIF+2
+01170  FDB 0
+01180  FDB 0
+01190 SUB1     LDD #-1
+01200  ADDTOP
+01230 *
+01240  FCC '2+'
+01250  FCB 2
+01260  FCB MFORE
+01270  FDB SUB1-CFAOFF
+01280  FDB BIF+2
+01290  FDB TWO-CFAOFF
+01300  FDB RSHIFT-CFAOFF
+01310 ADD2     LDD #2
+01320  ADDTOP
+01330 *
+01340  FCC '2-'
+01350  FCB 2
+01360  FCB MFORE
+01370  FDB ADD2-CFAOFF
+01380  FDB BIF+2
+01390  FDB 0
+01400  FDB 0
+01410 SUB2     LDD #-2
+01420  ADDTOP
+01430 *
+01440  FCC '0'
+01450  FCB 1
+01460  FCB MFORE
+01470  FDB SUB2-CFAOFF
+01480  FDB BIF+2
+01490  FDB SLAMOD-CFAOFF
+01500  FDB INULL-CFAOFF
+01510 ZERO     LDD #0
+01520  PSHU D
+01530  NEXT
+01540 *
+01550  FCC '1'
+01560  FCB 1
+01570  FCB MFORE
+01580  FDB ZERO-CFAOFF
+01590  FDB BIF+2
+01600  FDB ZBR-CFAOFF
+01610  FDB 0
+01620 ONE      LDD #1
+01630  PSHU D
+01640  NEXT
+01650 *
+01660  FCC '-1'
+01670  FCB 2
+01680  FCB MFORE
+01690  FDB ONE-CFAOFF
+01700  FDB BIF+2
+01710  FDB 0
+01720  FDB DDFIND-CFAOFF
+01730 MONE     LDD #-1
+01740  PSHU D
+01750  NEXT
+01760 *
+01770  FCC '2'
+01780  FCB 1
+01790  FCB MFORE
+01800  FDB MONE-CFAOFF
+01810  FDB BIF+2
+01820  FDB ONEARR-CFAOFF
+01830  FDB LSHIFT-CFAOFF
+01840 TWO      DOCON
+01850  FDB 2
+01860 *
+01870  FCC '3'
+01880  FCB 1
+01890  FCB MFORE
+01895  FDB TWO-CFAOFF
+01900  FDB BIF+2
+01910  FDB 0
+01920  FDB 0
+01930 THREE    DOCON
+01940  FDB 3
+01950 *
+01960  FCC 'BL'
+01970  FCB 2
+01980  FCB MFORE
+01990  FDB THREE-CFAOFF
+02000  FDB BIF+2
+02010  FDB 0
+02020  FDB 0
+02030 BL       DOCON
+02040  FDB $20 ascii SP
+02050 *
+02060  FCC 'C/L'
+02070  FCB 3
+02080  FCB MFORE
+02090  FDB BL-CFAOFF
+02100  FDB BIF+2
+02110  FDB 0
+02120  FDB 0
+02130 CPERL    DOUCON
+02140  FCB UCOLUM
+02170 *
+02180  FCC 'FIRST'
+02190  FCB 5
+02200  FCB MFORE
+02210  FDB CPERL-CFAOFF
+02220  FDB BIF+2
+02230  FDB 0
+02240  FDB FLD-CFAOFF
+02250 FIRST    DOUCON
+02260  FCB UFIRST
+02290 *
+02300  FCC 'LIMIT'
+02310  FCB 5
+02320  FCB MFORE
+02330  FDB FIRST-CFAOFF
+02340  FDB BIF+2
+02350  FDB LEAVE-CFAOFF
+02360  FDB LITER-CFAOFF
+02370 LIMIT    DOUCON
+02380  FCB ULIMIT
+02400 *
+02410 BWID     EQU 256 bytes
+02420  FCC 'B/BUF'
+02430  FCB 5
+02440  FCB MFORE
+02450  FDB LIMIT-CFAOFF
+02460  FDB BIF+2
+02470  FDB ASMBLR-CFAOFF
+02480  FDB BPSCR-CFAOFF
+02490 BPBUF    DOCON
+02500  FDB BWID
+02510 *
+02520 BCT      EQU 4 buffers
+02520  FCC 'B/SCR'
+02530  FCB 5
+02540  FCB MFORE
+02550  FDB BPBUF-CFAOFF
+02560  FDB BIF+2
+02570  FDB 0
+02580  FDB 0
+02590 BPSCR    DOCON
+02600  FDB BCT
+02610 *
+02620  FCC '+ORIGIN'
+02630  FCB 7
+02640  FCB MFORE
+02650  FDB BPSCR-CFAOFF
+02660  FDB BIF+2
+02670  FDB 0
+02680  FDB 0
+02690 PORIG    LDD #ORIG
+02700  LBRA ADD+2
+02710 *
+02715 * some USER vars hidden
+02720 * fig-FORTH USER vars not present:
+02722 * WIDTH VOC-LINK CONTEXT CURRENT
+02724 *
+02730  FCC 'TIB'
+02740  FCB 3
+02750  FCB MFORE
+02760  FDB PORIG-CFAOFF
+02770  FDB BIF+2
+02780  FDB 0
+02790  FDB 0
+02800 TIB      DOUSER
+02810  FCB UTIB
+02820 *
+02930  FCC 'WARNING'
+02940  FCB 7
+02950  FCB MFORE
+02960  FDB TIB-CFAOFF
+02970  FDB BIF+2
+02980  FDB 0
+02990  FDB 0
+03000 WARN     DOUSER
+03010  FCB UWARN
+03020 *
+03030  FCC 'FENCE'
+03040  FCB 5
+03050  FCB MFORE
+03060  FDB WARN-CFAOFF
+03070  FDB BIF+2
+03080  FDB 0
+03090  FDB 0
+03100 FENCE    DOUSER
+03110  FCB UFENCE
+03120 *
+03130  FCC 'DP'
+03140  FCB 2
+03150  FCB MFORE
+03160  FDB FENCE-CFAOFF
+03170  FDB BIF+2
+03180  FDB DOES-CFAOFF
+03190  FDB 0
+03200 DPC      DOUSER
+03210  FCB UDP
+03220 *
+03230  FCC 'ROOT'
+03240  FCB 4
+03250  FCB MFORE
+03260  FDB DPC-CFAOFF
+03270  FDB BIF+2
+03280  FDB 0
+03290  FDB 0
+03300 ROOT     DOUSER  not fig
+03310  FCB UROOT
+03320 *
+03330  FCC 'BLK'
+03340  FCB 3
+03350  FCB MFORE
+03360  FDB ROOT-CFAOFF
+03370  FDB BIF+2
+03380  FDB BLANKS-CFAOFF
+03390  FDB BLOCK-CFAOFF
+03400 BLK      DOUSER
+03410  FCB UBLK
+03420 *
+03430  FCC 'IN'
+03440  FCB 2
+03450  FCB MFORE
+03460  FDB BLK-CFAOFF
+03470  FDB BIF+2
+03480  FDB IMMED-CFAOFF
+03490  FDB INTERP-CFAOFF
+03500 IN       DOUSER
+03510  FCB UIN
+03520 *
+03530  FCC 'OUT'
+03540  FCB 3
+03550  FCB MFORE
+03560  FDB IN-CFAOFF
+03570  FDB BIF+2
+03580  FDB 0
+03590  FDB 0
+03600 OUT      DOUSER
+03610  FCB UOUT
+03620 *
+03630  FCC 'SCR'
+03640  FCB 3
+03650  FCB MFORE
+03660  FDB OUT-CFAOFF
+03670  FDB BIF+2
+03680  FDB 0
+03690  FDB 0
+03700 SCR      DOUSER
+03710  FCB USCR
+03720 *
+03730  FCC 'OFFSET'
+03740  FCB 6
+03750  FCB MFORE
+03760  FDB SCR-CFAOFF
+03770  FDB BIF+2
+03780  FDB 0
+03790  FDB 0
+03800 OFFSET   DOUSER
+03810  FCB UOFFS
+03820 *
+03830  FCC 'STATE'
+03840  FCB 5
+03850  FCB MFORE
+03860  FDB OFFSET-CFAOFF
+03870  FDB BIF+2
+03880  FDB SPACES-CFAOFF
+03890  FDB SWAB-CFAOFF
+03900 STATE    DOUSER
+03910  FCB USTATE
+03920 *
+03930  FCC 'BASE'
+03940  FCB 4
+03950  FCB MFORE
+03960  FDB STATE-CFAOFF
+03970  FDB BIF+2
+03980  FDB 0
+03990  FDB 0
+04000 BASE     DOUSER
+04010  FCB UBASE
+04020 *
+04030  FCC 'DPL'
+04040  FCB 3
+04050  FCB MFORE
+04060  FDB BASE-CFAOFF
+04070  FDB BIF+2
+04080  FDB DPC-CFAOFF
+04090  FDB DROFFS-CFAOFF
+04100 DPL      DOUSER
+04110  FCB UDPL
+04120 *
+04130  FCC 'FLD'
+04140  FCB 3
+04150  FCB MFORE
+04160  FDB DPL-CFAOFF
+04170  FDB BIF+2
+04180  FDB 0
+04190  FDB 0
+04200 FLD      DOUSER
+04210  FCB UFLD
+04220 *
+04230  FCC 'CSP'
+04240  FCB 3
+04250  FCB MFORE
+04260  FDB FLD-CFAOFF
+04270  FDB BIF+2
+04280  FDB 0
+04290  FDB CURR-CFAOFF
+04300 CSP      DOUSER
+04310  FCB UCSP
+04320 *
+04330  FCC 'R#'
+04340  FCB 2
+04350  FCB MFORE
+04360  FDB CSP-CFAOFF
+04370  FDB BIF+2
+04380  FDB 0
+04390  FDB RW-CFAOFF
+04400 RNUM     DOUSER
+04410  FCB URNUM
+04420 *
+04430  FCC 'HLD'
+04440  FCB 3
+04450  FCB MFORE
+04460  FDB RNUM-CFAOFF
+04470  FDB BIF+2
+04480  FDB HEX-CFAOFF
+04490  FDB HOLD-CFAOFF
+04500 HLD      DOUSER
+04510  FCB UHLD
+04520 *
+04530  FCC 'FOREWARD'
+04540  FCB 8
+04550  FCB MFORE
+04560  FDB HLD-CFAOFF
+04570  FDB BIF+2
+04580  FDB 0
+04590  FDB 0
+04600 FORE     DOUSER  not fig
+04610  FCB UFORE
+04620 *
+04630  FCC 'CURRENT'
+04640  FCB 7
+04650  FCB MFORE
+04660  FDB FORE-CFAOFF
+04670  FDB BIF+2
+04680  FDB 0
+04690  FDB 0
+04700 CURR     DOUSER  not fig
+04710  FCB UCURR
+04720 *
+04730  FCC 'PREV'
+04740  FCB 4
+04750  FCB MFORE
+04760  FDB CURR-CFAOFF
+04770  FDB BIF+2
+04780  FDB 0
+04790  FDB 0
+04800 PREV     DOUSER  moved
+04810  FCB UPREV
+04820 *
+04830  FCC 'USE'
+04840  FCB 3
+04850  FCB MFORE
+04860  FDB PREV-CFAOFF
+04870  FDB BIF+2
+04880  FDB 0
+04890  FDB 0
+04900 USE      DOUSER  moved
+04910  FCB UUSE
+04920 *
+04930  FCC 'DROOT'
+04940  FCB 5
+04950  FCB MFORE
+04960  FDB USE-CFAOFF
+04970  FDB BIF+2
+04980  FDB 0
+04990  FDB 0
+05000 DROOT    DOUSER  not fig
+05010  FCB UDROOT
+05020 *
index 671afe0..c56cf8d 100644 (file)
@@ -1 +1,156 @@
-00010 * Include file for BIF\r00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r00030 *\r05030  FCC 'HERE'\r05040        FCB 4\r05050     FCB MFORE\r05060         FDB DROOT-CFAOFF\r05070  FDB BIF+2\r05080         FDB FOREMK-CFAOFF\r05090         FDB I-CFAOFF\r05100 HERE LDX <UP\r05110   LDD UDP,X\r05120         PSHU D\r05122 HERERR     LDX <UP\r05124   CMPU UDP,X\r05128        BLS ALLERR\r05130        NEXT\r05132 ALLERR       LDD #2\r05134    PSHU D\r05136    JMP ERROR\r05140 *\r05150         FCC 'ALLOT'\r05160       FCB 5\r05170     FCB MFORE\r05180         FDB HERE-CFAOFF\r05190   FDB BIF+2\r05200         FDB AGAIN-CFAOFF\r05210  FDB 0\r05220 ALLOT       LDX <UP\r05222   LDD UDP,X\r05223         BMI ALLERR\r05224        ADDD ,U++\r05226         STD UDP,X\r05228         BRA HERERR\r05230 *\r05238        FCC ','\r05240   FCB 1\r05250     FCB MFORE\r05260         FDB ALLOT-CFAOFF\r05270  FDB BIF+2\r05280         FDB PORIG-CFAOFF\r05290  FDB SUB-CFAOFF\r05300 COMMA      PULU D allocate and store\r05310         PSHS Y\r05320    LDY <UP\r05330   LDX UDP,Y\r05340         STD ,X++\r05350 COMSTO   STX UDP,Y\r05360         PULS Y\r05375    BRA HERERR\r05380 *\r05390        FCC 'C,'\r05400  FCB 2\r05410     FCB MFORE\r05420         FDB COMMA-CFAOFF\r05430  FDB BIF+2\r05440         FDB CSTO-CFAOFF\r05450   FDB CPERL-CFAOFF\r05460 CCOMMA   PULU D\r05470    PSHS Y\r05480    LDY <UP\r05490   LDX UDP,Y\r05500         STB ,X+\r05510   BRA COMSTO\r05520 *\r05530        FCC 'SPACE'\r05540       FCB 5\r05550     FCB MFORE\r05560         FDB CCOMMA-CFAOFF\r05570         FDB BIF+2\r05580         FDB SPFEH-CFAOFF\r05590  FDB STATE-CFAOFF\r05600 SPACE    LDB BL+3,PCR\r05610      LBRA EMIT+2\r05620 *\r05630       FCC '-DUP'\r05640        FCB 4\r05650     FCB MFORE\r05660         FDB SPACE-CFAOFF\r05670  FDB BIF+2\r05680         FDB MONE-CFAOFF\r05690   FDB DTRAIL-CFAOFF\r05700 DDUP    LDD ,U\r05710    BEQ *+4\r05720   PSHU D\r05730    NEXT\r05740 *\r05750      FCC '?CST'\r05760        FCB 4\r05770     FCB MFORE\r05780         FDB DDUP-CFAOFF\r05790   FDB BIF+2\r05800         FDB QCSP-CFAOFF\r05810   FDB QERR-CFAOFF\r05820 QCST      LDX <UP\r05830   LDB USTATE+1,X\r05840    ANDB #SCOMP\r05850       CLRA\r05860      PSHU D\r05870    NEXT\r05890 *\r05900      FCC 'IF'\r05910  FCB MIMM.OR.MCOMP.OR.2\r05920    FCB MFORE\r05930         FDB QCST-CFAOFF\r05940   FDB BIF+2\r05950         FDB DO-CFAOFF\r05960     FDB QUERY-CFAOFF\r05965 * IF see fig-FORTH model\r05970 IF        DOCOL\r05980     FDB COMP\r05990  FDB ZBR\r06000   FDB HERE adr\r06010      FDB ZERO\r06020  FDB COMMA\r06030         FDB LIT\r06040   FDB ('I)*256+'F\r06060   FDB SEMIS\r06090 *\r06100         FCC 'ELSE'\r06110        FCB MIMM.OR.MCOMP.OR.4\r06120    FCB MFORE\r06130         FDB IF-CFAOFF\r06140     FDB BIF+2\r06150         FDB EDITOR-CFAOFF\r06160         FDB 0\r06170 ELSE        DOCOL\r06172     FDB DUP\r06173   FDB LIT\r06175   FDB ('I)*256+'F\r06178   FDB QPAIRS\r06180        FDB COMP\r06190  FDB BRANCH\r06200        FDB HERE adr\r06205      FDB ZERO\r06210  FDB COMMA\r06220         FDB ROT\r06230   FDB FILLIN IF adr\r06250         FDB SWAP for ENDIF\r06260        FDB SEMIS\r06290 *\r06300         FCC 'ENDIF'\r06310       FCB MIMM.OR.MCOMP.OR.5\r06320    FCB MFORE\r06330         FDB ELSE-CFAOFF\r06340   FDB BIF+2\r06350         FDB DROP-CFAOFF\r06360   FDB FIND-CFAOFF\r06370 ENDIF     DOCOL\r06380     FDB QCOMP\r06390         FDB LIT\r06400   FDB ('I)*256+'F\r06410   FDB QPAIRS\r06420        FDB FILLIN\r06470        FDB SEMIS\r06490 *\r
\ No newline at end of file
+00010 * Include file for BIF
+00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
+00030 *
+05030  FCC 'HERE'
+05040  FCB 4
+05050  FCB MFORE
+05060  FDB DROOT-CFAOFF
+05070  FDB BIF+2
+05080  FDB FOREMK-CFAOFF
+05090  FDB I-CFAOFF
+05100 HERE     LDX <UP
+05110  LDD UDP,X
+05120  PSHU D
+05122 HERERR   LDX <UP
+05124  CMPU UDP,X
+05128  BLS ALLERR
+05130  NEXT
+05132 ALLERR   LDD #2
+05134  PSHU D
+05136  JMP ERROR
+05140 *
+05150  FCC 'ALLOT'
+05160  FCB 5
+05170  FCB MFORE
+05180  FDB HERE-CFAOFF
+05190  FDB BIF+2
+05200  FDB AGAIN-CFAOFF
+05210  FDB 0
+05220 ALLOT    LDX <UP
+05222  LDD UDP,X
+05223  BMI ALLERR
+05224  ADDD ,U++
+05226  STD UDP,X
+05228  BRA HERERR
+05230 *
+05238  FCC ','
+05240  FCB 1
+05250  FCB MFORE
+05260  FDB ALLOT-CFAOFF
+05270  FDB BIF+2
+05280  FDB PORIG-CFAOFF
+05290  FDB SUB-CFAOFF
+05300 COMMA    PULU D allocate and store
+05310  PSHS Y
+05320  LDY <UP
+05330  LDX UDP,Y
+05340  STD ,X++
+05350 COMSTO   STX UDP,Y
+05360  PULS Y
+05375  BRA HERERR
+05380 *
+05390  FCC 'C,'
+05400  FCB 2
+05410  FCB MFORE
+05420  FDB COMMA-CFAOFF
+05430  FDB BIF+2
+05440  FDB CSTO-CFAOFF
+05450  FDB CPERL-CFAOFF
+05460 CCOMMA   PULU D
+05470  PSHS Y
+05480  LDY <UP
+05490  LDX UDP,Y
+05500  STB ,X+
+05510  BRA COMSTO
+05520 *
+05530  FCC 'SPACE'
+05540  FCB 5
+05550  FCB MFORE
+05560  FDB CCOMMA-CFAOFF
+05570  FDB BIF+2
+05580  FDB SPFEH-CFAOFF
+05590  FDB STATE-CFAOFF
+05600 SPACE    LDB BL+3,PCR
+05610  LBRA EMIT+2
+05620 *
+05630  FCC '-DUP'
+05640  FCB 4
+05650  FCB MFORE
+05660  FDB SPACE-CFAOFF
+05670  FDB BIF+2
+05680  FDB MONE-CFAOFF
+05690  FDB DTRAIL-CFAOFF
+05700 DDUP     LDD ,U
+05710  BEQ *+4
+05720  PSHU D
+05730  NEXT
+05740 *
+05750  FCC '?CST'
+05760  FCB 4
+05770  FCB MFORE
+05780  FDB DDUP-CFAOFF
+05790  FDB BIF+2
+05800  FDB QCSP-CFAOFF
+05810  FDB QERR-CFAOFF
+05820 QCST     LDX <UP
+05830  LDB USTATE+1,X
+05840  ANDB #SCOMP
+05850  CLRA
+05860  PSHU D
+05870  NEXT
+05890 *
+05900  FCC 'IF'
+05910  FCB MIMM.OR.MCOMP.OR.2
+05920  FCB MFORE
+05930  FDB QCST-CFAOFF
+05940  FDB BIF+2
+05950  FDB DO-CFAOFF
+05960  FDB QUERY-CFAOFF
+05965 * IF see fig-FORTH model
+05970 IF       DOCOL
+05980  FDB COMP
+05990  FDB ZBR
+06000  FDB HERE adr
+06010  FDB ZERO
+06020  FDB COMMA
+06030  FDB LIT
+06040  FDB ('I)*256+'F
+06060  FDB SEMIS
+06090 *
+06100  FCC 'ELSE'
+06110  FCB MIMM.OR.MCOMP.OR.4
+06120  FCB MFORE
+06130  FDB IF-CFAOFF
+06140  FDB BIF+2
+06150  FDB EDITOR-CFAOFF
+06160  FDB 0
+06170 ELSE     DOCOL
+06172  FDB DUP
+06173  FDB LIT
+06175  FDB ('I)*256+'F
+06178  FDB QPAIRS
+06180  FDB COMP
+06190  FDB BRANCH
+06200  FDB HERE adr
+06205  FDB ZERO
+06210  FDB COMMA
+06220  FDB ROT
+06230  FDB FILLIN IF adr
+06250  FDB SWAP for ENDIF
+06260  FDB SEMIS
+06290 *
+06300  FCC 'ENDIF'
+06310  FCB MIMM.OR.MCOMP.OR.5
+06320  FCB MFORE
+06330  FDB ELSE-CFAOFF
+06340  FDB BIF+2
+06350  FDB DROP-CFAOFF
+06360  FDB FIND-CFAOFF
+06370 ENDIF    DOCOL
+06380  FDB QCOMP
+06390  FDB LIT
+06400  FDB ('I)*256+'F
+06410  FDB QPAIRS
+06420  FDB FILLIN
+06470  FDB SEMIS
+06490 *
index 4cd5208..2368a97 100644 (file)
@@ -1 +1,361 @@
-00010 * Include file for BIF\r00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r00030 *\r01000  FCC 'LATEST'\r01010      FCB 6\r01020     FCB MFORE\r01030         FDB ENDIF-CFAOFF\r01040  FDB BIF+2\r01050         FDB 0\r01060     FDB 0\r01070 LATEST      DOUCON  not ROOT!\r01080         FCB UCURR NFA\r01110 *\r01115 * convert NFA to LFA,CFA,GFA,PFA\r01120      FCC 'LFA'\r01130         FCB 3\r01140     FCB MFORE\r01150         FDB LATEST-CFAOFF\r01160         FDB BIF+2\r01170         FDB 0\r01180     FDB 0\r01190 LFA LDB #LFAOFF\r01200       BRA CFA+2\r01210 *\r01220         FCC 'CFA'\r01230         FCB 3\r01240     FCB MFORE\r01250         FDB LFA-CFAOFF\r01260    FDB BIF+2\r01270         FDB 0\r01280     FDB 0\r01290 CFA LDB #CFAOFF\r01292       SEX\r01294       ADDD ,U\r01296   STD ,U\r01300    NEXT\r01310 *\r01320      FCC 'GFA'\r01330         FCB 3\r01340     FCB MFORE\r01350         FDB CFA-CFAOFF\r01360    FDB BIF+2\r01370         FDB 0\r01380     FDB 0\r01390 GFA LDB #GFAOFF\r01400       BRA CFA+2\r01410 *\r01420         FCC 'PFA'\r01430         FCB 3\r01440     FCB MFORE\r01450         FDB GFA-CFAOFF\r01460    FDB BIF+2\r01470         FDB PAD-CFAOFF\r01480    FDB PREV-CFAOFF\r01490 PFA       LDB #PFAOFF\r01500       BRA CFA+2\r01510 *\r01515 * PFA to NFA\r01520      FCC 'NFA'\r01530         FCB 3\r01540     FCB MFORE\r01550         FDB PFA-CFAOFF\r01560    FDB BIF+2\r01570         FDB NCOMMA-CFAOFF\r01580         FDB NOT-CFAOFF\r01590 NFA        LDB #-PFAOFF\r01600      BRA CFA+2\r01610 *\r01620         FCC '!CSP'\r01630        FCB 4\r01640     FCB MFORE\r01650         FDB NFA-CFAOFF\r01660    FDB BIF+2\r01670         FDB 0\r01680     FDB HASH-CFAOFF\r01690 STOCSP    LDX <UP\r01700   STU UCSP,X\r01710        NEXT\r01720 *\r01730      FCC 'HEX'\r01740         FCB 3\r01750     FCB MFORE\r01760         FDB STOCSP-CFAOFF\r01770         FDB BIF+2\r01780         FDB 0\r01790     FDB 0\r01800 HEX LDB #16\r01810   CLRA\r01820      LDX <UP\r01830   STD UBASE,X\r01840       NEXT\r01850 *\r01860      FCC 'DECIMAL'\r01870     FCB 7\r01880     FCB MFORE\r01890         FDB HEX-CFAOFF\r01900    FDB BIF+2\r01910         FDB DAD-CFAOFF\r01920    FDB DEFS-CFAOFF\r01930 DEC       LDB #10\r01940   BRA HEX+2\r01950 *\r01960         FCC 'OCTAL'\r01970       FCB 5\r01980     FCB MFORE\r01990         FDB DEC-CFAOFF\r02000    FDB BIF+2\r02010         FDB 0\r02020     FDB OFFSET-CFAOFF\r02030 OCT     LDB #8\r02040    BRA HEX+2\r02050 *\r02060         FCC 'FILL'\r02070        FCB 4\r02080     FCB MFORE\r02090         FDB OCT-CFAOFF\r02100    FDB BIF+2\r02110         FDB FENCE-CFAOFF\r02120  FDB FILLIN-CFAOFF\r02130 FILL    PSHS Y\r02140    PULU D,X,Y\r02150        STB ,Y+\r02160   LEAX -1,X\r02170         BNE *-4\r02180   PULS Y\r02190    NEXT\r02200 *\r02210      FCC 'ERASE'\r02220       FCB 5\r02230     FCB MFORE\r02240         FDB FILL-CFAOFF\r02250   FDB BIF+2\r02260         FDB 0\r02270     FDB 0\r02280 ERASE       LDB #0\r02290    PSHU D\r02300    BRA FILL\r02310 *\r02320  FCC 'BLANKS'\r02330      FCB 6\r02340     FCB MFORE\r02350         FDB ERASE-CFAOFF\r02360  FDB BIF+2\r02370         FDB BL-CFAOFF\r02380     FDB 0\r02390 BLANKS      LDB #$20 ascii SP\r02400         PSHU D\r02410    BRA FILL\r02420 *\r02430  FCC 'HOLD'\r02440        FCB 4\r02450     FCB MFORE\r02460         FDB BLANKS-CFAOFF\r02470         FDB BIF+2\r02480         FDB 0\r02490     FDB 0\r02500 HOLD        PULU D CH\r02510         PSHS Y\r02520    LDY <UP\r02530   LDX UHLD,Y\r02540        STB ,-X\r02550   STX UHLD,Y\r02555        PULS Y\r02560    NEXT\r02570 *\r02580      FCC 'PAD'\r02590         FCB 3\r02600     FCB MFORE\r02610         FDB HOLD-CFAOFF\r02620   FDB BIF+2\r02630         FDB 0\r02640     FDB 0\r02650 PAD DOUCON  moved!\r02660    FCB UPAD\r02700 *\r02710  FCC 'S->D'\r02720        FCB 4\r02730     FCB MFORE\r02740         FDB PAD-CFAOFF\r02750    FDB BIF+2\r02760         FDB RPSTO-CFAOFF\r02770  FDB SIGN-CFAOFF\r02780 STOD      LEAU -2,U\r02790         LDD 2,U\r02795   LBRA ZLESS+2\r02800 *\r02810      FCC '+-'\r02820  FCB 2\r02830     FCB MFORE\r02840         FDB STOD-CFAOFF\r02850   FDB BIF+2\r02860         FDB ADDSTO-CFAOFF\r02870         FDB ADDBUF-CFAOFF\r02880 CHS     LDD ,U++\r02890  LBMI MINUS\r02895        NEXT\r02900 *\r02910      FCC 'D+-'\r02920         FCB 3\r02930     FCB MFORE\r02940         FDB STOD-CFAOFF\r02950   FDB BIF+2\r02960         FDB 0\r02970     FDB 0\r02980 DCHS        LDD ,U++\r02990  LBMI DMINUS\r02995       NEXT\r03000 *\r03010      FCC 'ABS'\r03020         FCB 3\r03030     FCB MFORE\r03040         FDB DCHS-CFAOFF\r03050   FDB BIF+2\r03060         FDB ABORT-CFAOFF\r03070  FDB ALLOT-CFAOFF\r03080 ABS      LDD ,U\r03090    LBMI MINUS\r03095        NEXT\r03100 *\r03110      FCC 'DABS'\r03120        FCB 4\r03130     FCB MFORE\r03140         FDB ABS-CFAOFF\r03150    FDB BIF+2\r03160         FDB DSUB-CFAOFF\r03170   FDB DIGIT-CFAOFF\r03180 DABS     LDD ,U\r03190    LBMI DMINUS\r03195       NEXT\r03200 *\r03210      FCC 'MIN'\r03220         FCB 3\r03230     FCB MFORE\r03240         FDB DABS-CFAOFF\r03250   FDB BIF+2\r03260         FDB MSMOD-CFAOFF\r03270  FDB MOVE-CFAOFF\r03280 MIN       PULU D\r03284    CMPD ,U\r03288   BGE *+4\r03290   STD ,U\r03295    NEXT\r03300 *\r03310      FCC 'MAX'\r03320         FCB 3\r03330     FCB MFORE\r03340         FDB MIN-CFAOFF\r03350    FDB BIF+2\r03360         FDB 0\r03370     FDB 0\r03380 MAX PULU D\r03384    CMPD ,U\r03388   BLE *+4\r03390   STD ,U\r03395    NEXT\r03400 *\r03410      FCC '['\r03412   FCB MIMM|1\r03414        FCB MFORE\r03416         FDB MAX-CFAOFF\r03418    FDB BIF+2\r03420         FDB XOR-CFAOFF\r03422    FDB 0\r03430 LBRAK       LDB #.NOT.SCOMP\r03435   LDX <UP\r03440   ANDB USTATE+1,X\r03445   STB USTATE+1,X\r03450    NEXT\r03500 *\r03510      FCC ']'\r03512   FCB 1\r03514     FCB MFORE\r03516         FDB LBRAK-CFAOFF\r03518  FDB BIF+2\r03520         FDB 0\r03522     FDB 0\r03530 RBRAK       LDB #SCOMP\r03535        LDX <UP\r03540   ORB USTATE+1,X\r03545    STB USTATE+1,X\r03550    NEXT\r03555 *\r03560      FCC 'IMMEDIATE'\r03562   FCB 9\r03564     FCB MFORE\r03566         FDB RBRAK-CFAOFF\r03568  FDB BIF+2\r03570         FDB 0\r03572     FDB 0\r03580 IMMED       LDB #MIMM\r03585         BRA SMUDGE+2\r03600 *\r03610      FCC 'SMUDGE'\r03612      FCB 6\r03614     FCB MFORE\r03616         FDB IMMED-CFAOFF\r03618  FDB BIF+2\r03620         FDB STOD-CFAOFF\r03622   FDB SPACE-CFAOFF\r03630 SMUDGE   LDB #MHID\r03635         LDX <UP\r03645   EORB [UCURR,X]\r03650    STB [UCURR,X]\r03655     NEXT\r03657 *\r03660      FCC 'COMPILE-ONLY'\r03662        FCB 12\r03664    FCB MFORE\r03666         FDB SMUDGE-CFAOFF\r03668         FDB BIF+2\r03670         FDB 0\r03672     FDB 0\r03680 COMPO       LDB #MCOMP\r03685        BRA SMUDGE+2\r03800 *\r03810      FCC 'COUNT'\r03812       FCB 5\r03814     FCB MFORE\r03816         FDB COMPO-CFAOFF\r03818  FDB BIF+2\r03820         FDB 0\r03822     FDB 0\r03830 COUNT       LDX ,U CT OF STR\r03835  LDB ,X+\r03840   STX ,U STRING\r03845     CLRA\r03850      PSHU D COUNT\r03855      NEXT\r03900 *\r03910      FCC '-TRAILING'\r03912   FCB 9\r03914     FCB MFORE\r03916         FDB COUNT-CFAOFF\r03918  FDB BIF+2\r03920         FDB DIFIND-CFAOFF\r03922         FDB 0\r03930 DTRAIL      LDD ,U\r03935    LDX 2,U\r03940   LEAX D,X END\r03945      LDA #$20 ascii SP\r03950 DTRAL   CMPA ,-X\r03955  BNE DTRAD\r03960         CMPX 2,U\r03965  BHS DTRAL\r03970 DTRAD TFR X,D\r03975     SUBD 2,U\r03980  ADDD #1\r03985   STD ,U\r03990    NEXT\r04000 *\r04010      FCC '(MACHINE)'\r04012   FCB MCOMP|9\r04014       FCB MFORE\r04016         FDB DTRAIL-CFAOFF\r04018         FDB BIF+2\r04020         FDB XLINE-CFAOFF\r04022  FDB INUMB-CFAOFF\r04030 XMACH    TFR Y,X\r04040   PULS Y UN-NEST\r04050    JMP ,X IN LINE MACHINE CODE\r04100 *\r
\ No newline at end of file
+00010 * Include file for BIF
+00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
+00030 *
+01000  FCC 'LATEST'
+01010  FCB 6
+01020  FCB MFORE
+01030  FDB ENDIF-CFAOFF
+01040  FDB BIF+2
+01050  FDB 0
+01060  FDB 0
+01070 LATEST   DOUCON  not ROOT!
+01080  FCB UCURR NFA
+01110 *
+01115 * convert NFA to LFA,CFA,GFA,PFA
+01120  FCC 'LFA'
+01130  FCB 3
+01140  FCB MFORE
+01150  FDB LATEST-CFAOFF
+01160  FDB BIF+2
+01170  FDB 0
+01180  FDB 0
+01190 LFA      LDB #LFAOFF
+01200  BRA CFA+2
+01210 *
+01220  FCC 'CFA'
+01230  FCB 3
+01240  FCB MFORE
+01250  FDB LFA-CFAOFF
+01260  FDB BIF+2
+01270  FDB 0
+01280  FDB 0
+01290 CFA      LDB #CFAOFF
+01292  SEX
+01294  ADDD ,U
+01296  STD ,U
+01300  NEXT
+01310 *
+01320  FCC 'GFA'
+01330  FCB 3
+01340  FCB MFORE
+01350  FDB CFA-CFAOFF
+01360  FDB BIF+2
+01370  FDB 0
+01380  FDB 0
+01390 GFA      LDB #GFAOFF
+01400  BRA CFA+2
+01410 *
+01420  FCC 'PFA'
+01430  FCB 3
+01440  FCB MFORE
+01450  FDB GFA-CFAOFF
+01460  FDB BIF+2
+01470  FDB PAD-CFAOFF
+01480  FDB PREV-CFAOFF
+01490 PFA      LDB #PFAOFF
+01500  BRA CFA+2
+01510 *
+01515 * PFA to NFA
+01520  FCC 'NFA'
+01530  FCB 3
+01540  FCB MFORE
+01550  FDB PFA-CFAOFF
+01560  FDB BIF+2
+01570  FDB NCOMMA-CFAOFF
+01580  FDB NOT-CFAOFF
+01590 NFA      LDB #-PFAOFF
+01600  BRA CFA+2
+01610 *
+01620  FCC '!CSP'
+01630  FCB 4
+01640  FCB MFORE
+01650  FDB NFA-CFAOFF
+01660  FDB BIF+2
+01670  FDB 0
+01680  FDB HASH-CFAOFF
+01690 STOCSP   LDX <UP
+01700  STU UCSP,X
+01710  NEXT
+01720 *
+01730  FCC 'HEX'
+01740  FCB 3
+01750  FCB MFORE
+01760  FDB STOCSP-CFAOFF
+01770  FDB BIF+2
+01780  FDB 0
+01790  FDB 0
+01800 HEX      LDB #16
+01810  CLRA
+01820  LDX <UP
+01830  STD UBASE,X
+01840  NEXT
+01850 *
+01860  FCC 'DECIMAL'
+01870  FCB 7
+01880  FCB MFORE
+01890  FDB HEX-CFAOFF
+01900  FDB BIF+2
+01910  FDB DAD-CFAOFF
+01920  FDB DEFS-CFAOFF
+01930 DEC      LDB #10
+01940  BRA HEX+2
+01950 *
+01960  FCC 'OCTAL'
+01970  FCB 5
+01980  FCB MFORE
+01990  FDB DEC-CFAOFF
+02000  FDB BIF+2
+02010  FDB 0
+02020  FDB OFFSET-CFAOFF
+02030 OCT      LDB #8
+02040  BRA HEX+2
+02050 *
+02060  FCC 'FILL'
+02070  FCB 4
+02080  FCB MFORE
+02090  FDB OCT-CFAOFF
+02100  FDB BIF+2
+02110  FDB FENCE-CFAOFF
+02120  FDB FILLIN-CFAOFF
+02130 FILL     PSHS Y
+02140  PULU D,X,Y
+02150  STB ,Y+
+02160  LEAX -1,X
+02170  BNE *-4
+02180  PULS Y
+02190  NEXT
+02200 *
+02210  FCC 'ERASE'
+02220  FCB 5
+02230  FCB MFORE
+02240  FDB FILL-CFAOFF
+02250  FDB BIF+2
+02260  FDB 0
+02270  FDB 0
+02280 ERASE    LDB #0
+02290  PSHU D
+02300  BRA FILL
+02310 *
+02320  FCC 'BLANKS'
+02330  FCB 6
+02340  FCB MFORE
+02350  FDB ERASE-CFAOFF
+02360  FDB BIF+2
+02370  FDB BL-CFAOFF
+02380  FDB 0
+02390 BLANKS   LDB #$20 ascii SP
+02400  PSHU D
+02410  BRA FILL
+02420 *
+02430  FCC 'HOLD'
+02440  FCB 4
+02450  FCB MFORE
+02460  FDB BLANKS-CFAOFF
+02470  FDB BIF+2
+02480  FDB 0
+02490  FDB 0
+02500 HOLD     PULU D CH
+02510  PSHS Y
+02520  LDY <UP
+02530  LDX UHLD,Y
+02540  STB ,-X
+02550  STX UHLD,Y
+02555  PULS Y
+02560  NEXT
+02570 *
+02580  FCC 'PAD'
+02590  FCB 3
+02600  FCB MFORE
+02610  FDB HOLD-CFAOFF
+02620  FDB BIF+2
+02630  FDB 0
+02640  FDB 0
+02650 PAD      DOUCON  moved!
+02660  FCB UPAD
+02700 *
+02710  FCC 'S->D'
+02720  FCB 4
+02730  FCB MFORE
+02740  FDB PAD-CFAOFF
+02750  FDB BIF+2
+02760  FDB RPSTO-CFAOFF
+02770  FDB SIGN-CFAOFF
+02780 STOD     LEAU -2,U
+02790  LDD 2,U
+02795  LBRA ZLESS+2
+02800 *
+02810  FCC '+-'
+02820  FCB 2
+02830  FCB MFORE
+02840  FDB STOD-CFAOFF
+02850  FDB BIF+2
+02860  FDB ADDSTO-CFAOFF
+02870  FDB ADDBUF-CFAOFF
+02880 CHS      LDD ,U++
+02890  LBMI MINUS
+02895  NEXT
+02900 *
+02910  FCC 'D+-'
+02920  FCB 3
+02930  FCB MFORE
+02940  FDB STOD-CFAOFF
+02950  FDB BIF+2
+02960  FDB 0
+02970  FDB 0
+02980 DCHS     LDD ,U++
+02990  LBMI DMINUS
+02995  NEXT
+03000 *
+03010  FCC 'ABS'
+03020  FCB 3
+03030  FCB MFORE
+03040  FDB DCHS-CFAOFF
+03050  FDB BIF+2
+03060  FDB ABORT-CFAOFF
+03070  FDB ALLOT-CFAOFF
+03080 ABS      LDD ,U
+03090  LBMI MINUS
+03095  NEXT
+03100 *
+03110  FCC 'DABS'
+03120  FCB 4
+03130  FCB MFORE
+03140  FDB ABS-CFAOFF
+03150  FDB BIF+2
+03160  FDB DSUB-CFAOFF
+03170  FDB DIGIT-CFAOFF
+03180 DABS     LDD ,U
+03190  LBMI DMINUS
+03195  NEXT
+03200 *
+03210  FCC 'MIN'
+03220  FCB 3
+03230  FCB MFORE
+03240  FDB DABS-CFAOFF
+03250  FDB BIF+2
+03260  FDB MSMOD-CFAOFF
+03270  FDB MOVE-CFAOFF
+03280 MIN      PULU D
+03284  CMPD ,U
+03288  BGE *+4
+03290  STD ,U
+03295  NEXT
+03300 *
+03310  FCC 'MAX'
+03320  FCB 3
+03330  FCB MFORE
+03340  FDB MIN-CFAOFF
+03350  FDB BIF+2
+03360  FDB 0
+03370  FDB 0
+03380 MAX      PULU D
+03384  CMPD ,U
+03388  BLE *+4
+03390  STD ,U
+03395  NEXT
+03400 *
+03410  FCC '['
+03412  FCB MIMM|1
+03414  FCB MFORE
+03416  FDB MAX-CFAOFF
+03418  FDB BIF+2
+03420  FDB XOR-CFAOFF
+03422  FDB 0
+03430 LBRAK    LDB #.NOT.SCOMP
+03435  LDX <UP
+03440  ANDB USTATE+1,X
+03445  STB USTATE+1,X
+03450  NEXT
+03500 *
+03510  FCC ']'
+03512  FCB 1
+03514  FCB MFORE
+03516  FDB LBRAK-CFAOFF
+03518  FDB BIF+2
+03520  FDB 0
+03522  FDB 0
+03530 RBRAK    LDB #SCOMP
+03535  LDX <UP
+03540  ORB USTATE+1,X
+03545  STB USTATE+1,X
+03550  NEXT
+03555 *
+03560  FCC 'IMMEDIATE'
+03562  FCB 9
+03564  FCB MFORE
+03566  FDB RBRAK-CFAOFF
+03568  FDB BIF+2
+03570  FDB 0
+03572  FDB 0
+03580 IMMED    LDB #MIMM
+03585  BRA SMUDGE+2
+03600 *
+03610  FCC 'SMUDGE'
+03612  FCB 6
+03614  FCB MFORE
+03616  FDB IMMED-CFAOFF
+03618  FDB BIF+2
+03620  FDB STOD-CFAOFF
+03622  FDB SPACE-CFAOFF
+03630 SMUDGE   LDB #MHID
+03635  LDX <UP
+03645  EORB [UCURR,X]
+03650  STB [UCURR,X]
+03655  NEXT
+03657 *
+03660  FCC 'COMPILE-ONLY'
+03662  FCB 12
+03664  FCB MFORE
+03666  FDB SMUDGE-CFAOFF
+03668  FDB BIF+2
+03670  FDB 0
+03672  FDB 0
+03680 COMPO    LDB #MCOMP
+03685  BRA SMUDGE+2
+03800 *
+03810  FCC 'COUNT'
+03812  FCB 5
+03814  FCB MFORE
+03816  FDB COMPO-CFAOFF
+03818  FDB BIF+2
+03820  FDB 0
+03822  FDB 0
+03830 COUNT    LDX ,U CT OF STR
+03835  LDB ,X+
+03840  STX ,U STRING
+03845  CLRA
+03850  PSHU D COUNT
+03855  NEXT
+03900 *
+03910  FCC '-TRAILING'
+03912  FCB 9
+03914  FCB MFORE
+03916  FDB COUNT-CFAOFF
+03918  FDB BIF+2
+03920  FDB DIFIND-CFAOFF
+03922  FDB 0
+03930 DTRAIL   LDD ,U
+03935  LDX 2,U
+03940  LEAX D,X END
+03945  LDA #$20 ascii SP
+03950 DTRAL    CMPA ,-X
+03955  BNE DTRAD
+03960  CMPX 2,U
+03965  BHS DTRAL
+03970 DTRAD TFR X,D
+03975  SUBD 2,U
+03980  ADDD #1
+03985  STD ,U
+03990  NEXT
+04000 *
+04010  FCC '(MACHINE)'
+04012  FCB MCOMP|9
+04014  FCB MFORE
+04016  FDB DTRAIL-CFAOFF
+04018  FDB BIF+2
+04020  FDB XLINE-CFAOFF
+04022  FDB INUMB-CFAOFF
+04030 XMACH    TFR Y,X
+04040  PULS Y UN-NEST
+04050  JMP ,X IN LINE MACHINE CODE
+04100 *
index f356596..9f71cee 100644 (file)
@@ -1 +1,172 @@
-00010 * Include file for BIF\r00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r00030 *\r04110  FCC 'TYPE'\r04112        FCB 4\r04114     FCB MFORE\r04116         FDB XMACH-CFAOFF\r04118  FDB BIF+2\r04120         FDB 0\r04122     FDB 0\r04130 TYPE        LDD ,U\r04132    BEQ TYPEQ\r04135         ADDD 2,U\r04140  STD ,U for compare\r04145        LDX 2,U\r04150 TYPEL     LDB ,X+\r04155   STX 2,U\r04160   CLRA\r04165      PSHU D\r04170    DOCOL\r04175     FDB EMIT\r04180  FDB XMACH\r04185         LDX 2,U\r04190   CMPX ,U\r04195   BLO TYPEL\r04197 TYPEQ LEAU 4,U\r04200    NEXT\r04205 *\r04210      FCC '(.")'\r04212        FCB MCOMP.OR.4\r04214    FCB MFORE\r04216         FDB TYPE-CFAOFF\r04218   FDB BIF+2\r04220         FDB XPLOOP-CFAOFF\r04222         FDB XSCODE-CFAOFF\r04230 XDOTQ   LDB ,Y+ count\r04235     CLRA\r04240      TFR Y,X string\r04245    LEAY D,Y past it\r04250  PSHU D,X\r04255  BRA TYPE\r04300 *\r04310  FCC 'ID.'\r04312         FCB 3\r04314     FCB MFORE\r04316         FDB XDOTQ-CFAOFF\r04318  FDB BIF+2\r04320         FDB 0\r04322     FDB 0\r04330 IDDOT       PULU X nfa\r04335        LDB ,X\r04340    ANDB #NLMASK\r04350      NEGB\r04360      LEAX B,X past it\r04370  NEGB\r04380      CLRA\r04390      PSHU D,X\r04400  BRA TYPE\r04410 *\r04510  FCC 'FILL-IN'\r04512     FCB MCOMP.OR.7\r04514    FCB MFORE\r04516         FDB IDDOT-CFAOFF\r04518  FDB BIF+2\r04520         FDB 0\r04522     FDB 0\r04530 FILLIN      LDX <UP\r04540   LDD UDP,X\r04550         SUBD ,U adr\r04555       SUBD #2 past\r04560      STD [,U++]\r04570        NEXT\r04590 *\r04610      FCC 'BEGIN'\r04612       FCB MCOMP.OR.MIMM.OR.5\r04614    FCB MFORE\r04616         FDB FILLIN-CFAOFF\r04618         FDB BIF+2\r04620         FDB BASE-CFAOFF\r04622   FDB 0\r04630 BEGIN       DOCOL   see fig-FORTH model\r04640       FDB QCOMP\r04650         FDB HERE target\r04660   FDB LIT\r04670   FDB ('B)*256+'E\r04680   FDB SEMIS\r04690 *\r04710         FCC 'AGAIN'\r04712       FCB MCOMP.OR.MIMM.OR.5\r04714    FCB MFORE\r04716         FDB BEGIN-CFAOFF\r04718  FDB BIF+2\r04720         FDB 0\r04722     FDB 0\r04730 AGAIN       DOCOL   see fig-FORTH model\r04740       FDB LIT\r04750   FDB ('B)*256+'E\r04760   FDB QPAIRS\r04765        FDB COMP\r04770  FDB BRANCH\r04775        FDB BACK\r04780  FDB SEMIS\r04790 *\r04810         FCC 'UNTIL'\r04812       FCB MCOMP.OR.MIMM.OR.5\r04814    FCB MFORE\r04816         FDB AGAIN-CFAOFF\r04818  FDB BIF+2\r04820         FDB USLASH-CFAOFF\r04822         FDB 0\r04830 UNTIL       DOCOL   see fig-FORTH model\r04840       FDB LIT\r04850   FDB ('B)*256+'E\r04860   FDB QPAIRS\r04865        FDB COMP\r04870  FDB ZBR\r04875   FDB BACK\r04880  FDB SEMIS\r04890 *\r04910         FCC 'WHILE'\r04912       FCB MCOMP.OR.MIMM.OR.5\r04914    FCB MFORE\r04916         FDB UNTIL-CFAOFF\r04918  FDB BIF+2\r04920         FDB WARM-CFAOFF\r04922   FDB WORDPD-CFAOFF\r04930 WHILE   DOCOL\r04940     FDB DUP\r04950   FDB LIT\r04960   FDB ('B)*256+'E\r04970   FDB QPAIRS\r04980        FDB COMP\r04990  FDB ZBR\r05000   FDB HERE adr\r05010      FDB ZERO\r05020  FDB COMMA\r05030         FDB LIT\r05040   FDB ('W)*256+'H\r05050   FDB SEMIS\r05090 *\r05110         FCC 'REPEAT'\r05112      FCB MCOMP.OR.MIMM.OR.6\r05114    FCB MFORE\r05116         FDB WHILE-CFAOFF\r05118  FDB BIF+2\r05120         FDB REPEAL-CFAOFF\r05122         FDB ROOT-CFAOFF\r05130 REPEAT    DOCOL\r05140     FDB LIT\r05150   FDB ('W)*256+'H\r05160   FDB QPAIRS\r05170        FDB TOR\r05180   FDB AGAIN\r05190         FDB RFROM\r05200         FDB FILLIN\r05210        FDB SEMIS\r05290 *\r05310         FCC 'DO'\r05312  FCB MCOMP.OR.MIMM.OR.2\r05314    FCB MFORE\r05316         FDB WHILE-CFAOFF\r05318  FDB BIF+2\r05320         FDB CFEH-CFAOFF\r05322   FDB ENDIF-CFAOFF\r05330 DO       DOCOL   see fig-FORTH model\r05340       FDB COMP\r05350  FDB XDO\r05360   FDB HERE\r05370  FDB LIT\r05380   FDB ('D)*256+'O\r05390   FDB SEMIS\r05400 *\r
\ No newline at end of file
+00010 * Include file for BIF
+00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
+00030 *
+04110  FCC 'TYPE'
+04112  FCB 4
+04114  FCB MFORE
+04116  FDB XMACH-CFAOFF
+04118  FDB BIF+2
+04120  FDB 0
+04122  FDB 0
+04130 TYPE     LDD ,U
+04132  BEQ TYPEQ
+04135  ADDD 2,U
+04140  STD ,U for compare
+04145  LDX 2,U
+04150 TYPEL    LDB ,X+
+04155  STX 2,U
+04160  CLRA
+04165  PSHU D
+04170  DOCOL
+04175  FDB EMIT
+04180  FDB XMACH
+04185  LDX 2,U
+04190  CMPX ,U
+04195  BLO TYPEL
+04197 TYPEQ LEAU 4,U
+04200  NEXT
+04205 *
+04210  FCC '(.")'
+04212  FCB MCOMP.OR.4
+04214  FCB MFORE
+04216  FDB TYPE-CFAOFF
+04218  FDB BIF+2
+04220  FDB XPLOOP-CFAOFF
+04222  FDB XSCODE-CFAOFF
+04230 XDOTQ    LDB ,Y+ count
+04235  CLRA
+04240  TFR Y,X string
+04245  LEAY D,Y past it
+04250  PSHU D,X
+04255  BRA TYPE
+04300 *
+04310  FCC 'ID.'
+04312  FCB 3
+04314  FCB MFORE
+04316  FDB XDOTQ-CFAOFF
+04318  FDB BIF+2
+04320  FDB 0
+04322  FDB 0
+04330 IDDOT    PULU X nfa
+04335  LDB ,X
+04340  ANDB #NLMASK
+04350  NEGB
+04360  LEAX B,X past it
+04370  NEGB
+04380  CLRA
+04390  PSHU D,X
+04400  BRA TYPE
+04410 *
+04510  FCC 'FILL-IN'
+04512  FCB MCOMP.OR.7
+04514  FCB MFORE
+04516  FDB IDDOT-CFAOFF
+04518  FDB BIF+2
+04520  FDB 0
+04522  FDB 0
+04530 FILLIN   LDX <UP
+04540  LDD UDP,X
+04550  SUBD ,U adr
+04555  SUBD #2 past
+04560  STD [,U++]
+04570  NEXT
+04590 *
+04610  FCC 'BEGIN'
+04612  FCB MCOMP.OR.MIMM.OR.5
+04614  FCB MFORE
+04616  FDB FILLIN-CFAOFF
+04618  FDB BIF+2
+04620  FDB BASE-CFAOFF
+04622  FDB 0
+04630 BEGIN    DOCOL   see fig-FORTH model
+04640  FDB QCOMP
+04650  FDB HERE target
+04660  FDB LIT
+04670  FDB ('B)*256+'E
+04680  FDB SEMIS
+04690 *
+04710  FCC 'AGAIN'
+04712  FCB MCOMP.OR.MIMM.OR.5
+04714  FCB MFORE
+04716  FDB BEGIN-CFAOFF
+04718  FDB BIF+2
+04720  FDB 0
+04722  FDB 0
+04730 AGAIN    DOCOL   see fig-FORTH model
+04740  FDB LIT
+04750  FDB ('B)*256+'E
+04760  FDB QPAIRS
+04765  FDB COMP
+04770  FDB BRANCH
+04775  FDB BACK
+04780  FDB SEMIS
+04790 *
+04810  FCC 'UNTIL'
+04812  FCB MCOMP.OR.MIMM.OR.5
+04814  FCB MFORE
+04816  FDB AGAIN-CFAOFF
+04818  FDB BIF+2
+04820  FDB USLASH-CFAOFF
+04822  FDB 0
+04830 UNTIL    DOCOL   see fig-FORTH model
+04840  FDB LIT
+04850  FDB ('B)*256+'E
+04860  FDB QPAIRS
+04865  FDB COMP
+04870  FDB ZBR
+04875  FDB BACK
+04880  FDB SEMIS
+04890 *
+04910  FCC 'WHILE'
+04912  FCB MCOMP.OR.MIMM.OR.5
+04914  FCB MFORE
+04916  FDB UNTIL-CFAOFF
+04918  FDB BIF+2
+04920  FDB WARM-CFAOFF
+04922  FDB WORDPD-CFAOFF
+04930 WHILE    DOCOL
+04940  FDB DUP
+04950  FDB LIT
+04960  FDB ('B)*256+'E
+04970  FDB QPAIRS
+04980  FDB COMP
+04990  FDB ZBR
+05000  FDB HERE adr
+05010  FDB ZERO
+05020  FDB COMMA
+05030  FDB LIT
+05040  FDB ('W)*256+'H
+05050  FDB SEMIS
+05090 *
+05110  FCC 'REPEAT'
+05112  FCB MCOMP.OR.MIMM.OR.6
+05114  FCB MFORE
+05116  FDB WHILE-CFAOFF
+05118  FDB BIF+2
+05120  FDB REPEAL-CFAOFF
+05122  FDB ROOT-CFAOFF
+05130 REPEAT   DOCOL
+05140  FDB LIT
+05150  FDB ('W)*256+'H
+05160  FDB QPAIRS
+05170  FDB TOR
+05180  FDB AGAIN
+05190  FDB RFROM
+05200  FDB FILLIN
+05210  FDB SEMIS
+05290 *
+05310  FCC 'DO'
+05312  FCB MCOMP.OR.MIMM.OR.2
+05314  FCB MFORE
+05316  FDB WHILE-CFAOFF
+05318  FDB BIF+2
+05320  FDB CFEH-CFAOFF
+05322  FDB ENDIF-CFAOFF
+05330 DO       DOCOL   see fig-FORTH model
+05340  FDB COMP
+05350  FDB XDO
+05360  FDB HERE
+05370  FDB LIT
+05380  FDB ('D)*256+'O
+05390  FDB SEMIS
+05400 *
index 175ebf5..57c11b1 100644 (file)
@@ -1 +1,301 @@
-00010 * Include file for BIF\r00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r00030 *\r01000  FCC 'M*'\r01010  FCB 2\r01020     FCB MFORE\r01030         FDB DO-CFAOFF\r01040     FDB BIF+2\r01050         FDB 0\r01060     FDB MSLASH-CFAOFF\r01070 MSTAR   LDD ,U  see fig-FORTH model\r01080       EORA 2,U n bit\r01090    PSHS D\r01100    DOCOL\r01110     FDB ABS\r01120   FDB SWAP\r01130  FDB ABS\r01140   FDB USTAR\r01150         FDB XMACH\r01160         LDD ,S++\r01170  LBMI DMINUS\r01180       NEXT\r01190 *\r01200      FCC 'M/'\r01210  FCB 2\r01220     FCB MFORE\r01230         FDB MSTAR-CFAOFF\r01240  FDB BIF+2\r01250         FDB 0\r01260     FDB 0\r01270 MSLASH      DOCOL   see fig-FORTH model\r01280       FDB OVER\r01290  FDB TOR signs: dividend\r01300   FDB TOR & divisor\r01310         FDB DABS\r01320  FDB R divisor\r01330     FDB ABS\r01340   FDB USLASH\r01350        FDB RFROM divisor\r01360         FDB R\r01370     FDB XOR quotient sign\r01380     FDB CHS\r01390   FDB SWAP remainder\r01400        FDB RFROM dividend sign\r01410   FDB CHS\r01420   FDB SWAP\r01430  FDB SEMIS\r01500 *\r01510         FCC '*'\r01520   FCB 1\r01530     FCB MFORE\r01540         FDB MSLASH-CFAOFF\r01550         FDB BIF+2\r01560         FDB PFIND-CFAOFF\r01570  FDB SSMOD-CFAOFF\r01580 STAR     DOCOL   see fig-FORTH model\r01590       FDB USTAR\r01600         FDB DROP\r01610  FDB SEMIS\r01700 *\r01710         FCC '/MOD'\r01720        FCB 4\r01730     FCB MFORE\r01740         FDB STAR-CFAOFF\r01750   FDB BIF+2\r01760         FDB 0\r01770     FDB 0\r01780 SLAMOD      LDD ,U\r01790    PSHU D\r01800    LDD #-1\r01810   TST 4,U sign extend\r01820       BMI *+5\r01830   ADDD #1\r01840   STD 2,U\r01850   LBRA MSLASH\r01900 *\r01910       FCC '/'\r01920   FCB 1\r01930     FCB MFORE\r01940         FDB SLAMOD-CFAOFF\r01950         FDB BIF+2\r01960         FDB NEXSCR-CFAOFF\r01970         FDB ADD1-CFAOFF\r01980 SLASH     DOCOL   see fig-FORTH model\r01990       FDB SLAMOD\r02000        FDB SWAP\r02010  FDB DROP\r02020  FDB SEMIS\r02100 *\r02110         FCC 'MOD'\r02120         FCB 3\r02130     FCB MFORE\r02140         FDB SLASH-CFAOFF\r02150  FDB BIF+2\r02160         FDB 0\r02170     FDB 0\r02180 MOD DOCOL   see fig-FORTH model\r02190       FDB SLAMOD\r02210        FDB DROP\r02220  FDB SEMIS\r02300 *\r02310         FCC '*/MOD'\r02320       FCB 5\r02330     FCB MFORE\r02340         FDB MOD-CFAOFF\r02350    FDB BIF+2\r02360         FDB STARSL-CFAOFF\r02370         FDB 0\r02380 SSMOD       DOCOL   see fig-FORTH model\r02390       FDB TOR\r02400   FDB MSTAR\r02410         FDB RFROM\r02420         FDB MSLASH\r02430        FDB SEMIS\r02500 *\r02510         FCC '*/'\r02520  FCB 2\r02530     FCB MFORE\r02540         FDB SSMOD-CFAOFF\r02550  FDB BIF+2\r02560         FDB 0\r02570     FDB 0\r02580 STARSL      DOCOL   see fig-FORTH model\r02590       FDB SSMOD\r02600         FDB SWAP\r02610  FDB DROP\r02630  FDB SEMIS\r02700 *\r02710         FCC 'M/MOD'\r02720       FCB 5\r02730     FCB MFORE\r02740         FDB STARSL-CFAOFF\r02750         FDB BIF+2\r02760         FDB MSTAR-CFAOFF\r02770  FDB MESS-CFAOFF\r02780 MSMOD     DOCOL   see fig-FORTH model\r02790       FDB TOR\r02800   FDB ZERO\r02810  FDB R\r02820     FDB USLASH ms word\r02830        FDB RFROM\r02840         FDB SWAP\r02850  FDB TOR save high q\r02860       FDB USLASH ls word\r02870        FDB RFROM double q\r02880        FDB SEMIS\r02900 *\r02910         FCC '+BUF'\r02920        FCB 4\r02930     FCB MFORE\r02940         FDB MSMOD-CFAOFF\r02950  FDB BIF+2\r02960         FDB 0\r02970     FDB 0\r02980 ADDBUF      LDX <UP\r02990   LDD BPBUF+2\r02995       ADDD #4\r03000   ADDD ,U\r03010   CMPD ULIMIT,X\r03020     BLO ADDBN\r03025         LDD UFIRST,X\r03030 ADDBN        STD ,U\r03040    CMPD UPREV,X\r03050      BEQ *+7\r03060   LDD #-1\r03065   BRA *+5\r03070   LDD #0\r03080    PSHU D\r03090    NEXT\r03100 *\r03110      FCC 'UPDATE'\r03120      FCB 6\r03130     FCB MFORE\r03140         FDB ADDBUF-CFAOFF\r03150         FDB BIF+2\r03160         FDB UNTIL-CFAOFF\r03170  FDB USER-CFAOFF\r03180 UPDATE    LDX <UP\r03190   LDD [UPREV,X]\r03200     ORA #$80\r03210  STD [UPREV,X]\r03220     NEXT\r03300 *\r03310      FCC 'EMPTY-BUFFERS'\r03320       FCB 13\r03330    FCB MFORE\r03340         FDB UPDATE-CFAOFF\r03350         FDB BIF+2\r03360         FDB 0\r03370     FDB 0\r03380 EMTBUF      LDX <UP\r03390   LDD ULIMIT,X\r03395      SUBD #1 catch odd\r03400         PSHS D,Y\r03410  LDX UFIRST,X\r03420      LDY #0\r03430    LDD BPBUF+2\r03440 EMTBL CMPX ,S\r03445   BHS EMTBE\r03450         STY ,X++ update bit\r03455       LEAX D,X\r03460  CMPX ,S\r03465   BHS EMTBE\r03470         STY ,X++ term NUL\r03475         BRA EMTBL\r03480 EMTBE   PULS D,Y\r03490  NEXT\r03500 *\r03510      FCC 'DRIVE-OFFSET'\r03520        FCB 12\r03530    FCB MFORE\r03540         FDB EMTBUF-CFAOFF\r03550         FDB BIF+2\r03560         FDB DRIVE-CFAOFF\r03570  FDB DROOT-CFAOFF\r03580 DROFFS   DO1ARR\r03590    FDB 0 low\r03600         FDB 4 width\r03610       FCB 2 element size\r03620        FDB 18*35 drive 0\r03630         FDB 18*35\r03640         FDB $8000 8 Meg max\r03650       FDB $8000\r03660         FDB $8000 never a drive 5!\r03700 *\r03710        FCC 'DRIVE'\r03720       FCB 5\r03730     FCB MFORE\r03740         FDB DROFFS-CFAOFF\r03750         FDB BIF+2\r03760         FDB 0\r03770     FDB 0\r03780 DRIVE       LDX #DROFFS+7\r03800     LDD #0\r03810 DRIVL      ADDD ,X++\r03820         BMI DRIVX table end?\r03830      DEC 1,U\r03840   BPL DRIVL\r03850         SUBD -2,X back one\r03860 DRIVX  LDX <UP\r03870   STD UOFFS,X\r03890       LEAU 2,U\r03900  NEXT\r04000 *\r04000      FCC 'R/W'\r04010         FCB 3\r04020     FCB MFORE\r04030         FDB DRIVE-CFAOFF\r04040  FDB BIF+2\r04050         FDB 0\r04060     FDB 0\r04070 RW  PSHS Y,U,DP\r04080       LDY $C006 control table\r04090   LDX #DROFFS+7\r04100     LDD 2,U\r04110 RWD       SUBD ,X++ sectors\r04120         BHS RWD\r04130   BVC RWR table end?\r04140        LDD #6\r04150    PSHU D\r04160    JMP ERROR\r04170 RWR     ADDD ,--X back one\r04175        PSHS X\r04180    PSHU D\r04190    LDD #18 sectors/track\r04200     PSHU D\r04210    DOCOL\r04220     FDB SLAMOD\r04230        FDB XMACH\r04240         PULU D\r04250    STB 2,Y track\r04260     PULU D\r04265    INCB\r04270      STB 3,Y sector\r04280    PULS D table entry\r04290        SUBD #DROFFS+7\r04300    ASRB drive #\r04310      STB 1,Y\r04320   LDD 4,U buffer\r04330    STD 4,Y\r04340   LDB #2 coco READ\r04350  LDX ,U 0?\r04360         BNE *+3\r04370   INCB coco WRITE\r04380   STB ,Y op code\r04384    CLRA\r04386      TFR A,DP\r04390  JSR [$C004]     ROM handles timeout\r04400       PULS Y,U,DP     if IRQ enabled\r04420    LEAU 6,U\r04430  LDX $C006\r04440         LDB 6,X coco status\r04450       BEQ RWE\r04460   LDX <UP\r04470   LDD #0 no disc\r04480    STD UWARN,X\r04490       LDD #8\r04500    PSHU D\r04510    JMP ERROR\r04520 RWE     NEXT\r05000 *\r
\ No newline at end of file
+00010 * Include file for BIF
+00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
+00030 *
+01000  FCC 'M*'
+01010  FCB 2
+01020  FCB MFORE
+01030  FDB DO-CFAOFF
+01040  FDB BIF+2
+01050  FDB 0
+01060  FDB MSLASH-CFAOFF
+01070 MSTAR    LDD ,U  see fig-FORTH model
+01080  EORA 2,U n bit
+01090  PSHS D
+01100  DOCOL
+01110  FDB ABS
+01120  FDB SWAP
+01130  FDB ABS
+01140  FDB USTAR
+01150  FDB XMACH
+01160  LDD ,S++
+01170  LBMI DMINUS
+01180  NEXT
+01190 *
+01200  FCC 'M/'
+01210  FCB 2
+01220  FCB MFORE
+01230  FDB MSTAR-CFAOFF
+01240  FDB BIF+2
+01250  FDB 0
+01260  FDB 0
+01270 MSLASH   DOCOL   see fig-FORTH model
+01280  FDB OVER
+01290  FDB TOR signs: dividend
+01300  FDB TOR & divisor
+01310  FDB DABS
+01320  FDB R divisor
+01330  FDB ABS
+01340  FDB USLASH
+01350  FDB RFROM divisor
+01360  FDB R
+01370  FDB XOR quotient sign
+01380  FDB CHS
+01390  FDB SWAP remainder
+01400  FDB RFROM dividend sign
+01410  FDB CHS
+01420  FDB SWAP
+01430  FDB SEMIS
+01500 *
+01510  FCC '*'
+01520  FCB 1
+01530  FCB MFORE
+01540  FDB MSLASH-CFAOFF
+01550  FDB BIF+2
+01560  FDB PFIND-CFAOFF
+01570  FDB SSMOD-CFAOFF
+01580 STAR     DOCOL   see fig-FORTH model
+01590  FDB USTAR
+01600  FDB DROP
+01610  FDB SEMIS
+01700 *
+01710  FCC '/MOD'
+01720  FCB 4
+01730  FCB MFORE
+01740  FDB STAR-CFAOFF
+01750  FDB BIF+2
+01760  FDB 0
+01770  FDB 0
+01780 SLAMOD   LDD ,U
+01790  PSHU D
+01800  LDD #-1
+01810  TST 4,U sign extend
+01820  BMI *+5
+01830  ADDD #1
+01840  STD 2,U
+01850  LBRA MSLASH
+01900 *
+01910  FCC '/'
+01920  FCB 1
+01930  FCB MFORE
+01940  FDB SLAMOD-CFAOFF
+01950  FDB BIF+2
+01960  FDB NEXSCR-CFAOFF
+01970  FDB ADD1-CFAOFF
+01980 SLASH    DOCOL   see fig-FORTH model
+01990  FDB SLAMOD
+02000  FDB SWAP
+02010  FDB DROP
+02020  FDB SEMIS
+02100 *
+02110  FCC 'MOD'
+02120  FCB 3
+02130  FCB MFORE
+02140  FDB SLASH-CFAOFF
+02150  FDB BIF+2
+02160  FDB 0
+02170  FDB 0
+02180 MOD      DOCOL   see fig-FORTH model
+02190  FDB SLAMOD
+02210  FDB DROP
+02220  FDB SEMIS
+02300 *
+02310  FCC '*/MOD'
+02320  FCB 5
+02330  FCB MFORE
+02340  FDB MOD-CFAOFF
+02350  FDB BIF+2
+02360  FDB STARSL-CFAOFF
+02370  FDB 0
+02380 SSMOD    DOCOL   see fig-FORTH model
+02390  FDB TOR
+02400  FDB MSTAR
+02410  FDB RFROM
+02420  FDB MSLASH
+02430  FDB SEMIS
+02500 *
+02510  FCC '*/'
+02520  FCB 2
+02530  FCB MFORE
+02540  FDB SSMOD-CFAOFF
+02550  FDB BIF+2
+02560  FDB 0
+02570  FDB 0
+02580 STARSL   DOCOL   see fig-FORTH model
+02590  FDB SSMOD
+02600  FDB SWAP
+02610  FDB DROP
+02630  FDB SEMIS
+02700 *
+02710  FCC 'M/MOD'
+02720  FCB 5
+02730  FCB MFORE
+02740  FDB STARSL-CFAOFF
+02750  FDB BIF+2
+02760  FDB MSTAR-CFAOFF
+02770  FDB MESS-CFAOFF
+02780 MSMOD    DOCOL   see fig-FORTH model
+02790  FDB TOR
+02800  FDB ZERO
+02810  FDB R
+02820  FDB USLASH ms word
+02830  FDB RFROM
+02840  FDB SWAP
+02850  FDB TOR save high q
+02860  FDB USLASH ls word
+02870  FDB RFROM double q
+02880  FDB SEMIS
+02900 *
+02910  FCC '+BUF'
+02920  FCB 4
+02930  FCB MFORE
+02940  FDB MSMOD-CFAOFF
+02950  FDB BIF+2
+02960  FDB 0
+02970  FDB 0
+02980 ADDBUF   LDX <UP
+02990  LDD BPBUF+2
+02995  ADDD #4
+03000  ADDD ,U
+03010  CMPD ULIMIT,X
+03020  BLO ADDBN
+03025  LDD UFIRST,X
+03030 ADDBN    STD ,U
+03040  CMPD UPREV,X
+03050  BEQ *+7
+03060  LDD #-1
+03065  BRA *+5
+03070  LDD #0
+03080  PSHU D
+03090  NEXT
+03100 *
+03110  FCC 'UPDATE'
+03120  FCB 6
+03130  FCB MFORE
+03140  FDB ADDBUF-CFAOFF
+03150  FDB BIF+2
+03160  FDB UNTIL-CFAOFF
+03170  FDB USER-CFAOFF
+03180 UPDATE   LDX <UP
+03190  LDD [UPREV,X]
+03200  ORA #$80
+03210  STD [UPREV,X]
+03220  NEXT
+03300 *
+03310  FCC 'EMPTY-BUFFERS'
+03320  FCB 13
+03330  FCB MFORE
+03340  FDB UPDATE-CFAOFF
+03350  FDB BIF+2
+03360  FDB 0
+03370  FDB 0
+03380 EMTBUF   LDX <UP
+03390  LDD ULIMIT,X
+03395  SUBD #1 catch odd
+03400  PSHS D,Y
+03410  LDX UFIRST,X
+03420  LDY #0
+03430  LDD BPBUF+2
+03440 EMTBL    CMPX ,S
+03445  BHS EMTBE
+03450  STY ,X++ update bit
+03455  LEAX D,X
+03460  CMPX ,S
+03465  BHS EMTBE
+03470  STY ,X++ term NUL
+03475  BRA EMTBL
+03480 EMTBE    PULS D,Y
+03490  NEXT
+03500 *
+03510  FCC 'DRIVE-OFFSET'
+03520  FCB 12
+03530  FCB MFORE
+03540  FDB EMTBUF-CFAOFF
+03550  FDB BIF+2
+03560  FDB DRIVE-CFAOFF
+03570  FDB DROOT-CFAOFF
+03580 DROFFS   DO1ARR
+03590  FDB 0 low
+03600  FDB 4 width
+03610  FCB 2 element size
+03620  FDB 18*35 drive 0
+03630  FDB 18*35
+03640  FDB $8000 8 Meg max
+03650  FDB $8000
+03660  FDB $8000 never a drive 5!
+03700 *
+03710  FCC 'DRIVE'
+03720  FCB 5
+03730  FCB MFORE
+03740  FDB DROFFS-CFAOFF
+03750  FDB BIF+2
+03760  FDB 0
+03770  FDB 0
+03780 DRIVE    LDX #DROFFS+7
+03800  LDD #0
+03810 DRIVL    ADDD ,X++
+03820  BMI DRIVX table end?
+03830  DEC 1,U
+03840  BPL DRIVL
+03850  SUBD -2,X back one
+03860 DRIVX    LDX <UP
+03870  STD UOFFS,X
+03890  LEAU 2,U
+03900  NEXT
+04000 *
+04000  FCC 'R/W'
+04010  FCB 3
+04020  FCB MFORE
+04030  FDB DRIVE-CFAOFF
+04040  FDB BIF+2
+04050  FDB 0
+04060  FDB 0
+04070 RW       PSHS Y,U,DP
+04080  LDY $C006 control table
+04090  LDX #DROFFS+7
+04100  LDD 2,U
+04110 RWD      SUBD ,X++ sectors
+04120  BHS RWD
+04130  BVC RWR table end?
+04140  LDD #6
+04150  PSHU D
+04160  JMP ERROR
+04170 RWR      ADDD ,--X back one
+04175  PSHS X
+04180  PSHU D
+04190  LDD #18 sectors/track
+04200  PSHU D
+04210  DOCOL
+04220  FDB SLAMOD
+04230  FDB XMACH
+04240  PULU D
+04250  STB 2,Y track
+04260  PULU D
+04265  INCB
+04270  STB 3,Y sector
+04280  PULS D table entry
+04290  SUBD #DROFFS+7
+04300  ASRB drive #
+04310  STB 1,Y
+04320  LDD 4,U buffer
+04330  STD 4,Y
+04340  LDB #2 coco READ
+04350  LDX ,U 0?
+04360  BNE *+3
+04370  INCB coco WRITE
+04380  STB ,Y op code
+04384  CLRA
+04386  TFR A,DP
+04390  JSR [$C004]     ROM handles timeout
+04400  PULS Y,U,DP     if IRQ enabled
+04420  LEAU 6,U
+04430  LDX $C006
+04440  LDB 6,X coco status
+04450  BEQ RWE
+04460  LDX <UP
+04470  LDD #0 no disc
+04480  STD UWARN,X
+04490  LDD #8
+04500  PSHU D
+04510  JMP ERROR
+04520 RWE      NEXT
+05000 *
index e3f73de..db48094 100644 (file)
@@ -1 +1,204 @@
-00010 * Include file for BIF\r00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r00030 *\r05010  FCC '?ERROR'\r05020      FCB 6\r05030     FCB MFORE\r05040         FDB RW-CFAOFF\r05050     FDB BIF+2\r05060         FDB 0\r05070     FDB 0\r05080 QERR        PULU X\r05090    LDD ,U++\r05100  BNE *+4\r05110   NEXT\r05120      PSHU X\r05130    JMP ERROR\r05200 *\r05210         FCC '?COMP'\r05220       FCB 5\r05230     FCB MFORE\r05240         FDB QERR-CFAOFF\r05250   FDB BIF+2\r05260         FDB TOR-CFAOFF\r05270    FDB QEXEC-CFAOFF\r05280 QCOMP    LDX <UP\r05290   LDB USTATE+1,X\r05300    ANDB #SCOMP\r05310       BNE QPAIRN\r05320        LDD #$11\r05330  BRA QPAIRE\r05400 *\r05410        FCC '?EXEC'\r05420       FCB 5\r05430     FCB MFORE\r05440         FDB QCOMP-CFAOFF\r05450  FDB BIF+2\r05460         FDB QCST-CFAOFF\r05470   FDB QPAIRS-CFAOFF\r05480 QEXEC   LDX <UP\r05490   LDB USTATE+1,X\r05500    BEQ QPAIRN\r05510        LDD #$12\r05520  BRA QPAIRE\r05600 *\r05610        FCC '?PAIRS'\r05620      FCB 6\r05630     FCB MFORE\r05640         FDB QEXEC-CFAOFF\r05650  FDB BIF+2\r05660         FDB QLOAD-CFAOFF\r05670  FDB QTERM-CFAOFF\r05680 QPAIRS   PULU D\r05690    SUBD ,U++\r05700         BEQ QPAIRN\r05710        LDD #$13\r05720 QPAIRE   PSHU D robbed\r05730     JMP ERROR\r05740 QPAIRN  NEXT robbed\r05800 *\r05810       FCC '?CSP'\r05820        FCB 4\r05830     FCB MFORE\r05840         FDB QPAIRS-CFAOFF\r05850         FDB BIF+2\r05860         FDB 0\r05870     FDB 0\r05880 QCSP        LDX <UP\r05890   TFR U,D\r05900   SUBD UCSP,X\r05910       BEQ QPAIRN\r05920        LDD #$14\r05930  BRA QPAIRE\r06000 *\r06010        FCC '?LOADING'\r06020    FCB 8\r06030     FCB MFORE\r06040         FDB QCSP-CFAOFF\r06050   FDB BIF+2\r06060         FDB 0\r06070     FDB 0\r06080 QLOAD       LDX <UP\r06090   LDD UBLK,X\r06100        BNE QPAIRN\r06110        LDD #$16\r06120  BRA QPAIRE\r06200 *\r06210        FCC 'COMPILE'\r06220     FCB 7\r06230     FCB MFORE\r06240         FDB QLOAD-CFAOFF\r06250  FDB BIF+2\r06260         FDB COLD-CFAOFF\r06270   FDB COMPO-CFAOFF\r06280 COMP     DOCOL\r06290     FDB QCOMP\r06300         FDB XMACH\r06310 COMPIP  LDD ,Y++ robbed by IP,\r06320    PSHU D\r06330    JMP COMMA\r06390 *\r06410         FCC 'LOOP'\r06420        FCB MIMM.OR.MCOMP.OR.4\r06430    FCB MFORE\r06440         FDB COMP-CFAOFF\r06450   FDB BIF+2\r06460         FDB KEY-CFAOFF\r06470    FDB NUMBER-CFAOFF\r06480 LOOP    DOCOL   see fig-FORTH model\r06490       FDB LIT\r06500   FDB ('D)*256+'O\r06510   FDB QPAIRS\r06520        FDB COMP\r06530  FDB XLOOP\r06540         FDB BACK\r06550  FDB SEMIS\r06590 *\r06610         FCC '+LOOP'\r06620       FCB MIMM.OR.MCOMP.OR.5\r06630    FCB MFORE\r06640         FDB LOOP-CFAOFF\r06650   FDB BIF+2\r06660         FDB CHS-CFAOFF\r06670    FDB COMMA-CFAOFF\r06680 PLOOP    DOCOL   see fig-FORTH model\r06690       FDB LIT\r06700   FDB ('D)*256+'O\r06710   FDB QPAIRS\r06720        FDB COMP\r06730  FDB XPLOOP\r06740        FDB BACK\r06750  FDB SEMIS\r06790 *\r06809         FCC 'LOAD'\r06820        FCB 4\r06830     FCB MFORE\r06840         FDB PLOOP-CFAOFF\r06850  FDB BIF+2\r06860         FDB 0\r06870     FDB 0\r06880 LOAD        PSHS Y  see fig-FORTH model\r06890       LDY <UP\r06900   LDD UIN,Y\r06910         LDX UBLK,Y\r06920        PSHS X,D\r06930  LDD #0\r06940    STD UIN,Y\r06950         DOCOL\r06960     FDB BPSCR\r06970         FDB STAR\r06980  FDB BLK\r06990   FDB STORE\r07000         FDB INTERP\r07010        FDB XMACH\r07020         PULS D,X\r07030  STD UIN,Y\r07040         STX UBLK,Y\r07050        PULS Y\r07060    NEXT\r07090 *\r07110      FCC '<BUILDS'\r07120     FCB MCOMP.OR.7\r07130    FCB MFORE\r07140         FDB LOAD-CFAOFF\r07150   FDB BIF+2\r07160         FDB 0\r07170     FDB 0\r07180 BUILDS      DOCOL   see fig-FORTH model\r07190       FDB ZERO\r07200  FDB CONST\r07210         FDB SEMIS\r07290 *\r07310         FCC 'DOES>'\r07320       FCB MCOMP.OR.5\r07330    FCB MFORE\r07340         FDB BUILDS-CFAOFF\r07350         FDB BIF+2\r07360         FDB 0\r07370     FDB 0\r07380 DOES        LDX <UP\r07430   LDX UCURR,X\r07440       LDD ADOES,PCR\r07450     STD CFAOFF,X\r07460      STY PFAOFF,X\r07470      PULS Y\r07480    NEXT\r07490 ADOES        JSR <XDOES\r07790 *\r07810        FCC ';CODE'\r07820       FCB MCOMP.OR.MIMM.OR.5\r07830    FCB MFORE\r07840         FDB DOES-CFAOFF\r07850   FDB BIF+2\r07860         FDB SEMI-CFAOFF\r07870   FDB SEMIS-CFAOFF\r07880 SCODE    DOCOL   not fig\r07890   FDB QCSP\r07900  FDB COMP\r07910  FDB XSCODE\r07915        FDB LBRAK\r07920         FDB ASMBLR\r07930        FDB STOCSP      to check later\r07940    FDB SEMIS\r07950 * something else must SMUDGE\r07960 *\r
\ No newline at end of file
+00010 * Include file for BIF
+00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
+00030 *
+05010  FCC '?ERROR'
+05020  FCB 6
+05030  FCB MFORE
+05040  FDB RW-CFAOFF
+05050  FDB BIF+2
+05060  FDB 0
+05070  FDB 0
+05080 QERR     PULU X
+05090  LDD ,U++
+05100  BNE *+4
+05110  NEXT
+05120  PSHU X
+05130  JMP ERROR
+05200 *
+05210  FCC '?COMP'
+05220  FCB 5
+05230  FCB MFORE
+05240  FDB QERR-CFAOFF
+05250  FDB BIF+2
+05260  FDB TOR-CFAOFF
+05270  FDB QEXEC-CFAOFF
+05280 QCOMP    LDX <UP
+05290  LDB USTATE+1,X
+05300  ANDB #SCOMP
+05310  BNE QPAIRN
+05320  LDD #$11
+05330  BRA QPAIRE
+05400 *
+05410  FCC '?EXEC'
+05420  FCB 5
+05430  FCB MFORE
+05440  FDB QCOMP-CFAOFF
+05450  FDB BIF+2
+05460  FDB QCST-CFAOFF
+05470  FDB QPAIRS-CFAOFF
+05480 QEXEC    LDX <UP
+05490  LDB USTATE+1,X
+05500  BEQ QPAIRN
+05510  LDD #$12
+05520  BRA QPAIRE
+05600 *
+05610  FCC '?PAIRS'
+05620  FCB 6
+05630  FCB MFORE
+05640  FDB QEXEC-CFAOFF
+05650  FDB BIF+2
+05660  FDB QLOAD-CFAOFF
+05670  FDB QTERM-CFAOFF
+05680 QPAIRS   PULU D
+05690  SUBD ,U++
+05700  BEQ QPAIRN
+05710  LDD #$13
+05720 QPAIRE   PSHU D robbed
+05730  JMP ERROR
+05740 QPAIRN   NEXT robbed
+05800 *
+05810  FCC '?CSP'
+05820  FCB 4
+05830  FCB MFORE
+05840  FDB QPAIRS-CFAOFF
+05850  FDB BIF+2
+05860  FDB 0
+05870  FDB 0
+05880 QCSP     LDX <UP
+05890  TFR U,D
+05900  SUBD UCSP,X
+05910  BEQ QPAIRN
+05920  LDD #$14
+05930  BRA QPAIRE
+06000 *
+06010  FCC '?LOADING'
+06020  FCB 8
+06030  FCB MFORE
+06040  FDB QCSP-CFAOFF
+06050  FDB BIF+2
+06060  FDB 0
+06070  FDB 0
+06080 QLOAD    LDX <UP
+06090  LDD UBLK,X
+06100  BNE QPAIRN
+06110  LDD #$16
+06120  BRA QPAIRE
+06200 *
+06210  FCC 'COMPILE'
+06220  FCB 7
+06230  FCB MFORE
+06240  FDB QLOAD-CFAOFF
+06250  FDB BIF+2
+06260  FDB COLD-CFAOFF
+06270  FDB COMPO-CFAOFF
+06280 COMP     DOCOL
+06290  FDB QCOMP
+06300  FDB XMACH
+06310 COMPIP   LDD ,Y++ robbed by IP,
+06320  PSHU D
+06330  JMP COMMA
+06390 *
+06410  FCC 'LOOP'
+06420  FCB MIMM.OR.MCOMP.OR.4
+06430  FCB MFORE
+06440  FDB COMP-CFAOFF
+06450  FDB BIF+2
+06460  FDB KEY-CFAOFF
+06470  FDB NUMBER-CFAOFF
+06480 LOOP     DOCOL   see fig-FORTH model
+06490  FDB LIT
+06500  FDB ('D)*256+'O
+06510  FDB QPAIRS
+06520  FDB COMP
+06530  FDB XLOOP
+06540  FDB BACK
+06550  FDB SEMIS
+06590 *
+06610  FCC '+LOOP'
+06620  FCB MIMM.OR.MCOMP.OR.5
+06630  FCB MFORE
+06640  FDB LOOP-CFAOFF
+06650  FDB BIF+2
+06660  FDB CHS-CFAOFF
+06670  FDB COMMA-CFAOFF
+06680 PLOOP    DOCOL   see fig-FORTH model
+06690  FDB LIT
+06700  FDB ('D)*256+'O
+06710  FDB QPAIRS
+06720  FDB COMP
+06730  FDB XPLOOP
+06740  FDB BACK
+06750  FDB SEMIS
+06790 *
+06809  FCC 'LOAD'
+06820  FCB 4
+06830  FCB MFORE
+06840  FDB PLOOP-CFAOFF
+06850  FDB BIF+2
+06860  FDB 0
+06870  FDB 0
+06880 LOAD     PSHS Y  see fig-FORTH model
+06890  LDY <UP
+06900  LDD UIN,Y
+06910  LDX UBLK,Y
+06920  PSHS X,D
+06930  LDD #0
+06940  STD UIN,Y
+06950  DOCOL
+06960  FDB BPSCR
+06970  FDB STAR
+06980  FDB BLK
+06990  FDB STORE
+07000  FDB INTERP
+07010  FDB XMACH
+07020  PULS D,X
+07030  STD UIN,Y
+07040  STX UBLK,Y
+07050  PULS Y
+07060  NEXT
+07090 *
+07110  FCC '<BUILDS'
+07120  FCB MCOMP.OR.7
+07130  FCB MFORE
+07140  FDB LOAD-CFAOFF
+07150  FDB BIF+2
+07160  FDB 0
+07170  FDB 0
+07180 BUILDS   DOCOL   see fig-FORTH model
+07190  FDB ZERO
+07200  FDB CONST
+07210  FDB SEMIS
+07290 *
+07310  FCC 'DOES>'
+07320  FCB MCOMP.OR.5
+07330  FCB MFORE
+07340  FDB BUILDS-CFAOFF
+07350  FDB BIF+2
+07360  FDB 0
+07370  FDB 0
+07380 DOES     LDX <UP
+07430  LDX UCURR,X
+07440  LDD ADOES,PCR
+07450  STD CFAOFF,X
+07460  STY PFAOFF,X
+07470  PULS Y
+07480  NEXT
+07490 ADOES    JSR <XDOES
+07790 *
+07810  FCC ';CODE'
+07820  FCB MCOMP.OR.MIMM.OR.5
+07830  FCB MFORE
+07840  FDB DOES-CFAOFF
+07850  FDB BIF+2
+07860  FDB SEMI-CFAOFF
+07870  FDB SEMIS-CFAOFF
+07880 SCODE    DOCOL   not fig
+07890  FDB QCSP
+07900  FDB COMP
+07910  FDB XSCODE
+07915  FDB LBRAK
+07920  FDB ASMBLR
+07930  FDB STOCSP      to check later
+07940  FDB SEMIS
+07950 * something else must SMUDGE
+07960 *
index 85f81a9..14e855a 100644 (file)
@@ -1 +1,368 @@
-00010 * Include file for BIF\r00020 * BIF Copyright 1989 Joel Matthew Rees (See BIF/ASM)\r00030 *\r00900  FCC 'IP,'\r00910         FCB MCOMP.OR.3\r00920    FCB MFORE\r00930         FDB SCODE-CFAOFF\r00940  FDB BIF+2\r00950         FDB 0\r00960     FDB 0\r00970 IPCOM       JMP COMPIP\r00980 *\r01000        FCC '?STACK'\r01010      FCB 6\r01020     FCB MFORE\r01030         FDB IPCOM-CFAOFF\r01040  FDB BIF+2\r01050         FDB 0\r01060     FDB 0\r01070 QSTACK      LDX <UP\r01080   CMPS UR0,X\r01090        BLS *+6\r01100 QSTACU    LDB #$0A\r01110  BRA QSTERR\r01115        LDD [UR0,X] hole\r01116  BNE QSTACU\r01120        CMPS US0,X\r01130        BHI *+6\r01140 QSTACO    LDB #$0B\r01150  BRA QSTERR\r01155        LDD [US0,X] hole\r01156  BNE QSTACE\r01160        CMPU US0,X\r01170        BLS *+6\r01180 QSTACE    LDB #1\r01190    BRA QSTERR\r01240        CMPU UDP,X\r01260        BLS *+4\r01270   NEXT\r01280      LDB #7\r01290 QSTERR     CLRA\r01300      PSHU D\r01310    JMP ERROR\r01320 *\r01400         FCC 'BUFFER'\r01410      FCB 6\r01420     FCB MFORE\r01430         FDB QSTACK-CFAOFF\r01440         FDB BIF+2\r01450         FDB BLK-CFAOFF\r01460    FDB CCOMMA-CFAOFF\r01470 BUFFER  PSHS Y\r01480    LDY <UP\r01490   LDD UUSE,Y\r01495        PSHS D save it\r01500    PSHU D\r01510    DOCOL\r01520     FDB ADDBUF\r01530        FDB ZBR prev?\r01540     FDB -6\r01550    FDB XMACH\r01560         PULU D\r01570    STD UUSE,Y new use\r01580        LDX ,S buffer\r01590     LDD ,X block\r01600      BPL BUFNW\r01610         ANDA #$7F mask update\r01620     LEAX 2,X data\r01630     PSHU D,X\r01640  LDD #0 write\r01650      PSHU D\r01660    DOCOL\r01670     FDB RW\r01680    FDB XMACH\r01690 BUFNW   PULU D new block\r01700  PULS X\r01710    STD ,X\r01720    STX UPREV,Y\r01730       LEAX 2,X data\r01740     PSHU X\r01750    PULS Y\r01760    NEXT\r01790 *\r01800      FCC 'BLOCK'\r01810       FCB 5\r01820     FCB MFORE\r01830         FDB BUFFER-CFAOFF\r01840         FDB BIF+2\r01850         FDB 0\r01860     FDB BS-CFAOFF\r01870 BLOCK       PSHS Y\r01880    LDY <UP\r01890   LDD UOFFS,Y\r01900       ADDD ,U\r01910   STD ,U\r01920    LDX UPREV,Y\r01930 BLOKL LDD ,X block\r01940      ANDA #$7F mask update\r01950     CMPD ,U this buffer?\r01960      BEQ BLOKFD\r01970        PSHU X\r01980    DOCOL\r01990     FDB ADDBUF\r02000        FDB TBR\r02010   FDB BLOKLE-*-2\r02020    FDB DROP buffer\r02030   FDB DUP block\r02040     FDB BUFFER lru\r02050    FDB OVER\r02060  FDB OVER\r02070  FDB SWAP\r02080  FDB MONE\r02090  FDB RW get block\r02100  FDB SUB2\r02110 BLOKLE   FDB XMACH\r02120         PULU X buffer\r02130     BRA BLOKL\r02140 BLOKFD  STX UPREV,Y\r02150       LEAX 2,X data\r02160     STX ,U\r02165    PULS Y\r02170    NEXT\r02180 *\r02200      FCC '(LINE)'\r02210      FCB 6\r02220     FCB MFORE\r02230         FDB BLOCK-CFAOFF\r02240  FDB BIF+2\r02250         FDB PINSTA-CFAOFF\r02260         FDB XLOOP-CFAOFF\r02270 XLINE    DOCOL   see fig-FORTH model\r02280       FDB TOR\r02290   FDB CPERL line width\r02300      FDB BPBUF\r02310         FDB SSMOD byte in sector\r02320  FDB RFROM\r02330         FDB BPSCR\r02340         FDB STAR base of screen\r02350   FDB ADD\r02360   FDB BLOCK\r02370         FDB ADD byte of buffer\r02380    FDB CPERL\r02390         FDB SEMIS\r02400 *\r02500         FCC '.LINE'\r02510       FCB 5\r02520     FCB MFORE\r02530         FDB XLINE-CFAOFF\r02540  FDB BIF+2\r02550         FDB DOTQ-CFAOFF\r02560   FDB DOTR-CFAOFF\r02570 DOTLIN    DOCOL   see fig-FORTH model\r02580       FDB XLINE\r02590         FDB DTRAIL\r02600        FDB TYPE\r02610  FDB SEMIS\r02690 *\r02700         FCC 'SPACES'\r02710      FCB 6\r02720     FCB MFORE\r02730         FDB DOTLIN-CFAOFF\r02740         FDB BIF+2\r02750         FDB 0\r02760     FDB 0\r02770 SPACES      LDD ,U  see fig-FORTH model\r02780       BGT SPACEY\r02783        LEAU 2,U\r02785  NEXT\r02790 SPACEY       DOCOL\r02800     FDB ZERO\r02810  FDB XDO\r02820   FDB SPACE\r02830         FDB XLOOP\r02840         FDB -6\r02850    FDB SEMIS\r02890 *\r02900         FCC '<#'\r02910  FCB 2\r02920     FCB MFORE\r02930         FDB SPACES-CFAOFF\r02940         FDB BIF+2\r02950         FDB 0\r02960     FDB BUILDS-CFAOFF\r02970 BEGHSH  LDX <UP\r02980   LDD UPAD,X\r02990        STD UHLD,X\r03000        NEXT\r03090 *\r03100      FCC '#>'\r03110  FCB 2\r03120     FCB MFORE\r03130         FDB BEGHSH-CFAOFF\r03140         FDB BIF+2\r03150         FDB STORE-CFAOFF\r03160  FDB TICK-CFAOFF\r03170 ENDHSH    LDX <UP\r03180   LDD UPAD,X\r03190        SUBD UHLD,X\r03200       STD ,U count\r03210      LDD UHLD,X\r03220        STD 2,U\r03230   NEXT\r03290 *\r03300      FCC 'SIGN'\r03310        FCB 4\r03320     FCB MFORE\r03330         FDB ENDHSH-CFAOFF\r03340         FDB BIF+2\r03350         FDB SCR-CFAOFF\r03360    FDB 0\r03370 SIGN        DOCOL   see fig-FORTH model\r03380       FDB ROT\r03390   FDB ZLESS\r03400         FDB ZBR\r03410   FDB SIGNP-*-2\r03420     FDB LIT\r03430   FDB $2D\r03440   FDB HOLD\r03450 SIGNP    FDB SEMIS\r03490 *\r03500         FCC '#'\r03510   FCB 1\r03520     FCB MFORE\r03530         FDB SIGN-CFAOFF\r03540   FDB BIF+2\r03550         FDB 0\r03560     FDB 0\r03570 HASH        DOCOL   see fig-FORTH model\r03580       FDB BASE\r03590  FDB FETCH\r03600         FDB MSMOD\r03610         FDB ROT\r03620   FDB XMACH\r03630         LDB 1,U\r03640   CMPB #9\r03650   BLS HASHX+4\r03660       CMPB #'A-'Z+10\r03670    BLS HASHX+2\r03680 HASHX ADDB #'a-'Z-1\r03690     ADDB #'A-'9-1\r03700     ADDB #'0\r03710  STB 1,U\r03720   DOCOL\r03730     FDB HOLD\r03740  FDB SEMIS\r03790 *\r03800         FCC '#S'\r03810  FCB 2\r03820     FCB MFORE\r03830         FDB HASH-CFAOFF\r03840   FDB BIF+2\r03850         FDB 0\r03860     FDB 0\r03870 HASHS       DOCOL\r03880     FDB HASH\r03890  FDB XMACH\r03900         LDD 2,U\r03910   BNE HASHS\r03920         LDD ,U\r03930    BNE HASHS\r03940         NEXT\r03950 *\r04000      FCC 'D.R'\r04010         FCB 3\r04020     FCB MFORE\r04030         FDB HASHS-CFAOFF\r04040  FDB BIF+2\r04050         FDB 0\r04060     FDB 0\r04070 DDOTR       DOCOL   see fig-FORTH model\r04080       FDB TOR\r04090   FDB SWAP save sign\r04100        FDB OVER\r04110  FDB DABS\r04120  FDB BEGHSH\r04130        FDB HASHS\r04140         FDB SIGN\r04150  FDB ENDHSH\r04160        FDB RFROM field width\r04170     FDB OVER\r04180  FDB SUB\r04190   FDB SPACES <0 => no spaces\r04200        FDB TYPE\r04210  FDB SEMIS\r04220 *\r04230         FCC 'D.'\r04240  FCB 2\r04250     FCB MFORE\r04260         FDB DDOTR-CFAOFF\r04270  FDB BIF+2\r04280         FDB 0\r04290     FDB DDOTR-CFAOFF\r04300 DDOT     DOCOL   see fig-FORTH model\r04310       FDB ZERO\r04320  FDB DDOTR\r04330         FDB SPACE\r04340         FDB SEMIS\r04350 *\r04360         FCC '.R'\r04370  FCB 2\r04380     FCB MFORE\r04390         FDB DDOT-CFAOFF\r04400   FDB BIF+2\r04410         FDB 0\r04420     FDB 0\r04430 DOTR        DOCOL   see fig-FORTH model\r04440       FDB TOR\r04450   FDB STOD\r04460  FDB RFROM\r04470         FDB DDOTR\r04480         FDB SEMIS\r04490 *\r04500         FCC '.'\r04510   FCB 1\r04520     FCB MFORE\r04530         FDB DOTR-CFAOFF\r04540   FDB BIF+2\r04550         FDB DDUP-CFAOFF\r04560   FDB DOTLIN-CFAOFF\r04570 DOT     DOCOL   see fig-FORTH model\r04580       FDB STOD\r04590  FDB DDOT\r04600  FDB SEMIS\r04610 *\r04620         FCC '?'\r04630   FCB 1\r04640     FCB MFORE\r04650         FDB DOT-CFAOFF\r04660    FDB BIF+2\r04670         FDB TOVID-CFAOFF\r04680  FDB TNULL-CFAOFF\r04690 QDOT     LDD [,U++]\r04700        PSHU D\r04710    BRA DOT\r04720 *\r04800   FCC 'MESSAGE'\r04810     FCB 7\r04820     FCB MFORE\r04830         FDB DOTLIN-CFAOFF\r04840         FDB BIF+2\r04850         FDB MAX-CFAOFF\r04860    FDB 0\r04870 MESS        DOCOL   see fig-FORTH model\r04880       FDB WARN\r04890  FDB FETCH print text?\r04893     FDB ONE\r04896   FDB AND\r04900   FDB ZBR\r04910   FDB MESSN-*-2\r04920     FDB DDUP not 0?\r04930   FDB ZBR\r04940   FDB MESSX-*-2\r04950     FDB LIT\r04960   FDB 4\r04970     FDB OFFSET\r04980        FDB FETCH\r04990         FDB BPSCR\r05000         FDB SLASH screen offset\r05010   FDB SUB\r05020   FDB DOTLIN\r05030        FDB BRANCH\r05040        FDB MESSX-*-2\r05050 MESSN       FDB XDOTQ\r05060         FCB 6\r05070     FCC 'MSG # '\r05080      FDB DOT\r05090 MESSX     FDB SEMIS\r05190 *\r
\ No newline at end of file
+00010 * Include file for BIF
+00020 * BIF Copyright 1989 Joel Matthew Rees (See BIF/ASM)
+00030 *
+00900  FCC 'IP,'
+00910  FCB MCOMP.OR.3
+00920  FCB MFORE
+00930  FDB SCODE-CFAOFF
+00940  FDB BIF+2
+00950  FDB 0
+00960  FDB 0
+00970 IPCOM    JMP COMPIP
+00980 *
+01000  FCC '?STACK'
+01010  FCB 6
+01020  FCB MFORE
+01030  FDB IPCOM-CFAOFF
+01040  FDB BIF+2
+01050  FDB 0
+01060  FDB 0
+01070 QSTACK   LDX <UP
+01080  CMPS UR0,X
+01090  BLS *+6
+01100 QSTACU   LDB #$0A
+01110  BRA QSTERR
+01115  LDD [UR0,X] hole
+01116  BNE QSTACU
+01120  CMPS US0,X
+01130  BHI *+6
+01140 QSTACO   LDB #$0B
+01150  BRA QSTERR
+01155  LDD [US0,X] hole
+01156  BNE QSTACE
+01160  CMPU US0,X
+01170  BLS *+6
+01180 QSTACE   LDB #1
+01190  BRA QSTERR
+01240  CMPU UDP,X
+01260  BLS *+4
+01270  NEXT
+01280  LDB #7
+01290 QSTERR   CLRA
+01300  PSHU D
+01310  JMP ERROR
+01320 *
+01400  FCC 'BUFFER'
+01410  FCB 6
+01420  FCB MFORE
+01430  FDB QSTACK-CFAOFF
+01440  FDB BIF+2
+01450  FDB BLK-CFAOFF
+01460  FDB CCOMMA-CFAOFF
+01470 BUFFER   PSHS Y
+01480  LDY <UP
+01490  LDD UUSE,Y
+01495  PSHS D save it
+01500  PSHU D
+01510  DOCOL
+01520  FDB ADDBUF
+01530  FDB ZBR prev?
+01540  FDB -6
+01550  FDB XMACH
+01560  PULU D
+01570  STD UUSE,Y new use
+01580  LDX ,S buffer
+01590  LDD ,X block
+01600  BPL BUFNW
+01610  ANDA #$7F mask update
+01620  LEAX 2,X data
+01630  PSHU D,X
+01640  LDD #0 write
+01650  PSHU D
+01660  DOCOL
+01670  FDB RW
+01680  FDB XMACH
+01690 BUFNW    PULU D new block
+01700  PULS X
+01710  STD ,X
+01720  STX UPREV,Y
+01730  LEAX 2,X data
+01740  PSHU X
+01750  PULS Y
+01760  NEXT
+01790 *
+01800  FCC 'BLOCK'
+01810  FCB 5
+01820  FCB MFORE
+01830  FDB BUFFER-CFAOFF
+01840  FDB BIF+2
+01850  FDB 0
+01860  FDB BS-CFAOFF
+01870 BLOCK    PSHS Y
+01880  LDY <UP
+01890  LDD UOFFS,Y
+01900  ADDD ,U
+01910  STD ,U
+01920  LDX UPREV,Y
+01930 BLOKL    LDD ,X block
+01940  ANDA #$7F mask update
+01950  CMPD ,U this buffer?
+01960  BEQ BLOKFD
+01970  PSHU X
+01980  DOCOL
+01990  FDB ADDBUF
+02000  FDB TBR
+02010  FDB BLOKLE-*-2
+02020  FDB DROP buffer
+02030  FDB DUP block
+02040  FDB BUFFER lru
+02050  FDB OVER
+02060  FDB OVER
+02070  FDB SWAP
+02080  FDB MONE
+02090  FDB RW get block
+02100  FDB SUB2
+02110 BLOKLE   FDB XMACH
+02120  PULU X buffer
+02130  BRA BLOKL
+02140 BLOKFD   STX UPREV,Y
+02150  LEAX 2,X data
+02160  STX ,U
+02165  PULS Y
+02170  NEXT
+02180 *
+02200  FCC '(LINE)'
+02210  FCB 6
+02220  FCB MFORE
+02230  FDB BLOCK-CFAOFF
+02240  FDB BIF+2
+02250  FDB PINSTA-CFAOFF
+02260  FDB XLOOP-CFAOFF
+02270 XLINE    DOCOL   see fig-FORTH model
+02280  FDB TOR
+02290  FDB CPERL line width
+02300  FDB BPBUF
+02310  FDB SSMOD byte in sector
+02320  FDB RFROM
+02330  FDB BPSCR
+02340  FDB STAR base of screen
+02350  FDB ADD
+02360  FDB BLOCK
+02370  FDB ADD byte of buffer
+02380  FDB CPERL
+02390  FDB SEMIS
+02400 *
+02500  FCC '.LINE'
+02510  FCB 5
+02520  FCB MFORE
+02530  FDB XLINE-CFAOFF
+02540  FDB BIF+2
+02550  FDB DOTQ-CFAOFF
+02560  FDB DOTR-CFAOFF
+02570 DOTLIN   DOCOL   see fig-FORTH model
+02580  FDB XLINE
+02590  FDB DTRAIL
+02600  FDB TYPE
+02610  FDB SEMIS
+02690 *
+02700  FCC 'SPACES'
+02710  FCB 6
+02720  FCB MFORE
+02730  FDB DOTLIN-CFAOFF
+02740  FDB BIF+2
+02750  FDB 0
+02760  FDB 0
+02770 SPACES   LDD ,U  see fig-FORTH model
+02780  BGT SPACEY
+02783  LEAU 2,U
+02785  NEXT
+02790 SPACEY   DOCOL
+02800  FDB ZERO
+02810  FDB XDO
+02820  FDB SPACE
+02830  FDB XLOOP
+02840  FDB -6
+02850  FDB SEMIS
+02890 *
+02900  FCC '<#'
+02910  FCB 2
+02920  FCB MFORE
+02930  FDB SPACES-CFAOFF
+02940  FDB BIF+2
+02950  FDB 0
+02960  FDB BUILDS-CFAOFF
+02970 BEGHSH   LDX <UP
+02980  LDD UPAD,X
+02990  STD UHLD,X
+03000  NEXT
+03090 *
+03100  FCC '#>'
+03110  FCB 2
+03120  FCB MFORE
+03130  FDB BEGHSH-CFAOFF
+03140  FDB BIF+2
+03150  FDB STORE-CFAOFF
+03160  FDB TICK-CFAOFF
+03170 ENDHSH   LDX <UP
+03180  LDD UPAD,X
+03190  SUBD UHLD,X
+03200  STD ,U count
+03210  LDD UHLD,X
+03220  STD 2,U
+03230  NEXT
+03290 *
+03300  FCC 'SIGN'
+03310  FCB 4
+03320  FCB MFORE
+03330  FDB ENDHSH-CFAOFF
+03340  FDB BIF+2
+03350  FDB SCR-CFAOFF
+03360  FDB 0
+03370 SIGN     DOCOL   see fig-FORTH model
+03380  FDB ROT
+03390  FDB ZLESS
+03400  FDB ZBR
+03410  FDB SIGNP-*-2
+03420  FDB LIT
+03430  FDB $2D
+03440  FDB HOLD
+03450 SIGNP    FDB SEMIS
+03490 *
+03500  FCC '#'
+03510  FCB 1
+03520  FCB MFORE
+03530  FDB SIGN-CFAOFF
+03540  FDB BIF+2
+03550  FDB 0
+03560  FDB 0
+03570 HASH     DOCOL   see fig-FORTH model
+03580  FDB BASE
+03590  FDB FETCH
+03600  FDB MSMOD
+03610  FDB ROT
+03620  FDB XMACH
+03630  LDB 1,U
+03640  CMPB #9
+03650  BLS HASHX+4
+03660  CMPB #'A-'Z+10
+03670  BLS HASHX+2
+03680 HASHX    ADDB #'a-'Z-1
+03690  ADDB #'A-'9-1
+03700  ADDB #'0
+03710  STB 1,U
+03720  DOCOL
+03730  FDB HOLD
+03740  FDB SEMIS
+03790 *
+03800  FCC '#S'
+03810  FCB 2
+03820  FCB MFORE
+03830  FDB HASH-CFAOFF
+03840  FDB BIF+2
+03850  FDB 0
+03860  FDB 0
+03870 HASHS    DOCOL
+03880  FDB HASH
+03890  FDB XMACH
+03900  LDD 2,U
+03910  BNE HASHS
+03920  LDD ,U
+03930  BNE HASHS
+03940  NEXT
+03950 *
+04000  FCC 'D.R'
+04010  FCB 3
+04020  FCB MFORE
+04030  FDB HASHS-CFAOFF
+04040  FDB BIF+2
+04050  FDB 0
+04060  FDB 0
+04070 DDOTR    DOCOL   see fig-FORTH model
+04080  FDB TOR
+04090  FDB SWAP save sign
+04100  FDB OVER
+04110  FDB DABS
+04120  FDB BEGHSH
+04130  FDB HASHS
+04140  FDB SIGN
+04150  FDB ENDHSH
+04160  FDB RFROM field width
+04170  FDB OVER
+04180  FDB SUB
+04190  FDB SPACES <0 => no spaces
+04200  FDB TYPE
+04210  FDB SEMIS
+04220 *
+04230  FCC 'D.'
+04240  FCB 2
+04250  FCB MFORE
+04260  FDB DDOTR-CFAOFF
+04270  FDB BIF+2
+04280  FDB 0
+04290  FDB DDOTR-CFAOFF
+04300 DDOT     DOCOL   see fig-FORTH model
+04310  FDB ZERO
+04320  FDB DDOTR
+04330  FDB SPACE
+04340  FDB SEMIS
+04350 *
+04360  FCC '.R'
+04370  FCB 2
+04380  FCB MFORE
+04390  FDB DDOT-CFAOFF
+04400  FDB BIF+2
+04410  FDB 0
+04420  FDB 0
+04430 DOTR     DOCOL   see fig-FORTH model
+04440  FDB TOR
+04450  FDB STOD
+04460  FDB RFROM
+04470  FDB DDOTR
+04480  FDB SEMIS
+04490 *
+04500  FCC '.'
+04510  FCB 1
+04520  FCB MFORE
+04530  FDB DOTR-CFAOFF
+04540  FDB BIF+2
+04550  FDB DDUP-CFAOFF
+04560  FDB DOTLIN-CFAOFF
+04570 DOT      DOCOL   see fig-FORTH model
+04580  FDB STOD
+04590  FDB DDOT
+04600  FDB SEMIS
+04610 *
+04620  FCC '?'
+04630  FCB 1
+04640  FCB MFORE
+04650  FDB DOT-CFAOFF
+04660  FDB BIF+2
+04670  FDB TOVID-CFAOFF
+04680  FDB TNULL-CFAOFF
+04690 QDOT     LDD [,U++]
+04700  PSHU D
+04710  BRA DOT
+04720 *
+04800  FCC 'MESSAGE'
+04810  FCB 7
+04820  FCB MFORE
+04830  FDB DOTLIN-CFAOFF
+04840  FDB BIF+2
+04850  FDB MAX-CFAOFF
+04860  FDB 0
+04870 MESS     DOCOL   see fig-FORTH model
+04880  FDB WARN
+04890  FDB FETCH print text?
+04893  FDB ONE
+04896  FDB AND
+04900  FDB ZBR
+04910  FDB MESSN-*-2
+04920  FDB DDUP not 0?
+04930  FDB ZBR
+04940  FDB MESSX-*-2
+04950  FDB LIT
+04960  FDB 4
+04970  FDB OFFSET
+04980  FDB FETCH
+04990  FDB BPSCR
+05000  FDB SLASH screen offset
+05010  FDB SUB
+05020  FDB DOTLIN
+05030  FDB BRANCH
+05040  FDB MESSX-*-2
+05050 MESSN    FDB XDOTQ
+05060  FCB 6
+05070  FCC 'MSG # '
+05080  FDB DOT
+05090 MESSX    FDB SEMIS
+05190 *
index f30dee6..a6f1450 100644 (file)
@@ -1 +1,150 @@
-00010 * Include file for BIF\r00020 * BIF Copyright 1989 Joel Matthew Rees (See BIF/ASM)\r00030 *\r05200  FCC '(ABORT)'\r05210     FCB 7\r05220     FCB MFORE\r05230         FDB MESS-CFAOFF\r05240   FDB BIF+2\r05250         FDB XDOTQ-CFAOFF\r05260  FDB XDO-CFAOFF\r05270 IABORT DOCOL       see fig-FORTH model\r05280       FDB ABORT\r05290         FDB SEMIS\r05390 *\r05400         FCC 'ERROR'\r05410       FCB 5\r05420     FCB MFORE\r05430         FDB IABORT-CFAOFF\r05440         FDB BIF+2\r05450         FDB ERASE-CFAOFF\r05460  FDB EXEC-CFAOFF\r05470 ERROR DOCOL\r05480         FDB WORDPD last WORD\r05490      FDB COUNT\r05500         FDB TYPE\r05510  FDB XDOTQ\r05520         FCB 3\r05530     FCC ' ? '\r05540         FDB MESS\r05550  FDB WARN\r05560  FDB FETCH\r05570         FDB ZLESS\r05580         FDB ZBR\r05590   FDB 2\r05600     FDB IABORT\r05610        FDB SPSTO\r05620         FDB IN\r05630    FDB FETCH\r05640         FDB BLK\r05650   FDB FETCH\r05660         FDB QUIT\r05670  FDB SEMIS\r05680 *\r05700         FCC 'EDITOR'\r05710      FCB MIMM.OR.6\r05720     FCB MFORE\r05730         FDB ERROR-CFAOFF\r05740  FDB BIF+2 parent voc\r05750      FDB 0\r05760     FDB 0\r05770 EDITOR      DOVOC\r05780     FDB EBLK-CFAOFF (NFA)\r05790 *\r05800     FCC 'QSYNC'\r05810       FCB 5\r05820     FCB MFORE\r05830         FDB EDITOR-CFAOFF\r05840         FDB EDITOR+2\r05850      FDB 0\r05860     FDB 0\r05870 QSYNC       LDX <UP\r05880   LDB URNUM+1,X\r05890     LDA #4\r05900    STD $88\r05910   NEXT\r05990 *\r06000      FCC 'EBLK'\r06010        FCB 4\r06020     FCB MFORE\r06030         FDB QSYNC-CFAOFF\r06040  FDB EDITOR+2\r06050      FDB CURSOR-CFAOFF\r06060         FDB QDUMP-CFAOFF\r06070 EBLK     DOUSER\r06080    FCB UEBLK\r06090 *\r06000         FCC 'CURSOR'\r06010      FCB 6\r06020     FCB MFORE\r06030         FDB QSYNC-CFAOFF\r06040  FDB EDITOR+2\r06050      FDB 0\r06060     FDB 0\r06070 CURSOR      DOCOL\r06080     FDB EBLK\r06090  FDB FETCH\r06100         FDB BLOCK\r06110         FDB RNUM\r06120  FDB FETCH\r06130         FDB ADD\r06140   FDB SEMIS\r06190 *\r06200         FCC 'QDUMP'\r06210       FCB 5\r06220     FCB MFORE\r06230         FDB CURSOR-CFAOFF\r06240         FDB EDITOR+2\r06250      FDB QARROW-CFAOFF\r06260         FDB QUICK-CFAOFF\r06270 QDUMP    PSHS Y\r06280    PULU Y\r06290    LDX #$400 screen\r06300  CLRA\r06310 QDUMPL       LDB ,Y+\r06320   STB ,X+\r06330   DECA\r06340      BNE QDUMPL\r06350        PULS Y\r06360    NEXT\r06390 *\r06400      FCC 'QARROW'\r06410      FCB 6\r06420     FCB MFORE\r06430         FDB QDUMP-CFAOFF\r06440  FDB EDITOR+2\r06450      FDB 0\r06460     FDB 0\r06470 QARROW      LDB 1,U\r06480   LDA #4\r06490    LEAX QTBL,PCR\r06500 QAROL       CMPB ,X+\r06510  BEQ QARODO\r06520        DECA\r06530      BNE QAROL\r06540         CMPB #21 shifted BS?\r06550      BNE QAROX\r06552         DOCOL\r06554     FDB CURSOR\r06556        FDB XMACH\r06560         LDD #$2060 spaces\r06565         STA [,U++] buffer\r06570         STB [$88] video\r06580   LDB #-1\r06590   BRA *+4\r06600 QARODO    LDB 3,X\r06610   LDX <UP\r06620   ADDB URNUM+1,X\r06630    STB URNUM+1,X\r06650     LDD #0\r06660    STD ,U\r06670 QAROX      NEXT\r06700 QTBL FCB '^ up\r06710         FCB 10 down\r06720       FCB 8 back\r06730        FCB 9 front\r06740       FCB -32 offsets\r06750   FCB 32\r06760    FCB -1\r06770    FCB 1\r06790 *\r
\ No newline at end of file
+00010 * Include file for BIF
+00020 * BIF Copyright 1989 Joel Matthew Rees (See BIF/ASM)
+00030 *
+05200  FCC '(ABORT)'
+05210  FCB 7
+05220  FCB MFORE
+05230  FDB MESS-CFAOFF
+05240  FDB BIF+2
+05250  FDB XDOTQ-CFAOFF
+05260  FDB XDO-CFAOFF
+05270 IABORT DOCOL     see fig-FORTH model
+05280  FDB ABORT
+05290  FDB SEMIS
+05390 *
+05400  FCC 'ERROR'
+05410  FCB 5
+05420  FCB MFORE
+05430  FDB IABORT-CFAOFF
+05440  FDB BIF+2
+05450  FDB ERASE-CFAOFF
+05460  FDB EXEC-CFAOFF
+05470 ERROR DOCOL
+05480  FDB WORDPD last WORD
+05490  FDB COUNT
+05500  FDB TYPE
+05510  FDB XDOTQ
+05520  FCB 3
+05530  FCC ' ? '
+05540  FDB MESS
+05550  FDB WARN
+05560  FDB FETCH
+05570  FDB ZLESS
+05580  FDB ZBR
+05590  FDB 2
+05600  FDB IABORT
+05610  FDB SPSTO
+05620  FDB IN
+05630  FDB FETCH
+05640  FDB BLK
+05650  FDB FETCH
+05660  FDB QUIT
+05670  FDB SEMIS
+05680 *
+05700  FCC 'EDITOR'
+05710  FCB MIMM.OR.6
+05720  FCB MFORE
+05730  FDB ERROR-CFAOFF
+05740  FDB BIF+2 parent voc
+05750  FDB 0
+05760  FDB 0
+05770 EDITOR   DOVOC
+05780  FDB EBLK-CFAOFF (NFA)
+05790 *
+05800  FCC 'QSYNC'
+05810  FCB 5
+05820  FCB MFORE
+05830  FDB EDITOR-CFAOFF
+05840  FDB EDITOR+2
+05850  FDB 0
+05860  FDB 0
+05870 QSYNC    LDX <UP
+05880  LDB URNUM+1,X
+05890  LDA #4
+05900  STD $88
+05910  NEXT
+05990 *
+06000  FCC 'EBLK'
+06010  FCB 4
+06020  FCB MFORE
+06030  FDB QSYNC-CFAOFF
+06040  FDB EDITOR+2
+06050  FDB CURSOR-CFAOFF
+06060  FDB QDUMP-CFAOFF
+06070 EBLK     DOUSER
+06080  FCB UEBLK
+06090 *
+06000  FCC 'CURSOR'
+06010  FCB 6
+06020  FCB MFORE
+06030  FDB QSYNC-CFAOFF
+06040  FDB EDITOR+2
+06050  FDB 0
+06060  FDB 0
+06070 CURSOR   DOCOL
+06080  FDB EBLK
+06090  FDB FETCH
+06100  FDB BLOCK
+06110  FDB RNUM
+06120  FDB FETCH
+06130  FDB ADD
+06140  FDB SEMIS
+06190 *
+06200  FCC 'QDUMP'
+06210  FCB 5
+06220  FCB MFORE
+06230  FDB CURSOR-CFAOFF
+06240  FDB EDITOR+2
+06250  FDB QARROW-CFAOFF
+06260  FDB QUICK-CFAOFF
+06270 QDUMP    PSHS Y
+06280  PULU Y
+06290  LDX #$400 screen
+06300  CLRA
+06310 QDUMPL   LDB ,Y+
+06320  STB ,X+
+06330  DECA
+06340  BNE QDUMPL
+06350  PULS Y
+06360  NEXT
+06390 *
+06400  FCC 'QARROW'
+06410  FCB 6
+06420  FCB MFORE
+06430  FDB QDUMP-CFAOFF
+06440  FDB EDITOR+2
+06450  FDB 0
+06460  FDB 0
+06470 QARROW   LDB 1,U
+06480  LDA #4
+06490  LEAX QTBL,PCR
+06500 QAROL    CMPB ,X+
+06510  BEQ QARODO
+06520  DECA
+06530  BNE QAROL
+06540  CMPB #21 shifted BS?
+06550  BNE QAROX
+06552  DOCOL
+06554  FDB CURSOR
+06556  FDB XMACH
+06560  LDD #$2060 spaces
+06565  STA [,U++] buffer
+06570  STB [$88] video
+06580  LDB #-1
+06590  BRA *+4
+06600 QARODO   LDB 3,X
+06610  LDX <UP
+06620  ADDB URNUM+1,X
+06630  STB URNUM+1,X
+06650  LDD #0
+06660  STD ,U
+06670 QAROX    NEXT
+06700 QTBL     FCB '^ up
+06710  FCB 10 down
+06720  FCB 8 back
+06730  FCB 9 front
+06740  FCB -32 offsets
+06750  FCB 32
+06760  FCB -1
+06770  FCB 1
+06790 *
index 0756c10..42369dd 100644 (file)
@@ -1 +1,328 @@
-00010 * Include file for BIF\r00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r00030 *\r01000  FCC '(NUMBER)'\r01010    FCB 8\r01020     FCB MFORE\r01030         FDB QARROW-CFAOFF\r01040         FDB BIF+2\r01050         FDB 0\r01060     FDB PREF-CFAOFF\r01070 INUMB     PSHS Y  see fig-FORTH model\r01080       PULU Y adr\r01085        LDX <UP\r01090 INUMBL    LDB ,Y+ ch\r01092        CLRA\r01094      PSHU D\r01096    LDD UBASE,X\r01100       PSHU D\r01110    DOCOL\r01120     FDB DIGIT\r01130         FDB ZBR\r01140   FDB INUMBE-*-2\r01150    FDB SWAP accm ms word\r01160     FDB BASE\r01180  FDB FETCH\r01190         FDB USTAR shift in base\r01200   FDB DROP ls word is digit\r01210         FDB ROT accm ls word\r01220      FDB BASE\r01230  FDB FETCH\r01240         FDB USTAR shift in base\r01250   FDB DADD accumulate\r01260       FDB XMACH adjust dpl\r01270      LDX <UP\r01280   LDD UDPL,X\r01290        BMI INUMBL\r01300        ADDD #1\r01310   STD UDPL,X\r01320        BRA INUMBL\r01330 INUMBE FDB XMACH\r01340         LEAY -1,Y back up\r01350         PSHU Y adr\r01355        PULS Y\r01360    NEXT\r01390 *\r01400      FCC 'NUMBER'\r01410      FCB 6\r01420     FCB MFORE\r01430         FDB INUMB-CFAOFF\r01440  FDB BIF+2\r01450         FDB MIN-CFAOFF\r01460    FDB OVER-CFAOFF\r01470 NUMBER PULU X\r01475       LEAX 1,X skip ct\r01480  LDB ,X <0?\r01490        SUBB #'-\r01500  BNE *+4\r01510   LEAX 1,X\r01520  CLRA\r01530      PSHU D\r01540    CLRB\r01550      PSHU D double 0\r01560   PSHU D\r01570    PSHU X adr\r01580        LDD #-1 clear DPL\r01590 NUMBA   LDX <UP\r01600   STD UDPL,X\r01610        DOCOL\r01620     FDB INUMB\r01630         FDB XMACH\r01640         LDX ,U end ch\r01650     LDB ,X ascii NUL?\r01660         BEQ NUMBQ\r01670         CMPB #': double?\r01680  BEQ NUMBD\r01690         CMPB #'-\r01700  BLO NUMBE\r01710         CMPB #'/\r01720  BHI NUMBE\r01730 NUMBD   LEAX 1,X past dec pt\r01740      STX ,U\r01750    LDD #0 set DPL\r01760    BRA NUMBA\r01770 NUMBE   LDD #0\r01780    PSHU D\r01790    JMP ERROR\r01800 NUMBQ   LEAU 2,U valid, drop\r01810      DOCOL\r01830     FDB ROT <0?\r01840       FDB TBR\r01850   FDB 2\r01860     FDB DMINUS\r01870        FDB SEMIS\r01890 *\r01900         FCC 'WORDPAD'\r01910     FCB 7\r01920     FCB MFORE\r01930         FDB NUMBER-CFAOFF\r01940         FDB BIF+2\r01950         FDB 0\r01960     FDB 0\r01970 WORDPD      DOUCON\r01980    FCB UWP\r01990 *\r02000   FCC 'WORD'\r02010        FCB 4\r02020     FCB MFORE\r02030         FDB WORDPD-CFAOFF\r02040         FDB BIF+2\r02050         FDB WHILE-CFAOFF\r02060  FDB BCOMP-CFAOFF\r02070 WORD     PSHS Y\r02075    LDY <UP\r02080   LDD UBLK,Y terminal?\r02090      BEQ WORDK buffer\r02100  PSHU D\r02110    DOCOL\r02120     FDB BLOCK\r02130         FDB XMACH\r02140         PULU D\r02150    BRA *+4 UTIB < 16!\r02160 WORDK  LDD UTIB,Y\r02170        ADDD UIN,Y parse at\r02180       PULU X ch\r02190         TFR D,Y save\r02200      PSHU X,Y (swap)\r02205   DOCOL\r02210     FDB ENCLOS\r02215        FDB XMACH\r02220         PSHS Y start at\r02221   LDD 2,U symbol at\r02222         SUBD ,S++ delimiter count\r02223         ADDD ,U length\r02225    LDX <UP\r02226   ADDD UIN,X\r02227        STD UIN,X update\r02230  PULU D length\r02240     CMPD #NLMASK\r02250      BLS *+5 clip\r02260      LDD #NLMASK\r02270       LDY UWP,X\r02280         STB ,Y+ count\r02290     CLR B,Y trailing NUL\r02300      PSHU D,Y dest & ct\r02330        PULS Y\r02340    DOCOL\r02350     FDB CMOVE copy\r02360    FDB SEMIS\r02490 *\r02500         FCC 'BS'\r02510  FCB 2\r02520     FCB MFORE\r02530         FDB WORD-CFAOFF\r02540   FDB BIF+2\r02550         FDB BRANCH-CFAOFF\r02560         FDB 0\r02570 BS  DOUCON\r02580    FCB UBS\r02590 *\r02600   FCC 'EXPECT'\r02610      FCB 6\r02620     FCB MFORE\r02630         FDB BS-CFAOFF\r02640     FDB BIF+2\r02650         FDB ERROR-CFAOFF\r02660  FDB FILL-CFAOFF\r02670 EXPECT    PSHS Y\r02680    LDD ,U count\r02690      LDY 2,U buffer\r02700    SUBD #1 for NUL\r02710   BLT EXPE0+2\r02720       BEQ EXPE0\r02730         LEAX D,Y\r02740  STX ,U limit\r02750 EXPEL        DOCOL\r02760     FDB KEY\r02770   FDB XMACH\r02780         LDB 1,U\r02790   LDX <UP\r02800   CMPB UBS+1,X\r02810      BNE EXPECR\r02820        CMPY 4,U beginning?\r02830       BLS EXPEM0\r02840        LEAY -1,Y\r02850         BRA EXPEM\r02860 EXPEM0  CLR 1,U to emit\r02870   BRA EXPEM\r02880 EXPECR  CMPB #$0D\r02890         BNE EXPEPT\r02900        STY 2,U terminate\r02910         BRA EXPEM\r02913 EXPEPT  CMPB #$20 printable?\r02916      BLO EXPEM0\r02920        STB ,Y+ store ch\r02930 EXPEM    DOCOL\r02940     FDB EMIT\r02950  FDB XMACH\r02960         CMPY ,U\r02970   BLO EXPEL\r02980 EXPE0   CLR ,Y NUL term\r02990   LEAU 4,U\r03000  PULS Y\r03010    NEXT\r03090 *\r03600 TWID EQU 128 width of a terminal line\r03605  FCC 'QUERY'\r03610       FCB 5\r03620     FCB MFORE\r03630         FDB EXPECT-CFAOFF\r03640         FDB BIF+2\r03650         FDB LOOP-CFAOFF\r03660   FDB SWAP-CFAOFF\r03670 QUERY     LDX <UP\r03680   LDD #0\r03690    STD UIN,X\r03700         LDD #TWID\r03710         LDX UTIB,X\r03720        PSHU D,X\r03730  DOCOL\r03740     FDB EXPECT\r03750        FDB SEMIS\r03790 *\r03795         FCB 0 ; NEEDED\r03800    FCB MIMM|0\r03810        FCB MFORE\r03820         FDB QUERY-CFAOFF\r03830  FDB BIF+2\r03840         FDB 0\r03850     FDB 0\r03860 NUBLK       LDX <UP\r03870   LDD UBLK,X\r03880        BEQ NUBLT\r03890         ADDD #1\r03900   STD UBLK,X\r03910        LDD #0\r03920    STD UIN,X\r03930         LDD BPSCR+2 2^n\r03940   DECB\r03950      ANDB UBLK+1,X end of screen?\r03960      BNE NUBLT+2\r03970       DOCOL\r03980     FDB QEXEC\r03990         FDB XMACH\r04000 NUBLT   PULS Y end interp\r04010         NEXT\r04090 *\r04100      FCC 'FIND'\r04110        FCB 4\r04120     FCB MFORE\r04130         FDB NUBLK-CFAOFF\r04140  FDB BIF+2\r04150         FDB EXPECT-CFAOFF\r04160         FDB HERE-CFAOFF\r04170 FIND      LDD 2,U\r04180   ADDD #1 past ct\r04190   STD 2,U\r04200   LDD ,U\r04210 FINDL      LDX 2,U\r04220   PSHU D,X\r04230  DOCOL\r04240     FDB PFIND\r04250         FDB XMACH\r04260         LDD ,U flag\r04270       BNE FINDF\r04290         LDX 4,U vocabulary\r04300        LDD GFAOFF-PFAOFF,X parent\r04305        CMPD 4,U root voc?\r04310        BEQ FINDF\r04315         LEAU 4,U\r04320  STD ,U\r04330    BRA FINDL\r04360 FINDF   LDD [2,U]\r04365         LEAU 4,U entry\r04370    STD 2,U\r04380   NEXT\r04390 *\r04400      FCC '-DFIND'\r04410      FCB 6\r04420     FCB MFORE\r04430         FDB FIND-CFAOFF\r04440   FDB BIF+2\r04450         FDB 0\r04460     FDB 0\r04470 DDFIND      DOCOL\r04480     FDB DROOT defs first\r04490      FDB ROOT context next\r04500 DFIND1      FDB BL\r04510    FDB WORD name in buf\r04520      FDB FETCH vocab2\r04530  FDB SWAP\r04540  FDB FETCH vocab1\r04550  FDB OVER\r04560  FDB OVER\r04570  FDB EQ same?\r04580      FDB ZBR\r04590   FDB 6\r04600     FDB DROP\r04610  FDB BRANCH\r04620        FDB DFIND2-*-2\r04630    FDB WORDPD buf\r04640    FDB SWAP\r04650  FDB FIND 1st\r04660      FDB OVER\r04670  FDB ZBR\r04680   FDB 6\r04690     FDB ROT\r04700   FDB DROP\r04710  FDB SEMIS\r04720         FDB DROP\r04730  FDB DROP\r04740 DFIND2   FDB WORDPD\r04750        FDB SWAP\r04760  FDB FIND 2nd\r04770      FDB SEMIS\r04790 *\r04800         FCC '-IFIND'\r04810      FCB 6\r04820     FCB MFORE\r04830         FDB DDFIND-CFAOFF\r04840         FDB BIF+2\r04850         FDB 0\r04860     FDB 0\r04870 DIFIND      DOCOL\r04880     FDB ROOT context first\r04890    FDB DROOT defs next\r04900       FDB BRANCH\r04910        FDB DFIND1-*-2\r05190 *\r
\ No newline at end of file
+00010 * Include file for BIF
+00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
+00030 *
+01000  FCC '(NUMBER)'
+01010  FCB 8
+01020  FCB MFORE
+01030  FDB QARROW-CFAOFF
+01040  FDB BIF+2
+01050  FDB 0
+01060  FDB PREF-CFAOFF
+01070 INUMB    PSHS Y  see fig-FORTH model
+01080  PULU Y adr
+01085  LDX <UP
+01090 INUMBL   LDB ,Y+ ch
+01092  CLRA
+01094  PSHU D
+01096  LDD UBASE,X
+01100  PSHU D
+01110  DOCOL
+01120  FDB DIGIT
+01130  FDB ZBR
+01140  FDB INUMBE-*-2
+01150  FDB SWAP accm ms word
+01160  FDB BASE
+01180  FDB FETCH
+01190  FDB USTAR shift in base
+01200  FDB DROP ls word is digit
+01210  FDB ROT accm ls word
+01220  FDB BASE
+01230  FDB FETCH
+01240  FDB USTAR shift in base
+01250  FDB DADD accumulate
+01260  FDB XMACH adjust dpl
+01270  LDX <UP
+01280  LDD UDPL,X
+01290  BMI INUMBL
+01300  ADDD #1
+01310  STD UDPL,X
+01320  BRA INUMBL
+01330 INUMBE   FDB XMACH
+01340  LEAY -1,Y back up
+01350  PSHU Y adr
+01355  PULS Y
+01360  NEXT
+01390 *
+01400  FCC 'NUMBER'
+01410  FCB 6
+01420  FCB MFORE
+01430  FDB INUMB-CFAOFF
+01440  FDB BIF+2
+01450  FDB MIN-CFAOFF
+01460  FDB OVER-CFAOFF
+01470 NUMBER PULU X
+01475  LEAX 1,X skip ct
+01480  LDB ,X <0?
+01490  SUBB #'-
+01500  BNE *+4
+01510  LEAX 1,X
+01520  CLRA
+01530  PSHU D
+01540  CLRB
+01550  PSHU D double 0
+01560  PSHU D
+01570  PSHU X adr
+01580  LDD #-1 clear DPL
+01590 NUMBA    LDX <UP
+01600  STD UDPL,X
+01610  DOCOL
+01620  FDB INUMB
+01630  FDB XMACH
+01640  LDX ,U end ch
+01650  LDB ,X ascii NUL?
+01660  BEQ NUMBQ
+01670  CMPB #': double?
+01680  BEQ NUMBD
+01690  CMPB #'-
+01700  BLO NUMBE
+01710  CMPB #'/
+01720  BHI NUMBE
+01730 NUMBD    LEAX 1,X past dec pt
+01740  STX ,U
+01750  LDD #0 set DPL
+01760  BRA NUMBA
+01770 NUMBE    LDD #0
+01780  PSHU D
+01790  JMP ERROR
+01800 NUMBQ    LEAU 2,U valid, drop
+01810  DOCOL
+01830  FDB ROT <0?
+01840  FDB TBR
+01850  FDB 2
+01860  FDB DMINUS
+01870  FDB SEMIS
+01890 *
+01900  FCC 'WORDPAD'
+01910  FCB 7
+01920  FCB MFORE
+01930  FDB NUMBER-CFAOFF
+01940  FDB BIF+2
+01950  FDB 0
+01960  FDB 0
+01970 WORDPD   DOUCON
+01980  FCB UWP
+01990 *
+02000  FCC 'WORD'
+02010  FCB 4
+02020  FCB MFORE
+02030  FDB WORDPD-CFAOFF
+02040  FDB BIF+2
+02050  FDB WHILE-CFAOFF
+02060  FDB BCOMP-CFAOFF
+02070 WORD     PSHS Y
+02075  LDY <UP
+02080  LDD UBLK,Y terminal?
+02090  BEQ WORDK buffer
+02100  PSHU D
+02110  DOCOL
+02120  FDB BLOCK
+02130  FDB XMACH
+02140  PULU D
+02150  BRA *+4 UTIB < 16!
+02160 WORDK    LDD UTIB,Y
+02170  ADDD UIN,Y parse at
+02180  PULU X ch
+02190  TFR D,Y save
+02200  PSHU X,Y (swap)
+02205  DOCOL
+02210  FDB ENCLOS
+02215  FDB XMACH
+02220  PSHS Y start at
+02221  LDD 2,U symbol at
+02222  SUBD ,S++ delimiter count
+02223  ADDD ,U length
+02225  LDX <UP
+02226  ADDD UIN,X
+02227  STD UIN,X update
+02230  PULU D length
+02240  CMPD #NLMASK
+02250  BLS *+5 clip
+02260  LDD #NLMASK
+02270  LDY UWP,X
+02280  STB ,Y+ count
+02290  CLR B,Y trailing NUL
+02300  PSHU D,Y dest & ct
+02330  PULS Y
+02340  DOCOL
+02350  FDB CMOVE copy
+02360  FDB SEMIS
+02490 *
+02500  FCC 'BS'
+02510  FCB 2
+02520  FCB MFORE
+02530  FDB WORD-CFAOFF
+02540  FDB BIF+2
+02550  FDB BRANCH-CFAOFF
+02560  FDB 0
+02570 BS       DOUCON
+02580  FCB UBS
+02590 *
+02600  FCC 'EXPECT'
+02610  FCB 6
+02620  FCB MFORE
+02630  FDB BS-CFAOFF
+02640  FDB BIF+2
+02650  FDB ERROR-CFAOFF
+02660  FDB FILL-CFAOFF
+02670 EXPECT   PSHS Y
+02680  LDD ,U count
+02690  LDY 2,U buffer
+02700  SUBD #1 for NUL
+02710  BLT EXPE0+2
+02720  BEQ EXPE0
+02730  LEAX D,Y
+02740  STX ,U limit
+02750 EXPEL    DOCOL
+02760  FDB KEY
+02770  FDB XMACH
+02780  LDB 1,U
+02790  LDX <UP
+02800  CMPB UBS+1,X
+02810  BNE EXPECR
+02820  CMPY 4,U beginning?
+02830  BLS EXPEM0
+02840  LEAY -1,Y
+02850  BRA EXPEM
+02860 EXPEM0   CLR 1,U to emit
+02870  BRA EXPEM
+02880 EXPECR   CMPB #$0D
+02890  BNE EXPEPT
+02900  STY 2,U terminate
+02910  BRA EXPEM
+02913 EXPEPT   CMPB #$20 printable?
+02916  BLO EXPEM0
+02920  STB ,Y+ store ch
+02930 EXPEM    DOCOL
+02940  FDB EMIT
+02950  FDB XMACH
+02960  CMPY ,U
+02970  BLO EXPEL
+02980 EXPE0    CLR ,Y NUL term
+02990  LEAU 4,U
+03000  PULS Y
+03010  NEXT
+03090 *
+03600 TWID     EQU 128 width of a terminal line
+03605  FCC 'QUERY'
+03610  FCB 5
+03620  FCB MFORE
+03630  FDB EXPECT-CFAOFF
+03640  FDB BIF+2
+03650  FDB LOOP-CFAOFF
+03660  FDB SWAP-CFAOFF
+03670 QUERY    LDX <UP
+03680  LDD #0
+03690  STD UIN,X
+03700  LDD #TWID
+03710  LDX UTIB,X
+03720  PSHU D,X
+03730  DOCOL
+03740  FDB EXPECT
+03750  FDB SEMIS
+03790 *
+03795  FCB 0 ; NEEDED
+03800  FCB MIMM|0
+03810  FCB MFORE
+03820  FDB QUERY-CFAOFF
+03830  FDB BIF+2
+03840  FDB 0
+03850  FDB 0
+03860 NUBLK    LDX <UP
+03870  LDD UBLK,X
+03880  BEQ NUBLT
+03890  ADDD #1
+03900  STD UBLK,X
+03910  LDD #0
+03920  STD UIN,X
+03930  LDD BPSCR+2 2^n
+03940  DECB
+03950  ANDB UBLK+1,X end of screen?
+03960  BNE NUBLT+2
+03970  DOCOL
+03980  FDB QEXEC
+03990  FDB XMACH
+04000 NUBLT    PULS Y end interp
+04010  NEXT
+04090 *
+04100  FCC 'FIND'
+04110  FCB 4
+04120  FCB MFORE
+04130  FDB NUBLK-CFAOFF
+04140  FDB BIF+2
+04150  FDB EXPECT-CFAOFF
+04160  FDB HERE-CFAOFF
+04170 FIND     LDD 2,U
+04180  ADDD #1 past ct
+04190  STD 2,U
+04200  LDD ,U
+04210 FINDL    LDX 2,U
+04220  PSHU D,X
+04230  DOCOL
+04240  FDB PFIND
+04250  FDB XMACH
+04260  LDD ,U flag
+04270  BNE FINDF
+04290  LDX 4,U vocabulary
+04300  LDD GFAOFF-PFAOFF,X parent
+04305  CMPD 4,U root voc?
+04310  BEQ FINDF
+04315  LEAU 4,U
+04320  STD ,U
+04330  BRA FINDL
+04360 FINDF    LDD [2,U]
+04365  LEAU 4,U entry
+04370  STD 2,U
+04380  NEXT
+04390 *
+04400  FCC '-DFIND'
+04410  FCB 6
+04420  FCB MFORE
+04430  FDB FIND-CFAOFF
+04440  FDB BIF+2
+04450  FDB 0
+04460  FDB 0
+04470 DDFIND   DOCOL
+04480  FDB DROOT defs first
+04490  FDB ROOT context next
+04500 DFIND1   FDB BL
+04510  FDB WORD name in buf
+04520  FDB FETCH vocab2
+04530  FDB SWAP
+04540  FDB FETCH vocab1
+04550  FDB OVER
+04560  FDB OVER
+04570  FDB EQ same?
+04580  FDB ZBR
+04590  FDB 6
+04600  FDB DROP
+04610  FDB BRANCH
+04620  FDB DFIND2-*-2
+04630  FDB WORDPD buf
+04640  FDB SWAP
+04650  FDB FIND 1st
+04660  FDB OVER
+04670  FDB ZBR
+04680  FDB 6
+04690  FDB ROT
+04700  FDB DROP
+04710  FDB SEMIS
+04720  FDB DROP
+04730  FDB DROP
+04740 DFIND2   FDB WORDPD
+04750  FDB SWAP
+04760  FDB FIND 2nd
+04770  FDB SEMIS
+04790 *
+04800  FCC '-IFIND'
+04810  FCB 6
+04820  FCB MFORE
+04830  FDB DDFIND-CFAOFF
+04840  FDB BIF+2
+04850  FDB 0
+04860  FDB 0
+04870 DIFIND   DOCOL
+04880  FDB ROOT context first
+04890  FDB DROOT defs next
+04900  FDB BRANCH
+04910  FDB DFIND1-*-2
+05190 *
index dc55f91..d89b4fc 100644 (file)
@@ -1 +1,273 @@
-00010 * Include file for BIF\r00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r00030 *\r05200  FCC 'NAME,'\r05210       FCB 5\r05220     FCB MFORE\r05230         FDB DIFIND-CFAOFF\r05240         FDB BIF+2\r05250         FDB 0\r05260     FDB 0\r05270 NCOMMA      DOCOL\r05280     FDB WORDPD\r05300        FDB COUNT\r05310         FDB TOR\r05330   FDB HERE\r05340  FDB R\r05350     FDB ALLOT\r05360         FDB R\r05370     FDB CMOVE name\r05380    FDB HERE node\r05390     FDB RFROM\r05400         FDB SEMIS\r05490 *\r05500         FCC 'FORE-MARK'\r05510   FCB 9\r05520     FCB MFORE\r05530         FDB NCOMMA-CFAOFF\r05540         FDB BIF+2\r05550         FDB FIRST-CFAOFF\r05560  FDB FORGET-CFAOFF\r05570 FOREMK  LDX <UP\r05580   LDD UFORE,X\r05590       BEQ FOREMN\r05600        LDX UCURR,X\r05610       LDB 1,X\r05620   ORB #MFORE\r05630        STB 1,X\r05640 FOREMN    NEXT\r05690 *\r05700      FCC '(INSTALL)'\r05710   FCB MCOMP.OR.9\r05720    FCB MFORE\r05730         FDB DIFIND-CFAOFF\r05740         FDB BIF+2\r05750         FDB 0\r05760     FDB 0\r05770 PINSTA      LDX ,U vocab\r05772      BNE PINSTV\r05774        LDD #$18\r05776  PSHU D\r05778    JMP ERROR\r05780 PINSTV  PSHS Y\r05784    LDY 2,U nfa\r05788       LDB ,Y\r05792    ANDB #NLMASK\r05796      TFR B,A\r05800   NEGA\r05804      LEAY A,Y name\r05808     DECA for NUL\r05812      LEAS A,S allocate\r05816         CLRA\r05820      STA B,S term\r05824      PSHU Y\r05828    PSHU D,S\r05832  PSHS B mark\r05836       DOCOL\r05840     FDB CMOVE\r05844         FDB XMACH\r05848         LDX ,U vocab\r05852      LEAY 1,S\r05856 PINSTL   PSHU X,Y\r05860  DOCOL\r05864     FDB PFIND slot?\r05868   FDB XMACH\r05872         LDD ,U++ flag\r05876     BEQ PINSTI\r05880        LDX [,U++] old nfa\r05884        CMPX #NUBLK-CFAOFF\r05888        BNE *+7\r05892   LDD #$1C\r05896  BRA PINSTV-5\r05900      LDB ,X\r05904    ORB #MHID hide old\r05908        STB ,X\r05912    LEAX RTOFF,X fake voc\r05916     BRA PINSTL\r05920 PINSTI PULS B\r05924    INCB\r05928      LEAS B,S\r05932  LDX ,U insert point\r05936       BNE PINSTG\r05940        LDD #$19\r05944  BRA PINSTV-5\r05948 PINSTG       LDD 2,U vocab\r05952     LDY 4,U nfa\r05956       STY ,X link in\r05960    STD GFAOFF,Y\r05964 PINSTX       LEAU 6,U\r05970  PULS Y\r05980    NEXT\r06290 *\r06300      FCC '0!'\r06310  FCB 2\r06320     FCB MFORE\r06330         FDB PINSTA-CFAOFF\r06340         FDB BIF+2\r06350         FDB 0\r06360     FDB 0\r06370 INULL       LDD #0\r06380    STD >0\r06390    NEXT\r06395 *\r06400      FCC '?0'\r06410  FCB 2\r06420     FCB MFORE\r06430         FDB INULL-CFAOFF\r06440  FDB BIF+2\r06450         FDB 0\r06460     FDB 0\r06470 TNULL       LDD >0\r06480    BNE *+4\r06490   NEXT\r06500      LDD #5\r06510    PSHU D\r06520    LDX <UP\r06530   LDA UWARN,X\r06540       ORA #$80 abort\r06550    STA UWARN,X\r06560       JMP ERROR\r06590 *\r07000         FCC 'QUICK'\r07010       FCB 5\r07020     FCB MFORE\r07030         FDB TNULL-CFAOFF\r07040  FDB EDITOR+2\r07050      FDB QSYNC-CFAOFF\r07060  FDB 0\r07070 QUICK       PSHS Y\r07080    LDY <UP\r07090   LDD UEBLK,Y\r07100       LDX URNUM,Y\r07110       PSHS D,X nest\r07120     PULU D\r07130    STD UEBLK,Y\r07140       LDD #0\r07150    STD URNUM,Y\r07160       DOCOL\r07170     FDB CURSOR\r07180        FDB QDUMP fill screen\r07190     FDB QSYNC\r07200 QUICKL  FDB KEY\r07210   FDB XMACH\r07220         LDB 1,U\r07230   CMPB #3 break?\r07240    BEQ QUICKB\r07250        DOCOL\r07260     FDB QARROW\r07270        FDB QSYNC\r07280         FDB CURSOR\r07290        FDB XMACH\r07300         LDD 2,U\r07310   BNE QUICKC\r07320        LDB [,U++] from buffer\r07330    BRA QUICKE\r07340 QUICKC CMPB #'\\r07350  BNE *+10\r07360  DOCOL\r07370     FDB KEY literal\r07380   FDB XMACH\r07390         PULU D\r07400    STB [,U++] in buffer\r07410      INC URNUM+1,Y bump\r07420        LDA [UPREV,Y] update\r07430      ORA #$80\r07440  STA [UPREV,Y]\r07450 QUICKE      CLRA\r07460      STD ,U\r07470    DOCOL\r07480     FDB EMIT\r07485  FDB QSYNC\r07490         FDB BRANCH\r07500        FDB QUICKL-*-2\r07510 QUICKB     LEAU 2,U\r07520  PULS D,X un-nest\r07530  STD UEBLK,Y\r07540       STX URNUM,Y\r07550       PULS Y\r07560    NEXT\r07570 *\r07800      FCC 'NODE.'\r07810       FCB 5\r07820     FCB MFORE\r07830         FDB QUICK-CFAOFF\r07840  FDB BIF+2\r07850         FDB 0\r07860     FDB 0\r07870 NDOT        DOCOL\r07880     FDB DUP\r07890   FDB IDDOT\r07900         FDB SPACE\r07910         FDB ZERO\r07920  FDB DDOT\r07930  FDB CR\r07940    FDB QTERM\r07943         FDB DUP\r07945   FDB ZLESS break?\r07950  FDB ZBR\r07955   FDB 4\r07960     FDB DROP\r07965  FDB KEY\r07970   FDB SEMIS\r07990 *\r08000         FCC 'VISIT'\r08010       FCB 5\r08020     FCB MFORE\r08030         FDB NDOT-CFAOFF\r08040   FDB BIF+2\r08050         FDB 0\r08060     FDB 0\r08070 VISIT       PSHS Y\r08080    LDY <UP\r08090   LDX UVMK,Y save\r08100   PSHS D,X allocate\r08110         STS UVMK,Y\r08120        LDX ,U++\r08130  PULU D\r08140    BEQ VISITX vocab\r08150  LDX ,X\r08160    BEQ VISITX\r08170        ADDD #CFAOFF function\r08180     STD ,S\r08190 VISITL     PSHS X\r08200    CMPS US0,Y overflow?\r08210      BHI *+7\r08220   LDB #$0B\r08230  JMP QSTERR\r08240        LDX LFTOFF,X\r08250 VISITR       BNE VISITL\r08260        CMPS UVMK,Y\r08270       BHS VISITX\r08280        LDX ,S node\r08290       LDD [UVMK,Y] function\r08300     PSHU D,X\r08310  DOCOL\r08320     FDB EXEC\r08330  FDB QSTACK\r08340        FDB XMACH\r08343         LDD ,U++\r08346  BMI VISITX terminate?\r08350     PULS X\r08360    LDX RTOFF,X\r08370       BRA VISITR\r08375 VISITX LDS UVMK,Y\r08380        PULS D,X\r08390  STX UVMK,Y\r08400        PULS Y\r08410    NEXT\r08490 *\r08500      FCC 'VLIST'\r08510       FCB 5\r08520     FCB MFORE\r08530         FDB VISIT-CFAOFF\r08540  FDB EDITOR+2\r08550      FDB VISIT-CFAOFF\r08560  FDB VOCAB-CFAOFF\r08570 VLIST    DOCOL\r08580     FDB LIT\r08590   FDB NDOT-CFAOFF\r08600   FDB ROOT\r08610  FDB FETCH\r08620         FDB VISIT\r08630         FDB SEMIS\r08690 *\r
\ No newline at end of file
+00010 * Include file for BIF
+00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
+00030 *
+05200  FCC 'NAME,'
+05210  FCB 5
+05220  FCB MFORE
+05230  FDB DIFIND-CFAOFF
+05240  FDB BIF+2
+05250  FDB 0
+05260  FDB 0
+05270 NCOMMA   DOCOL
+05280  FDB WORDPD
+05300  FDB COUNT
+05310  FDB TOR
+05330  FDB HERE
+05340  FDB R
+05350  FDB ALLOT
+05360  FDB R
+05370  FDB CMOVE name
+05380  FDB HERE node
+05390  FDB RFROM
+05400  FDB SEMIS
+05490 *
+05500  FCC 'FORE-MARK'
+05510  FCB 9
+05520  FCB MFORE
+05530  FDB NCOMMA-CFAOFF
+05540  FDB BIF+2
+05550  FDB FIRST-CFAOFF
+05560  FDB FORGET-CFAOFF
+05570 FOREMK   LDX <UP
+05580  LDD UFORE,X
+05590  BEQ FOREMN
+05600  LDX UCURR,X
+05610  LDB 1,X
+05620  ORB #MFORE
+05630  STB 1,X
+05640 FOREMN   NEXT
+05690 *
+05700  FCC '(INSTALL)'
+05710  FCB MCOMP.OR.9
+05720  FCB MFORE
+05730  FDB DIFIND-CFAOFF
+05740  FDB BIF+2
+05750  FDB 0
+05760  FDB 0
+05770 PINSTA   LDX ,U vocab
+05772  BNE PINSTV
+05774  LDD #$18
+05776  PSHU D
+05778  JMP ERROR
+05780 PINSTV   PSHS Y
+05784  LDY 2,U nfa
+05788  LDB ,Y
+05792  ANDB #NLMASK
+05796  TFR B,A
+05800  NEGA
+05804  LEAY A,Y name
+05808  DECA for NUL
+05812  LEAS A,S allocate
+05816  CLRA
+05820  STA B,S term
+05824  PSHU Y
+05828  PSHU D,S
+05832  PSHS B mark
+05836  DOCOL
+05840  FDB CMOVE
+05844  FDB XMACH
+05848  LDX ,U vocab
+05852  LEAY 1,S
+05856 PINSTL   PSHU X,Y
+05860  DOCOL
+05864  FDB PFIND slot?
+05868  FDB XMACH
+05872  LDD ,U++ flag
+05876  BEQ PINSTI
+05880  LDX [,U++] old nfa
+05884  CMPX #NUBLK-CFAOFF
+05888  BNE *+7
+05892  LDD #$1C
+05896  BRA PINSTV-5
+05900  LDB ,X
+05904  ORB #MHID hide old
+05908  STB ,X
+05912  LEAX RTOFF,X fake voc
+05916  BRA PINSTL
+05920 PINSTI   PULS B
+05924  INCB
+05928  LEAS B,S
+05932  LDX ,U insert point
+05936  BNE PINSTG
+05940  LDD #$19
+05944  BRA PINSTV-5
+05948 PINSTG   LDD 2,U vocab
+05952  LDY 4,U nfa
+05956  STY ,X link in
+05960  STD GFAOFF,Y
+05964 PINSTX   LEAU 6,U
+05970  PULS Y
+05980  NEXT
+06290 *
+06300  FCC '0!'
+06310  FCB 2
+06320  FCB MFORE
+06330  FDB PINSTA-CFAOFF
+06340  FDB BIF+2
+06350  FDB 0
+06360  FDB 0
+06370 INULL    LDD #0
+06380  STD >0
+06390  NEXT
+06395 *
+06400  FCC '?0'
+06410  FCB 2
+06420  FCB MFORE
+06430  FDB INULL-CFAOFF
+06440  FDB BIF+2
+06450  FDB 0
+06460  FDB 0
+06470 TNULL    LDD >0
+06480  BNE *+4
+06490  NEXT
+06500  LDD #5
+06510  PSHU D
+06520  LDX <UP
+06530  LDA UWARN,X
+06540  ORA #$80 abort
+06550  STA UWARN,X
+06560  JMP ERROR
+06590 *
+07000  FCC 'QUICK'
+07010  FCB 5
+07020  FCB MFORE
+07030  FDB TNULL-CFAOFF
+07040  FDB EDITOR+2
+07050  FDB QSYNC-CFAOFF
+07060  FDB 0
+07070 QUICK    PSHS Y
+07080  LDY <UP
+07090  LDD UEBLK,Y
+07100  LDX URNUM,Y
+07110  PSHS D,X nest
+07120  PULU D
+07130  STD UEBLK,Y
+07140  LDD #0
+07150  STD URNUM,Y
+07160  DOCOL
+07170  FDB CURSOR
+07180  FDB QDUMP fill screen
+07190  FDB QSYNC
+07200 QUICKL   FDB KEY
+07210  FDB XMACH
+07220  LDB 1,U
+07230  CMPB #3 break?
+07240  BEQ QUICKB
+07250  DOCOL
+07260  FDB QARROW
+07270  FDB QSYNC
+07280  FDB CURSOR
+07290  FDB XMACH
+07300  LDD 2,U
+07310  BNE QUICKC
+07320  LDB [,U++] from buffer
+07330  BRA QUICKE
+07340 QUICKC   CMPB #'\
+07350  BNE *+10
+07360  DOCOL
+07370  FDB KEY literal
+07380  FDB XMACH
+07390  PULU D
+07400  STB [,U++] in buffer
+07410  INC URNUM+1,Y bump
+07420  LDA [UPREV,Y] update
+07430  ORA #$80
+07440  STA [UPREV,Y]
+07450 QUICKE   CLRA
+07460  STD ,U
+07470  DOCOL
+07480  FDB EMIT
+07485  FDB QSYNC
+07490  FDB BRANCH
+07500  FDB QUICKL-*-2
+07510 QUICKB   LEAU 2,U
+07520  PULS D,X un-nest
+07530  STD UEBLK,Y
+07540  STX URNUM,Y
+07550  PULS Y
+07560  NEXT
+07570 *
+07800  FCC 'NODE.'
+07810  FCB 5
+07820  FCB MFORE
+07830  FDB QUICK-CFAOFF
+07840  FDB BIF+2
+07850  FDB 0
+07860  FDB 0
+07870 NDOT     DOCOL
+07880  FDB DUP
+07890  FDB IDDOT
+07900  FDB SPACE
+07910  FDB ZERO
+07920  FDB DDOT
+07930  FDB CR
+07940  FDB QTERM
+07943  FDB DUP
+07945  FDB ZLESS break?
+07950  FDB ZBR
+07955  FDB 4
+07960  FDB DROP
+07965  FDB KEY
+07970  FDB SEMIS
+07990 *
+08000  FCC 'VISIT'
+08010  FCB 5
+08020  FCB MFORE
+08030  FDB NDOT-CFAOFF
+08040  FDB BIF+2
+08050  FDB 0
+08060  FDB 0
+08070 VISIT    PSHS Y
+08080  LDY <UP
+08090  LDX UVMK,Y save
+08100  PSHS D,X allocate
+08110  STS UVMK,Y
+08120  LDX ,U++
+08130  PULU D
+08140  BEQ VISITX vocab
+08150  LDX ,X
+08160  BEQ VISITX
+08170  ADDD #CFAOFF function
+08180  STD ,S
+08190 VISITL   PSHS X
+08200  CMPS US0,Y overflow?
+08210  BHI *+7
+08220  LDB #$0B
+08230  JMP QSTERR
+08240  LDX LFTOFF,X
+08250 VISITR   BNE VISITL
+08260  CMPS UVMK,Y
+08270  BHS VISITX
+08280  LDX ,S node
+08290  LDD [UVMK,Y] function
+08300  PSHU D,X
+08310  DOCOL
+08320  FDB EXEC
+08330  FDB QSTACK
+08340  FDB XMACH
+08343  LDD ,U++
+08346  BMI VISITX terminate?
+08350  PULS X
+08360  LDX RTOFF,X
+08370  BRA VISITR
+08375 VISITX   LDS UVMK,Y
+08380  PULS D,X
+08390  STX UVMK,Y
+08400  PULS Y
+08410  NEXT
+08490 *
+08500  FCC 'VLIST'
+08510  FCB 5
+08520  FCB MFORE
+08530  FDB VISIT-CFAOFF
+08540  FDB EDITOR+2
+08550  FDB VISIT-CFAOFF
+08560  FDB VOCAB-CFAOFF
+08570 VLIST    DOCOL
+08580  FDB LIT
+08590  FDB NDOT-CFAOFF
+08600  FDB ROOT
+08610  FDB FETCH
+08620  FDB VISIT
+08630  FDB SEMIS
+08690 *
index 632365d..398a882 100644 (file)
@@ -1 +1,266 @@
-00010 * Include file for BIF\r00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r00030 *\r01000  FCC 'CREATE'\r01010      FCB 6\r01020     FCB MFORE\r01030         FDB VLIST-CFAOFF\r01040  FDB BIF+2\r01050         FDB CR-CFAOFF\r01060     FDB CSP-CFAOFF\r01070 CREATE     DOCOL\r01080     FDB DDFIND\r01090        FDB OVER\r01100  FDB ZBR\r01110   FDB CREATN-*-2\r01120    FDB SWAP nfa\r01130      FDB IDDOT\r01135         FDB SPACE\r01140         FDB LIT\r01150   FDB 4\r01160     FDB MESS\r01170  FDB SPACE\r01190         FDB NFA vocab\r01200     FDB IDDOT\r01205         FDB CR\r01210    FDB BRANCH\r01220        FDB 4\r01230 CREATN      FDB DROP\r01240  FDB DROP\r01250  FDB NCOMMA\r01260        FDB CCOMMA length\r01270         FDB ZERO\r01280  FDB CCOMMA mode\r01290   FDB LATEST allocation link\r01300        FDB COMMA\r01310         FDB DUP nfa\r01320       FDB CURR\r01330  FDB STORE new LATEST\r01340      FDB ZERO vocab\r01350    FDB COMMA\r01360         FDB ZERO\r01370  FDB COMMA left\r01380    FDB ZERO\r01390  FDB COMMA right\r01400   FDB SMUDGE hide\r01410   FDB FOREMK\r01420        FDB DROOT\r01430         FDB FETCH\r01440         FDB PINSTA in vocab\r01450       FDB SEMIS\r01490 *\r01500         FCC 'CONSTANT'\r01510    FCB 8\r01520     FCB MFORE\r01530         FDB CREATE-CFAOFF\r01540         FDB BIF+2\r01550         FDB CMOVE-CFAOFF\r01560  FDB CREATE-CFAOFF\r01570 CONST   DOCOL\r01580     FDB CREATE\r01590        FDB IPCOM\r01600         DOCON\r01610     FDB COMMA\r01620         FDB SMUDGE visible\r01630        FDB SEMIS\r01690 *\r01700         FCC 'VARIABLE'\r01710    FCB 8\r01720     FCB MFORE\r01730         FDB CONST-CFAOFF\r01740  FDB BIF+2\r01750         FDB USTAR-CFAOFF\r01760  FDB WORD-CFAOFF\r01770 VAR       DOCOL\r01780     FDB CREATE\r01790        FDB IPCOM\r01800         DOVAR\r01810     FDB COMMA initial value\r01820   FDB SMUDGE visible\r01830        FDB SEMIS\r01890 *\r01900         FCC 'USER'\r01910        FCB 4\r01920     FCB MFORE\r01930         FDB VAR-CFAOFF\r01940    FDB BIF+2\r01950         FDB USE-CFAOFF\r01960    FDB UTIL-CFAOFF\r01970 USER      DOCOL\r01980     FDB CREATE\r01990        FDB IPCOM\r02000         DOUSER\r02010    FDB CCOMMA offset\r02020         FDB SMUDGE visible\r02030        FDB SEMIS\r02080 *\r02090 SCOMP   EQU MCOMP.OR.MIMM\r02100         FCC ':'\r02110   FCB MIMM.OR.1\r02120     FCB MFORE\r02130         FDB USER-CFAOFF\r02140   FDB BIF+2\r02150         FDB ADD-CFAOFF\r02160    FDB FETCH-CFAOFF\r02170 COLON    DOCOL\r02180     FDB QEXEC\r02190         FDB STOCSP\r02200        FDB CREATE\r02210        FDB IPCOM\r02220         DOCOL\r02230     FDB RBRAK\r02240         FDB SEMIS\r02290 *\r02300         FCC ';'\r02310   FCB MIMM.OR.1\r02320     FCB MFORE\r02330         FDB COLON-CFAOFF\r02340  FDB BIF+2\r02350         FDB 0\r02360     FDB 0\r02370 SEMI        DOCOL   see fig-FORTH model\r02380       FDB QCSP\r02390  FDB COMP\r02400  FDB SEMIS\r02410         FDB SMUDGE\r02420        FDB LBRAK\r02430         FDB SEMIS\r02490 *\r02500         FCC '."'\r02510  FCB MIMM.OR.2\r02520     FCB MFORE\r02530         FDB SEMI-CFAOFF\r02540   FDB BIF+2\r02550         FDB 0\r02560     FDB 0\r02570 DOTQ        DOCOL\r02572     FDB ONE past delimiter\r02574    FDB IN\r02576    FDB ADDSTO\r02580        FDB LIT\r02590   FDB '"\r02600    FDB WORD\r02610  FDB WORDPD\r02620        FDB QCST\r02630  FDB ZBR\r02640   FDB DOTQT-*-2\r02650     FDB COMP\r02660  FDB XDOTQ\r02670         FDB HERE\r02680  FDB OVER\r02690  FDB CFEH count\r02700    FDB ADD1\r02710  FDB DUP\r02720   FDB ALLOT\r02730         FDB CMOVE\r02732         FDB ONE past end quote\r02734    FDB IN\r02736    FDB ADDSTO\r02740        FDB BRANCH\r02750        FDB 4\r02760 DOTQT       FDB COUNT\r02770         FDB TYPE\r02780  FDB SEMIS\r02790 *\r02800         FCC '[COMPILE]'\r02810   FCB MIMM.OR.9\r02820     FCB MFORE\r02830         FDB DOTQ-CFAOFF\r02840   FDB BIF+2\r02850         FDB LBRAK-CFAOFF\r02860  FDB RBRAK-CFAOFF\r02870 BCOMP    DOCOL\r02880     FDB DDFIND\r02890        FDB DROP vocab\r02900    FDB DUP\r02910   FDB ZEQ\r02920   FDB ZERO\r02930  FDB QERR\r02940  FDB CFA\r02950   FDB COMMA\r02960         FDB SEMIS\r03180 *\r03200         FCC 'INTERPRET'\r03210   FCB 9\r03220     FCB MFORE\r03230         FDB BCOMP-CFAOFF\r03240  FDB BIF+2\r03250         FDB 0 * INDEX-CFAOFF\r03260      FDB J-CFAOFF\r03270 INTERP       DOCOL\r03280     FDB DIFIND\r03290        FDB DROP\r03300  FDB DDUP\r03310  FDB ZBR\r03320   FDB INTERN-*-2\r03330    FDB DUP\r03340   FDB CFA\r03350   FDB SWAP\r03360  FDB CFEH length\r03370   FDB DUP\r03380   FDB NOT\r03390   FDB LIT\r03400   FDB MIMM\r03410  FDB AND\r03420   FDB QCST\r03430  FDB AND\r03440   FDB ZBR\r03450   FDB INTERX-*-2\r03460    FDB DROP length\r03470   FDB COMMA\r03480         FDB BRANCH\r03490        FDB INTERE-*-2\r03500 INTERX     FDB LIT\r03510   FDB MCOMP\r03520         FDB AND\r03530   FDB QCST\r03540  FDB NOT\r03550   FDB AND\r03560   FDB LIT\r03570   FDB $11\r03580   FDB QERR\r03590  FDB EXEC\r03600  FDB BRANCH\r03610        FDB INTERE-*-2\r03620 INTERN     FDB WORDPD\r03630        FDB NUMBER\r03640        FDB DPL\r03645   FDB FETCH\r03650         FDB ZLESS\r03660         FDB ZBR\r03670   FDB INTERE-*-4\r03680    FDB DROP\r03690  FDB LITER\r03700         FDB BRANCH\r03710        FDB INTERE-*-2\r03720    FDB DLITER\r03730 INTERE FDB QSTACK\r03740        FDB BRANCH\r03750        FDB INTERP-*\r03790 *\r04200      FCC 'QUIT'\r04210        FCB 4\r04220     FCB MFORE\r04230         FDB INTERP-CFAOFF\r04240         FDB BIF+2\r04250         FDB 0\r04260     FDB 0\r04270 QUIT        DOCOL   see fig-FORTH model\r04280       FDB ZERO\r04290  FDB BLK\r04300   FDB STORE\r04310         FDB LBRAK\r04320 QUITL   FDB TNULL\r04325         FDB RPSTO\r04330         FDB CR\r04340    FDB QUERY\r04350         FDB INTERP\r04360        FDB QCST\r04370  FDB TBR\r04380   FDB QUITL-*-2\r04390     FDB XDOTQ\r04400         FCB 3\r04410     FCC ' OK'\r04420         FDB BRANCH\r04430        FDB QUITL-*-2\r04490 *\r
\ No newline at end of file
+00010 * Include file for BIF
+00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
+00030 *
+01000  FCC 'CREATE'
+01010  FCB 6
+01020  FCB MFORE
+01030  FDB VLIST-CFAOFF
+01040  FDB BIF+2
+01050  FDB CR-CFAOFF
+01060  FDB CSP-CFAOFF
+01070 CREATE   DOCOL
+01080  FDB DDFIND
+01090  FDB OVER
+01100  FDB ZBR
+01110  FDB CREATN-*-2
+01120  FDB SWAP nfa
+01130  FDB IDDOT
+01135  FDB SPACE
+01140  FDB LIT
+01150  FDB 4
+01160  FDB MESS
+01170  FDB SPACE
+01190  FDB NFA vocab
+01200  FDB IDDOT
+01205  FDB CR
+01210  FDB BRANCH
+01220  FDB 4
+01230 CREATN   FDB DROP
+01240  FDB DROP
+01250  FDB NCOMMA
+01260  FDB CCOMMA length
+01270  FDB ZERO
+01280  FDB CCOMMA mode
+01290  FDB LATEST allocation link
+01300  FDB COMMA
+01310  FDB DUP nfa
+01320  FDB CURR
+01330  FDB STORE new LATEST
+01340  FDB ZERO vocab
+01350  FDB COMMA
+01360  FDB ZERO
+01370  FDB COMMA left
+01380  FDB ZERO
+01390  FDB COMMA right
+01400  FDB SMUDGE hide
+01410  FDB FOREMK
+01420  FDB DROOT
+01430  FDB FETCH
+01440  FDB PINSTA in vocab
+01450  FDB SEMIS
+01490 *
+01500  FCC 'CONSTANT'
+01510  FCB 8
+01520  FCB MFORE
+01530  FDB CREATE-CFAOFF
+01540  FDB BIF+2
+01550  FDB CMOVE-CFAOFF
+01560  FDB CREATE-CFAOFF
+01570 CONST    DOCOL
+01580  FDB CREATE
+01590  FDB IPCOM
+01600  DOCON
+01610  FDB COMMA
+01620  FDB SMUDGE visible
+01630  FDB SEMIS
+01690 *
+01700  FCC 'VARIABLE'
+01710  FCB 8
+01720  FCB MFORE
+01730  FDB CONST-CFAOFF
+01740  FDB BIF+2
+01750  FDB USTAR-CFAOFF
+01760  FDB WORD-CFAOFF
+01770 VAR      DOCOL
+01780  FDB CREATE
+01790  FDB IPCOM
+01800  DOVAR
+01810  FDB COMMA initial value
+01820  FDB SMUDGE visible
+01830  FDB SEMIS
+01890 *
+01900  FCC 'USER'
+01910  FCB 4
+01920  FCB MFORE
+01930  FDB VAR-CFAOFF
+01940  FDB BIF+2
+01950  FDB USE-CFAOFF
+01960  FDB UTIL-CFAOFF
+01970 USER     DOCOL
+01980  FDB CREATE
+01990  FDB IPCOM
+02000  DOUSER
+02010  FDB CCOMMA offset
+02020  FDB SMUDGE visible
+02030  FDB SEMIS
+02080 *
+02090 SCOMP    EQU MCOMP.OR.MIMM
+02100  FCC ':'
+02110  FCB MIMM.OR.1
+02120  FCB MFORE
+02130  FDB USER-CFAOFF
+02140  FDB BIF+2
+02150  FDB ADD-CFAOFF
+02160  FDB FETCH-CFAOFF
+02170 COLON    DOCOL
+02180  FDB QEXEC
+02190  FDB STOCSP
+02200  FDB CREATE
+02210  FDB IPCOM
+02220  DOCOL
+02230  FDB RBRAK
+02240  FDB SEMIS
+02290 *
+02300  FCC ';'
+02310  FCB MIMM.OR.1
+02320  FCB MFORE
+02330  FDB COLON-CFAOFF
+02340  FDB BIF+2
+02350  FDB 0
+02360  FDB 0
+02370 SEMI     DOCOL   see fig-FORTH model
+02380  FDB QCSP
+02390  FDB COMP
+02400  FDB SEMIS
+02410  FDB SMUDGE
+02420  FDB LBRAK
+02430  FDB SEMIS
+02490 *
+02500  FCC '."'
+02510  FCB MIMM.OR.2
+02520  FCB MFORE
+02530  FDB SEMI-CFAOFF
+02540  FDB BIF+2
+02550  FDB 0
+02560  FDB 0
+02570 DOTQ     DOCOL
+02572  FDB ONE past delimiter
+02574  FDB IN
+02576  FDB ADDSTO
+02580  FDB LIT
+02590  FDB '"
+02600  FDB WORD
+02610  FDB WORDPD
+02620  FDB QCST
+02630  FDB ZBR
+02640  FDB DOTQT-*-2
+02650  FDB COMP
+02660  FDB XDOTQ
+02670  FDB HERE
+02680  FDB OVER
+02690  FDB CFEH count
+02700  FDB ADD1
+02710  FDB DUP
+02720  FDB ALLOT
+02730  FDB CMOVE
+02732  FDB ONE past end quote
+02734  FDB IN
+02736  FDB ADDSTO
+02740  FDB BRANCH
+02750  FDB 4
+02760 DOTQT    FDB COUNT
+02770  FDB TYPE
+02780  FDB SEMIS
+02790 *
+02800  FCC '[COMPILE]'
+02810  FCB MIMM.OR.9
+02820  FCB MFORE
+02830  FDB DOTQ-CFAOFF
+02840  FDB BIF+2
+02850  FDB LBRAK-CFAOFF
+02860  FDB RBRAK-CFAOFF
+02870 BCOMP    DOCOL
+02880  FDB DDFIND
+02890  FDB DROP vocab
+02900  FDB DUP
+02910  FDB ZEQ
+02920  FDB ZERO
+02930  FDB QERR
+02940  FDB CFA
+02950  FDB COMMA
+02960  FDB SEMIS
+03180 *
+03200  FCC 'INTERPRET'
+03210  FCB 9
+03220  FCB MFORE
+03230  FDB BCOMP-CFAOFF
+03240  FDB BIF+2
+03250  FDB 0 * INDEX-CFAOFF
+03260  FDB J-CFAOFF
+03270 INTERP   DOCOL
+03280  FDB DIFIND
+03290  FDB DROP
+03300  FDB DDUP
+03310  FDB ZBR
+03320  FDB INTERN-*-2
+03330  FDB DUP
+03340  FDB CFA
+03350  FDB SWAP
+03360  FDB CFEH length
+03370  FDB DUP
+03380  FDB NOT
+03390  FDB LIT
+03400  FDB MIMM
+03410  FDB AND
+03420  FDB QCST
+03430  FDB AND
+03440  FDB ZBR
+03450  FDB INTERX-*-2
+03460  FDB DROP length
+03470  FDB COMMA
+03480  FDB BRANCH
+03490  FDB INTERE-*-2
+03500 INTERX   FDB LIT
+03510  FDB MCOMP
+03520  FDB AND
+03530  FDB QCST
+03540  FDB NOT
+03550  FDB AND
+03560  FDB LIT
+03570  FDB $11
+03580  FDB QERR
+03590  FDB EXEC
+03600  FDB BRANCH
+03610  FDB INTERE-*-2
+03620 INTERN   FDB WORDPD
+03630  FDB NUMBER
+03640  FDB DPL
+03645  FDB FETCH
+03650  FDB ZLESS
+03660  FDB ZBR
+03670  FDB INTERE-*-4
+03680  FDB DROP
+03690  FDB LITER
+03700  FDB BRANCH
+03710  FDB INTERE-*-2
+03720  FDB DLITER
+03730 INTERE   FDB QSTACK
+03740  FDB BRANCH
+03750  FDB INTERP-*
+03790 *
+04200  FCC 'QUIT'
+04210  FCB 4
+04220  FCB MFORE
+04230  FDB INTERP-CFAOFF
+04240  FDB BIF+2
+04250  FDB 0
+04260  FDB 0
+04270 QUIT     DOCOL   see fig-FORTH model
+04280  FDB ZERO
+04290  FDB BLK
+04300  FDB STORE
+04310  FDB LBRAK
+04320 QUITL    FDB TNULL
+04325  FDB RPSTO
+04330  FDB CR
+04340  FDB QUERY
+04350  FDB INTERP
+04360  FDB QCST
+04370  FDB TBR
+04380  FDB QUITL-*-2
+04390  FDB XDOTQ
+04400  FCB 3
+04410  FCC ' OK'
+04420  FDB BRANCH
+04430  FDB QUITL-*-2
+04490 *
index b8ea958..8201d75 100644 (file)
@@ -1 +1,238 @@
-00010 * Include file for BIF\r00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r00030 *\r04500  FCC 'BIF'\r04510         FCB MIMM.OR.3\r04520     FCB MFORE\r04530         FDB QUIT-CFAOFF\r04540   FDB BIF+2 (PFA)\r04550   FDB COLON-CFAOFF\r04560  FDB IF-CFAOFF\r04570 BIF DOVOC\r04580     FDB BIF-CFAOFF (NFA)\r04590 *\r04600      FCC 'ASSEMBLER'\r04610   FCB MIMM.OR.9 immediate?\r04620  FCB MFORE\r04630         FDB BIF-CFAOFF\r04640    FDB BIF+2 parent voc\r04650      FDB 0\r04660     FDB 0\r04670 ASMBLR      DOVOC\r04680     FDB 0 (NFA)\r04690 *\r04700       FCC 'DEFINITIONS'\r04710         FCB 11\r04720    FCB MFORE\r04730         FDB ASMBLR-CFAOFF\r04740         FDB BIF+2\r04750         FDB 0\r04760     FDB 0\r04770 DEFS        LDX <UP\r04780   LDD UROOT,X\r04790       STD UDROOT,X\r04800      NEXT\r04890 *\r04900      FCC 'ABORT'\r04910       FCB 5\r04920     FCB MFORE\r04930         FDB DEFS-CFAOFF\r04940   FDB BIF+2\r04950         FDB 0\r04960     FDB 0\r04970 ABORT       DOCOL   see fig-FORTH model\r04975       FDB INULL\r04980         FDB SPSTO\r04990         FDB DEC\r05000   FDB ZERO\r05010  FDB DRIVE\r05020         FDB CR\r05030    FDB XDOTQ\r05040         FCB 13\r05050    FCC '6809 BIF V1.0'\r05060       FDB BIF\r05070   FDB DEFS\r05080  FDB QUIT\r05090 *\r05100  FCC 'VOCABULARY'\r05110  FCB 10\r05120    FCB MFORE\r05130         FDB ABORT-CFAOFF\r05140  FDB BIF+2\r05150         FDB 0\r05160     FDB 0\r05170 VOCAB       DOCOL\r05180     FDB CREATE\r05190        FDB IPCOM\r05200         DOVOC\r05210     FDB ZERO\r05220  FDB COMMA local\r05255   FDB SMUDGE\r05260        FDB SEMIS\r05290 *\r05300         FCC '('\r05301   FCB MIMM.OR.1\r05302     FCB 0\r05303     FDB VOCAB-CFAOFF\r05304  FDB BIF+2\r05305         FDB ENDHSH-CFAOFF\r05306         FDB STAR-CFAOFF\r05310 PAREN     PSHS Y\r05320    LDY <UP\r05330 PARENL    LDD #')\r05340   PSHU D\r05350    DOCOL\r05360     FDB WORD\r05370  FDB XMACH\r05380         LDX UBLK,Y\r05390        BNE *+6\r05400   LDX UTIB,Y\r05401        BRA *+12\r05403  PSHU X\r05405    DOCOL\r05406     FDB BLOCK get adr\r05408         FDB XMACH\r05409         PULU X\r05410    LDD UIN,Y\r05420         LDA D,X\r05425   BEQ PARENE NUL?\r05430   CMPA #')\r05440  BNE PARENL\r05450        INCB    bump\r05453      BNE *+5 UIN>15\r05456    INC UIN,Y carry\r05460   STB UIN+1,Y\r05470 PARENE        PULS Y\r05480    NEXT\r05490 *\r05500      FCC 'DAD'\r05510         FCB 3\r05520     FCB MFORE\r05530         FDB PAREN-CFAOFF\r05540  FDB BIF+2\r05550         FDB 0\r05560     FDB DCON-CFAOFF\r05570 DAD       PSHS Y\r05580    PULU Y nfa\r05590        LDB ,Y\r05600    ANDB #NLMASK\r05610      TFR B,A\r05620   NEGA\r05630      LEAX A,Y name\r05640     DECA for NUL\r05650      LEAS A,S allocate\r05660         CLRA\r05670      STA B,S NUL\r05680       PSHU X\r05690    PSHU D,S\r05700  PSHS B,X mark\r05710     DOCOL\r05720     FDB CMOVE for (REFIND)\r05730    FDB XMACH\r05740         LEAX 3,S name\r05750     PSHU X\r05760    LDX GFAOFF,Y\r05770      PSHU X\r05780 DADL       DOCOL\r05790     FDB PREF\r05800  FDB XMACH\r05810         LDX [2,U]\r05820         BNE DADC\r05830  LDD #$19 not found\r05840        PSHU D\r05850    JMP ERROR\r05860 DADC    CMPY [2,U] this node?\r05870     BEQ DADR\r05880  LEAX RTOFF,X deeper\r05890       LEAU 2,U\r05900  STX ,U\r05910    BRA DADL\r05920 DADR     PULS B,X\r05930  STX 4,U\r05950   INCB for NUL\r05960      LEAS B,S drop name\r05970        PULS Y\r05980    NEXT\r05990 *\r20500      FCC 'REPEAL'\r20510      FCB 6\r20520     FCB MFORE\r20530         FDB DAD-CFAOFF\r20540    FDB BIF+2\r20550         FDB 0\r20560     FDB 0\r20570 REPEAL      PSHS Y\r20580    LDX <UP\r20590   LDY UCURR,X\r20592       CMPY UFENCE,X\r20594     BLS REPELX\r20600        LDD LFAOFF,Y\r20610      STD UCURR,X update\r20620        LDD GFAOFF,Y  stash\r20625       PSHU Y\r20630    LEAY PFAOFF,Y\r20640     CMPY UROOT,X\r20650      BNE REPELD\r20660        STD UROOT,X\r20670 REPELD        CMPY UDROOT,X\r20680     BNE REPELF\r20690        STD UDROOT,X\r20700 REPELF       LDY ,U\r20710    LDD #0\r20720    CMPY UFORE,X end?\r20730         BNE REPELA\r20740        STD UFORE,X\r20750 REPELA        DOCOL\r20760     FDB DAD\r20760   FDB XMACH\r20770         LEAU 2,U\r20960  LDD #0\r20970    STD [,U++] ground parent\r20980  PULU D\r20990    LDX <UP\r21000   STD UDP,X\r21010 REPELX  PULS Y\r21020    NEXT\r21090 *\r21100      FCC 'FORGET'\r21110      FCB 6\r21120     FCB MFORE\r21130         FDB REPEAL-CFAOFF\r21140         FDB BIF+2\r21150         FDB FORE-CFAOFF\r21160   FDB GFA-CFAOFF\r21170 FORGET     DOCOL\r21180     FDB DDFIND\r21190        FDB XMACH\r21200         PSHS Y\r21210    LEAU 2,U\r21220  LDY ,U++\r21230  BNE FORGEF found?\r21240         LDD #0\r21250    PSHU D\r21260    JMP ERROR\r21270 FORGEF  LDX <UP\r21280   CMPY UFENCE,X\r21290     BHI FORGER\r21300        LDD #$15\r21310  BRA FORGEF-5\r21320 FORGER       LDB MFAOFF,Y\r21330      ANDB #MFORE\r21370       BEQ FORGEL\r21380        LDD #$1A\r21390  BRA FORGEF-5\r21400 FORGEL       LDX <UP\r21410   CMPY UCURR,X\r21420      BHS FORGEO\r21430        DOCOL\r21440     FDB REPEAL\r21450        FDB XMACH\r21460         BRA FORGEL\r21470 FORGEO BEQ FORGEN\r21480        LDD #$1B\r21490  BRA FORGEF-5\r21500 FORGEN       PULS Y\r21510    JMP REPEAL\r21520 FOLLOW EQU *\r21530 * FORGET should be the last definition in the pre-assembled kernel\r21540 *\r
\ No newline at end of file
+00010 * Include file for BIF
+00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
+00030 *
+04500  FCC 'BIF'
+04510  FCB MIMM.OR.3
+04520  FCB MFORE
+04530  FDB QUIT-CFAOFF
+04540  FDB BIF+2 (PFA)
+04550  FDB COLON-CFAOFF
+04560  FDB IF-CFAOFF
+04570 BIF      DOVOC
+04580  FDB BIF-CFAOFF (NFA)
+04590 *
+04600  FCC 'ASSEMBLER'
+04610  FCB MIMM.OR.9 immediate?
+04620  FCB MFORE
+04630  FDB BIF-CFAOFF
+04640  FDB BIF+2 parent voc
+04650  FDB 0
+04660  FDB 0
+04670 ASMBLR   DOVOC
+04680  FDB 0 (NFA)
+04690 *
+04700  FCC 'DEFINITIONS'
+04710  FCB 11
+04720  FCB MFORE
+04730  FDB ASMBLR-CFAOFF
+04740  FDB BIF+2
+04750  FDB 0
+04760  FDB 0
+04770 DEFS     LDX <UP
+04780  LDD UROOT,X
+04790  STD UDROOT,X
+04800  NEXT
+04890 *
+04900  FCC 'ABORT'
+04910  FCB 5
+04920  FCB MFORE
+04930  FDB DEFS-CFAOFF
+04940  FDB BIF+2
+04950  FDB 0
+04960  FDB 0
+04970 ABORT    DOCOL   see fig-FORTH model
+04975  FDB INULL
+04980  FDB SPSTO
+04990  FDB DEC
+05000  FDB ZERO
+05010  FDB DRIVE
+05020  FDB CR
+05030  FDB XDOTQ
+05040  FCB 13
+05050  FCC '6809 BIF V1.0'
+05060  FDB BIF
+05070  FDB DEFS
+05080  FDB QUIT
+05090 *
+05100  FCC 'VOCABULARY'
+05110  FCB 10
+05120  FCB MFORE
+05130  FDB ABORT-CFAOFF
+05140  FDB BIF+2
+05150  FDB 0
+05160  FDB 0
+05170 VOCAB    DOCOL
+05180  FDB CREATE
+05190  FDB IPCOM
+05200  DOVOC
+05210  FDB ZERO
+05220  FDB COMMA local
+05255  FDB SMUDGE
+05260  FDB SEMIS
+05290 *
+05300  FCC '('
+05301  FCB MIMM.OR.1
+05302  FCB 0
+05303  FDB VOCAB-CFAOFF
+05304  FDB BIF+2
+05305  FDB ENDHSH-CFAOFF
+05306  FDB STAR-CFAOFF
+05310 PAREN    PSHS Y
+05320  LDY <UP
+05330 PARENL   LDD #')
+05340  PSHU D
+05350  DOCOL
+05360  FDB WORD
+05370  FDB XMACH
+05380  LDX UBLK,Y
+05390  BNE *+6
+05400  LDX UTIB,Y
+05401  BRA *+12
+05403  PSHU X
+05405  DOCOL
+05406  FDB BLOCK get adr
+05408  FDB XMACH
+05409  PULU X
+05410  LDD UIN,Y
+05420  LDA D,X
+05425  BEQ PARENE NUL?
+05430  CMPA #')
+05440  BNE PARENL
+05450  INCB    bump
+05453  BNE *+5 UIN>15
+05456  INC UIN,Y carry
+05460  STB UIN+1,Y
+05470 PARENE   PULS Y
+05480  NEXT
+05490 *
+05500  FCC 'DAD'
+05510  FCB 3
+05520  FCB MFORE
+05530  FDB PAREN-CFAOFF
+05540  FDB BIF+2
+05550  FDB 0
+05560  FDB DCON-CFAOFF
+05570 DAD      PSHS Y
+05580  PULU Y nfa
+05590  LDB ,Y
+05600  ANDB #NLMASK
+05610  TFR B,A
+05620  NEGA
+05630  LEAX A,Y name
+05640  DECA for NUL
+05650  LEAS A,S allocate
+05660  CLRA
+05670  STA B,S NUL
+05680  PSHU X
+05690  PSHU D,S
+05700  PSHS B,X mark
+05710  DOCOL
+05720  FDB CMOVE for (REFIND)
+05730  FDB XMACH
+05740  LEAX 3,S name
+05750  PSHU X
+05760  LDX GFAOFF,Y
+05770  PSHU X
+05780 DADL     DOCOL
+05790  FDB PREF
+05800  FDB XMACH
+05810  LDX [2,U]
+05820  BNE DADC
+05830  LDD #$19 not found
+05840  PSHU D
+05850  JMP ERROR
+05860 DADC     CMPY [2,U] this node?
+05870  BEQ DADR
+05880  LEAX RTOFF,X deeper
+05890  LEAU 2,U
+05900  STX ,U
+05910  BRA DADL
+05920 DADR     PULS B,X
+05930  STX 4,U
+05950  INCB for NUL
+05960  LEAS B,S drop name
+05970  PULS Y
+05980  NEXT
+05990 *
+20500  FCC 'REPEAL'
+20510  FCB 6
+20520  FCB MFORE
+20530  FDB DAD-CFAOFF
+20540  FDB BIF+2
+20550  FDB 0
+20560  FDB 0
+20570 REPEAL   PSHS Y
+20580  LDX <UP
+20590  LDY UCURR,X
+20592  CMPY UFENCE,X
+20594  BLS REPELX
+20600  LDD LFAOFF,Y
+20610  STD UCURR,X update
+20620  LDD GFAOFF,Y  stash
+20625  PSHU Y
+20630  LEAY PFAOFF,Y
+20640  CMPY UROOT,X
+20650  BNE REPELD
+20660  STD UROOT,X
+20670 REPELD   CMPY UDROOT,X
+20680  BNE REPELF
+20690  STD UDROOT,X
+20700 REPELF   LDY ,U
+20710  LDD #0
+20720  CMPY UFORE,X end?
+20730  BNE REPELA
+20740  STD UFORE,X
+20750 REPELA   DOCOL
+20760  FDB DAD
+20760  FDB XMACH
+20770  LEAU 2,U
+20960  LDD #0
+20970  STD [,U++] ground parent
+20980  PULU D
+20990  LDX <UP
+21000  STD UDP,X
+21010 REPELX   PULS Y
+21020  NEXT
+21090 *
+21100  FCC 'FORGET'
+21110  FCB 6
+21120  FCB MFORE
+21130  FDB REPEAL-CFAOFF
+21140  FDB BIF+2
+21150  FDB FORE-CFAOFF
+21160  FDB GFA-CFAOFF
+21170 FORGET   DOCOL
+21180  FDB DDFIND
+21190  FDB XMACH
+21200  PSHS Y
+21210  LEAU 2,U
+21220  LDY ,U++
+21230  BNE FORGEF found?
+21240  LDD #0
+21250  PSHU D
+21260  JMP ERROR
+21270 FORGEF   LDX <UP
+21280  CMPY UFENCE,X
+21290  BHI FORGER
+21300  LDD #$15
+21310  BRA FORGEF-5
+21320 FORGER   LDB MFAOFF,Y
+21330  ANDB #MFORE
+21370  BEQ FORGEL
+21380  LDD #$1A
+21390  BRA FORGEF-5
+21400 FORGEL   LDX <UP
+21410  CMPY UCURR,X
+21420  BHS FORGEO
+21430  DOCOL
+21440  FDB REPEAL
+21450  FDB XMACH
+21460  BRA FORGEL
+21470 FORGEO   BEQ FORGEN
+21480  LDD #$1B
+21490  BRA FORGEF-5
+21500 FORGEN   PULS Y
+21510  JMP REPEAL
+21520 FOLLOW   EQU *
+21530 * FORGET should be the last definition in the pre-assembled kernel
+21540 *
index a0f571d..8a47461 100644 (file)
@@ -1 +1,178 @@
-00010 * Include file for BIF\r00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r00030 *\r03640  FCC 'EMIT'\r03650        FCB 4\r03660     FCB MFORE\r03670         FDB DLITER-CFAOFF\r03680         FDB BIF+2\r03690         FDB DUP-CFAOFF\r03700    FDB ENCLOS-CFAOFF\r03705 * output using rom CHROUT: redirectable to printer\r03710 EMIT   PULU D\r03720    TFR B,A\r03730   CLRB\r03740      PSHS Y,U,DP\r03750       TFR B,DP\r03760  JSR [$A002]\r03770       PULS Y,U,DP\r03780       NEXT\r03790 *\r03800      FCC 'KEY'\r03810         FCB 3\r03820     FCB MFORE\r03830         FDB EMIT-CFAOFF\r03840   FDB BIF+2\r03850         FDB IN-CFAOFF\r03860     FDB LIMIT-CFAOFF\r03870 * wait for key from POLCAT\r03880 KEY     PSHS Y,U,DP\r03890       CLRB\r03895      LDA #$CF a cursor\r03900         TFR B,DP\r03901  SETDP 0\r03904   LDX <$88 locate\r03906   LDB ,X save\r03908       STA ,X\r03910    JSR [$A000]\r03920       BEQ *-4\r03925   STB ,X restore\r03930 KEYR       CLRB\r03932      CMPA #3 break key\r03934         BNE *+3\r03936   COMB\r03938      EXG A,B\r03940   PULS Y,U,DP\r03942       SETDP VDP\r03945         PSHU D\r03950    NEXT\r03960 *\r03970      FCC '?TERMINAL'\r03980   FCB 9\r03990     FCB MFORE\r04000         FDB KEY-CFAOFF\r04010    FDB BIF+2\r04020         FDB QSTACK-CFAOFF\r04030         FDB 0\r04040 * check break key using POLCAT\r04050 QTERM  PSHS Y,U,DP\r04060       CLRB\r04070      TFR B,DP\r04080  JSR [$A000]\r04100       BRA KEYR\r04140 *\r04150  FCC 'CR'\r04160  FCB 2\r04170     FCB MFORE\r04180         FDB QTERM-CFAOFF\r04190  FDB BIF+2\r04200         FDB COUNT-CFAOFF\r04210  FDB 0\r04220 CR  LDB #$0D\r04230  BRA EMIT+2\r04240 *\r04250        FCC '(;CODE)'\r04260     FCB MCOMP.OR.7\r04270    FCB MFORE\r04280         FDB CR-CFAOFF\r04290     FDB BIF+2\r04300         FDB 0\r04310     FDB 0\r04320 XSCODE      LDX <UP\r04330   LDX UCURR,X being defined\r04340         LEAX CFAOFF,X\r04350     LDA AJSR,PCR\r04360      STA ,X+\r04370   STY ,X++ code address\r04380     PULS Y un-nest\r04390    NEXT\r04400 * parameters are 3 bytes beyond CFA\r04410 AJSR       JSR >0 to be compiled\r04420 *\r04440 DEVNUM      EQU $6F coco ROM constant\r04450         FCC '>PRT'\r04460        FCB 4\r04470     FCB MFORE\r04480         FDB XSCODE-CFAOFF\r04490         FDB BIF+2\r04500         FDB 0\r04510     FDB 0\r04520 TOPRT       LDB #-2\r04530   STB DEVNUM\r04540        NEXT\r04550 *\r04560      FCC '>VID'\r04570        FCB 4\r04580     FCB MFORE\r04590         FDB TOPRT-CFAOFF\r04600  FDB BIF+2\r04610         FDB 0\r04620     FDB 0\r04630 TOVID       CLR DEVNUM\r04650        NEXT\r04660 *\r04670      FCC '2*'\r04680  FCB 2\r04690     FCB MFORE\r04700         FDB TOVID-CFAOFF\r04710  FDB BIF+2\r04720         FDB 0\r04730     FDB 0\r04740 LSHIFT      LSL 1,U\r04750   ROL ,U\r04760    NEXT\r04770 *\r04780      FCC '2/'\r04790  FCB 2\r04800     FCB MFORE\r04810         FDB LSHIFT-CFAOFF\r04820         FDB BIF+2\r04830         FDB SUB2-CFAOFF\r04840   FDB THREE-CFAOFF\r04850 RSHIFT   ASR ,U\r04860    ROR 1,U\r04870   NEXT\r04880 *\r04885      FCC '(REFIND)'\r04890    FCB 8\r04895     FCB MFORE\r04900         FDB RSHIFT-CFAOFF\r04910         FDB BIF+2\r04920         FDB 0\r04930     FDB 0\r04940 * search vocabulary adr2 for first (adr1)\r04950 PREF        LDD #PFAOFF vocab flag\r04955    PSHS D,Y\r04960  LDX ,U root ptr\r04965   BEQ PREFN\r04970         BRA PREFA\r04980 PREFP   LDY 2,U hunt for\r04990  LDB ,X count\r05000      ANDB #NLMASK\r05005      BEQ PREF1\r05010         TFR B,A\r05020   NEGA\r05040      LEAX A,X hunt in\r05050 PREFS    LDA ,Y+ scan\r05060      SUBA ,X+\r05070  BNE PREFN\r05080         DECB\r05090      BNE PREFS\r05100 PREF1   LDA ,Y NUL?\r05110       BNE PREFN\r05120 PREFX   PULS D,Y\r05140  PSHU D flag\r05170       NEXT\r05180 PREFN        LDX [,U] old NFA\r05190  TSTA\r05200      BMI *+6\r05210   LDB #RTOFF\r05220        BRA *+4\r05230   LDB #LFTOFF\r05233       LEAX B,X\r05236  STB 1,S flag\r05240      STX ,U\r05250 PREFA      LDX ,X new NFA\r05260    BNE PREFP\r05280         BRA PREFX\r08200 *\r
\ No newline at end of file
+00010 * Include file for BIF
+00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
+00030 *
+03640  FCC 'EMIT'
+03650  FCB 4
+03660  FCB MFORE
+03670  FDB DLITER-CFAOFF
+03680  FDB BIF+2
+03690  FDB DUP-CFAOFF
+03700  FDB ENCLOS-CFAOFF
+03705 * output using rom CHROUT: redirectable to printer
+03710 EMIT     PULU D
+03720  TFR B,A
+03730  CLRB
+03740  PSHS Y,U,DP
+03750  TFR B,DP
+03760  JSR [$A002]
+03770  PULS Y,U,DP
+03780  NEXT
+03790 *
+03800  FCC 'KEY'
+03810  FCB 3
+03820  FCB MFORE
+03830  FDB EMIT-CFAOFF
+03840  FDB BIF+2
+03850  FDB IN-CFAOFF
+03860  FDB LIMIT-CFAOFF
+03870 * wait for key from POLCAT
+03880 KEY      PSHS Y,U,DP
+03890  CLRB
+03895  LDA #$CF a cursor
+03900  TFR B,DP
+03901  SETDP 0
+03904  LDX <$88 locate
+03906  LDB ,X save
+03908  STA ,X
+03910  JSR [$A000]
+03920  BEQ *-4
+03925  STB ,X restore
+03930 KEYR     CLRB
+03932  CMPA #3 break key
+03934  BNE *+3
+03936  COMB
+03938  EXG A,B
+03940  PULS Y,U,DP
+03942  SETDP VDP
+03945  PSHU D
+03950  NEXT
+03960 *
+03970  FCC '?TERMINAL'
+03980  FCB 9
+03990  FCB MFORE
+04000  FDB KEY-CFAOFF
+04010  FDB BIF+2
+04020  FDB QSTACK-CFAOFF
+04030  FDB 0
+04040 * check break key using POLCAT
+04050 QTERM    PSHS Y,U,DP
+04060  CLRB
+04070  TFR B,DP
+04080  JSR [$A000]
+04100  BRA KEYR
+04140 *
+04150  FCC 'CR'
+04160  FCB 2
+04170  FCB MFORE
+04180  FDB QTERM-CFAOFF
+04190  FDB BIF+2
+04200  FDB COUNT-CFAOFF
+04210  FDB 0
+04220 CR       LDB #$0D
+04230  BRA EMIT+2
+04240 *
+04250  FCC '(;CODE)'
+04260  FCB MCOMP.OR.7
+04270  FCB MFORE
+04280  FDB CR-CFAOFF
+04290  FDB BIF+2
+04300  FDB 0
+04310  FDB 0
+04320 XSCODE   LDX <UP
+04330  LDX UCURR,X being defined
+04340  LEAX CFAOFF,X
+04350  LDA AJSR,PCR
+04360  STA ,X+
+04370  STY ,X++ code address
+04380  PULS Y un-nest
+04390  NEXT
+04400 * parameters are 3 bytes beyond CFA
+04410 AJSR     JSR >0 to be compiled
+04420 *
+04440 DEVNUM   EQU $6F coco ROM constant
+04450  FCC '>PRT'
+04460  FCB 4
+04470  FCB MFORE
+04480  FDB XSCODE-CFAOFF
+04490  FDB BIF+2
+04500  FDB 0
+04510  FDB 0
+04520 TOPRT    LDB #-2
+04530  STB DEVNUM
+04540  NEXT
+04550 *
+04560  FCC '>VID'
+04570  FCB 4
+04580  FCB MFORE
+04590  FDB TOPRT-CFAOFF
+04600  FDB BIF+2
+04610  FDB 0
+04620  FDB 0
+04630 TOVID    CLR DEVNUM
+04650  NEXT
+04660 *
+04670  FCC '2*'
+04680  FCB 2
+04690  FCB MFORE
+04700  FDB TOVID-CFAOFF
+04710  FDB BIF+2
+04720  FDB 0
+04730  FDB 0
+04740 LSHIFT   LSL 1,U
+04750  ROL ,U
+04760  NEXT
+04770 *
+04780  FCC '2/'
+04790  FCB 2
+04800  FCB MFORE
+04810  FDB LSHIFT-CFAOFF
+04820  FDB BIF+2
+04830  FDB SUB2-CFAOFF
+04840  FDB THREE-CFAOFF
+04850 RSHIFT   ASR ,U
+04860  ROR 1,U
+04870  NEXT
+04880 *
+04885  FCC '(REFIND)'
+04890  FCB 8
+04895  FCB MFORE
+04900  FDB RSHIFT-CFAOFF
+04910  FDB BIF+2
+04920  FDB 0
+04930  FDB 0
+04940 * search vocabulary adr2 for first (adr1)
+04950 PREF     LDD #PFAOFF vocab flag
+04955  PSHS D,Y
+04960  LDX ,U root ptr
+04965  BEQ PREFN
+04970  BRA PREFA
+04980 PREFP    LDY 2,U hunt for
+04990  LDB ,X count
+05000  ANDB #NLMASK
+05005  BEQ PREF1
+05010  TFR B,A
+05020  NEGA
+05040  LEAX A,X hunt in
+05050 PREFS    LDA ,Y+ scan
+05060  SUBA ,X+
+05070  BNE PREFN
+05080  DECB
+05090  BNE PREFS
+05100 PREF1    LDA ,Y NUL?
+05110  BNE PREFN
+05120 PREFX    PULS D,Y
+05140  PSHU D flag
+05170  NEXT
+05180 PREFN    LDX [,U] old NFA
+05190  TSTA
+05200  BMI *+6
+05210  LDB #RTOFF
+05220  BRA *+4
+05230  LDB #LFTOFF
+05233  LEAX B,X
+05236  STB 1,S flag
+05240  STX ,U
+05250 PREFA    LDX ,X new NFA
+05260  BNE PREFP
+05280  BRA PREFX
+08200 *
index bb6b8ed..9c60fa6 100644 (file)
@@ -1 +1,111 @@
-00020 * Direct Page definitions for BIF\r00030 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r00060 * This file is dependent on BIF/M definitions\r00100 DPAGE     EQU *\r00105 VDP EQU DPAGE/256\r00110 * ORG needs to leave space for this code\r00120      SETDP VDP\r00130 * COLD needs to load VDP into DP register\r00500 *\r00510 * Direct Page variables\r00600 UP        RMB 2\r00610     RMB 8 spares\r01000 *\r01010 * nest into icode list\r01020 * call by JSR\r01030 XCOL        LDX ,S  list ptr\r01040  STY ,S  nest old\r01050  TFR X,Y interpret\r01060         NEXT\r01070 *\r01080 * PUSH FOLLOWING WORD\r01090 * call by JSR for CONSTANT\r01100 XCON    LDD [,S++]\r01110        PSHU D\r01120    NEXT\r01130 *\r01140 * push following address\r01150 * call by JSR for VARIABLE address\r01160 XVAR PULS D\r01170    PSHU D\r01180    NEXT\r01190 * (same code as R>, but in DP)\r01200 *\r01210 * push address of USER variable\r01215 * call by JSR\r01220 XUSER LDB [,S++]      one byte offset\r01225   CLRA\r01230      ADDD <UP\r01240  PSHU D\r01250    NEXT\r01260 *\r01300 * push address of LINEAR array entry\r01305 * call by JSR\r01310 X1ARR PULS X\r01320    LDD ,U index\r01330      SUBD ,X base\r01340      CMPD 2,X width\r01350    BLO X1ARRS\r01360        LDD #$0C\r01365  PSHU D\r01370    JMP ERROR\r01380 X1ARRS  PSHS A\r01390    LDA 4,X size\r01400      MUL\r01410       STD ,U\r01420    PULS A ms byte\r01430    LDB 4,X\r01440   MUL\r01450       TFR B,A\r01460   ADDA ,U\r01470   LDB 1,U\r01480   LEAX 5,X past header\r01490      LEAX D,X\r01500  STX ,U\r01510    NEXT\r01520 * LINEAR array header format:\r01530 *        FDB BASE (lowest index)\r01540 * FDB WIDTH (# of elements)\r01550 *       FCB SIZE (< 256 bytes / element)\r01560 *        RMB SIZE*WIDTH (data)\r01700 *\r01710 * push content of USER variable\r01715 * call by JSR\r01720 XUCON     LDX <UP\r01722   LDB [,S++]      one byte offset\r01725   CLRA\r01730      LDD D,X\r01740   PSHU D\r01750    NEXT\r01800 *\r01802 * store VOCABULARY pointer in root\r01805 * call by JSR\r01810 XVOC    LDX <UP\r01820   PULS D\r01830    STD UROOT,X\r01840       NEXT\r01850 *\r01860 * indirect into icode list following\r01870 * DOES> in defining definition\r01880 * call by JSR\r01890 XDOES    LDX ,S pfa\r01900        LDD ,X++        list ptr\r01920  PSHU X  parameters\r01930        STY ,S  nest old\r01940  TFR D,Y interpret\r01950         NEXT\r01960 *\r02000 * push double constant\r02010 * call by JSR\r02020 XDCON       PULS X\r02030    LDD ,X++\r02040  LDX ,X++\r02050  PSHU D,X\r02060  NEXT\r02070 *\r40000      ORG DPAGE+256 if code fits\r40010        SETDP 0 not yet valid\r
\ No newline at end of file
+00020 * Direct Page definitions for BIF
+00030 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
+00060 * This file is dependent on BIF/M definitions
+00100 DPAGE    EQU *
+00105 VDP      EQU DPAGE/256
+00110 * ORG needs to leave space for this code
+00120  SETDP VDP
+00130 * COLD needs to load VDP into DP register
+00500 *
+00510 * Direct Page variables
+00600 UP       RMB 2
+00610  RMB 8 spares
+01000 *
+{      bifc_vm.c 
+01010 * nest into icode list
+01020 * call by JSR
+01030 XCOL     LDX ,S  list ptr
+01040  STY ,S  nest old
+01050  TFR X,Y interpret
+01060  NEXT
+01070 *
+}
+{      symbol.c
+01080 * PUSH FOLLOWING WORD
+01090 * call by JSR for CONSTANT
+01100 XCON     LDD [,S++]
+01110  PSHU D
+01120  NEXT
+01130 *
+01140 * push following address
+01150 * call by JSR for VARIABLE address
+01160 XVAR     PULS D
+01170  PSHU D
+01180  NEXT
+01190 * (same code as R>, but in DP)
+01200 *
+01210 * push address of USER variable
+01215 * call by JSR
+01220 XUSER    LDB [,S++]      one byte offset
+01225  CLRA
+01230  ADDD <UP
+01240  PSHU D
+01250  NEXT
+01260 *
+01300 * push address of LINEAR array entry
+01305 * call by JSR
+01310 X1ARR    PULS X
+01320  LDD ,U index
+01330  SUBD ,X base
+01340  CMPD 2,X width
+01350  BLO X1ARRS
+01360  LDD #$0C
+01365  PSHU D
+01370  JMP ERROR
+01380 X1ARRS   PSHS A
+01390  LDA 4,X size
+01400  MUL
+01410  STD ,U
+01420  PULS A ms byte
+01430  LDB 4,X
+01440  MUL
+01450  TFR B,A
+01460  ADDA ,U
+01470  LDB 1,U
+01480  LEAX 5,X past header
+01490  LEAX D,X
+01500  STX ,U
+01510  NEXT
+01520 * LINEAR array header format:
+01530 *        FDB BASE (lowest index)
+01540 *        FDB WIDTH (# of elements)
+01550 *        FCB SIZE (< 256 bytes / element)
+01560 *        RMB SIZE*WIDTH (data)
+01700 *
+01710 * push content of USER variable
+01715 * call by JSR
+01720 XUCON    LDX <UP
+01722  LDB [,S++]      one byte offset
+01725  CLRA
+01730  LDD D,X
+01740  PSHU D
+01750  NEXT
+01800 *
+01802 * store VOCABULARY pointer in root
+01805 * call by JSR
+01810 XVOC     LDX <UP
+01820  PULS D
+01830  STD UROOT,X
+01840  NEXT
+01850 *
+01860 * indirect into icode list following
+01870 * DOES> in defining definition
+01880 * call by JSR
+01890 XDOES    LDX ,S pfa
+01900  LDD ,X++        list ptr
+01920  PSHU X  parameters
+01930  STY ,S  nest old
+01940  TFR D,Y interpret
+01950  NEXT
+01960 *
+02000 * push double constant
+02010 * call by JSR
+02020 XDCON    PULS X
+02030  LDD ,X++
+02040  LDX ,X++
+02050  PSHU D,X
+02060  NEXT
+02070 *
+}
+40000  ORG DPAGE+256 if code fits
+40010  SETDP 0 not yet valid
index f339534..6aae8ad 100644 (file)
@@ -1 +1,174 @@
-00000010 * Start up routines for BIF\r00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r00100 *\r00105 ILIM     EQU $8000 memory\r00110 IBUFF    EQU ILIM-BCT*(BWID+4)\r00120 IPAD        EQU IBUFF-TWID max\r00130 IHASH  EQU IPAD-34\r00140 IWPAD EQU IHASH-NLMASK-2\r00150 ITIB   EQU IWPAD-TWID\r00160 IUSER      EQU ITIB-UEND\r00170 IRP0        EQU IUSER-2\r00180 ISP0  EQU IRP0-258\r00190 * dictionary below here\r00400 *\r00410 ORIG   EQU * initials for task 0, offsets\r00420        NOP 0\r00430     JMP COLD 1\r00440        NOP 4\r00450     JMP WARM 5\r00460        FDB $6809 cpu 8\r00470   FDB 0 rev $0A\r00480     FDB FORGET-CFAOFF CURRENT for COLD $0C\r00490    FDB 8 backspace $0E\r00500       FDB IUSER task 0 user area $10\r00510    FDB ISP0 $12\r00520      FDB IRP0 $14\r00530      FDB ITIB $16\r00540      FDB NLMASK not used $18\r00550   FDB 1 WARNING $1A\r00560         FDB FOLLOW-1 FENCE for COLD $1C\r00570   FDB FOLLOW DP for COLD $1E\r00580        FDB BIF+2 defs root $20\r00590   FDB IPAD $22\r00600      FDB IWPAD $24\r00610     FDB 32 terminal columns $26\r00620       FDB IBUFF $28\r00630     FDB ILIM $2A\r01000 *\r01010      FCC 'COLD'\r01020        FCB 4\r01030     FCB MFORE\r01040         FDB 0\r01050     FDB BIF+2\r01060         FDB 0\r01070     FDB 0\r01080 COLD        LEAY DOREGS,PCR\r01090   EXG PC,Y call\r01100     SETDP VDP\r01110         CLR $71 for BASIC reset\r01120   LDD -4,Y\r01130  STD UCURR,X\r01140       LDD $0C,Y\r01150         STD UFENCE,X\r01160      LDD $0E,Y\r01170         STD UDP,X\r01180         LDD $10,Y\r01190         STD UROOT,X\r01200       STD UDROOT,X\r01210      PSHU D     Initial vocabularies\r01220   BSR PRUNE  must ALL be PRUNEd!\r01230    LDD #EDITOR+2\r01240     PSHU D\r01250    BSR PRUNE\r01260         LDD #ASMBLR+2\r01270     PSHU D\r01280    BSR PRUNE\r01290         JMP WARM+5\r01300        SETDP 0\r01310 * Watch stack (vocabulary) depth!\r01315   SETDP VDP\r01320 PRUNE   PSHS D,X,Y\r01330        LDY <UP\r01340   LDX ,U++ vocab\r01344    BEQ PRUNEX+2\r01348      LDD ,X root\r01352       BEQ PRUNEX+2\r01356      CMPD UFENCE,Y\r01360     BLS PRUNSK\r01364        LDD #0\r01368    STD ,X\r01372    BRA PRUNEX+2\r01376 PRUNSK       TFR D,X\r01380   LDD #0\r01386    PSHS D mark\r01390 PRUNL LDD RTOFF,X\r01400       BEQ PRUNLF\r01410        CMPD UFENCE,Y\r01420     BLS PRUNLF-2\r01430      LDD #0 make leaf\r01440  STD RTOFF,X\r01450       BRA PRUNLF\r01460        PSHS D for later\r01470 PRUNLF   LDD LFTOFF,X\r01480      BEQ PRUNEX-2\r01490      CMPD UFENCE,Y\r01500     BHI PRUNL0\r01510        TFR D,X go left\r01520   BRA PRUNL\r01530 PRUNL0  LDD #0 make leaf\r01540  STD LFTOFF,X\r01550      LDX ,S++ go right?\r01560 PRUNEX BNE PRUNL\r01570         PULS D,X,Y,PC\r01580     SETDP 0\r01590 *\r02000   SETDP 0\r02010 DOREGS    LDS #IRP0\r02020         PSHS CC save\r02030      ORCC #$50 mask ints\r02040       PSHS Y return adr\r02050         LDD #DPAGE\r02060        TFR A,DP\r02070  SETDP VDP\r02080         LDY #ORIG+$10\r02090     LDX ,Y\r02100    STX <UP\r02110   LDU #ISP0\r02120         LDD #0\r02130    STD >0 trap [NULL]s\r02140       RTS\r02150       SETDP 0\r02160 *\r02230   FCC 'WARM'\r02240        FCB 4\r02250     FCB MFORE\r02260         FDB COLD-CFAOFF\r02270   FDB BIF+2\r02280         FDB VLIST-CFAOFF\r02290  FDB WARN-CFAOFF\r02300 WARM      LEAY <DOREGS,PCR\r02310  EXG PC,Y call\r02320     SETDP VDP\r02360         LDD 2,Y\r02370   STD US0,X\r02380         STD UCSP,X\r02390        LDD 4,Y\r02400   STD UR0,X\r02410         LDD -2,Y\r02420  STD UBS,X\r02430         LDD 6,Y\r02440   STD UTIB,X\r02450        LDD $0A,Y\r02460         STD UWARN,X\r02470       LEAY $10,Y\r02480        LDD 2,Y\r02490   STD UPAD,X\r02500        STD UHLD,X\r02510        LDD 4,Y\r02520   STD UWP,X\r02530         LDD 6,Y\r02540   STD UCOLUM,X\r02550      LDD 8,Y\r02560   STD UFIRST,X\r02570      STD UUSE,X\r02580        STD UPREV,X\r02590       LDD $0A,Y\r02600         STD ULIMIT,X\r02610      LDD #16\r02620   STD UBASE,X\r02630       LDD #0\r02640    STD [UR0,X] hole\r02650  STD [US0,X] hole\r02660  LDA #(UEND-UIN)\r02670   LEAY UIN,X\r02680 WARMLY STB ,Y+\r02690   DECA\r02700      BNE WARMLY\r02740        PULS CC\r02745   ANDCC #$EF enable IRQ (disc)\r02750      DOCOL\r02760     FDB EMTBUF\r02770        FDB ABORT\r02780         SETDP 0\r02890 *\r
\ No newline at end of file
+00000010 * Start up routines for BIF
+00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
+00100 *
+00105 ILIM     EQU $8000 memory
+00110 IBUFF    EQU ILIM-BCT*(BWID+4)
+00120 IPAD     EQU IBUFF-TWID max
+00130 IHASH    EQU IPAD-34
+00140 IWPAD    EQU IHASH-NLMASK-2
+00150 ITIB     EQU IWPAD-TWID
+00160 IUSER    EQU ITIB-UEND
+00170 IRP0     EQU IUSER-2
+00180 ISP0     EQU IRP0-258
+00190 * dictionary below here
+00400 *
+00410 ORIG     EQU * initials for task 0, offsets
+00420  NOP 0
+00430  JMP COLD 1
+00440  NOP 4
+00450  JMP WARM 5
+00460  FDB $6809 cpu 8
+00470  FDB 0 rev $0A
+00480  FDB FORGET-CFAOFF CURRENT for COLD $0C
+00490  FDB 8 backspace $0E
+00500  FDB IUSER task 0 user area $10
+00510  FDB ISP0 $12
+00520  FDB IRP0 $14
+00530  FDB ITIB $16
+00540  FDB NLMASK not used $18
+00550  FDB 1 WARNING $1A
+00560  FDB FOLLOW-1 FENCE for COLD $1C
+00570  FDB FOLLOW DP for COLD $1E
+00580  FDB BIF+2 defs root $20
+00590  FDB IPAD $22
+00600  FDB IWPAD $24
+00610  FDB 32 terminal columns $26
+00620  FDB IBUFF $28
+00630  FDB ILIM $2A
+01000 *
+01010  FCC 'COLD'
+01020  FCB 4
+01030  FCB MFORE
+01040  FDB 0
+01050  FDB BIF+2
+01060  FDB 0
+01070  FDB 0
+01080 COLD     LEAY DOREGS,PCR
+01090  EXG PC,Y call
+01100  SETDP VDP
+01110  CLR $71 for BASIC reset
+01120  LDD -4,Y
+01130  STD UCURR,X
+01140  LDD $0C,Y
+01150  STD UFENCE,X
+01160  LDD $0E,Y
+01170  STD UDP,X
+01180  LDD $10,Y
+01190  STD UROOT,X
+01200  STD UDROOT,X
+01210  PSHU D     Initial vocabularies
+01220  BSR PRUNE  must ALL be PRUNEd!
+01230  LDD #EDITOR+2
+01240  PSHU D
+01250  BSR PRUNE
+01260  LDD #ASMBLR+2
+01270  PSHU D
+01280  BSR PRUNE
+01290  JMP WARM+5
+01300  SETDP 0
+01310 * Watch stack (vocabulary) depth!
+01315  SETDP VDP
+01320 PRUNE    PSHS D,X,Y
+01330  LDY <UP
+01340  LDX ,U++ vocab
+01344  BEQ PRUNEX+2
+01348  LDD ,X root
+01352  BEQ PRUNEX+2
+01356  CMPD UFENCE,Y
+01360  BLS PRUNSK
+01364  LDD #0
+01368  STD ,X
+01372  BRA PRUNEX+2
+01376 PRUNSK   TFR D,X
+01380  LDD #0
+01386  PSHS D mark
+01390 PRUNL    LDD RTOFF,X
+01400  BEQ PRUNLF
+01410  CMPD UFENCE,Y
+01420  BLS PRUNLF-2
+01430  LDD #0 make leaf
+01440  STD RTOFF,X
+01450  BRA PRUNLF
+01460  PSHS D for later
+01470 PRUNLF   LDD LFTOFF,X
+01480  BEQ PRUNEX-2
+01490  CMPD UFENCE,Y
+01500  BHI PRUNL0
+01510  TFR D,X go left
+01520  BRA PRUNL
+01530 PRUNL0   LDD #0 make leaf
+01540  STD LFTOFF,X
+01550  LDX ,S++ go right?
+01560 PRUNEX   BNE PRUNL
+01570  PULS D,X,Y,PC
+01580  SETDP 0
+01590 *
+02000  SETDP 0
+02010 DOREGS   LDS #IRP0
+02020  PSHS CC save
+02030  ORCC #$50 mask ints
+02040  PSHS Y return adr
+02050  LDD #DPAGE
+02060  TFR A,DP
+02070  SETDP VDP
+02080  LDY #ORIG+$10
+02090  LDX ,Y
+02100  STX <UP
+02110  LDU #ISP0
+02120  LDD #0
+02130  STD >0 trap [NULL]s
+02140  RTS
+02150  SETDP 0
+02160 *
+02230  FCC 'WARM'
+02240  FCB 4
+02250  FCB MFORE
+02260  FDB COLD-CFAOFF
+02270  FDB BIF+2
+02280  FDB VLIST-CFAOFF
+02290  FDB WARN-CFAOFF
+02300 WARM     LEAY <DOREGS,PCR
+02310  EXG PC,Y call
+02320  SETDP VDP
+02360  LDD 2,Y
+02370  STD US0,X
+02380  STD UCSP,X
+02390  LDD 4,Y
+02400  STD UR0,X
+02410  LDD -2,Y
+02420  STD UBS,X
+02430  LDD 6,Y
+02440  STD UTIB,X
+02450  LDD $0A,Y
+02460  STD UWARN,X
+02470  LEAY $10,Y
+02480  LDD 2,Y
+02490  STD UPAD,X
+02500  STD UHLD,X
+02510  LDD 4,Y
+02520  STD UWP,X
+02530  LDD 6,Y
+02540  STD UCOLUM,X
+02550  LDD 8,Y
+02560  STD UFIRST,X
+02570  STD UUSE,X
+02580  STD UPREV,X
+02590  LDD $0A,Y
+02600  STD ULIMIT,X
+02610  LDD #16
+02620  STD UBASE,X
+02630  LDD #0
+02640  STD [UR0,X] hole
+02650  STD [US0,X] hole
+02660  LDA #(UEND-UIN)
+02670  LEAY UIN,X
+02680 WARMLY   STB ,Y+
+02690  DECA
+02700  BNE WARMLY
+02740  PULS CC
+02745  ANDCC #$EF enable IRQ (disc)
+02750  DOCOL
+02760  FDB EMTBUF
+02770  FDB ABORT
+02780  SETDP 0
+02890 *
index 6a97696..3d681d0 100644 (file)
@@ -1 +1,43 @@
-00010 * USER variable definitions for BIF\r00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r00100 * INCLUDE THIS BEFORE SETTING DPR\r00110 * ORG used here for offsets only\r00120      ORG 0\r00130 US0 RMB 2   base of data stack (6809 U)\r00140 UR0   RMB 2   base of control stack (6809 S)\r00150 UTIB       RMB 2   terminal buffer\r00160   RMB 2   width is not used\r00170 UWARN   RMB 2   disk on line?\r00180 UFENCE      RMB 2   for FORGET\r00190 UDP    RMB 2   first available byte in dictionary\r00200 UROOT  RMB 2   current dictionary root pointer\r00210 UDROOT    RMB 2   defining dictionary root pointer\r00220 UCURR    RMB 2   NFA of last definition\r00230 UPAD       RMB 2   text, numeric scratch buffers\r00240 UWP RMB 2   WORD buffer pointer\r00250 UCOLUM        RMB 2   columns per lineon terminal\r00260 UFIRST        RMB 2   byte of buffers\r00270 ULIMIT    RMB 2   of buffer ram\r00280 UBASE       RMB 2   of numeric conversion\r00290 UCSP        RMB 2   stack pointer check\r00300 UHLD  RMB 2   character mark in pad\r00310 UUSE        RMB 2   Least Recently Used buffer\r00320 UPREV  RMB 2   Most Recently Used buffer\r00330 UBS     RMB 2   BackSpace\r00340 UIN     RMB 2   input buffer offset\r00350 UOUT  RMB 2   output buffer offset (cursor)\r00360 UBLK        RMB 2   active disc block\r00370 UEBLK   RMB 2   active edit block\r00380 USCR    RMB 2   active disc screen\r00390 URNUM  RMB 2   editing offset (cursor)\r00400 UOFFS     RMB 2   to active drive\r00410 USTATE    RMB 2   of compiler\r00420 UDPL  RMB 2   output Decimal Point Location\r00430 UFLD        RMB 2   output field width\r00440 UVMK   RMB 2   stack mark and function for VISIT\r00450 UFORE   RMB 2   FOREWARD reference block link\r00460 UDPR        RMB 2   Direct Page Emulator for Assembler\r00990        RMB 16  8 spares \r01000 UEND    EQU * \r
\ No newline at end of file
+00010 * USER variable definitions for BIF
+00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
+00100 * INCLUDE THIS BEFORE SETTING DPR
+00110 * ORG used here for offsets only
+{      userAllocations.h
+00120  ORG 0
+00130 US0      RMB 2   base of data stack (6809 U)
+00140 UR0      RMB 2   base of control stack (6809 S)
+00150 UTIB     RMB 2   terminal buffer
+00160  RMB 2   width is not used
+00170 UWARN    RMB 2   disk on line?
+00180 UFENCE   RMB 2   for FORGET
+00190 UDP      RMB 2   first available byte in dictionary
+00200 UROOT    RMB 2   current dictionary root pointer
+00210 UDROOT   RMB 2   defining dictionary root pointer
+00220 UCURR    RMB 2   NFA of last definition
+00230 UPAD     RMB 2   text, numeric scratch buffers
+00240 UWP      RMB 2   WORD buffer pointer
+00250 UCOLUM   RMB 2   columns per lineon terminal
+00260 UFIRST   RMB 2   byte of buffers
+00270 ULIMIT   RMB 2   of buffer ram
+00280 UBASE    RMB 2   of numeric conversion
+00290 UCSP     RMB 2   stack pointer check
+00300 UHLD     RMB 2   character mark in pad
+00310 UUSE     RMB 2   Least Recently Used buffer
+00320 UPREV    RMB 2   Most Recently Used buffer
+00330 UBS      RMB 2   BackSpace
+00340 UIN      RMB 2   input buffer offset
+00350 UOUT     RMB 2   output buffer offset (cursor)
+00360 UBLK     RMB 2   active disc block
+00370 UEBLK    RMB 2   active edit block
+00380 USCR     RMB 2   active disc screen
+00390 URNUM    RMB 2   editing offset (cursor)
+00400 UOFFS    RMB 2   to active drive
+00410 USTATE   RMB 2   of compiler
+00420 UDPL     RMB 2   output Decimal Point Location
+00430 UFLD     RMB 2   output field width
+00440 UVMK     RMB 2   stack mark and function for VISIT
+00450 UFORE    RMB 2   FOREWARD reference block link
+00460 UDPR     RMB 2   Direct Page Emulator for Assembler
+}
+00990  RMB 16  8 spares 
+01000 UEND     EQU *