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