OSDN Git Service

line endings will now work for diff, etc.
[bif-6809/bif-6809.git] / cross_v / BIFST.ASM
1 00000010 * Start up routines for BIF
2 00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
3 00100 *
4 00105 ILIM      EQU $8000 memory
5 00110 IBUFF     EQU ILIM-BCT*(BWID+4)
6 00120 IPAD      EQU IBUFF-TWID max
7 00130 IHASH     EQU IPAD-34
8 00140 IWPAD     EQU IHASH-NLMASK-2
9 00150 ITIB      EQU IWPAD-TWID
10 00160 IUSER     EQU ITIB-UEND
11 00170 IRP0      EQU IUSER-2
12 00180 ISP0      EQU IRP0-258
13 00190 * dictionary below here
14 00400 *
15 00410 ORIG      EQU * initials for task 0, offsets
16 00420   NOP 0
17 00430   JMP COLD 1
18 00440   NOP 4
19 00450   JMP WARM 5
20 00460   FDB $6809 cpu 8
21 00470   FDB 0 rev $0A
22 00480   FDB FORGET-CFAOFF CURRENT for COLD $0C
23 00490   FDB 8 backspace $0E
24 00500   FDB IUSER task 0 user area $10
25 00510   FDB ISP0 $12
26 00520   FDB IRP0 $14
27 00530   FDB ITIB $16
28 00540   FDB NLMASK not used $18
29 00550   FDB 1 WARNING $1A
30 00560   FDB FOLLOW-1 FENCE for COLD $1C
31 00570   FDB FOLLOW DP for COLD $1E
32 00580   FDB BIF+2 defs root $20
33 00590   FDB IPAD $22
34 00600   FDB IWPAD $24
35 00610   FDB 32 terminal columns $26
36 00620   FDB IBUFF $28
37 00630   FDB ILIM $2A
38 01000 *
39 01010   FCC 'COLD'
40 01020   FCB 4
41 01030   FCB MFORE
42 01040   FDB 0
43 01050   FDB BIF+2
44 01060   FDB 0
45 01070   FDB 0
46 01080 COLD      LEAY DOREGS,PCR
47 01090   EXG PC,Y call
48 01100   SETDP VDP
49 01110   CLR $71 for BASIC reset
50 01120   LDD -4,Y
51 01130   STD UCURR,X
52 01140   LDD $0C,Y
53 01150   STD UFENCE,X
54 01160   LDD $0E,Y
55 01170   STD UDP,X
56 01180   LDD $10,Y
57 01190   STD UROOT,X
58 01200   STD UDROOT,X
59 01210   PSHU D     Initial vocabularies
60 01220   BSR PRUNE  must ALL be PRUNEd!
61 01230   LDD #EDITOR+2
62 01240   PSHU D
63 01250   BSR PRUNE
64 01260   LDD #ASMBLR+2
65 01270   PSHU D
66 01280   BSR PRUNE
67 01290   JMP WARM+5
68 01300   SETDP 0
69 01310 * Watch stack (vocabulary) depth!
70 01315   SETDP VDP
71 01320 PRUNE     PSHS D,X,Y
72 01330   LDY <UP
73 01340   LDX ,U++ vocab
74 01344   BEQ PRUNEX+2
75 01348   LDD ,X root
76 01352   BEQ PRUNEX+2
77 01356   CMPD UFENCE,Y
78 01360   BLS PRUNSK
79 01364   LDD #0
80 01368   STD ,X
81 01372   BRA PRUNEX+2
82 01376 PRUNSK    TFR D,X
83 01380   LDD #0
84 01386   PSHS D mark
85 01390 PRUNL     LDD RTOFF,X
86 01400   BEQ PRUNLF
87 01410   CMPD UFENCE,Y
88 01420   BLS PRUNLF-2
89 01430   LDD #0 make leaf
90 01440   STD RTOFF,X
91 01450   BRA PRUNLF
92 01460   PSHS D for later
93 01470 PRUNLF    LDD LFTOFF,X
94 01480   BEQ PRUNEX-2
95 01490   CMPD UFENCE,Y
96 01500   BHI PRUNL0
97 01510   TFR D,X go left
98 01520   BRA PRUNL
99 01530 PRUNL0    LDD #0 make leaf
100 01540   STD LFTOFF,X
101 01550   LDX ,S++ go right?
102 01560 PRUNEX    BNE PRUNL
103 01570   PULS D,X,Y,PC
104 01580   SETDP 0
105 01590 *
106 02000   SETDP 0
107 02010 DOREGS    LDS #IRP0
108 02020   PSHS CC save
109 02030   ORCC #$50 mask ints
110 02040   PSHS Y return adr
111 02050   LDD #DPAGE
112 02060   TFR A,DP
113 02070   SETDP VDP
114 02080   LDY #ORIG+$10
115 02090   LDX ,Y
116 02100   STX <UP
117 02110   LDU #ISP0
118 02120   LDD #0
119 02130   STD >0 trap [NULL]s
120 02140   RTS
121 02150   SETDP 0
122 02160 *
123 02230   FCC 'WARM'
124 02240   FCB 4
125 02250   FCB MFORE
126 02260   FDB COLD-CFAOFF
127 02270   FDB BIF+2
128 02280   FDB VLIST-CFAOFF
129 02290   FDB WARN-CFAOFF
130 02300 WARM      LEAY <DOREGS,PCR
131 02310   EXG PC,Y call
132 02320   SETDP VDP
133 02360   LDD 2,Y
134 02370   STD US0,X
135 02380   STD UCSP,X
136 02390   LDD 4,Y
137 02400   STD UR0,X
138 02410   LDD -2,Y
139 02420   STD UBS,X
140 02430   LDD 6,Y
141 02440   STD UTIB,X
142 02450   LDD $0A,Y
143 02460   STD UWARN,X
144 02470   LEAY $10,Y
145 02480   LDD 2,Y
146 02490   STD UPAD,X
147 02500   STD UHLD,X
148 02510   LDD 4,Y
149 02520   STD UWP,X
150 02530   LDD 6,Y
151 02540   STD UCOLUM,X
152 02550   LDD 8,Y
153 02560   STD UFIRST,X
154 02570   STD UUSE,X
155 02580   STD UPREV,X
156 02590   LDD $0A,Y
157 02600   STD ULIMIT,X
158 02610   LDD #16
159 02620   STD UBASE,X
160 02630   LDD #0
161 02640   STD [UR0,X] hole
162 02650   STD [US0,X] hole
163 02660   LDA #(UEND-UIN)
164 02670   LEAY UIN,X
165 02680 WARMLY    STB ,Y+
166 02690   DECA
167 02700   BNE WARMLY
168 02740   PULS CC
169 02745   ANDCC #$EF enable IRQ (disc)
170 02750   DOCOL
171 02760   FDB EMTBUF
172 02770   FDB ABORT
173 02780   SETDP 0
174 02890 *