-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
-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 *
+}
-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 *
-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 *
-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 *
-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 *
-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 *
-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 *
-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 *
-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 *
-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 *
-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 *
-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 *
-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 *
-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 *
-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 *
-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 *
-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
-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 *
-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 *