1 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