1 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