00001 ************************************************************************ 00002 * * 00003 * EUROTEXT: 211, Multilanguage VPS * 00004 * * 00005 ************************************************************************ 00006 * * 00007 * Based on ET8-203 which was originaly based on ET8-22B code: * 00008 * * 00009 * ET8-22: Trevor Jones * 00010 * 8/30 reception bug correction * 00011 * EVEN/ODD field signal correction * 00012 * 8/30 status channel change bug correction * 00013 * Addition of alternate MUTE mode * 00014 * Correction of BTT update bug * 00015 * Correction bad hamming in PLT bug * 00016 * Correction of CHNG I2C lock up bug * 00017 * Addition of Subtitle Browse * 00018 * Addition of MODE2 row24 display inhibit * 00019 * * 00020 ************************************************************************ 00021 * * 00022 * VPS, started April 94 * 00023 * * 00024 * 209-00-0 * 00025 * Initial Code * 00026 * Removed R24LAN register * 00027 * Removed all unessesary ORG equates * 00028 * Ukrainian Language Translation added * 00029 * * 00030 * 209-01-0 * 00031 * Removed 'STOP' option from hold command * 00032 * * 00033 * 209-02-0 * 00034 * Removed termination of downloaded data by ESC char * 00035 * * 00036 * 209-03-0 Trevor Jones * 00037 * Correction of I2C lockup problems due * 00038 * to I2C reads. * 00039 * * 00040 ************************************************************************ 00041 * * 00042 * 211, started July 94 * 00043 * * 00044 * 211-00-0 * 00045 * Initial Code, copied from 209-03-0 * 00046 * * 00047 ************************************************************************ 00048 * * 00049 * WSS, started July 95 * 00050 * * 00051 * 206-00-0 * 00052 * Initial code * 00053 * * 00054 ************************************************************************ 00055 * * 00056 .IDT '206-01-1' *8 character label for .OBJ file * 00057 .SIZ >E00; *3.5K ROM, SHC says he needs 144 words * 00058 .TITL 'EUROTEXT Application Microcode' * 00059 .ETFO * EUROTEXT format, 64 bit object and no variable bit reverse * 00060 .OUT 56; * Make Microcode assembler produce 56 bit wide uCode for Ikos * 00061 * * 00062 *### marks interesting points for future reference (eg bits where code * 00063 * could be compressed) * 00064 * * 00065 *Design rules:- -RVDP before TPD * 00066 * -one instruction between JBYTE and CBRDY * 00067 * -if RVDP and Y>DR in the same instruction, TPD will * 00068 * be updated in the next instruction and the write will * 00069 * occur in the next instruction * 00070 * -can't do a RVDP in the instruction after a Y>DR * 00071 * * 00072 *Assembler:- * 00073 * -does not error jumps to non-existent .ORGs * 00074 * * 00075 * section 1: poll for event * 00076 * section 2: recieve teletext line * 00077 * section 3: VBI post processing * 00078 * section 4: service interface * 00079 * section 5: sub-routines * 00080 * section 6: initialisation * 00081 * section 7: misc/ temporary * 00082 *----------------------------------------------------------------------* 00083 * C 00084 * P AB JJJD P RVB AAAABBBB 00085 * CERFFLL MMML< ROM > L< RAM > VDR CE MMMMMMMM 00086 * MMMEEDD PPPD D DPDSSIXWSSSSSSSS 00087 * SSA10TT 210TBA9876543210 T654321076543210 PCY10NTE32103210 00088 * ||||||| |||||||||||||||| |||||||||||||||| |||||||||||||||| 00089 *A INPUT TO ALU 00090 .DEF A(?), 0000000 0000000000000000 00000000???????? 00000000ZZZZ0000; 00091 .DEF AR>A, 0000000 0000000000000000 0000000000000000 00000000ZZZ10000; 00092 .DEF ARHI>A, 0000000 0000000000000000 0000000000000000 00000000ZZ1Z0000; 00093 .DEF AR<<4>A, 0000000 0000000000000000 0000000000000000 00000000ZZ110000; 00094 .DEF NAR>A, 0000000 0000000000000000 0000000000000000 00000000Z1ZZ0000; 00095 .DEF AR<<3>A, 0000000 0000000000000000 0000000000000000 00000000Z1Z10000; 00096 .DEF NAR.0F>A, 0000000 0000000000000000 0000000000000000 00000000Z11Z0000; 00097 .DEF PCL>A, 0000000 0000000000000000 0000000000000000 00000000Z1110000; 00098 .DEF CTL>A, 0000000 0000000000000000 0000000000000000 000000001ZZZ0000; 00099 .DEF TPD>A, 0000000 0000000000000000 0000000000000000 000000001ZZ10000; 00100 .DEF TPD.0F>A, 0000000 0000000000000000 0000000000000000 000000001Z1Z0000; 00101 .DEF TPD.F0>A, 0000000 0000000000000000 0000000000000000 000000001Z110000; 00102 .DEF AR.0F>A, 0000000 0000000000000000 0000000000000000 0000000011ZZ0000; 00103 .DEF AR.F0>A, 0000000 0000000000000000 0000000000000000 0000000011Z10000; 00104 .DEF AR>>1>A, 0000000 0000000000000000 0000000000000000 00000000111Z0000; 00105 *B INPUT TO ALU 00106 .DEF B(?), 0000000 0000000000000000 00000000???????? 000000000000ZZZZ; 00107 .DEF BR>B, 0000000 0000000000000000 0000000000000000 000000000000ZZZ1; 00108 .DEF BR.0F>B, 0000000 0000000000000000 0000000000000000 000000000000ZZ1Z; 00109 .DEF BR.F0>B, 0000000 0000000000000000 0000000000000000 000000000000ZZ11; 00110 .DEF BR>>4>B, 0000000 0000000000000000 0000000000000000 000000000000Z1ZZ; 00111 .DEF AR<<5>B, 0000000 0000000000000000 0000000000000000 0000000000001ZZ1; 00112 .DEF RCD>B, 0000000 0000000000000000 0000000000000000 0000000000001Z1Z; 00113 .DEF RCS>B, 0000000 0000000000000000 0000000000000000 0000000000001Z11; 00114 .DEF BRHI>B, 0000000 0000000000000000 0000000000000000 00000000000011ZZ; 00115 .DEF PLL>B, 0000000 0000000000000000 0000000000000000 000000000000111Z; 00116 .DEF GPIO>B, 0000000 0000000000000000 0000000000000000 0000000000001111; 00117 *A AND B INPUT TO ALU 00118 .DEF Y(?), 0000000 0000000000000000 00000000???????? 0001Z000ZZZZZZZZ; 00119 *FRONT END DEFS 00120 .DEF DATA>B, 000ZZ00 0000000000000000 0000000000000000 000000000000Z1Z1; 00121 .DEF PTY>B, 000Z100 0000000000000000 0000000000000000 000000000000Z1Z1; 00122 .DEF HAM>B, 0001Z00 0000000000000000 0000000000000000 000000000000Z111; 00123 .DEF ROW>B, 0001100 0000000000000000 0000000000000000 000000000000Z1Z1; 00124 .DEF P26AD>B, 000ZZ00 0000000000000000 0000000000000000 0000000000001ZZZ; 00125 .DEF P26MO>B, 000Z100 0000000000000000 0000000000000000 0000000000001ZZZ; 00126 .DEF P26CH>B, 0001Z00 0000000000000000 0000000000000000 0000000000001ZZZ; 00127 .DEF CBRDY, 0000000 0000000000000000 0000000000000000 0010000000000000; 00128 *ALU OPERATIONS 00129 .DEF ADD, 0000000 0000000000000000 0000000000000000 000ZZ00000000000; 00130 .DEF AND, 0000000 0000000000000000 0000000000000000 000Z100000000000; 00131 .DEF OR, 0000000 0000000000000000 0000000000000000 0001Z00000000000; 00132 .DEF XOR, 0000000 0000000000000000 0000000000000000 0001100000000000; 00133 .DEF BIT8, 0000000 0000000000000000 0000000000000000 0001010000000000; 00134 .DEF Z>CIN, 0000000 0000000000000000 0000000000000000 00000Z0000000000; 00135 .DEF O>CIN, 0000000 0000000000000000 0000000000000000 0000010000000000; 00136 *JUMP INSTRUCTIONS 00137 .DEF JUMP(?), 0000000 ZZZ0???????????? 0000000000000000 0000000000000000; 00138 .DEF JZ(?,?), 0000000 ZZ10???????????? 0000000000000000 0000000000000000; 00139 .DEF JN(?,?), 0000000 Z1Z0???????????? 0000000000000000 0000000000000000; 00140 .DEF JLINE(?,?),0000000 Z110???????????? 0000000000000000 0000000000000000; 00141 .DEF JBYTE(?,?),0000000 1ZZ0???????????? 0000000000000000 0000000000000000; 00142 .DEF JRC(?,?), 0000000 1Z10???????????? 0000000000000000 0000000000000000; 00143 .DEF JY(?), 0000000 11Z0???????????? 0000000000000000 0000000000000000; 00144 *ALU O/PS + REGISTER LOADS 00145 .DEF Y>RAM, 0000000 0000000000000000 0000000000000000 0000000100000000; 00146 .DEF Y>DR, 0000000 0001000000000000 0000000000000000 0000000000000000; 00147 *(COPY Y7 TO Y8) 00148 .DEF Y>DCLR, 0000000 0001000000000000 0000000000000000 0001010000000000; 00149 *(CLEAR Y8) 00150 .DEF Y>PR, 0000000 0000000000000000 1000000000000000 0000000000000000; 00151 .DEF Y>AR, 0100010 0000000000000000 0000000000000000 0000000000000000; 00152 .DEF Y>IO, 0000000 0000000000000000 0000000000000000 0100000000000000; 00153 .DEF Y>RCI, 000Z100 0000000000000000 0000000000000000 0000001000000000; 00154 .DEF RVDP, 0000000 0000000000000000 0000000000000000 1000000000000000; 00155 .DEF MA(?), 00Z0000 0000000000000000 0???????00000000 0000000000000000; 00156 .DEF PR>MA, 0010000 0000000000000000 0000000000000000 0000000000000000; 00157 .DEF RAM>AR, 0Z00010 0000000000000000 0000000000000000 0000000000000000; 00158 .DEF RAM>BR, Z000001 0000000000000000 0000000000000000 0000000000000000; 00159 .DEF PR>BR, 1000001 0000000000000000 0000000000000000 0000000000000000; 00160 *CONTROL INTERFACE 00161 .DEF RSTRXTX, 000ZZ00 0000000000000000 0000000000000000 0000001000000000; 00162 * ||||||| |||||||||||||||| |||||||||||||||| |||||||||||||||| 00163 * C 00164 * P AB JJJD P RVB AAAABBBB 00165 * CERFFCC MMMC< ROM > C< RAM > VDR CE MMMMMMMM 00166 * MMMEELL PPPL L DPDSSIXWSSSSSSSS 00167 * SSA10KK 210KBA9876543210 K654321076543210 PCY10NTE32103210 00168 *----------------------------------------------------------------------* 00169 * SCRATCH RAM REGISTER EQUATES 00170 *----------------------------------------------------------------------* 00171 * 00172 .EQU VDP0, >00;*IO+RAM| +R24ON+R1T23+R0ON |DPL | 00173 .EQU VDP1, >01;*IO+RAM|BR24 +BR0 +EXPT +EXPB |RVL +BOX +MIX +TEXT | 00174 .EQU VDP2, >02;*IO+RAM| +TWIST+LF1 +LF0 |C14 +C13 +C12 +ILANG| 00175 .EQU VDP3, >03;*IO | +DUAL +LF1 +LF0 |C14 +C13 +C12 + | 00176 .EQU VDP4, >04;*IO+RAM|CLOCK+ + + | + + + | 00177 .EQU VDP5, >05;*IO+RAM|STYLE+CON + +ROW4 |ROW3 +ROW2 +ROW1 +ROW0 | 00178 .EQU VDP6, >06;*IO+RAM| + +COL5 +COL4 |COL3 +COL2 +COL1 +COL0 | 00179 .EQU VDP7, >07;*IO+RAM|TXTBG+FRAME+ + | +FSC2 +FSC1 +FSC0 | 00180 * 00181 .EQU P26MO, >08;*IO | + + +packet 26 mode latch | 00182 .EQU P26CH, >09;*IO | +packet 26 character latch | 00183 .EQU P26EN, >0A;*IO |packet 26 enable | 00184 * 00185 .EQU SYS1, >08;* RAM|page capture mode |FIND +FNRM +FTOP +FFLF | 00186 .EQU SYS2, >09;* RAM|R24EN+R24OS+S6T1 +TVPS |RP24 +CPYR2+R24RT+APIN | 00187 .EQU VPSERR,>0A;* RAM| + + + | + + + | 00188 .EQU RWL, >0B;*IO+RAM| ? + ? + ? + ? |read/write latch | 00189 .EQU PLLRG1,>0C;*IO*RAM|MUTE +R24B +HPOS +INSYN|UEL +SIX24+LOCK +ILCE | 00190 .EQU PLLRG2,>0D;*IO+RAM| - + - +PLL fine coeffs | 00191 .EQU PLLRG3,>0E;*IO+RAM| - + - +PLL coarse coeffs | 00192 * 00193 .EQU GPIO, >0F;*IO+RAM| + +DDF2 +DDF1 | + +FLAG2+FLAG1| 00194 * 00195 .EQU M0, >10;*IO+RAM|-----------------------|latch 0 mag | 00196 .EQU POLREG,>10;* RAM|VBIFL+WAIT +VBITF+LFTOG|-----------------------| 00197 .EQU M1, >11;*IO+RAM|-----------------------|latch 1 mag | 00198 .EQU LTK, >11;* RAM|last TOP key |-----------------------| 00199 .EQU M2, >12;*IO+RAM| + + + |latch 2 mag | 00200 .EQU FLFREG,>12;*IO+RAM|FULFL+P27FL+ - + - |-----------------------| 00201 .EQU M3, >13;*IO+RAM|-----------------------|latch 3 mag | 00202 .EQU AITLAN,>13;* RAM| +C14 +C13 +C12 |-----------------------| 00203 .EQU M4, >14;*IO+RAM|---------------------- |latch 4 mag | 00204 .EQU STSWD1,>14;* RAM| + +FLOCK+ |-----------------------| 00205 .EQU M5, >15;*IO+RAM|-----------------------|latch 5 mag | 00206 .EQU ROTATE,>15;* RAM| + +NBY +ROTT |latch 5 mag | 00207 .EQU M6, >16;*IO+RAM| + + + |latch 6 mag | 00208 .EQU M7, >17;*IO+RAM| + + + |latch 7 mag | 00209 .EQU T0, >18;*IO+RAM| + + + |latch 0 tens | 00210 .EQU T1, >19;*IO+RAM| + + + |latch 1 tens | 00211 .EQU T2, >1A;*IO+RAM| + + + |latch 2 tens | 00212 .EQU T3, >1B;*IO+RAM|-----------------------|latch 3 tens | 00213 .EQU T4, >1C;*IO+RAM|-----------------------|latch 4 tens | 00214 .EQU T5, >1D;*IO+RAM|-----------------------|latch 5 tens | 00215 .EQU T6, >1E;*IO+RAM|-----------------------|latch 6 tens | 00216 .EQU T7, >1F;*IO+RAM|-----------------------|latch 7 tens | 00217 .EQU PEN, >1B;* RAM|page entry state |-----------------------| 00218 *EQU >1C;* RAM| + + + |-----------------------| 00219 *EQU >1D;* RAM| + + + |-----------------------| 00220 *EQU >1E;* RAM| + + + |-----------------------| 00221 *EQU >1F;* RAM| + + + |-----------------------| 00222 .EQU U0, >20;*IO+RAM|-----------------------|latch 0 units | 00223 .EQU U1, >21;*IO+RAM|-----------------------|latch 1 units | 00224 .EQU U2, >22;*IO+RAM|-----------------------|latch 2 units | 00225 .EQU U3, >23;*IO+RAM|-----------------------|latch 3 units | 00226 .EQU U4, >24;*IO+RAM|-----------------------|latch 4 units | 00227 .EQU U5, >25;*IO+RAM|-----------------------|latch 5 units | 00228 .EQU U6, >26;*IO+RAM|-----------------------|latch 6 units | 00229 .EQU U7, >27;*IO+RAM|-----------------------|latch 7 units | 00230 .EQU STOR0, >20;* RAM|store 0 |-----------------------| 00231 .EQU STOR1, >21;* RAM| |-----------------------| 00232 .EQU STOR2, >22;* RAM| store table |-----------------------| 00233 .EQU STOR3, >23;* RAM| containing |-----------------------| 00234 .EQU STOR4, >24;* RAM| pointers to |-----------------------| 00235 .EQU STOR5, >25;* RAM| latches |-----------------------| 00236 .EQU STOR6, >26;* RAM| |-----------------------| 00237 .EQU STOR7, >27;* RAM|store 7 |-----------------------| 00238 .EQU RCM, >28;*IO+RAM|TOFF +AOFF + + |rcvd mag | 00239 .EQU RCT, >29;*IO+RAM| ? + ? + ? + ? |rcvd tens | 00240 .EQU RCU, >2A;*IO+RAM| ? + ? + ? + ? |rcvd units | 00241 .EQU VDPTXT,>2B;* RAM|UCLK + +UPD +C8YET|URVL +STOP +UEXT +UEXB | 00242 .EQU VDPOSD,>2C;* RAM| + + + |URVL +CFU +UEXT +UEXB | 00243 .EQU USRLAN,>2D;* RAM|FLM +TWIST+LF1 +LF0 |C14 +C13 +C12 + | 00244 .EQU LSTINS,>2E;* RAM|last instruction | 00245 .EQU RCSTAT,>2F;* RAM|CHRM +RMODE |OPCNT | 00246 .EQU ROWPTR,>30;* RAM|LCH2 +LCH1 +LCH0 +ROW4 |ROW3 +ROW2 +ROW1 +ROW0 | 00247 .EQU COLPTR,>31;* RAM| + +COL5 +COL4 |COL3 +COL2 +COL1 +COL0 | 00248 .EQU DHREG, >32;* RAM|HOFF +ICP +POOCD+NRH |TOD +ENDIG+STBRW+BWSE | 00249 .EQU CGA, >33;* RAM| ? + ? + ? + ? |control group A | 00250 .EQU CGB, >34;* RAM| ? + ? + ? + ? |control group B | 00251 .EQU LAFR, >35;* RAM|store for current latch flags | 00252 .EQU MFR, >36;* RAM| + + + |mag flags, rcvd mag | 00253 .EQU TOPRG1,>37;* RAM|BTTER+BTTCA+BTTP +BTTUP|last BTT update code | 00254 .EQU INVCNT,>38;* RAM|inventory page count, LSB is complete flag | 00255 .EQU MREG0, >39;* RAM|DETO +CNR24+CAEXP+ERROV|DISER+PMNM +COOC +STP | 00256 .EQU ERRCNT,>3A;* RAM|error count | 00257 .EQU TIMOUT,>3B;* RAM|OOC display time out | 00258 .EQU RSPI, >3C;* RAM| ? + ? + ? + ? |rcvd sub-page units | 00259 .EQU RSPX, >3D;* RAM| ? + ? + ? + ? |rcvd sub-page tens | 00260 .EQU RSPC, >3E;* RAM| ? + ? + ? + ? |rcvd sub-page hundreds | 00261 .EQU RSPM, >3F;* RAM| ? + ? + ? + ? |rcvd sub-page thousands| 00262 * 00263 .EQU LAF0, >40;* RAM|latch flags, latch 0 | 00264 .EQU LAF1, >41;* RAM|latch flags, latch 1 | 00265 .EQU LAF2, >42;* RAM| " | 00266 .EQU LAF3, >43;* RAM|CAP +VBICA+CLR +OPN | +MPG +BTTL +AITL | 00267 .EQU LAF4, >44;* RAM| (LAFx) | 00268 .EQU LAF5, >45;* RAM| " | 00269 .EQU LAF6, >46;* RAM|latch flags, latch 6 | 00270 .EQU LAF7, >47;* RAM|latch flags, latch 7 | 00271 * 00272 .EQU LFSP0, >48;* RAM|-----------------------|latch for sub-page 0 | 00273 .EQU LFSP1, >49;* RAM|-----------------------|latch for sub-page 1 | 00274 .EQU LFSP2, >4A;* RAM|-----------------------|latch for sub-page 2 | 00275 *EQU >4B;* RAM|-----------------------| + + + | 00276 .EQU AITCNT,>4C;* RAM|-----------------------|AITs left to capture | 00277 *EQU >4D;* RAM|-----------------------| + + + | 00278 *EQU >4E;* RAM|-----------------------| + + + | 00279 *EQU >4F;* RAM|-----------------------| + + + | 00280 *EQU >50;* RAM|-----------------------| + + + | 00281 *EQU >51;* RAM|-----------------------| + + + | 00282 *EQU >52;* RAM|-----------------------| + + + | 00283 *EQU >53;* RAM|-----------------------| + + + | 00284 * 00285 .EQU SP0I, >48;* RAM|req sub-page 0, units |-----------------------| 00286 .EQU SP0X, >49;* RAM|req sub-page 0, tens |-----------------------| 00287 .EQU SP0C, >4A;* RAM|req sub-page 0, h'dreds|-----------------------| 00288 .EQU SP0M, >4B;* RAM|req sub-page 0, th'ands|-----------------------| 00289 .EQU SP1I, >4C;* RAM|req sub-page 1, units |-----------------------| 00290 .EQU SP1X, >4D;* RAM|req sub-page 1, tens |-----------------------| 00291 .EQU SP1C, >4E;* RAM|req sub-page 1, h'dreds|-----------------------| 00292 .EQU SP1M, >4F;* RAM|req sub-page 1, th'ands|-----------------------| 00293 .EQU SP2I, >50;* RAM|req sub-page 2, units |-----------------------| 00294 .EQU SP2X, >51;* RAM|req sub-page 2, tens |-----------------------| 00295 .EQU SP2C, >52;* RAM|req sub-page 2, h'dreds|-----------------------| 00296 .EQU SP2M, >53;* RAM|req sub-page 2, th'ands|-----------------------| 00297 * 00298 .EQU SPREG0,>54;* RAM|LFPCL0 | +MSP2 +MSP1 +MSP0 | 00299 .EQU SPREG1,>55;* RAM|LFPCL1 | +MSP2 +MSP1 +MSP0 | 00300 .EQU SPREG2,>56;* RAM|LFPCL2 | +MSP2 +MSP1 +MSP0 | 00301 .EQU SPFRC, >57;* RAM| ? + ? + ? + ? | +FSP2 +FSP1 +FSP0 | 00302 * 00303 .EQU USPI, >58;* RAM|user sub-page units |-----------------------| 00304 .EQU USPX, >59;* RAM|user sub-page tens |-----------------------| 00305 .EQU USPC, >5A;* RAM|user sub-page hundreds |-----------------------| 00306 .EQU USPM, >5B;* RAM|user sub-page th'ands |-----------------------| 00307 *EQU >5C;* RAM| + + + |-----------------------| 00308 *EQU >5D;* RAM| + + + |-----------------------| 00309 *EQU >5E;* RAM| + + + |-----------------------| 00310 *EQU >5F;* RAM| + + + |-----------------------| 00311 * 00312 .EQU MF0, >58;* RAM|-----------------------|mag flags, mag 0 | 00313 .EQU MF1, >59;* RAM|-----------------------|mag flags, mag 1 | 00314 .EQU MF2, >5A;* RAM|-----------------------| " | 00315 .EQU MF3, >5B;* RAM|-----------------------|MOP +MLP | 00316 .EQU MF4, >5C;* RAM|-----------------------| " | 00317 .EQU MF5, >5D;* RAM|-----------------------|mag flags, mag 5 | 00318 .EQU MF6, >5E;* RAM|-----------------------|mag flags, mag 6 | 00319 .EQU MF7, >5F;* RAM|-----------------------|mag flags, mag 7 | 00320 * 00321 .EQU SCREEN,>60;* RAM|picture, text, box, mix|MENM +TDISP+MNDP1+MNDP0| 00322 .EQU VPPRG1,>61;* RAM|SBL +SLFB +PMPN +CSVDP|SINP +HOSP +PCSP +SPIN | 00323 .EQU VPPRG2,>62;* RAM|SUBT +NWSF + +DPFC |USPR +CSPLL+DPC +DPHC | 00324 .EQU EXPREG,>63;* RAM|P830F+PDC +VPS +WSS |CGAP +CPRF +USM +SRTC | 00325 .EQU STSWD0,>64;* RAM|TFLG +POFF +FFLG +BADFL| + + +TWSS | 00326 .EQU MREG1, >65;* RAM|IFRUN+ADDST+UPSYM+THRSH|FPPP +DETV +RKM +RIB | 00327 .EQU LINCNT,>66;* RAM|number of teletext lines in the last VBI | 00328 .EQU HYSREG,>67;* RAM|hysterisis end stop |hysterisis count | 00329 .EQU DPM, >68;* RAM|display page mag |last page mag | 00330 .EQU DPT, >69;* RAM|display page tens |last page tens | 00331 .EQU DPU, >6A;* RAM|display page units |last page units | 00332 .EQU OGLCNT,>6B;* RAM|on-going teletext line count | 00333 .EQU PDCRG1,>6C;* RAM|flags indicate which DC P26 have been captured | 00334 .EQU PDCRG2,>6D;* RAM|flags indicate which DC P26 have been captured | 00335 .EQU MREG2, >6E;* RAM| + + + | +NMOFF+EVODD+SPALT| 00336 .EQU UPLL, >6F;* RAM|MUTEM+R24T +HPOS +FSYNC|UEL +SIX24+ISYNC+ILCE | 00337 *Local variables, these can be used for local temporary storage. If a 00338 *a sub-routine is called, need to check that the local variable is not 00339 *modified by the sub-routine code unless the variable is an input 00340 *parameter. 00341 .EQU TEST, >70;* RAM| + + + | + + + | 00342 .EQU OLDSTR,>71;* RAM|old store 0 |old store 7 | 00343 .EQU LOCAL, >72;* RAM| + + + | + + + | 00344 .EQU MASK, >73;* RAM| + + + | + + + | 00345 .EQU PM, >74;* RAM|page magazine routines|-----------------------| 00346 .EQU PT, >75;* RAM|page tens pars for|-----------------------| 00347 .EQU PU, >76;* RAM|page units i/p |-----------------------| 00348 .EQU STORE, >77;* RAM| + + + | + + + | 00349 .EQU COUNT, >78;* RAM| + + + | + + + | 00350 .EQU RET4, >79;* RAM| + + + | + + + | 00351 .EQU RET3, >7A;* RAM| + + + | + + + | 00352 .EQU RET2, >7B;* RAM| + + + | + + + | 00353 .EQU RETURN,>7C;* RAM| + + + | + + + | 00354 .EQU THISRW,>7D;* RAM| + + + | + + + | 00355 *end of local variables 00356 .EQU LPPREG,>7E;* RAM|line post processing register | 00357 .EQU HFLGS, >7F;* RAM|host read byte count | 00358 * 00359 *----------------------------------------------------------------------* 00360 * SCRATCH RAM FLAG EQUATES 00361 *----------------------------------------------------------------------* 00362 **** VDP0; *VDP REGISTER 0 (SEE VDP SPEC) 00363 * ----------------------------------------------------------------- 00364 * | |R24ON |R1T23 |R0ON | |DPL | 00365 * ----------------------------------------------------------------- 00366 .EQU R24ON, >40; * 00367 .EQU R1T23, >20; * 00368 .EQU R0ON, >10; * 00369 .EQU DPL, >0F; *DISPLAY LATCH 00370 *----------------------------------------------------------------------* 00371 **** VDP1; *VDP REGISTER 1 (SEE VDP SPEC) 00372 * ----------------------------------------------------------------- 00373 * |BR24 |BR0 |EXPT |EXPB |RVL |BOX |MIX |TEXT | 00374 * ----------------------------------------------------------------- 00375 .EQU BR24, >80; * 00376 .EQU BR0, >40; * 00377 .EQU EXPT, >20; * 00378 .EQU EXPB, >10; * 00379 .EQU RVL, >08; * 00380 .EQU BOX, >04; * 00381 .EQU MIX, >02; * 00382 .EQU TEXT, >01; * 00383 *----------------------------------------------------------------------* 00384 **** VDP3; *VDP REGISTER 3 (SEE VDP SPEC) 00385 * ----------------------------------------------------------------- 00386 * | | | | | | | | | 00387 * ----------------------------------------------------------------- 00388 *----------------------------------------------------------------------* 00389 **** VDP4; *VDP REGISTER 3 (SEE VDP SPEC) 00390 * ----------------------------------------------------------------- 00391 * |CLOCK | | | | | | | | 00392 * ----------------------------------------------------------------- 00393 .EQU CLOCK, >80; *CLOCK MODE 00394 *----------------------------------------------------------------------* 00395 **** SYS1; *SYSTEM MODE REGISTER 1 00396 * ----------------------------------------------------------------- 00397 * | |PCM |FIND |FNRM |FTOP |FFLF | 00398 * ----------------------------------------------------------------- 00399 * 00400 * case(PCM==0): NORMAL mode 00401 * case(PCM==1): TOP mode 00402 * case(PCM==2): FLOF mode 00403 * case(PCM==3): FAVP mode 00404 * 00405 .EQU FIND, >08; *FIND PAGE CAPTURE MODE IN AUTO 00406 * When set, the decoder will switch to FLOF mode when a display page 00407 * with correct FLOF is received if FNRM=FTOP=0. FIND is cleared once 00408 * FLOF is selected. If a BTT is captured when FRM=FTOP=0 and FIND is 00409 * set, the decoder will go to TOP mode. In this case, FIND is not 00410 * cleared so that the decoder can still switch to FLOF (ie FLOF has 00411 * priority over TOP). 00412 .EQU FNRM, >04; *FORCED NORMAL MODE 00413 * The decoder has been forced to NORMAL. 00414 .EQU FTOP, >02; *FORCED TOP MODE 00415 * The decoder has been forced to TOP. 00416 .EQU FFLF, >01; *FORCED FLOF MODE 00417 * The decoder has been forced to FLOF. 00418 *----------------------------------------------------------------------* 00419 **** SYS2, *SYSTEM MODE REGISTER 2 00420 * ----------------------------------------------------------------- 00421 * |R24EN |R24OSD |S6T1 |TVPS |RP24 |CPYR24 |R24RTC |APIN | 00422 * ----------------------------------------------------------------- 00423 .EQU R24EN, >80; *RECEPTION OF PACKET 24 ENABLED (IF APIN=1) 00424 .EQU R24OSD, >40; *ROW 24 OSDS 00425 * This flag inhibits the display of rows 0-23 of the teletext 00426 * page. This allows row 24 to be used for OSDs without the 00427 * need to set menu page mode. 00428 .EQU S6T1, >20; *STORE 6 CONTAINS TOP 1 00429 * In TOP mode, store 6 is set for TOP1 unless menu mode is set. 00430 * This flag is tested on sub-page clear to see if store 6 should be 00431 * swapped back to store 4 00432 .EQU TVPS, >10; *RECEIVED A VPS PACKET 00433 .EQU RP24, >08; *RECEIVE PACKET 24 00434 * This flag enables packet 24 for the display page to be copied 00435 * from store 6 when CPYR24=1 and R24RTC=1. 00436 .EQU CPYR24, >04; *COPY ROW 24 00437 * When set, this flag causes the display page row 24 to be copied 00438 * from store 6 to the display page in the next VPP if 00439 * RP24 and R24RTC are set. 00440 .EQU R24RTC, >02; *ROW 24 READY TO COPY 00441 * This flag indicates that a row 24 for the display page has been 00442 * captured in store 6. 00443 .EQU APIN, >01; *AUTOMATIC PROMPTS INHIBITED 00444 *----------------------------------------------------------------------* 00445 **** PLLRG1, *PLL REGISTER 1 00446 * ----------------------------------------------------------------- 00447 * |MUTE |R24B |HPOS |INSYNC |UEL |SIX24 |LOCK |ILCE | 00448 * ----------------------------------------------------------------- 00449 .EQU MUTE, >80; *MUTE OUTPUT ACTIVE 00450 .EQU R24B, >40; *ROW 24 BOTTOM ROW 00451 .EQU HPOS, >20; *SHIFT TO RIGHT 00452 .EQU INSYNC, >10; *ENABLE INTERNAL SYNC 00453 .EQU UEL, >08; *UNLOCKED EXTRA LINE 00454 .EQU SIX24, >04; *624 LINES PER FRAME 00455 .EQU LOCK, >02; *TRY TO LOCK TO INCOMMING FIELD SYNC 00456 .EQU ILCE, >01; *INTERLACE MODE 00457 *----------------------------------------------------------------------* 00458 **** UPLL, *USER PLL MODE 00459 * ----------------------------------------------------------------- 00460 * |MUTEM |R24T |HPOS |FSYNC |UEL |SIX24 |ISYNC |ILCE | 00461 * ----------------------------------------------------------------- 00462 .EQU MUTEM, >80; *MUTE MODE 00463 .EQU R24T, >40; *ROW 24 TOP ROW 00464 .EQU FSYNC, >10; *FORCE SYNC SWITCH MODE 00465 .EQU ISYNC, >02; *INTERNAL SYNC MODE 00466 *ELSE THE SAME AS PLLRG1 00467 *----------------------------------------------------------------------* 00468 **** POLREG, *POLLING REGISTER 00469 * --------------------------------- 00470 * |VBIFLG |WAIT |VBITF |LFTOG | 00471 * --------------------------------- 00472 .EQU VBIFLG, >80; *VBI FLAG 00473 * This flag indicates the last tested state of the VBI state. 00474 .EQU WAIT, >40; *WAIT 00475 * This flag is set to stop the interface from being serviced until 00476 * the end of VBI. 00477 .EQU VBITF, >20; *VBI THIS FIELD 00478 * A VBI has been detected since the last time the field toggle 00479 * line changed state. 00480 .EQU LFTOG, >10; *LAST FIELD TOGGLE 00481 * This flag is used to detect a change of state on the field 00482 * toggle line. 00483 *----------------------------------------------------------------------* 00484 **** LTK, *LAST TOP KEY 00485 * This nibble holds the last TOP key entered. This is used when 00486 * initialising TOP latches. 00487 * --------------------------------- 00488 * | | | | | 00489 * --------------------------------- 00490 * If LTK=0, RED key or initialisation 00491 * If LTK=1, GREEN or this page is a TV page 00492 * If LTK=2, YELLOW key 00493 * If LTK=4, BLUE key 00494 *----------------------------------------------------------------------* 00495 **** FLFREG, *FLOF REGISTER 00496 * This register holds the FLOF status of the displayed page and 00497 * is updated every time the display page is captured. 00498 * --------------------------------- 00499 * |FULFLF |P27FLF | - | - | 00500 * --------------------------------- 00501 .EQU FULFLF, >80; *FULL FLOF 00502 * A packet 27 with the display row 24 flag set, and a packet 24 00503 * for the display page has been received. 00504 .EQU P27FLF, >40; *PACKET 27 FLOF 00505 * A packet 27 for the display page has been received with either 00506 * the display row 24 flag not set or no packet 24. 00507 *----------------------------------------------------------------------* 00508 **** STSWD1, *STATUS WORD 1 REGISTER 00509 * --------------------------------- 00510 * | | |FLOCK | | 00511 * --------------------------------- 00512 .EQU FLOCK, >20; *FIELD LOCK 00513 * This flag is set if a VBI was detected during the last field 00514 * toggle period. 00515 *----------------------------------------------------------------------* 00516 **** ROTATE, *ROTATE IN BLOCK FLAGS 00517 * These flags control the rotate in block function, if either 00518 * is set, the rotate will be inhibited. 00519 * --------------------------------- 00520 * | | |NBY |ROTT | 00521 * --------------------------------- 00522 .EQU NBY, >20; *NO BLOCK FOUND YET 00523 .EQU ROTT, >10; *ALREADY ROTATED IN A BLOCK 00524 *----------------------------------------------------------------------* 00525 **** PEN, *PAGE ENTRY STATE 00526 * The nibble tracks the digit entry sequence, the 2 lsbs are the 00527 * number of '-' required for incomplete pages. The third lsb 00528 * indicates sub-page mode. 00529 * --------------------------------- 00530 * | | | | | 00531 * --------------------------------- 00532 * If PEN=0, complete main page entered P100 00533 * If PEN=1, main page tens entered P10- 00534 * If PEN=2, main page mag entered P1-- 00535 * If PEN=4, complete sub-page entered 1234 00536 * If PEN=5, sub-page tens entered 123- 00537 * If PEN=6, sub-page hundreds entered 12-- 00538 * If PEN=7, sub-page thousands entered 1--- 00539 *----------------------------------------------------------------------* 00540 **** RCM, *RECEIVED MAGAZINE 00541 * ----------------------------------------------------------------- 00542 * |TOFF |AOFF | | |received magazine | 00543 * ----------------------------------------------------------------- 00544 .EQU TOFF, >80; *TELETEXT OFF 00545 * This flag is set by STOP and cleared by START to inhibit and 00546 * re-start teletext reception. 00547 .EQU AOFF, >40; *AUTO TELETEXT OFF 00548 * This flag is used to inhibit teletext reception when the 00549 * automatic teletext reception threshold is enabled. 00550 *----------------------------------------------------------------------* 00551 **** VDPTXT *VDP FLAGS FOR TELETEXT DISPLAYS 00552 * This register is an input registers for the SVDP routine. 00553 * Together with the page related status data stored in 00554 * page RAM, it defines how the displayed page is displayed. 00555 * ----------------------------------------------------------------- 00556 * |UCLK | |UPD |C8YET |URVL |STOP |UEXT |UEXB | 00557 * ----------------------------------------------------------------- 00558 .EQU UCLK, >80; *USER CLOCK MODE 00559 .EQU UPD, >20; *UPDATE MODE 00560 .EQU C8YET, >10; *C8 HEADER BIT RECEIVED YET 00561 * This flag is cleared when UPD is set and set when a header 00562 * of the displayed page with C8 set is received, on first capture 00563 * of a page or on page number entry. This is the time 00564 * when the user is prompted with the page number rather than the 00565 * update symbol in update mode. UPD and C8YET therefore define 00566 * the current update mode. 00567 .EQU URVL, >08; *USER REVEAL 00568 * This bit is toggled by the high level reveal function. It 00569 * must be cleared if the displayed page is cleared for any 00570 * reason. 00571 .EQU STOP, >04; *STOP OR HOLD 00572 .EQU UEXT, >02; *USER EXPAND TOP 00573 .EQU UEXB, >01; *USER EXPAND BOTTOM 00574 *----------------------------------------------------------------------* 00575 **** VDPOSD *VDP FLAGS FOR MENU PAGES 00576 * This register is an input parameter for the SVDP routine. 00577 * ----------------------------------------------------------------- 00578 * | | | | |URVL |CFU |UEXT |UEXB | 00579 * ----------------------------------------------------------------- 00580 *EQU URVL, >08; *USER REVEAL 00581 .EQU CFU, >04; *CLOCK FIELD OF MENU PAGE UPDATED 00582 * When set, this flag enables the display of concealed characters 00583 * in the menu page display. 00584 *EQU UEXT, >02; *USER EXPAND TOP 00585 *EQU UEXB, >01; *USER EXPAND BOTTOM 00586 *----------------------------------------------------------------------* 00587 **** USRLAN, *USER LANGUAGE 00588 * 00589 * TCJ April 94, 00590 * TWIST and ILANG added. 00591 * 00592 * This register is updated via the user interface. It defines 00593 * the language used for OSD displays and the default language 00594 * used for teletext displays. 00595 * If FLM=0, the C bits are updated by teletext headers. 00596 * If FLM=1, the C bits are not updated by teletext headers. 00597 * 00598 * TCJ August 95, 00599 * TWIST and ILANG removed for 206 00600 * 00601 * ----------------------------------------------------------------- 00602 * |FLM |TWIST |LF1 |LF0 |C14 |C13 |C12 |ILANG | 00603 * ----------------------------------------------------------------- 00604 .EQU FLM, >80; *FORCED LANGUAGE MODE 00605 * This bit is set when the teletext display is to be forced to 00606 * a language (defined by USRLAN). 00607 *.EQU TWIST, >40; *ENABLE TWIST MODE 00608 * When set, enables the twist (>1B) serial attribute. 00609 *.EQU ILANG, >01; *INITIAL LANGUAGE 00610 * Defines the initial languge for the start of a display row, when 00611 * 0 the defaults to LATIN at start of a line. If set to a 1, defaults 00612 * to CYRILIC. 00613 * 00614 *----------------------------------------------------------------------* 00615 **** RCSTAT, *REMOTE CONTROL STATE 00616 * ----------------------------------------------------------------- 00617 * |CHRM |RMODE |OPCNT | 00618 * ----------------------------------------------------------------- 00619 .EQU CHRM, >80; *CHARACTER MODE 00620 .EQU RMODE, >70; *READ DATA MODE 00621 * These three bits indicate what data should be written to the I2C 00622 * interface the next time the host reads a byte. 00623 .EQU OPCNT, >0F; *OPERAND COUNT 00624 * These bits contain the number of operands to be received for 00625 * multi-operand commands. If non-zero, the RC code will 00626 * use LSTINS and OPCNT to work out what to do with the 00627 * received byte. 00628 *----------------------------------------------------------------------* 00629 **** DHREG; *DISPLAY HEADER REGISTER 00630 * ----------------------------------------------------------------- 00631 * |HOFF |ICP |POOCD |NRH |TOD |ENDIG | |BWSE | 00632 * ----------------------------------------------------------------- 00633 .EQU HOFF, >80; *HEADER OFF 00634 * This bit used by high level functions to inhibit the reception 00635 * of the display page header characters. 00636 .EQU ICP, >40; *INCOMPLETE PAGE 00637 * When set, this flag inhibits UPDATE and suppressed header, and 00638 * causes the header to be boxed. 00639 .EQU POOCD, >20; *PAGE OUT OF CYCLE DISPLAY 00640 .EQU NRH, >10; *ROLLING HEADER 00641 * This bit is used by low level functions to switch on/ off a 00642 * rolling header display. 00643 .EQU TOD, >08; *TIME OUT DISPLAY 00644 * When this flag is set, row 0 and row 24 of the teletext display 00645 * are always enabled and boxed (FLOF or APIN can override). 00646 .EQU ENDIG, >04; *ENABLE DIGIT 00647 * This flag enables digit entry in box mode if DETO is set. 00648 .EQU STBRW, >02; *SUBTITLE BROWSE 00649 .EQU BWSE, >01; *BROWSE 00650 * This is set when STORE 0 has been initialised to receive the 00651 * next received page. If this flag is set, then the next header 00652 * of a page not in a latch (if a decimal page and not a subtitle) 00653 * causes STORE 0 to receive that page. 00654 *----------------------------------------------------------------------* 00655 **** TOPRG1, *TOP REGISTER 1 00656 * ----------------------------------------------------------------- 00657 * |BTTERR |BTTCAP |BTTP |BTTUP |last BTT update code | 00658 * ----------------------------------------------------------------- 00659 .EQU BTTERR, >80; *BTT ERR 00660 * This flag is cleared when a latch is opened to receive a BTT and 00661 * is set if an error in the BTT is detected. It gives an indication 00662 * to the reliability of currently stored BTT data. 00663 .EQU BTTCAP, >40; *BTT CAPTURED 00664 * This flag indicates that a BTT has been captured in STOR1. It 00665 * is cleared on a channel change and when STOR1 is initialised 00666 * to receive something else (eg in FLOF mode). 00667 .EQU BTTP, >20; *BTT PROCESSING TO DO 00668 * This flag initiates VBI post processing of a captured BTT, it 00669 * is cleared when the processing is complete. 00670 .EQU BTTUP, >10; *UPDATED BTT PROCESSING TO DO 00671 * This flag initiates VBI post processing of a captured BTT 00672 * which has been 'updated'. This could mean that an update has 00673 * been indicated in the BTT sub-code, or that BTT processing 00674 * needs to be done for the first time. This flag causes the AIT 00675 * latches to be re-initialised. It is cleared when the processing 00676 * is complete. 00677 *----------------------------------------------------------------------* 00678 **** MREG0, *MODE REGISTER 0 00679 * ----------------------------------------------------------------- 00680 * |DETO |CNR24D |CAEXP |ERROVF |DISERR |PMNM |COOCD |STP | 00681 * ----------------------------------------------------------------- 00682 .EQU DETO, >80; *DIGIT ENTRY TIME-OUTS ENABLED 00683 * This flag enables causes a digit entry key to time out a header 00684 * display if the decoder is in box mode. The user has to press 00685 * the digit while the header is displayed for it to be accepted. 00686 .EQU CNR24D, >40; *CLEAR NEWSFLASH ROW 24 DISPLAY 00687 * This flag disables the display of row 24 on newsflash pages. 00688 .EQU CAEXP, >20; *CLEAR AUTO-EXPAND 00689 * This flag prevents the decoder from switchin from expand bottom 00690 * to expand top on page number entry. 00691 .EQU ERROVF, >10; *ENABLE ERROR OVERFLOW 00692 * This flag enables ths error count to overflow. 00693 .EQU DISERR, >08; *DISPLAY ERROR COUNT 00694 * This flag enables a display of the error count in the page field 00695 * for system de-bug. 00696 .EQU PMNM, >04; *PLUS MINUS NORMAL MENU 00697 * This flag selects the Grundig style normal menu 00698 .EQU COOCD, >02; *CLEAR OUT OF CYCLE DISPLAY 00699 .EQU STP, >01; *DISPLAY 'STOP' INSTEAD OF HOLD SYMBOL 00700 * 00701 *----------------------------------------------------------------------* 00702 * TCJ Nov 92 - Addition of MODE2 control mode register 00703 * Jan 94 - Addition of NMOFF flag 00704 * 00705 * MREG2, 00706 * ---------------------------------------------------------------- 00707 * | XMUTE | | | | | NMOFF | EVODD |SPALT | 00708 * ---------------------------------------------------------------- 00709 .EQU XMUTE, >80; * Inverted mute signal 00710 * Forces the MUTE output to be inverted. 00711 .EQU SPALT, >01; * Alternate subpage mode. 00712 * Forces the subpage mode to capture the next two subpages transmitted 00713 * after the display page. Default mode is to capture the next two 00714 * numerical subpages. 00715 .EQU EVODD, >02; * Alternate EVEN/ODD signal 00716 * When set enables the alternate EVEN/ODD signal behaviour of 00717 * FLAG2. 00718 .EQU NMOFF, >04; * Disables Normal Mode prompt 00719 * When set the normal mode row 24 prompt will be disabled from being 00720 * displayed until the inventory page is complete. This has the effect 00721 * that under most circumstances on a FLOF or TOP channel, row 24 will 00722 * stay blank until FLOF mode or TOP mode id initiated. 00723 * 00724 *----------------------------------------------------------------------* 00725 **** SPREGx, *SUB-PAGE REGISTER FOR S-P LATCH x 00726 * There is a sub-page register for each sub-page latch 00727 * containing:- 00728 * LFPCLx The latch number to test against PCL. 00729 * This is necessary because we may be looking for more than one 00730 * sub-page of a main page. 00731 * ----------------------------------------------------------------- 00732 * |LFPCLx | |MSP2 |MSP1 |MSP0 | 00733 * ----------------------------------------------------------------- 00734 .EQU MSP, >07; *SUB-PAGE LATCH MARKER FIELD 00735 .EQU MSP0, >01; *marker for sub-page capture latch 0 00736 .EQU MSP1, >02; *marker for sub-page capture latch 1 00737 .EQU MSP2, >04; *marker for sub-page capture latch 2 00738 *----------------------------------------------------------------------* 00739 * TCJ Nov 92 00740 * SPFRC, *FORCE SUB-PAGE CAPTURE 00741 * ----------------------------------------------------------------- 00742 * | | | | | |FSP2 |FSP1 |FSP0 | 00743 * ----------------------------------------------------------------- 00744 * 00745 .EQU FSP0, >01; 00746 .EQU FSP1, >02; 00747 .EQU FSP2, >04; 00748 * 00749 *----------------------------------------------------------------------* 00750 **** LAFx, >??; *LATCH FLAGS- LATCH x 00751 * These registers contain latch related status. 00752 * ----------------------------------------------------------------- 00753 * |CAP |VBICAP |CLR |OPN | |MPG |BTTL |AITL | 00754 * ----------------------------------------------------------------- 00755 .EQU CAP, >80; *PAGE HAS BEEN CAPTURED 00756 * This flag is cleared when a latch is initialised and set by the 00757 * VBI post processing code when the page has been captured. 00758 .EQU VBICAP, >40; *PAGE HAS BEEN CAPTURED DURING THE LAST VBI 00759 * This flag is used to indicate to the VBI code that the latch 00760 * has captured a page. It is set in the header post processing 00761 * and cleared by the VBI code at the end of each VBI. 00762 .EQU CLR, >20; *CLEAR LATCH 00763 * This flag is used to indicate to the VBI code that this latch 00764 * should be cleared (eg by C4 or for first capture). 00765 .EQU OPN, >10; *LATCH IS OPEN 00766 * This flag is set while the latch is open. It can be used to 00767 * inhibit some processing (eg BTT processing) until the page 00768 * has been terminated. However, it must be used very 00769 * carefully as some pages are never terminated (eg BBC 00770 * subtitles). 00771 .EQU MPG, >04; *LATCH IS SET TO RECIEVE A MENU PAGE 00772 .EQU BTTL, >02; *LATCH IS SET TO RECIEVE A BTT 00773 .EQU AITL, >01; *LATCH IS SET TO RECIEVE AN AIT 00774 * N.B. If BTT or AITL is set, the page should not be 00775 * displayed if the page is entered by the user, and the latch 00776 * should not be shuffled when the user selects a page which 00777 * is stored in non-displayed RAM. 00778 *----------------------------------------------------------------------* 00779 **** MFx, MFR; *MAGAZINE FLAGS 00780 * These registers contain magazine related status. The flags 00781 * are used to find the appropriate latch when a magazine is 00782 * received. 00783 * ----------------------------------------------------------------- 00784 * | | | | |MOP | MLP | 00785 * ----------------------------------------------------------------- 00786 .EQU MOP, >08; *MAG OPEN FLAG 00787 .EQU MLP, >07; *MAG LATCH POINTER 00788 * When the header processing code opens a magazine, it places the 00789 * page capture latch output in this field. This points the row 00790 * reception code to the correct page in memory. 00791 *----------------------------------------------------------------------* 00792 **** SCREEN, * 00793 * ----------------------------------------------------------------- 00794 * |picture, teletext, mix and box |MENM |TDISP |MNDP1 |MNDP0 | 00795 * ----------------------------------------------------------------- 00796 * The MSN defines the user selected screen, this may differ 00797 * from the actual screen mode (eg in update). 00798 * case(SCREEN==0):PIC 00799 * case(SCREEN==1):TXT 00800 * case(SCREEN==2):MIX 00801 * case(SCREEN==3):BOX 00802 .EQU MENM, >08; *MENU MODE 00803 .EQU TDISP, >04; *TELETEXT DISPLAY 00804 * This flag indicates that there is a teletext display. This flag 00805 * is used to enable teletext functions. 00806 .EQU MNDP1, >02; *MENU DISPLAY PAGE 1 00807 * This flag indicates that the current display page is menu 00808 * page 1 (store 7). 00809 .EQU MNDP0, >01; *MENU DISPLAY PAGE 0 00810 * This flag indicates that the current display page is menu 00811 * page 0 (store 6). 00812 * N.B. If neither MNDPx or TDISP is set, the clock function can be 00813 * enabled. 00814 *----------------------------------------------------------------------* 00815 **** VPPRG1, *VBI POST PROCESSING REGISTER 00816 * ----------------------------------------------------------------- 00817 * |SBL |SLFB |PMPN |CSVDP |SINP |HOSP |PCSP |SPIN | 00818 * ----------------------------------------------------------------- 00819 .EQU SBL, >80; *SORT BACKGROUND LATCHES 00820 * This flag causes the VBI post processing code to 'sort' the 00821 * non-displayed latches. This is necessary, for example, when 00822 * a new TOP table has been received. 00823 .EQU SLFB, >40; *SET LATCH FOR BROWSE 00824 * This flag is set when the BROWSE command is received. At the end 00825 * of the next VBI, STORE 0 will be initialised to receive the next 00826 * received page and the BWSE flag is set to direct the header code 00827 * to capture it. 00828 .EQU PMPN, >20; *PROCESS NEW PAGE NUMBER 00829 * This flag is set to tell the VPP routine to process a new page 00830 * number. 00831 .EQU CSVDP, >10; *CALL SET VDP REGISTERS ROUTINE 00832 * This flag is set to call the SVDP routine at the end of the next 00833 * VBI. The SVDP routine updates all the VDP registers 00834 .EQU SINP, >08; *SEARCH FOR PACKET 8/30 INITIAL PAGE 00835 * This flag is set on a channel change initialisation to enable 00836 * the packet 8/30 initial page for the new channel to be received. 00837 .EQU HOSP, >04; *HOLD DISPLAYED SUB-PAGE 00838 .EQU PCSP, >02; *PROCESS COMPLETE SUB-PAGE IN SPLM CODE 00839 .EQU SPIN, >01; *SUB-PAGE PAGE LATCH INIT 00840 * This flag causes sub-page latch initialisation in SPLM 00841 *----------------------------------------------------------------------* 00842 **** VPPRG2, *VBI POST PROCESSING REGISTER 00843 * ----------------------------------------------------------------- 00844 * |SUBT |NWSF | |DPFC |USPR |CSPLL |DPC |DPHC | 00845 * ----------------------------------------------------------------- 00846 .EQU SUBT, >80; *STORE 0 IS A SUBTITLE PAGE 00847 .EQU NWSF, >40; *STORE 0 IS A NEWSFLASH PAGE 00848 .EQU DPFC, >10; *DISPLAY PAGE FIRST CAPTURE 00849 * This flag indicates to the VPP code that the display page 00850 * has just been captured for the first time. 00851 .EQU USPR, >08; *UPDATE SUB-PAGE REGISTERS IN TOP MODE 00852 .EQU CSPLL, >04; *CALL SET PLL REGISTERS ROUTINE 00853 .EQU DPC, >02; *DISPLAY PAGE CAPTURED 00854 * This flag indicates that the display page was captured during 00855 * the last VBI. 00856 .EQU DPHC, >01; *DISPLAY PAGE HEADER CAPTURED 00857 * This flag indicates that a header of the displayed page was 00858 * captured during the last VBI period. 00859 *----------------------------------------------------------------------* 00860 **** EXPREG, *EXTENSION PACKETS REGISTER 00861 * ----------------------------------------------------------------- 00862 * |P830F2 |PDC |VPS |WSS |CGAP |CPRF |USM |SRTC | 00863 * ----------------------------------------------------------------- 00864 .EQU P830F2, >80; *CAPTURE PACKET 8/30 FORMAT 2 00865 .EQU PDC, >40; *CAPTURE PDC PACKET 26S 00866 .EQU VPS, >20; *CAPTURE VPS PACKET 00867 .EQU WSS, >10; *CAPTURE WSS PACKET 00868 .EQU CGAP, >08; *CALL GENERATE A PROMPT ROUTINE IN VPP 00869 * If this flag is set, the VBI post processing code will generate 00870 * a prompt (if APIN=0). 00871 .EQU CPRF, >04; *CLEAR PROMPT FIRST 00872 * If this flag is set, the GAP code will clear row 24 before 00873 * generating a prompt. 00874 .EQU USM, >02; *USER STATUS MODE 00875 * This mode is set when the packet 8/30 field is being 00876 * automatically displayed by the status function. 00877 .EQU SRTC, >01; *STATUS READY TO COPY 00878 * This flag is set when the packet 8/30 status field is captured. 00879 * If USM=1 and SRTC=1, the VBI post processing code clears SRTC 00880 * and copies the status info to store 0. 00881 *----------------------------------------------------------------------* 00882 **** STSWD0, *STATUS WORD 0 REGISTER 00883 * ----------------------------------------------------------------- 00884 * |TFLG |POFF |FFLG |BADFLG | | | |TWSS | 00885 * ----------------------------------------------------------------- 00886 .EQU TFLG, >80; *TOP FLAG 00887 .EQU POFF, >40; *PICTURE OFF FLAG 00888 * This flag is set if the sync switch is set to internal sync. 00889 .EQU FFLG, >20; *FLOF FLAG 00890 .EQU BADFLG, >10; *BAD QUALITY FLAG 00891 * 00892 .EQU TWSS, >01; *SEEN WSS PACKET FLAG 00893 * 00894 *----------------------------------------------------------------------* 00895 **** MREG1, *MODE REGISTER 1 00896 * ----------------------------------------------------------------- 00897 * |IFRUN |ADDSTS |UPSYM |THRSH |FPPP |DETV |RKM |RIB | 00898 * ----------------------------------------------------------------- 00899 .EQU IFRUN, >80; *INHIBIT FREE-RUN 00900 * If set, this prevents the free-run PLL coeffs being loaded if 00901 * the quality algorithm indicates a bad signal. The decoder will 00902 * always try to lock (unless 624 mode is set). 00903 .EQU ADDSTS, >40; *ADDITIONAL STATUS BYTES SELECTED 00904 .EQU UPSYM, >20; *UPDATE SYMBOL MODE (SET NOKIA MODE) 00905 .EQU THRSH, >10; *TELETEXT THRESHOLD ACTIVE 00906 .EQU FPPP, >08; *FORCE PAGE PREFIX TO P 00907 .EQU DETV, >04; *DIGIT ENTRY ENABLED IN TV MODE 00908 .EQU RKM, >02; *RED KEY MODE (SET NOKIA MODE) 00909 .EQU RIB, >01; *ROTATE IN GROUP (SET NOKIA MODE) 00910 *----------------------------------------------------------------------* 00911 **** LPPREG, >29; *LINE POST PROCESSING REGISTER 00912 * ----------------------------------------------------------------- 00913 * | | | | | | | | | 00914 * ----------------------------------------------------------------- 00915 * If LPPREG=0, no post processing to do 00916 * If LPPREG=1, process a header of a page not in a latch. 00917 * If LPPREG=2, process a header of a page in a latch. 00918 * If LPPREG=3, packet 1-24 stored 00919 * If LPPREG=4, there was a ROW or MAG hamming error 00920 * If LPPREG=5, there was a UNITS or TENS hamming error 00921 * If LPPREG=6, packet 26 received and PDC triplets stored 00922 * If LPPREG=7, packet 8/30 format 2 00923 * If LPPREG=8, process header in browse mode 00924 * If LPPREG=9, packet 8/30 format 1 00925 * If LPPREG=10, process BTT line with error 00926 * If LPPREG=11, packet 24 received 00927 *----------------------------------------------------------------------* 00928 **** HFLGS, *HARD FLAGS (!!! NOT RESET BY SRST!!!) 00929 * ----------------------------------------------------------------- 00930 * | | | | | | | | | 00931 * ----------------------------------------------------------------- 00932 *----------------------------------------------------------------------* 00933 **** MASK, *TEMPORARY MASK FOR BTT AND SUB-PAGE CHECKS 00934 * ----------------------------------------------------------------- 00935 * | | | | |BTTM |MSP | 00936 * ----------------------------------------------------------------- 00937 .EQU BTTM, >08; *BTT MASK BIT FOR SUB-PAGE CHECK CODE 00938 *EQU MSP, >07; *SUB-PAGE LATCH MARKER FIELD (SEE SPREGx) 00939 *----------------------------------------------------------------------* 00940 **** ****, * 00941 * ----------------------------------------------------------------- 00942 * | | | | | | | | | 00943 * ----------------------------------------------------------------- 00944 *EQU 00945 *----------------------------------------------------------------------* 00946 *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++* 00947 * 00948 * MICROCODE ADDRESS EQUATES 00949 * 00950 *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++* 00951 * 00952 .EQU HRST0, >000; * Harware reset, must be >000 00953 * 00954 .EQU I30Y, >010; *CASE ROW-24 00955 .EQU I31, >011; * 00956 .EQU I32, >012; * 00957 .EQU I33, >013; * 00958 .EQU I34, >014; * 00959 .EQU I35, >015; * 00960 *EQU >016; *UNUSED 00961 .EQU I37, >017; 00962 * 00963 .EQU DR10Y, >018; *CASE 00964 .EQU DR11, >019; * 00965 .EQU DR12, >01A; * 00966 * 00967 .EQU HD20Y, >020; *CASE PCL 00968 .EQU HD21, >021; * 00969 .EQU HD22, >022; * 00970 .EQU HD23, >023; * 00971 .EQU HD24, >024; * 00972 .EQU HD25, >025; * 00973 .EQU HD26, >026; * 00974 .EQU HD27, >027; * 00975 * 00976 .EQU CGB5Y, >030; *RETURN FROM WAIT 00977 .EQU BSD7, >031; * 00978 .EQU BSD9, >032; * 00979 .EQU BSD71B, >033; * 00980 .EQU PLP45, >034; * 00981 .EQU PLP55, >035; * 00982 .EQU PLP24B, >036; * 00983 .EQU VPS006, >037; * 00984 .EQU VPS014, >038; * 00985 * 00986 .EQU CGAXX.0, >040; *CASE 00987 .EQU CGAXX.1, >041; * 00988 .EQU CGAXX.2, >042; * 00989 .EQU CGAXX.3, >043; * 00990 .EQU CGAXX.4, >044; * 00991 .EQU CGAXX.5, >045; * 00992 .EQU CGAXX.6, >046; * 00993 .EQU CGAXX.7, >047; * 00994 * 00995 .EQU PND62Y, >050; *CASE RETURN FROM PND50T 00996 .EQU GAP51, >051; * 00997 .EQU GAP310, >052; * 00998 *EQU CMPE55T, >053; *(ACTUALLY EXITS BEFORE CASE) 00999 * 01000 .EQU CKR200Y, >060; *CASE RETURN FROM GFL0 01001 .EQU IKR20, >061; * 01002 .EQU FPFS210, >062; * 01003 .EQU GAP62B, >063; * 01004 * 01005 .EQU PND80Y, >070; *CASE RETURN FROM PND72 01006 .EQU GAP342, >071; * 01007 * 01008 .EQU SVDP10Y, >080; *CASE UPD+C8YET 01009 .EQU SVDP11, >081; * 01010 .EQU SVDP12, >082; * 01011 .EQU SVDP13, >083; * 01012 * 01013 .EQU SVDP20Y, >090; *CASE SCREEN 01014 .EQU SVDP21, >091; * 01015 .EQU SVDP22, >092; * 01016 .EQU SVDP23, >093; * 01017 * 01018 .EQU VPP500Y, >0A0; *CASE RETURN FROM CBR0 01019 .EQU FPFS410, >0A1; * 01020 .EQU FPFS430, >0A2; * 01021 * 01022 .EQU PLP20Y, >0B0; *CASE LINK IN PLP CODE 01023 .EQU PLP21, >0B1; * 01024 .EQU PLP22, >0B2; * 01025 .EQU PLP23, >0B3; * 01026 .EQU PLP24, >0B4; * 01027 .EQU PLP25, >0B5; * 01028 .EQU PLP26, >0B6; * 01029 * 01030 .EQU RC40Y, >0C0; *CASE RETURN FROM POINT0F 01031 .EQU RC60A, >0C1; * 01032 * 01033 .EQU SMENM7Y, >0D0; *CASE RETURN FROM CSCN 01034 .EQU DI100, >0D1; * 01035 .EQU INPCM14E, >0D2; * 01036 .EQU ROW10, >0D3; * 01037 .EQU CHNG3, >0D4; * 01038 .EQU CHNG4, >0D5; * 01039 .EQU CHNG2A, >0D6; * 01040 .EQU CHNG2B, >0D7; * 01041 * 01042 .EQU VPP215Y, >0E0; *CASE RETURN FROM MASK0 01043 .EQU LPP20, >0E1; * 01044 .EQU LPP110, >0E2; * 01045 * 01046 .EQU RC60Y, >0F0; *CASE RMODE 01047 .EQU RC61, >0F1; * 01048 .EQU RC62, >0F2; * 01049 .EQU RC63, >0F3; * 01050 .EQU RC64, >0F4; * 01051 .EQU RC65, >0F5; * 01052 .EQU RC66, >0F6; * 01053 .EQU RC67, >0F7; * 01054 * 01055 .EQU PND53.0, >100; *CASE 01056 .EQU PND53.1, >101; * 01057 .EQU PND53.2, >102; * 01058 .EQU PND53.3, >103; * 01059 * 01060 .EQU PND54A.0, >110; *CASE 01061 .EQU PND54A.1, >111; * 01062 .EQU PND54A.2, >112; * 01063 .EQU PND54A.3, >113; * 01064 .EQU PND54A.4, >114; * 01065 .EQU PND54A.5, >115; * 01066 .EQU PND54A.6, >116; * 01067 .EQU PND54A.7, >117; * 01068 * 01069 .EQU PND54B.0, >120; *CASE 01070 .EQU PND54B.1, >121; * 01071 .EQU PND54B.2, >122; * 01072 .EQU PND54B.3, >123; * 01073 .EQU PND54B.4, >124; * 01074 .EQU PND54B.5, >125; * 01075 .EQU PND54B.6, >126; * 01076 .EQU PND54B.7, >127; * 01077 * 01078 .EQU PND54C.0, >130; *CASE 01079 .EQU PND54C.1, >131; * 01080 .EQU PND54C.2, >132; * 01081 .EQU PND54C.3, >133; * 01082 .EQU PND54C.4, >134; * 01083 .EQU PND54C.5, >135; * 01084 .EQU PND54C.6, >136; * 01085 .EQU PND54C.7, >137; * 01086 * 01087 .EQU PND54D.0, >140; *CASE 01088 .EQU PND54D.1, >141; * 01089 .EQU PND54D.2, >142; * 01090 .EQU PND54D.3, >143; * 01091 .EQU PND54D.4, >144; * 01092 .EQU PND54D.5, >145; * 01093 .EQU PND54D.6, >146; * 01094 .EQU PND54D.7, >147; * 01095 * 01096 .EQU DI0XY, >200; *CASE 01097 .EQU DI1X, >201; * 01098 .EQU DI2X, >202; * 01099 .EQU DI3X, >203; * 01100 .EQU DI4X, >204; * 01101 .EQU DI5X, >205; * 01102 .EQU DI6X, >206; * 01103 .EQU DI7X, >207; * 01104 * 01105 .EQU GFP20Y, >208; *CASE 01106 .EQU GFP21, >209; * 01107 .EQU GFP22, >20A; * 01108 .EQU GFP23, >20B; * 01109 * 01110 .EQU DI00Y, >210; *CASE 01111 .EQU DI01, >211; * 01112 .EQU DI02, >212; * 01113 .EQU DI03, >213; * 01114 .EQU DI04, >214; * 01115 .EQU DI05, >215; * 01116 .EQU DI06, >216; * 01117 .EQU DI07, >217; * 01118 .EQU DI08, >218; * 01119 .EQU DI09, >219; * 01120 .EQU DI0A, >21A; * 01121 .EQU DI0B, >21B; * 01122 .EQU DI0C, >21C; * 01123 .EQU DI0D, >21D; * 01124 .EQU DI0E, >21E; * 01125 .EQU DI0F, >21F; * 01126 * 01127 .EQU DI10Y, >220; *CASE 01128 .EQU DI11, >221; * 01129 .EQU DI12, >222; * 01130 .EQU DI13, >223; * 01131 .EQU DI14, >224; * 01132 .EQU DI15, >225; * 01133 .EQU DI16, >226; * 01134 .EQU DI17, >227; * 01135 .EQU DI18, >228; * 01136 .EQU DI19, >229; * 01137 .EQU DI1A, >22A; * 01138 .EQU DI1B, >22B; * 01139 .EQU DI1C, >22C; * 01140 .EQU DI1D, >22D; * 01141 .EQU DI1E, >22E; * 01142 .EQU DI1F, >22F; * 01143 * 01144 .EQU CKR30Y, >230; *CASE 01145 .EQU CKR31, >231; * 01146 .EQU CKR32, >232; * 01147 .EQU CKR33, >233; * 01148 * 01149 .EQU DIG10Y, >238; *CASE PAGE ENTRY STATE 01150 .EQU DIG11, >239; * 01151 .EQU DIG12, >23A; * 01152 *EQU >23B; * 01153 .EQU DIG14, >23C; * 01154 .EQU DIG15, >23D; * 01155 .EQU DIG16, >23E; * 01156 .EQU DIG17, >23F; * 01157 * 01158 .EQU DI40Y, >240; *CASE 01159 .EQU DI41, >241; * 01160 .EQU DI42, >242; * 01161 .EQU DI43, >243; * 01162 .EQU DI44, >244; * 01163 .EQU DI45, >245; * 01164 .EQU DI46, >246; * 01165 .EQU DI47, >247; * 01166 .EQU DI48, >248; * 01167 .EQU DI49, >249; * 01168 .EQU DI4A, >24A; * 01169 .EQU DI4B, >24B; * 01170 .EQU DI4C, >24C; * 01171 .EQU DI4D, >24D; * 01172 .EQU DI4E, >24E; * 01173 .EQU DI4F, >24F; * 01174 * 01175 .EQU DI70Y, >250; *CASE 01176 .EQU DI71, >251; * 01177 .EQU DI72, >252; * 01178 .EQU DI73, >253; * 01179 .EQU DI74, >254; * 01180 .EQU DI75, >255; * 01181 .EQU DI76, >256; * 01182 .EQU DI77, >257; * 01183 .EQU DI78, >258; * 01184 .EQU DI79, >259; * 01185 .EQU DI7A, >25A; * 01186 .EQU DI7B, >25B; * 01187 .EQU DI7C, >25C; * 01188 .EQU DI7D, >25D; * 01189 .EQU DI7E, >25E; * 01190 .EQU DI7F, >25F; * 01191 * 01192 .EQU DI60Y, >260; *CASE 01193 .EQU DI61, >261; * 01194 .EQU DI62, >262; * 01195 .EQU DI63, >263; * 01196 .EQU DI64, >264; * 01197 .EQU DI65, >265; * 01198 .EQU DI66, >266; * 01199 .EQU DI67, >267; * 01200 * 01201 .EQU FPFS60Y, >270; *CASE RETURN FROM GFP0T 01202 .EQU GAP63B, >271; * 01203 .EQU CKR300, >272; * 01204 * 01205 .EQU SST2Y, >290; *CASE RETURN FROM PIL0 01206 .EQU VPP254, >291; * 01207 .EQU VPP370, >292; * 01208 .EQU FPFS333, >293; * 01209 .EQU GAP63E, >294; * 01210 * 01211 .EQU SST5Y, >298; *CASE RETURN FROM INLA0 01212 .EQU VPP263, >299; * 01213 *EQU >29A; * 01214 *EQU >29B; *DO NOT USE! (RETURN=3 EXITS PXTOLA CODE) 01215 * 01216 .EQU FPFS30Y, >2AC; *CASE 01217 .EQU FPFS31, >2AD; * 01218 .EQU FPFS32, >2AE; * 01219 .EQU FPFS33, >2AF; * 01220 * 01221 .EQU FPFS50Y, >2B4; *CASE 01222 .EQU FPFS51, >2B5; * 01223 .EQU FPFS52, >2B6; * 01224 .EQU FPFS53, >2B7; * 01225 * 01226 .EQU SPLM22Y, >2C0; *CASE RETURN FROM CSP0 01227 .EQU SPLM42, >2C1; * 01228 * 01229 .EQU DIG30Y, >2D8; *CASE RETURN FROM PPB0 01230 *EQU >2D9; * 01231 .EQU DIP2, >2DA; * 01232 .EQU LPP30, >2DB; * 01233 .EQU CKR2, >2DC; * 01234 .EQU CKR210, >2DD; * 01235 .EQU IKR10, >2DE; * 01236 * 01237 .EQU DIP8Y.0, >2E0; *CASE 01238 .EQU DIP8Y.1, >2E1; * 01239 .EQU DIP8Y.2, >2E2; * 01240 .EQU DIP8Y.3, >2E3; * 01241 * 01242 .EQU SAT20Y, >2E8; *CASE 01243 .EQU SAT21, >2E9; * 01244 .EQU SAT22, >2EA; * 01245 .EQU SAT23, >2EB; * 01246 * 01247 .EQU EXP10Y, >348; *CASE UEXT+UEXB 01248 .EQU EXP11, >349; * 01249 .EQU EXP12, >34A; * 01250 .EQU EXP13, >34B; * 01251 * 01252 .EQU LPP10Y, >370; *CASE LPPREG 01253 .EQU LPP11, >371; * 01254 .EQU LPP12, >372; * 01255 .EQU LPP13, >373; * 01256 .EQU LPP14, >374; * 01257 .EQU LPP15, >375; * 01258 .EQU LPP16, >376; * 01259 .EQU LPP17, >377; * 01260 .EQU LPP18, >378; * 01261 .EQU LPP19, >379; * 01262 .EQU LPP1A, >37A; * 01263 * 01264 .EQU DI30Y, >3B0; *CASE 01265 .EQU DI31, >3B1; * 01266 .EQU DI32, >3B2; * 01267 .EQU DI33, >3B3; * 01268 .EQU DI34, >3B4; * 01269 .EQU DI35, >3B5; * 01270 .EQU DI36, >3B6; * 01271 .EQU DI37, >3B7; * 01272 .EQU DI38, >3B8; * 01273 .EQU DI39, >3B9; * 01274 .EQU DI3A, >3BA; * 01275 .EQU DI3B, >3BB; * 01276 .EQU DI3C, >3BC; * 01277 .EQU DI3D, >3BD; * 01278 .EQU DI3E, >3BE; * 01279 .EQU DI3F, >3BF; * 01280 * 01281 .EQU VPP250Y, >3F0; *CASE RETURN FROM DPTP 01282 *EQU >3F1; * 01283 * 01284 .EQU PND30Y, >410; *CASE 01285 .EQU PND31, >411; * 01286 .EQU PND32, >412; * 01287 .EQU PND33, >413; * 01288 .EQU PND34, >414; * 01289 .EQU PND35, >415; * 01290 .EQU PND36, >416; * 01291 .EQU PND37, >417; * 01292 .EQU PND38, >418; * 01293 * 01294 .EQU SPLM0.0, >430; * CASE return from FSP0T 01295 .EQU DIP30.1, >431; * 01296 .EQU TCJVPP05.2, >432; * 01297 * 01298 .EQU DIP40Y, >440; *CASE RETURN FROM DISP0 01299 .EQU SPLM110, >441; * 01300 .EQU SPLM300, >442; * 01301 .EQU SPLM400, >443; * 01302 * 01303 .EQU TCJVPP08.0, >450; * Case 01304 .EQU TCJVPP08.1, >451; * 01305 .EQU TCJVPP08.2, >452; * 01306 .EQU TCJVPP08.3, >453; * 01307 * 01308 .EQU TCJVPP63.0, >480; * CASE 01309 .EQU TCJVPP63.1, >481; * 01310 .EQU TCJVPP63.2, >482; * 01311 .EQU TCJVPP63.3, >483; * 01312 * 01313 .EQU PPAGE2Y, >498; *CASE RETURN FROM PPDP0 01314 .EQU PMPE4, >499; * 01315 .EQU SPMOD5, >49A; * 01316 .EQU SPCM6, >49B; * 01317 .EQU DIP1B, >49C; * 01318 * 01319 .EQU GFP50Y, >540; *CASE 01320 .EQU GFP51, >541; * 01321 .EQU GFP52, >542; * 01322 .EQU GFP53, >543; * 01323 * 01324 .EQU GNP0Y, >544; *CASE 01325 *EQU XXXX, >545; * 01326 .EQU GAP62, >546; * 01327 .EQU GAP63, >547; * 01328 * 01329 .EQU CGAZZ.0, >548; *CASE 01330 .EQU CGAZZ.1, >549; * 01331 .EQU CGAZZ.2, >54A; * 01332 .EQU CGAZZ.3, >54B; * 01333 .EQU CGAZZ.4, >54C; * 01334 .EQU CGAZZ.5, >54D; * 01335 .EQU CGAZZ.6, >54E; * 01336 .EQU CGAZZ.7, >54F; * 01337 * 01338 .EQU BSD40Y, >588; *CASE RETURN FROM RDD AND RPD 01339 .EQU BSD30, >589; * 01340 .EQU BSD20, >58A; * 01341 .EQU BSD50, >58B; * 01342 .EQU BSD60, >58C; * 01343 * 01344 .EQU SVDP203.0, >590; *CASE 01345 .EQU SVDP203.1, >591; * 01346 .EQU SVDP203.2, >592; * 01347 .EQU SVDP203.3, >593; * 01348 * 01349 .EQU SVDP204.0, >5A0; *CASE 01350 .EQU SVDP204.1, >5A1; * 01351 .EQU SVDP204.2, >5A2; * 01352 .EQU SVDP204.3, >5A3; * 01353 .EQU SVDP204.4, >5A4; * 01354 .EQU SVDP204.5, >5A5; * 01355 .EQU SVDP204.6, >5A6; * 01356 .EQU SVDP204.7, >5A7; * 01357 * 01358 .EQU SVDP206.0, >5B0; *CASE 01359 .EQU SVDP206.1, >5B1; * 01360 .EQU SVDP206.2, >5B2; * 01361 .EQU SVDP206.3, >5B3; * 01362 .EQU SVDP206.4, >5B4; * 01363 .EQU SVDP206.5, >5B5; * 01364 .EQU SVDP206.6, >5B6; * 01365 .EQU SVDP206.7, >5B7; * 01366 * 01367 .EQU SVDP207.0, >5C0; *CASE 01368 .EQU SVDP207.1, >5C1; * 01369 .EQU SVDP207.2, >5C2; * 01370 .EQU SVDP207.3, >5C3; * 01371 .EQU SVDP207.4, >5C4; * 01372 .EQU SVDP207.5, >5C5; * 01373 .EQU SVDP207.6, >5C6; * 01374 .EQU SVDP207.7, >5C7; * 01375 * 01376 *.EQU SVDP208.0, >5D0; *CASE 01377 *.EQU SVDP208.1, >5D1; * 01378 *.EQU SVDP208.2, >5D2; * 01379 *.EQU SVDP208.3, >5D3; * 01380 *.EQU SVDP208.4, >5D4; * 01381 *.EQU SVDP208.5, >5D5; * 01382 *.EQU SVDP208.6, >5D6; * 01383 *.EQU SVDP208.7, >5D7; * 01384 * 01385 .EQU GAP90Y, >5E0; *CASE 01386 .EQU GAP91, >5E1; * 01387 .EQU GAP92, >5E2; * 01388 .EQU GAP93, >5E3; * 01389 * 01390 .EQU GAP70Y, >5E8; *CASE 01391 .EQU GAP71, >5E9; * 01392 .EQU GAP72, >5EA; * 01393 .EQU GAP73, >5EB; * 01394 * 01395 .EQU CHNG50Y, >620; *CASE RETURN FROM INPCM0 01396 .EQU SPCM1, >621; * 01397 .EQU TPP0, >622; * 01398 .EQU PPP100, >623; * 01399 * 01400 .EQU INPCM30Y, >630; *CASE PAGE CAPTURE MODE 01401 .EQU INPCM31, >631; * 01402 .EQU INPCM32, >632; * 01403 .EQU INPCM33, >633; * 01404 * 01405 .EQU TPP30Y, >648; *CASE 01406 .EQU TPP31, >649; *? 01407 .EQU TPP32, >64A; *? 01408 .EQU TPP33, >64B; *? 01409 * 01410 .EQU TPP70Y, >678; *CASE COUNT 01411 .EQU TPP71, >679; * 01412 .EQU TPP72, >67A; * 01413 .EQU TPP73, >67B; * 01414 * 01415 .EQU TPP92Y, >694; *CASE 01416 .EQU TPP93, >695; * 01417 .EQU TPP94, >696; * 01418 * 01419 .EQU TPP50Y, >6B0; *CASE RETURN FROM INSPRG0 01420 .EQU CHNG59A, >6B1; * 01421 .EQU CMPE5, >6B2; * 01422 .EQU INPCM80, >6B3; * 01423 * 01424 .EQU VPP360Y, >6C0; *CASE 01425 .EQU VPP361, >6C1; * 01426 .EQU VPP362, >6C2; * 01427 * 01428 .EQU DI50Y, >6F0; *CASE 01429 .EQU DI51, >6F1; * 01430 .EQU DI52, >6F2; * 01431 .EQU DI53, >6F3; * 01432 .EQU DI54, >6F4; * 01433 .EQU DI55, >6F5; * 01434 .EQU DI56, >6F6; * 01435 .EQU DI57, >6F7; * 01436 .EQU DI58, >6F8; * 01437 .EQU DI59, >6F9; * 01438 .EQU DI5A, >6FA; * 01439 .EQU DI5B, >6FB; * 01440 .EQU DI5C, >6FC; * 01441 .EQU DI5D, >6FD; * 01442 .EQU DI5E, >6FE; * 01443 .EQU DI5F, >6FF; * 01444 * 01445 .EQU DIP20Y, >730; *CASE RETURN FROM INTPN0 01446 .EQU FPFS332, >731; * 01447 .EQU GAP133G, >732; * 01448 .EQU IKR50, >733; * 01449 .EQU GAP160, >734; * 01450 * 01451 .EQU PNTIN46Y, >740; *CASE RETURN FROM DBB0 01452 .EQU SBT33, >741; * 01453 * 01454 .EQU DBB10Y, >750; *CASE ON BTT CODE 01455 .EQU DBB11, >751; * 01456 .EQU DBB12, >752; * 01457 .EQU DBB13, >753; * 01458 .EQU DBB14, >754; * 01459 .EQU DBB15, >755; * 01460 .EQU DBB16, >756; * 01461 .EQU DBB17, >757; * 01462 .EQU DBB18, >758; * 01463 .EQU DBB19, >759; * 01464 .EQU DBB1A, >75A; * 01465 .EQU DBB1B, >75B; * 01466 * 01467 .EQU FSP20Y.0, >760; *CASE 01468 .EQU FSP20Y.1, >761; * 01469 .EQU FSP20Y.2, >762; * 01470 .EQU FSP20Y.3, >763; * 01471 * 01472 .EQU FPFS110Y, >768; *CASE 01473 .EQU FPFS111, >769; * 01474 .EQU FPFS112, >76A; * 01475 .EQU FPFS113, >76B; * 01476 * 01477 .EQU GAP134Y, >778; *CASE RETURN FROM SAT0 01478 .EQU GAP171, >779; * 01479 * 01480 .EQU GAP136Y, >780; *CASE RETURN FROM COP0 01481 .EQU GAP173, >781; * 01482 * 01483 .EQU GAP40Y, >788; *CASE PCM 01484 .EQU GAP41, >789; * 01485 .EQU GAP42, >78A; * 01486 .EQU GAP43, >78B; * 01487 * 01488 .EQU DIP4Y, >790; *CASE RETURN FROM PNTIN0 01489 .EQU FPFS320, >791; * 01490 .EQU CKR4, >792; * 01491 .EQU FPFS41, >793; * 01492 .EQU GAP132, >794; *NEW 01493 .EQU GAP122, >795; * 01494 .EQU GAP138, >796; * 01495 .EQU UPI7, >797; * 01496 .EQU FPFS105, >798; * 01497 .EQU CMPE40, >799; * 01498 .EQU IKR40, >79A; * 01499 * 01500 .EQU DIP18Y, >7A0; *CASE RETURN FROM SBT0 01501 .EQU FPFS331, >7A1; * 01502 .EQU GAP133A, >7A2; * 01503 .EQU INTPN0, >7A3; * 01504 .EQU GAP140, >7A4; * 01505 .EQU GAP133E, >7A5; * 01506 .EQU CKR62, >7A6; * 01507 .EQU CKR66, >7A7; * 01508 .EQU FPFS327, >7A8; * 01509 * 01510 .EQU PNTIN10Y.0, >7B0; *CASE 01511 .EQU PNTIN10Y.1, >7B1; * 01512 .EQU PNTIN10Y.2, >7B2; * 01513 .EQU PNTIN10Y.3, >7B3; * 01514 .EQU PNTIN10Y.4, >7B4; * 01515 .EQU PNTIN10Y.5, >7B5; * 01516 .EQU PNTIN10Y.6, >7B6; * 01517 .EQU PNTIN10Y.7, >7B7; * 01518 * 01519 .EQU PNTIN30Y.0, >7C0; *CASE 01520 .EQU PNTIN30Y.1, >7C1; * 01521 .EQU PNTIN30Y.2, >7C2; * 01522 .EQU PNTIN30Y.3, >7C3; * 01523 .EQU PNTIN30Y.4, >7C4; * 01524 .EQU PNTIN30Y.5, >7C5; * 01525 .EQU PNTIN30Y.6, >7C6; * 01526 .EQU PNTIN30Y.7, >7C7; * 01527 .EQU PNTIN30Y.8, >7C8; * 01528 .EQU PNTIN30Y.9, >7C9; * 01529 * 01530 .EQU TCJVPP13.0, >7D0; *CASE 01531 .EQU TCJVPP13.1, >7D1; * 01532 .EQU TCJVPP13.2, >7D2; * 01533 .EQU TCJVPP13.3, >7D3; * 01534 .EQU TCJVPP13.4, >7D4; * 01535 .EQU TCJVPP13.5, >7D5; * 01536 .EQU TCJVPP13.6, >7D6; * 01537 .EQU TCJVPP13.7, >7D7; * 01538 * 01539 ************************************************************************ 01540 * section 1: poll for event * 01541 ************************************************************************ 01542 * MUST HAVE HAD A CBRDY! 01543 ***CHECK RC ONCE BEFORE POLLING TEXT 01544 .ORG PL0, *AR=POLREG 01545 MA(POLREG), RAM>AR, 01546 JRC(PL1F,PL1T); ----- ----- 80F 0002A002 10000000 ----- 01547 .ORG PL1F, * 01548 JUMP(ST0F); ----- ----- 002 00000001 00000000 ----- 01549 .ORG PL1T, *Y=WAIT 01550 *RC RDY 01551 AR>A, B(WAIT), AND, 01552 JUMP(PL2); ----- ----- 003 00000016 00400810 ----- 01553 .ORG PL2, *WAIT? 01554 JZ(PL3F,PL3T); ----- ----- 016 00002004 00000000 ----- 01555 .ORG PL3F, *WAIT, DELAYING EXECUTION UNTIL END OF VBI 01556 JUMP(ST0F); ----- ----- 004 00000001 00000000 ----- 01557 .ORG PL3T, *NO WAIT 01558 JUMP(RC0T); ----- ----- 005 0000001D 00000000 ----- 01559 * 01560 *ST0F: MAIN POLLING LOOP 01561 * 01562 * I have avoided writing to scratch RAM in the sections of code 01563 * which are repeated continually because of unreliability 01564 * problems with the scratch RAM on the breadboards. 01565 * 01566 ***DO NOT CHECK RC UNLESS VBI=0 01567 .ORG ST0F, *AR=POLREG 01568 * 01569 * TCJ Aug 93, 01570 * The channel change command occasionaly locked up the I2C bus. 01571 * This is because a Line Ready was generated during the command 01572 * and not cleared before resuming teletext processing. 01573 * 01574 CBRDY, 01575 JUMP(SBJ1); ----- ----- 001 0000001B 00002000 ----- 01576 * 01577 .ORG SBJ1, 01578 JUMP(SBJ2F); ----- ----- 01B 0000000A 00000000 ----- 01579 * 01580 .ORG SBJ2F, 01581 *TELETEXT LINE RCVD? 01582 MA(POLREG), RAM>AR, 01583 A(%01000000), RCS>B, AND, 01584 JLINE(ST1F,VPSCHK0T); ----- ----- 00A 00026006 1040080B ----- 01585 * 01586 .ORG ST1F, *VBI? 01587 *Y=VBIFLG 01588 AR>A, B(VBIFLG), AND, 01589 JZ(ST2F,ST2T); ----- ----- 006 00002008 00800810 ----- 01590 .ORG ST2F, *IN VBI, VBIFLG? 01591 *TCJ JZ(ST0F,ST0T); 01592 JZ(SBJ2F,ST0T); ----- ----- 008 0000200A 00000000 ----- 01593 * 01594 .ORG ST0T, *VBI RISING EDGE JUST DETECTED 01595 *VBIFLG=1 01596 MA(POLREG), 01597 AR>A, B(VBIFLG), OR, 01598 Y>RAM, 01599 *TCJ JUMP(ST0F); 01600 JUMP(SBJ2F); ----- ----- 00B 0000000A 10801110 ----- 01601 * 01602 * 01603 * TCJ WSS 01604 * Due to a glitch in the new VBI when have to 01605 * check the VBI line a second time to make 01606 * sure that it realy is low. 01607 * 01608 .ORG ST2T, *CHECK VBI AGAIN 01609 A(%01000000), RCS>B, AND, 01610 JUMP(TCJVBI01); ----- ----- 009 00000039 0040080B ----- 01611 * 01612 .ORG TCJVBI01, *Is it realy low ? 01613 JZ(TCJVBI02F,TCJVBI02T); ----- ----- 039 0000200C 00000000 ----- 01614 * 01615 .ORG TCJVBI02F, *No abort VBI processing 01616 JUMP(SBJ2F); ----- ----- 00C 0000000A 00000000 ----- 01617 * 01618 .ORG TCJVBI02T, *OUT OF VBI 01619 *Y=WAIT 01620 AR>A, B(WAIT), AND, 01621 JUMP(ST2A); ----- ----- 00D 00000053 00400810 ----- 01622 * 01623 .ORG ST2A, *INSTRUCTION WAITING? 01624 *BR=INSTRUCTION 01625 MA(LSTINS), RAM>BR, 01626 JZ(ST2BF,ST2BT); ----- ----- 053 0001200E 2E000000 ----- 01627 .ORG ST2BF, *GO AND COMPLETE DELAYED INSTRUCTION 01628 *WAIT=0 01629 MA(POLREG), 01630 AR>A, B(>FF-WAIT), AND, 01631 Y>RAM, 01632 JUMP(DI0); ----- ----- 00E 000000A3 10BF0910 ----- 01633 .ORG ST2BT, *NO, RC RDY? 01634 *Y=VBIFLG 01635 AR>A, B(VBIFLG), AND, 01636 JRC(ST3F,RC0T); ----- ----- 00F 0000A01C 00800810 ----- 01637 .ORG ST3F, *VBIFLG? 01638 *Y=FIELD TOGGLE 01639 A(%00000010), PLL>B, AND, 01640 JZ(ST3AF,ST3AT); ----- ----- 01C 0000201E 0002080E ----- 01641 .ORG ST3AF, *FALLING EDGE OF VBI DETECTED 01642 *JUMP TO VBI POST PROCESSING 01643 *VBITF=1 01644 MA(POLREG), 01645 AR>A, B(VBITF), OR, 01646 Y>RAM, Y>AR, 01647 JUMP(VPP0); ----- ----- 01E 002200B7 10201110 ----- 01648 .ORG ST3AT, *VBIFLG WAS 0 01649 *Y=LFTOG 01650 *B=STSWD1 01651 MA(STSWD1), RAM>BR, 01652 AR>A, B(LFTOG), AND, 01653 JZ(ST4F,ST4T); ----- ----- 01F 00012028 14100810 ----- 01654 *FIELD TOGGLE LOW 01655 .ORG ST4T, *FIELD TOGGLE=0 01656 *LFTOG? 01657 *Y=VBITF 01658 AR>A, B(VBITF), AND, 01659 JZ(ST5F,ST5T); ----- ----- 029 0000202A 00200810 ----- 01660 .ORG ST5T, *NO CHANGE IN FIELD TOGGLE 01661 *TCJ JUMP(ST0F); 01662 JUMP(SBJ2F); ----- ----- 02B 0000000A 00000000 ----- 01663 * 01664 .ORG ST5F, *FIELD TOGGLE JUST GONE LOW, VBITF? 01665 *LFTOG=0 01666 MA(POLREG), 01667 AR>A, B(>FF-LFTOG), AND, 01668 Y>RAM, Y>AR, 01669 JZ(ST7F,ST7T); ----- ----- 02A 0022202C 10EF0910 ----- 01670 *FIELD TOGGLE HIGH 01671 .ORG ST4F, *FIELD TOGGLE=1 01672 *LFTOG? 01673 *Y=VBITF 01674 AR>A, B(VBITF), AND, 01675 JZ(ST6F,ST6T); ----- ----- 028 0000202E 00200810 ----- 01676 .ORG ST6F, *NO CHANGE IN FIELD TOGGLE 01677 *TCJ JUMP(ST0F); 01678 JUMP(SBJ2F); ----- ----- 02E 0000000A 00000000 ----- 01679 * 01680 .ORG ST6T, *FIELD TOGGLE JUST GONE HIGH, VBITF? 01681 *LFTOG=1 01682 MA(POLREG), 01683 AR>A, B(LFTOG), OR, 01684 Y>RAM, Y>AR, 01685 JZ(ST7F,ST7T); ----- ----- 02F 0022202C 10101110 ----- 01686 *FIELD LOCKED 01687 .ORG ST7F, *FLOCK=1 01688 MA(STSWD1), 01689 A(FLOCK), BR>B, OR, 01690 Y>RAM, 01691 JUMP(ST8); ----- ----- 02C 000000E3 14201101 ----- 01692 .ORG ST8, *VBITF=0 01693 MA(POLREG), 01694 AR>A, B(>FF-VBITF), AND, 01695 Y>RAM, 01696 *TCJ JUMP(ST0F); 01697 JUMP(SBJ2F); ----- ----- 0E3 0000000A 10DF0910 ----- 01698 * 01699 *FIELD NOT LOCKED 01700 .ORG ST7T, *FLOCK=0 01701 *JUMP TO VBI POST PROCESSING 01702 MA(STSWD1), 01703 A(>FF-FLOCK), BR>B, AND, 01704 Y>RAM, 01705 JUMP(VPP0); ----- ----- 02D 000000B7 14DF0901 ----- 01706 * 01707 ************************************************************************ 01708 * section 2a: recieve VPS line * 01709 ************************************************************************ 01710 * 01711 * TCJ Feb 94, 01712 * 01713 * VPS reception 01714 * First check the MSB of the byte in the front end when we 01715 * receive a line ready. If this bit is a one we have VPS 01716 * otherwise we have TEXT. 01717 * 01718 * TCJ June 95, 01719 * 01720 * Line 23 Reception 01721 * If MSB is one, then check bit 6, if it is a zero we have 01722 * VPS otherwise we have Line 23 data 01723 * 01724 .ORG VPSCHK0T, * Y = byte in front end 01725 A(>80), DATA>B, AND, 01726 JUMP(VPSCHK1); ----- ----- 007 0000023B 00800805 ----- 01727 * 01728 .ORG VPSCHK1, * MSB of byte == 1 ? 01729 MA(STSWD0), RAM>AR, 01730 A(>40), DATA>B, AND, 01731 JZ(VPSCHK2F,G1T); ----- ----- 23B 0002203A 64400805 ----- 01732 * 01733 .ORG VPSCHK2F, 01734 * BR = system 2 flags 01735 MA(SYS2), RAM>BR, 01736 JZ(WSS000F,VPS000T); ----- ----- 03A 0001203C 09000000 ----- 01737 * 01738 .ORG VPS000T, * AR = Extension packet flags 01739 * set the Iv'e seen VPS flag 01740 CBRDY, 01741 A(TVPS), BR>B, OR, 01742 MA(SYS2), Y>RAM, 01743 JUMP(VPS000A); ----- ----- 03D 00000273 09103101 ----- 01744 * 01745 .ORG VPS000A, 01746 MA(EXPREG), RAM>AR, 01747 JUMP(VPS001); ----- ----- 273 00020295 63000000 ----- 01748 * 01749 .ORG VPS001, * Y = VPS packet enable flag 01750 AR>A, B(VPS), AND, 01751 JUMP(VPS002); ----- ----- 295 000002D9 00200810 ----- 01752 * 01753 .ORG VPS002, * Capturing VPS packet ? 01754 * AR = Row 20 01755 Y(20), Y>AR, 01756 JZ(VPS003F,VPS003T); ----- ----- 2D9 0022203E 00141000 ----- 01757 * 01758 .ORG VPS003T, * No, abort the line 01759 JUMP(ST0F); ----- ----- 03F 00000001 00000000 ----- 01760 * 01761 .ORG VPS003F, * PR = AR * 40, Row 20 Column 0 01762 * Fetch pointer to store 7 01763 MA(STOR7), RAM>AR, 01764 AR<<3>A, AR<<5>B, ADD, 01765 Y>PR, 01766 JUMP(VPS004A); ----- ----- 03E 000202DF A7000059 ----- 01767 * 01768 .ORG VPS004A, * Point to store 7 01769 MA(RWL), 01770 ARHI>A, B(0), OR, 01771 Y>RAM, Y>IO, 01772 JUMP(VPS004B); ----- ----- 2DF 0000037B 0B005120 ----- 01773 * 01774 .ORG VPS004B, * We need to wait for 4 bytes 01775 Y(4), 01776 Y>AR, 01777 JUMP(VPS005); ----- ----- 37B 002203F1 00041000 ----- 01778 * 01779 .ORG VPS005, * Return to VPS006 01780 MA(RETURN), 01781 Y(7), 01782 Y>RAM, 01783 JUMP(WAIT0F); ----- ----- 3F1 0000065E 7C071100 ----- 01784 * 01785 .ORG VPS006, * Read the packet count 01786 * Return from WAIT 01787 PR>MA, RVDP, 01788 JUMP(VPS007); ----- ----- 037 00100419 00008000 ----- 01789 * 01790 .ORG VPS007, * Increment packet count 01791 * and write it back 01792 PR>MA, 01793 TPD>A, B(1), ADD, 01794 Y>DR, 01795 JBYTE(VPS008F,VPS008T); ----- ----- 419 00109048 00010090 ----- 01796 * 01797 .ORG VPS008F, * Wait for the first VPS byte 01798 PR>BR, 01799 JBYTE(VPS008F,VPS008T); ----- ----- 048 00418048 00000000 ----- 01800 * 01801 .ORG VPS008T, * Increment PR pointer 01802 CBRDY, 01803 A(1), BR>B, ADD, 01804 Y>PR, 01805 JUMP(VPS009); ----- ----- 049 00000433 80012001 ----- 01806 * 01807 .ORG VPS009, * Write first byte to RAM 01808 A(>30), DATA>B, OR, 01809 Y>DR, 01810 JUMP(VPS009A); ----- ----- 433 0000149D 00301005 ----- 01811 * 01812 .ORG VPS009A, * A = VPS error count 01813 MA(VPSERR), RAM>AR, 01814 JN(VPS009BF,VPS009BT); ----- ----- 49D 0002404A 0A000000 ----- 01815 * 01816 .ORG VPS009BT, 01817 MA(VPSERR), 01818 AR>A, B(1), ADD, 01819 Y>RAM, 01820 JUMP(VPS010F); ----- ----- 04B 0000004C 0A010110 ----- 01821 * 01822 .ORG VPS009BF, 01823 JUMP(VPS010F); ----- ----- 04A 0000004C 00000000 ----- 01824 * 01825 .ORG VPS010F, * Wait for the second VPS byte 01826 PR>BR, 01827 JBYTE(VPS010F,VPS010T); ----- ----- 04C 0041804C 00000000 ----- 01828 * 01829 .ORG VPS010T, * Increment PR pointer 01830 CBRDY, 01831 A(1), BR>B, ADD, 01832 Y>PR, 01833 JUMP(VPS011); ----- ----- 04D 00000545 80012001 ----- 01834 * 01835 .ORG VPS011, * Write second byte to RAM 01836 A(>30), DATA>B, OR, 01837 Y>DR, 01838 JUMP(VPS011A); ----- ----- 545 0000158D 00301005 ----- 01839 * 01840 .ORG VPS011A, * A = VPS error count 01841 MA(VPSERR), RAM>AR, 01842 JN(VPS011BF,VPS011BT); ----- ----- 58D 0002404E 0A000000 ----- 01843 * 01844 .ORG VPS011BT, 01845 MA(VPSERR), 01846 AR>A, B(1), ADD, 01847 Y>RAM, 01848 JUMP(VPS012); ----- ----- 04F 00000697 0A010110 ----- 01849 * 01850 .ORG VPS011BF, 01851 JUMP(VPS012); ----- ----- 04E 00000697 00000000 ----- 01852 * 01853 .ORG VPS012, * Wait for next 10 bytes 01854 Y(10), Y>AR, 01855 JUMP(VPS013); ----- ----- 697 002206C3 000A1000 ----- 01856 * 01857 .ORG VPS013, * Return to VPS014 01858 * call WAIT routine 01859 MA(RETURN), 01860 Y(8), 01861 Y>RAM, 01862 JUMP(WAIT0F); ----- ----- 6C3 0000065E 7C081100 ----- 01863 * 01864 .ORG VPS014, * Return from WAIT 01865 * Receive 10 VPS bytes 01866 Y(10), Y>AR, 01867 JUMP(VPS015F); ----- ----- 038 00220054 000A1000 ----- 01868 * 01869 .ORG VPS015F, * Wait for the next VPS byte 01870 PR>BR, 01871 JBYTE(VPS015F,VPS015T); ----- ----- 054 00418054 00000000 ----- 01872 * 01873 .ORG VPS015T, * Decrement loop count 01874 AR>A, B(-1), ADD, 01875 Y>AR, 01876 JUMP(VPS016); ----- ----- 055 00220702 00FF0010 ----- 01877 * 01878 .ORG VPS016, * Increment PR pointer 01879 * loop count == 0 ? 01880 CBRDY, 01881 A(1), BR>B, ADD, 01882 Y>PR, 01883 JZ(VPS017F,VPS017T); ----- ----- 702 00002056 80012001 ----- 01884 * 01885 .ORG VPS017F, * Write next byte to RAM 01886 A(>30), DATA>B, OR, 01887 Y>DR, 01888 JUMP(VPS017A); ----- ----- 056 00001703 00301005 ----- 01889 * 01890 .ORG VPS017A, * A = VPS error count 01891 MA(VPSERR), RAM>BR, 01892 JN(VPS017BF,VPS017BT); ----- ----- 703 00014058 0A000000 ----- 01893 * 01894 .ORG VPS017BT, 01895 MA(VPSERR), 01896 A(1), BR>B, ADD, 01897 Y>RAM, 01898 JUMP(VPS015F); ----- ----- 059 00000054 0A010101 ----- 01899 * 01900 .ORG VPS017BF, 01901 JUMP(VPS015F); ----- ----- 058 00000054 00000000 ----- 01902 * 01903 .ORG VPS017T, * Write last byte to RAM 01904 A(>30), DATA>B, OR, 01905 Y>DR, 01906 PR>BR, 01907 JUMP(VPS018); ----- ----- 057 00411704 00301005 ----- 01908 * 01909 .ORG VPS018, * Skip over one byte 01910 MA(VPSERR), RAM>AR, 01911 A(2), BR>B, ADD, 01912 Y>PR, 01913 JUMP(VPS019); ----- ----- 704 00020705 8A020001 ----- 01914 * 01915 .ORG VPS019, * Write MSNibble of error count 01916 ARHI>A, B(>30), OR, 01917 Y>DR, 01918 PR>BR, 01919 JUMP(VPS020); ----- ----- 705 00411706 00301020 ----- 01920 * 01921 .ORG VPS020, * Increment write pointer 01922 A(1), BR>B, ADD, 01923 Y>PR, 01924 JUMP(VPS21); ----- ----- 706 00000707 80010001 ----- 01925 * 01926 .ORG VPS21, * Write LSNibble of error count 01927 AR.0F>A, B(>30), OR, 01928 Y>DR, 01929 JUMP(ST0F); ----- ----- 707 00001001 003010C0 ----- 01930 * 01931 ************************************************************************ 01932 * section 2b: recieve WSS line * 01933 ************************************************************************ 01934 * 01935 .ORG WSS000F, * Set to I've seen a WSS packet flag 01936 CBRDY, 01937 AR>A, B(TWSS), OR, 01938 MA(STSWD0), Y>RAM, 01939 JUMP(WSS001); ----- ----- 03C 00000708 64013110 ----- 01940 * 01941 .ORG WSS001, 01942 MA(EXPREG), RAM>AR, 01943 JUMP(WSS002); ----- ----- 708 00020709 63000000 ----- 01944 * 01945 .ORG WSS002, * Y = WSS packet enable flag 01946 AR>A, B(WSS), AND, 01947 JUMP(WSS003); ----- ----- 709 0000070A 00100810 ----- 01948 * 01949 .ORG WSS003, * Capturing WSS packet ? 01950 * AR = Row 21 01951 Y(21), Y>AR, 01952 JZ(WSS004F,WSS004T); ----- ----- 70A 0022205A 00151000 ----- 01953 * 01954 .ORG WSS004T, * No, abort the line 01955 JUMP(ST0F); ----- ----- 05B 00000001 00000000 ----- 01956 * 01957 .ORG WSS004F, * PR = AR * 40, Row 21 Column 0 01958 * Fetch pointer to store 7 01959 MA(STOR7), RAM>AR, 01960 AR<<3>A, AR<<5>B, ADD, 01961 Y>PR, 01962 JUMP(WSS005); ----- ----- 05A 0002070B A7000059 ----- 01963 * 01964 .ORG WSS005, * Point to store 7 01965 MA(RWL), 01966 ARHI>A, B(0), OR, 01967 Y>RAM, Y>IO, 01968 JUMP(WSS006); ----- ----- 70B 0000070C 0B005120 ----- 01969 * 01970 .ORG WSS006, * Read packet count 01971 * byte count to 18 01972 PR>MA, RVDP, 01973 Y(18), Y>AR, 01974 JUMP(WSS007); ----- ----- 70C 0032070D 00129000 ----- 01975 * 01976 .ORG WSS007, * Increment packet count 01977 * and write it back 01978 PR>MA, 01979 TPD>A, B(1), ADD, 01980 Y>DR, 01981 JBYTE(WSS008F,WSS008T); ----- ----- 70D 0010905C 00010090 ----- 01982 * 01983 .ORG WSS008F, 01984 PR>BR, 01985 JBYTE(WSS008F,WSS008T); ----- ----- 05C 0041805C 00000000 ----- 01986 * 01987 .ORG WSS008T, * Decrement byte count 01988 AR>A, B(-1), ADD, 01989 Y>AR, 01990 JUMP(WSS010); ----- ----- 05D 0022070E 00FF0010 ----- 01991 * 01992 .ORG WSS010, * Increment byte pointer 01993 CBRDY, 01994 A(1), BR>B, ADD, 01995 Y>PR, 01996 JZ(WSS011F,WSS011T); ----- ----- 70E 0000205E 80012001 ----- 01997 * 01998 .ORG WSS011F, * Write next byte to ram 01999 A(0), DATA>B, OR, 02000 Y>DR, 02001 JUMP(WSS008F); ----- ----- 05E 0000105C 00001005 ----- 02002 * 02003 .ORG WSS011T, * Write last byte to ram 02004 A(0), DATA>B, OR, 02005 Y>DR, 02006 JUMP(ST0F); ----- ----- 05F 00001001 00001005 ----- 02007 * 02008 ************************************************************************ 02009 * section 2c: recieve teletext line * 02010 ************************************************************************ 02011 * 02012 .ORG G1T, *B=SYS1 02013 CBRDY, 02014 MA(SYS1), RAM>BR, 02015 JUMP(G2); ----- ----- 03B 0001070F 08002000 ----- 02016 .ORG G2, *Y=PCM-2 02017 A(-2), BRHI>B, ADD, 02018 JUMP(G3); ----- ----- 70F 00000710 00FE000C ----- 02019 .ORG G3, *FLOF? 02020 *LPPREG=3 02021 *SET DEFAULT LINE POST PROCESSING 02022 MA(LPPREG), 02023 Y(3), 02024 Y>RAM, 02025 JZ(G4F,G4T); ----- ----- 710 00002064 7E031100 ----- 02026 .ORG G4F, *NOT FLOF, WANT TO CAPTURE THE BTT 02027 *SET MARKER IN TEMPORARY MASK TO CHECK FOR BTT 02028 *BTTM=1 02029 MA(MASK), 02030 Y(BTTM), 02031 Y>RAM, 02032 JUMP(G5F); ----- ----- 064 00000066 73081100 ----- 02033 .ORG G4T, *FLOF MODE 02034 *DO NOT SET MARKER IN TEMPORARY MASK TO CHECK FOR BTT 02035 *BTTM=0 02036 MA(MASK), 02037 Y(0), 02038 Y>RAM, 02039 JUMP(G5F); ----- ----- 065 00000066 73001100 ----- 02040 .ORG G5F, *WAIT FOR MAGAZINE 02041 *B=RCM 02042 MA(RCM), RAM>BR, 02043 JBYTE(G5F,H1T); ----- ----- 066 00018066 28000000 ----- 02044 .ORG H1T, *Y=MAG 02045 CBRDY, 02046 A(0), HAM>B, ADD, 02047 JUMP(H2); ----- ----- 067 00080711 00002007 ----- 02048 .ORG H2, *Y=TOFF AND AOFF, PTY? 02049 A(TOFF+AOFF), BR>B, AND, 02050 JN(H3F,H3T); ----- ----- 711 00004068 00C00801 ----- 02051 .ORG H3T, *BAD MAG PTY 02052 *LPPREG=4 02053 MA(LPPREG), 02054 Y(4), 02055 Y>RAM, 02056 JUMP(LPP0); ----- ----- 069 00000712 7E041100 ----- 02057 .ORG H3F, *Y=MAG, A=MAG, TELETEXT ENABLED? 02058 *PTY OK 02059 A(7), HAM>B, AND, 02060 Y>AR, 02061 JZ(H4F,H4T); ----- ----- 068 002A206A 00070807 ----- 02062 *TELETEXT DISABLED 02063 *WAIT FOR ROW, CHECK PARITY FOR THE ERROR COUNT AND EXIT 02064 .ORG H4F, *ROW RDY? 02065 JBYTE(HH5F,HH5T); ----- ----- 06A 0000806C 00000000 ----- 02066 .ORG HH5F, *ROW RDY? 02067 JBYTE(HH5F,HH5T); ----- ----- 06C 0000806C 00000000 ----- 02068 .ORG HH5T, *ROW RDY, Y=ROW 02069 CBRDY, 02070 A(0), HAM>B, OR, 02071 JUMP(HH6); ----- ----- 06D 00080713 00003007 ----- 02072 .ORG HH6, *PTY OK? 02073 JN(HH7F,HH7T); ----- ----- 713 0000406E 00000000 ----- 02074 .ORG HH7T, *BAD ROW PARITY 02075 *LPPREG=4 02076 MA(LPPREG), 02077 Y(4), 02078 Y>RAM, 02079 JUMP(LPP0); ----- ----- 06F 00000712 7E041100 ----- 02080 .ORG HH7F, *ROW PARITY OK 02081 *LPPREG=0 02082 MA(LPPREG), 02083 Y(0), 02084 Y>RAM, 02085 JUMP(LPP0); ----- ----- 06E 00000712 7E001100 ----- 02086 *TELETEXT ENABLED 02087 .ORG H4T, *RCM=MAG 02088 MA(RCM), 02089 AR.0F>A, BR.F0>B, ADD, 02090 Y>RAM, Y>IO, 02091 JUMP(H5); ----- ----- 06B 00000714 280041C3 ----- 02092 .ORG H5, *P=INDEX TO MFx 02093 AR>A, B(MF0), ADD, 02094 Y>PR, 02095 JUMP(H6); ----- ----- 714 00000715 80580010 ----- 02096 .ORG H6, *BR=MFx 02097 *Y=MAG-1 02098 PR>MA, RAM>BR, 02099 AR>A, B(-1), ADD, 02100 JUMP(H7); ----- ----- 715 00110716 00FF0010 ----- 02101 .ORG H7, *A=MLP 02102 *BTT MAG? 02103 *UPDATE READ/WRITE LATCH 02104 *POINT TO MEMORY PAGE FOR LATCH POINTED TO BY 02105 *THE MLP FIELD IN THE MFx 02106 MA(RWL), 02107 A(MLP), BR>B, AND, 02108 Y>RAM, Y>IO, Y>AR, 02109 JZ(H8F,H8T); ----- ----- 716 00222072 0B074901 ----- 02110 .ORG H8F, *NOT BTT MAG, CLEAR BTTM 02111 MA(MASK), 02112 Y(0), 02113 Y>RAM, 02114 JUMP(H8T); ----- ----- 072 00000073 73001100 ----- 02115 .ORG H8T, *P=INDEX TO LAFx 02116 AR>A, B(LAF0), ADD, 02117 Y>PR, 02118 JUMP(H9); ----- ----- 073 00000717 80400010 ----- 02119 .ORG H9, *MFR=MFx 02120 MA(MFR), 02121 A(0), BR>B, OR, 02122 Y>RAM, 02123 JUMP(H10); ----- ----- 717 00000718 36001101 ----- 02124 .ORG H10, *AR=LAFx 02125 PR>MA, RAM>AR, 02126 JUMP(H11); ----- ----- 718 00120719 00000000 ----- 02127 .ORG H11, *LAFR=LAFx 02128 MA(LAFR), 02129 AR>A, B(0), OR, 02130 Y>RAM, 02131 JBYTE(H12F,I1); ----- ----- 719 00008074 35001110 ----- 02132 .ORG H12F, *WAIT FOR ROW 02133 JBYTE(H12F,I1); ----- ----- 074 00008074 00000000 ----- 02134 .ORG I1, *AR=ROW, THISRW=ROW 02135 CBRDY, 02136 MA(THISRW), 02137 A(0), ROW>B, ADD, 02138 Y>AR, Y>RAM, 02139 JUMP(I2); ----- ----- 075 002E071A 7D002105 ----- 02140 .ORG I2, *P=ROW*40, PTY? 02141 AR<<3>A, AR<<5>B, ADD, 02142 Y>PR, 02143 JN(I3F,I3T); ----- ----- 71A 00004076 80000059 ----- 02144 .ORG I3T, *BAD ROW PTY 02145 *LPPREG=4 02146 MA(LPPREG), 02147 Y(4), 02148 Y>RAM, 02149 JUMP(LPP0); ----- ----- 077 00000712 7E041100 ----- 02150 .ORG I3F, *PTY OK, Y=ROW-30, B=RCM, ROW0? 02151 *GET MAG FLAG RECEIVED 02152 MA(MFR), RAM>BR, 02153 A(-30), ROW>B, ADD, 02154 JZ(I4F,HD0); ----- ----- 076 000D2078 36E20005 ----- 02155 .ORG I4F, *NOT A HEADER 02156 *Y=MAG OPEN FLAG, ROW=30? 02157 *BR=RCM 02158 MA(RCM), RAM>BR, 02159 A(MOP), BR>B, AND, 02160 JZ(I5F,I5T); ----- ----- 078 0001207A 28080801 ----- 02161 .ORG I5F, *NOT A HEADER OR ROW 30 02162 *Y=ROW-24, MAG OPEN? 02163 A(-24), ROW>B, ADD, 02164 JZ(I6F,I6T); ----- ----- 07A 000C207C 00E80005 ----- 02165 .ORG I6T, *MAG CLOSED 02166 *LPPREG=0 02167 MA(LPPREG), 02168 Y(0), 02169 Y>RAM, 02170 JUMP(LPP0); ----- ----- 07D 00000712 7E001100 ----- 02171 .ORG I6F, *MAG OPEN 02172 *ROW1-23? 02173 *Y=ROW-24 02174 *AR=LAFR 02175 MA(LAFR), RAM>AR, 02176 A(-24), ROW>B, ADD, 02177 JN(I7F,DR0); ----- ----- 07C 000E407E 35E80005 ----- 02178 .ORG I7F, *ROW 24- ROW 31 02179 *CASE ROW-24=? 02180 *A=STOR7 02181 MA(STOR7), RAM>AR, 02182 JY(I30Y); ----- ----- 07E 0002C010 27000000 ----- 02183 ***ROW 0*********************** 02184 .ORG HD0, *HEADER 02185 *A=RCU 02186 MA(RCU), RAM>AR, 02187 JBYTE(HD1F,HD1T); ----- ----- 079 00028084 2A000000 ----- 02188 .ORG HD1F, *WAIT FOR PAGE UNITS 02189 JBYTE(HD1F,HD1T); ----- ----- 084 00008084 00000000 ----- 02190 .ORG HD1T, *Y=UNITS 02191 CBRDY, 02192 A(0), HAM>B, ADD, 02193 JUMP(HD2); ----- ----- 085 0008071B 00002007 ----- 02194 .ORG HD2, *PTY OK? 02195 *A=RCU 02196 *Y=HAM-10 02197 MA(RCU), RAM>AR, 02198 A(-10), HAM>B, ADD, 02199 JN(HD3F,HD3T); ----- ----- 71B 000A4086 2AF60007 ----- 02200 .ORG HD3T, *BAD UNITS PARITY 02201 *LPPREG=5 02202 MA(LPPREG), 02203 Y(5), 02204 Y>RAM, 02205 JUMP(LPP0); ----- ----- 087 00000712 7E051100 ----- 02206 .ORG HD3F, *PTY OK, HEX UNITS? 02207 *Y=UNITS 02208 A(0), HAM>B, OR, 02209 JN(HD4F,HD4T); ----- ----- 086 00084088 00001007 ----- 02210 .ORG HD4F, *HEX UNITS 02211 *RET4=1 (MARK HEX UNITS FOR BROWSE) 02212 MA(RET4), 02213 Y(1), 02214 Y>RAM, 02215 JUMP(HD5AF); ----- ----- 088 0000008A 79011100 ----- 02216 .ORG HD4T, *DECIMAL UNITS 02217 *RET4=0 (MARK DECIMAL UNITS FOR BROWSE) 02218 *BTT UNITS? 02219 MA(RET4), 02220 Y(0), 02221 Y>RAM, 02222 JZ(HD5AF,HD5AT); ----- ----- 089 0000208A 79001100 ----- 02223 .ORG HD5AF, *NOT BTT UNITS, CLEAR BTTM 02224 MA(MASK), 02225 Y(0), 02226 Y>RAM, 02227 JUMP(HD5AT); ----- ----- 08A 0000008B 73001100 ----- 02228 .ORG HD5AT, *BTT UNITS, DO NOT CLEAR BTTM 02229 *RCU=UNITS 02230 MA(RCU), 02231 AR.F0>A, HAM>B, ADD, 02232 Y>RAM, Y>IO, 02233 JBYTE(HD6F,HD6T); ----- ----- 08B 0008808C 2A0041D7 ----- 02234 .ORG HD6F, *WAIT FOR PAGE TENS 02235 JBYTE(HD6F,HD6T); ----- ----- 08C 0000808C 00000000 ----- 02236 .ORG HD6T, *Y=TENS 1ST 02237 CBRDY, 02238 A(0), HAM>B, ADD, 02239 JUMP(HD6A); ----- ----- 08D 0008071C 00002007 ----- 02240 .ORG HD6A, *PTY OK? 2ND 02241 *Y=HAM-10 02242 A(-10), HAM>B, ADD, 02243 JN(HD7F,HD7T); ----- ----- 71C 0008408E 00F60007 ----- 02244 .ORG HD7T, *BAD TENS PARITY 02245 *LPPREG=5 02246 MA(LPPREG), 02247 Y(5), 02248 Y>RAM, 02249 JUMP(LPP0); ----- ----- 08F 00000712 7E051100 ----- 02250 .ORG HD7F, *PTY OK, HEX TENS? 3RD 02251 *Y=HAM-15 02252 *A=RCT 02253 MA(RCT), RAM>AR, 02254 A(-15), HAM>B, ADD, 02255 JN(HD8F,HD8T); ----- ----- 08E 000A4094 29F10007 ----- 02256 .ORG HD8T, *DECIMAL TENS 4TH 02257 *NOT BTT TENS, CLEAR BTTM 02258 MA(MASK), 02259 Y(0), 02260 Y>RAM, 02261 JUMP(HD9T); ----- ----- 095 00000097 73001100 ----- 02262 .ORG HD8F, *HEX TENS, BTT TENS? 4TH 02263 *IF BTT TENS, DO NOT CLEAR BTTM 02264 *RET4=1 (MARK HEX TENS FOR BROWSE) 02265 MA(RET4), 02266 Y(1), 02267 Y>RAM, 02268 JZ(HD9F,HD9T); ----- ----- 094 00002096 79011100 ----- 02269 .ORG HD9F, *NOT BTT TENS, CLEAR BTTM 5TH 02270 MA(MASK), 02271 Y(0), 02272 Y>RAM, 02273 JUMP(HD9T); ----- ----- 096 00000097 73001100 ----- 02274 * 02275 .ORG HD9T, *RCT=TENS 6TH 02276 MA(RCT), 02277 AR.F0>A, HAM>B, ADD, 02278 Y>RAM, Y>IO, 02279 JUMP(HD10); ----- ----- 097 0008071D 290041D7 ----- 02280 .ORG HD10, *Y=LATCH 7TH 02281 PCL>A, B(7), AND, 02282 JUMP(HD11); ----- ----- 71D 0000071E 00070870 ----- 02283 * Assume that the page is in a latch for now, check PCL3 02284 * later 02285 .ORG HD11, *PAGE IN LATCH 8TH 02286 *CASE LATCH=? 02287 *B=MASK (CONTAINS BTT MARKER BIT) 02288 MA(MASK), RAM>BR, 02289 JY(HD20Y); ----- ----- 71E 0001C020 73000000 ----- 02290 *** 02291 .ORG HD20Y, *CASE LATCH=0 9TH 02292 *A=LAF0 02293 MA(LAF0), RAM>AR, 02294 JUMP(HD30); ----- ----- 020 0002071F 40000000 ----- 02295 .ORG HD21, *CASE LATCH=1 9TH 02296 *A=LAF1 02297 MA(LAF1), RAM>AR, 02298 JUMP(HD30); ----- ----- 021 0002071F 41000000 ----- 02299 .ORG HD22, *CASE LATCH=2 9TH 02300 *A=LAF2 02301 MA(LAF2), RAM>AR, 02302 JUMP(HD30); ----- ----- 022 0002071F 42000000 ----- 02303 .ORG HD23, *CASE LATCH=3 9TH 02304 *A=LAF3 02305 MA(LAF3), RAM>AR, 02306 JUMP(HD30); ----- ----- 023 0002071F 43000000 ----- 02307 .ORG HD24, *CASE LATCH=4 9TH 02308 *A=LAF4 02309 MA(LAF4), RAM>AR, 02310 JUMP(HD30); ----- ----- 024 0002071F 44000000 ----- 02311 .ORG HD25, *CASE LATCH=5 9TH 02312 *A=LAF5 02313 MA(LAF5), RAM>AR, 02314 JUMP(HD30); ----- ----- 025 0002071F 45000000 ----- 02315 .ORG HD26, *CASE LATCH=6 9TH 02316 *A=LAF6 02317 MA(LAF6), RAM>AR, 02318 JUMP(HD30); ----- ----- 026 0002071F 46000000 ----- 02319 .ORG HD27, *CASE LATCH=7 9TH 02320 *A=LAF7 02321 MA(LAF7), RAM>AR, 02322 JUMP(HD30); ----- ----- 027 0002071F 47000000 ----- 02323 *** 02324 .ORG HD30, *LAFR=LAFx 10TH 02325 MA(LAFR), 02326 AR>A, B(0), OR, 02327 Y>RAM, 02328 JUMP(HD40); ----- ----- 71F 00000720 35001110 ----- 02329 .ORG HD40, *AR=SP0I 11TH 02330 *P=BTTM + MSP 02331 *(BTTM=1 IF PAGE IS 1F0) 02332 MA(SP0I), RAM>AR, 02333 A(MSP), BR>B, OR, 02334 Y>PR, 02335 JBYTE(SPCK0F,SPCK0T); ----- ----- 720 00028098 C8071001 ----- 02336 ***ROW 0, SUP-PAGE MODE 1 (SUB-PAGE CHECK MODE) 02337 * AR=SP0I, PR=LAFR 02338 *****WAIT FOR SP UNITS 02339 .ORG SPCK0F, *WAIT FOR SPI 02340 JBYTE(SPCK0F,SPCK0T); ----- ----- 098 00008098 00000000 ----- 02341 .ORG SPCK0T, *Y=HAM XOR SP0I 1ST 02342 *AR=SP1I 02343 CBRDY, 02344 MA(SP1I), RAM>AR, 02345 ARHI>A, HAM>B, XOR, 02346 JUMP(SPCK1); ----- ----- 099 000A0721 4C003827 ----- 02347 .ORG SPCK1, *RSPI=HAM 2ND 02348 *RSPI=SP0I? PTY OK? 02349 MA(RSPI), 02350 A(0), HAM>B, OR, 02351 Y>RAM, 02352 JZ(SPCK3F,SPCK3T); ----- ----- 721 0008209A 3C001107 ----- 02353 *** 02354 .ORG SPCK3F, *SP0I!=RSPI 3RD 02355 *Y=HAM XOR AR 02356 *BR=MASK 02357 PR>BR, 02358 ARHI>A, HAM>B, XOR, 02359 JUMP(SPCK4); ----- ----- 09A 00490722 00001827 ----- 02360 .ORG SPCK4, *CLEAR MSP0 MARKER 4TH 02361 *SP1I=RSPI? 02362 *AR=SP2I 02363 MA(SP2I), RAM>AR, 02364 A(>FF-MSP0), BR>B, AND, 02365 Y>PR, 02366 JZ(SPCK5F,SPCK5T); ----- ----- 722 0002209C D0FE0801 ----- 02367 .ORG SPCK3T, *SP0I=RSPI 3RD 02368 *Y=HAM XOR AR 02369 ARHI>A, HAM>B, XOR, 02370 JUMP(SPCK8); ----- ----- 09B 00080723 00001827 ----- 02371 .ORG SPCK8, *SP1I=RSPI? 4TH 02372 *AR=SP2I 02373 MA(SP2I), RAM>AR, 02374 JZ(SPCK5F,SPCK5T); ----- ----- 723 0002209C 50000000 ----- 02375 *** 02376 .ORG SPCK5F, *SP1I!=RSPI 5TH 02377 *Y=HAM XOR SP2I 02378 *B=MASK 02379 PR>BR, 02380 ARHI>A, HAM>B, XOR, 02381 JUMP(SPCK6); ----- ----- 09C 00490724 00001827 ----- 02382 .ORG SPCK6, *CLEAR MSP1 MARKER 6TH 02383 *SP2I=RSPI? 02384 * AR = forceing subpage capture flags 02385 MA(SPFRC), RAM>AR, 02386 A(>FF-MSP1), BR>B, AND, 02387 Y>PR, 02388 JZ(SPCK7F,SPCK7T); ----- ----- 724 0002209E D7FD0801 ----- 02389 .ORG SPCK5T, *SP1I=RSPI 5TH 02390 *Y=HAM XOR SP2I 02391 ARHI>A, HAM>B, XOR, 02392 JUMP(SPCK9); ----- ----- 09D 00080725 00001827 ----- 02393 .ORG SPCK9, *SP2I=RSPI? 6TH 02394 * AR = forcing subpage capture flags 02395 MA(SPFRC), RAM>AR, 02396 JZ(SPCK7F,SPCK7T); ----- ----- 725 0002209E 57000000 ----- 02397 *** 02398 .ORG SPCK7F, *SP2I!=RSPI 7TH 02399 *B=MASK 02400 PR>BR, 02401 JUMP(SPCK7A); ----- ----- 09E 00410726 00000000 ----- 02402 * 02403 .ORG SPCK7A, *CLEAR MSP2 MARKER 8TH 02404 A(>FF-MSP2), BR>B, AND, 02405 Y>PR, 02406 JBYTE(SPCK10F,SPCK10T); ----- ----- 726 000080A4 80FB0801 ----- 02407 * 02408 .ORG SPCK7T, *SP2I=RSPI 7TH 02409 JBYTE(SPCK10F,SPCK10T); ----- ----- 09F 000080A4 00000000 ----- 02410 * 02411 *****WAIT FOR SP TENS 02412 .ORG SPCK10F, *WAIT FOR SP TENS 02413 JBYTE(SPCK10F,SPCK10T); ----- ----- 0A4 000080A4 00000000 ----- 02414 .ORG SPCK10T, *AR=SP TENS (MASK C4) 1ST 02415 *PRESERVE PARITY ERROR INFO 02416 *BR=SP0X 02417 CBRDY, 02418 MA(SP0X), RAM>BR, 02419 A(%11110111), HAM>B, AND, 02420 Y>AR, 02421 JUMP(SPCK11); ----- ----- 0A5 002B0727 49F72807 ----- 02422 .ORG SPCK11, *Y=SP0X XOR SP TENS 2ND 02423 AR>A, BRHI>B, XOR, 02424 JUMP(SPCK12); ----- ----- 727 00000728 0000181C ----- 02425 .ORG SPCK12, *SP0X==SP TENS? 3RD 02426 *BR=MARKERS 02427 *RSPX= HAM 02428 PR>BR, 02429 MA(RSPX), 02430 A(0), HAM>B, OR, 02431 Y>RAM, 02432 JZ(SPCK13F,SPCK13T); ----- ----- 728 004920A6 3D001107 ----- 02433 .ORG SPCK13F, *SP0X!=SP TENS 4TH 02434 *CLEAR MARKER 02435 *BR=SP1X 02436 MA(SP1X), RAM>BR, 02437 A(>FF-MSP0), BR>B, AND, 02438 Y>PR, 02439 JUMP(SPCK14); ----- ----- 0A6 00010729 CDFE0801 ----- 02440 .ORG SPCK13T, *SP0X==SP TENS 4TH 02441 *DO NOT CLEAR MARKER 02442 *BR=SP1X 02443 MA(SP1X), RAM>BR, 02444 JUMP(SPCK14); ----- ----- 0A7 00010729 4D000000 ----- 02445 .ORG SPCK14, *Y=SP1X XOR SP TENS 5TH 02446 AR>A, BRHI>B, XOR, 02447 JUMP(SPCK15); ----- ----- 729 0000072A 0000181C ----- 02448 .ORG SPCK15, *SP1X==SP TENS? 6TH 02449 *BR=MARKERS 02450 PR>BR, 02451 JZ(SPCK16F,SPCK16T); ----- ----- 72A 004120A8 00000000 ----- 02452 .ORG SPCK16F, *SP1X!=SP TENS 7TH 02453 *CLEAR MARKER 02454 *BR=SP2X 02455 MA(SP2X), RAM>BR, 02456 A(>FF-MSP1), BR>B, AND, 02457 Y>PR, 02458 JUMP(SPCK17); ----- ----- 0A8 0001072B D1FD0801 ----- 02459 .ORG SPCK16T, *SP1X==SP TENS 7TH 02460 *DO NOT CLEAR MARKER 02461 *BR=SP2X 02462 MA(SP2X), RAM>BR, 02463 JUMP(SPCK17); ----- ----- 0A9 0001072B 51000000 ----- 02464 .ORG SPCK17, *Y=SP2X XOR SP TENS 8TH 02465 AR>A, BRHI>B, XOR, 02466 JUMP(SPCK18); ----- ----- 72B 0000072C 0000181C ----- 02467 .ORG SPCK18, *SP2X==SP TENS? 9TH 02468 *BR=MARKERS 02469 PR>BR, 02470 JZ(SPCK19F,SPCK19T); ----- ----- 72C 004120AA 00000000 ----- 02471 .ORG SPCK19F, *SP2X!=SP TENS 10TH 02472 *CLEAR MARKER 02473 *AR=SP0C 02474 MA(SP0C), RAM>AR, 02475 A(>FF-MSP2), BR>B, AND, 02476 Y>PR, 02477 JBYTE(SPCK20F,SPCK20T); ----- ----- 0AA 000280AC CAFB0801 ----- 02478 .ORG SPCK19T, *SP2X==SP TENS 10TH 02479 *DO NOT CLEAR MARKER 02480 *AR=SP0C 02481 MA(SP0C), RAM>AR, 02482 JBYTE(SPCK20F,SPCK20T); ----- ----- 0AB 000280AC 4A000000 ----- 02483 *****WAIT FOR SP HUNDREDS 02484 * AR=SP0C 02485 .ORG SPCK20F, *WAIT FOR SPC 02486 JBYTE(SPCK20F,SPCK20T); ----- ----- 0AC 000080AC 00000000 ----- 02487 .ORG SPCK20T, *Y=HAM XOR SP0C 1ST 02488 *AR=SP1C 02489 CBRDY, 02490 MA(SP1C), RAM>AR, 02491 ARHI>A, HAM>B, XOR, 02492 JUMP(SPCK21); ----- ----- 0AD 000A072D 4E003827 ----- 02493 .ORG SPCK21, *RSPC=HAM 2ND 02494 *RSPC=SP0C? 02495 MA(RSPC), 02496 A(0), HAM>B, OR, 02497 Y>RAM, 02498 JZ(SPCK23F,SPCK23T); ----- ----- 72D 000820AE 3E001107 ----- 02499 *** 02500 .ORG SPCK23F, *SP0C!=RSPC 3RD 02501 *Y=HAM XOR AR 02502 *BR=MASK 02503 PR>BR, 02504 ARHI>A, HAM>B, XOR, 02505 JUMP(SPCK24); ----- ----- 0AE 0049072E 00001827 ----- 02506 .ORG SPCK24, *CLEAR MSP0 MARKER 4TH 02507 *SP1C=RSPC? 02508 *AR=SP2C 02509 MA(SP2C), RAM>AR, 02510 A(>FF-MSP0), BR>B, AND, 02511 Y>PR, 02512 JZ(SPCK25F,SPCK25T); ----- ----- 72E 000220B8 D2FE0801 ----- 02513 .ORG SPCK23T, *SP0C=RSPC 3RD 02514 *Y=HAM XOR AR 02515 ARHI>A, HAM>B, XOR, 02516 JUMP(SPCK28); ----- ----- 0AF 0008072F 00001827 ----- 02517 .ORG SPCK28, *SP1C=RSPC? 4TH 02518 *AR=SP2C 02519 MA(SP2C), RAM>AR, 02520 JZ(SPCK25F,SPCK25T); ----- ----- 72F 000220B8 52000000 ----- 02521 *** 02522 .ORG SPCK25F, *SP1C!=RSPC 5TH 02523 *Y=HAM XOR SP2C 02524 *B=MASK 02525 PR>BR, 02526 JUMP(SPCK26); ----- ----- 0B8 00410735 00000000 ----- 02527 .ORG SPCK26, *CLEAR MSP1 MARKER 6TH 02528 A(>FF-MSP1), BR>B, AND, 02529 Y>PR, 02530 JUMP(SPCK25T); ----- ----- 735 000000B9 80FD0801 ----- 02531 .ORG SPCK25T, *SP1C=RSPC 7TH 02532 *Y=HAM XOR SP2C 02533 ARHI>A, HAM>B, XOR, 02534 JUMP(SPCK29); ----- ----- 0B9 00080736 00001827 ----- 02535 .ORG SPCK29, *SP2C=RSPC? 8TH 02536 *Y=SP HUNDREDS-15 02537 *B=MASK 02538 PR>BR, 02539 A(-15), HAM>B, ADD, 02540 JZ(SPCK27F,SPCK27T); ----- ----- 736 004920BA 00F10007 ----- 02541 *** 02542 .ORG SPCK27F, *SP2C!=RSPC 9TH 02543 *BTT HUNDREDS? 02544 JZ(SPCK27AF,SPCK27AT); ----- ----- 0BA 000020BC 00000000 ----- 02545 .ORG SPCK27AF, *NO, CLEAR BTTM 10TH 02546 *CLEAR MSP2 02547 A(%11110011), BR>B, AND, 02548 Y>PR, 02549 JBYTE(SPCK30F,SPCK30T); ----- ----- 0BC 000080BE 80F30801 ----- 02550 .ORG SPCK27AT, *YES, LEAVE BTTM 10TH 02551 *CLEAR MSP2 02552 A(>FF-MSP2), BR>B, AND, 02553 Y>PR, 02554 JBYTE(SPCK30F,SPCK30T); ----- ----- 0BD 000080BE 80FB0801 ----- 02555 .ORG SPCK27T, *SP2C=RSPC 9TH 02556 *BTT HUNDREDS? 02557 JZ(SPCK27BF,SPCK27BT); ----- ----- 0BB 000020C2 00000000 ----- 02558 .ORG SPCK27BF, *NO, CLEAR BTTM 10TH 02559 A(>FF-BTTM), BR>B, AND, 02560 Y>PR, 02561 JBYTE(SPCK30F,SPCK30T); ----- ----- 0C2 000080BE 80F70801 ----- 02562 .ORG SPCK27BT, *YES, LEAVE BTTM 10TH 02563 JBYTE(SPCK30F,SPCK30T); ----- ----- 0C3 000080BE 00000000 ----- 02564 *****WAIT FOR SP THOUSANDS 02565 .ORG SPCK30F, *WAIT FOR SP THOU'S 02566 JBYTE(SPCK30F,SPCK30T); ----- ----- 0BE 000080BE 00000000 ----- 02567 .ORG SPCK30T, *AR=SP THOU'S (MASK C5,C6) 1ST 02568 *PRESERVE PARITY ERROR INFO 02569 *BR=SP0M 02570 CBRDY, 02571 MA(SP0M), RAM>BR, 02572 A(%11110011), HAM>B, AND, 02573 Y>AR, 02574 JUMP(SPCK31); ----- ----- 0BF 002B0737 4BF32807 ----- 02575 .ORG SPCK31, *Y=SP0M XOR SP THOU'S 2ND 02576 AR>A, BRHI>B, XOR, 02577 JUMP(SPCK32); ----- ----- 737 00000738 0000181C ----- 02578 .ORG SPCK32, *SP0M==SP THOU'S? 3RD 02579 *BR=MARKERS 02580 *RSPM= HAM 02581 PR>BR, 02582 MA(RSPM), 02583 A(0), HAM>B, OR, 02584 Y>RAM, 02585 JZ(SPCK33F,SPCK33T); ----- ----- 738 004920C4 3F001107 ----- 02586 .ORG SPCK33F, *SP0M!=SP THOU'S 4TH 02587 *CLEAR MARKER 02588 *BR=SP1M 02589 MA(SP1M), RAM>BR, 02590 A(>FF-MSP0), BR>B, AND, 02591 Y>PR, 02592 JUMP(SPCK34); ----- ----- 0C4 00010739 CFFE0801 ----- 02593 .ORG SPCK33T, *SP0M==SP THOU'S 4TH 02594 *DO NOT CLEAR MARKER 02595 *BR=SP1M 02596 MA(SP1M), RAM>BR, 02597 JUMP(SPCK34); ----- ----- 0C5 00010739 4F000000 ----- 02598 .ORG SPCK34, *Y=SP1M XOR SP THOU'S 5TH 02599 AR>A, BRHI>B, XOR, 02600 JUMP(SPCK35); ----- ----- 739 0000073A 0000181C ----- 02601 .ORG SPCK35, *SP1M==SP THOU'S? 6TH 02602 *BR=MARKERS 02603 PR>BR, 02604 JZ(SPCK36F,SPCK36T); ----- ----- 73A 004120C6 00000000 ----- 02605 .ORG SPCK36F, *SP1M!=SP THOU'S 7TH 02606 *CLEAR MARKER 02607 *BR=SP2M 02608 MA(SP2M), RAM>BR, 02609 A(>FF-MSP1), BR>B, AND, 02610 Y>PR, 02611 JUMP(SPCK37); ----- ----- 0C6 0001073B D3FD0801 ----- 02612 .ORG SPCK36T, *SP1M==SP TENS 7TH 02613 *DO NOT CLEAR MARKER 02614 *BR=SP2M 02615 MA(SP2M), RAM>BR, 02616 JUMP(SPCK37); ----- ----- 0C7 0001073B 53000000 ----- 02617 .ORG SPCK37, *Y=SP2M XOR SP THOU'S 8TH 02618 *BR=MARKERS 02619 PR>BR, 02620 AR>A, BRHI>B, XOR, 02621 JUMP(SPCK38); ----- ----- 73B 0041073C 0000181C ----- 02622 .ORG SPCK38, *SP2M==SP THOU'S? 9TH 02623 *Y=SP THOUSANDS-3 02624 AR>A, B(-3), ADD, 02625 JZ(SPCK39F,SPCK39T); ----- ----- 73C 000020C8 00FD0010 ----- 02626 .ORG SPCK39F, *SP2M!=SP THOU'S 10TH 02627 *BTT THOUSANDS? 02628 JZ(SPCK39AF,SPCK39AT); ----- ----- 0C8 000020CA 00000000 ----- 02629 .ORG SPCK39AF, *NO, CLEAR BTTM 11TH 02630 *CLEAR MSP2 02631 *AR=MARKERS 02632 MA(SPFRC), RAM>BR, 02633 A(%11110011), BR>B, AND, 02634 Y>PR, Y>AR, 02635 JBYTE(CGA0F,CGA0T); ----- ----- 0CA 002380CC D7F30801 ----- 02636 * 02637 .ORG SPCK39AT, *YES, LEAVE BTTM 11TH 02638 *CLEAR MSP2 02639 *AR=MARKERS 02640 MA(SPFRC), RAM>BR, 02641 A(>FF-MSP2), BR>B, AND, 02642 Y>PR, Y>AR, 02643 JBYTE(CGA0F,CGA0T); ----- ----- 0CB 002380CC D7FB0801 ----- 02644 * 02645 .ORG SPCK39T, *SP2M==SP THOU'S 10TH 02646 *DO NOT CLEAR MSP2 MARKER 02647 *BTT THOUSANDS? 02648 JZ(SPCK39BF,SPCK39BT); ----- ----- 0C9 000020CE 00000000 ----- 02649 .ORG SPCK39BF, *NO, CLEAR BTTM 11TH 02650 *AR=MARKERS 02651 MA(SPFRC), RAM>BR, 02652 A(>FF-BTTM), BR>B, AND, 02653 Y>PR, Y>AR, 02654 JBYTE(CGA0F,CGA0T); ----- ----- 0CE 002380CC D7F70801 ----- 02655 * 02656 .ORG SPCK39BT, *YES, LEAVE BTTM 11TH 02657 *AR=MARKERS 02658 MA(SPFRC), RAM>BR, 02659 A(0), BR>B, OR, 02660 Y>PR, Y>AR, 02661 JBYTE(CGA0F,CGA0T); ----- ----- 0CF 002380CC D7001001 ----- 02662 * 02663 *****WAIT FOR CGA 02664 * PR=MASK 02665 .ORG CGA0F, * 02666 JBYTE(CGA0F,CGA0T); ----- ----- 0CC 000080CC 00000000 ----- 02667 .ORG CGA0T, *Y=BTTM 02668 CBRDY, 02669 AR>A, B(BTTM), AND, 02670 JUMP(CGA0A); ----- ----- 0CD 0000073D 00082810 ----- 02671 .ORG CGA0A, *CGA=CGA 1ST 02672 *RECEIVE A BTT? 02673 MA(CGA), 02674 A(0), HAM>B, ADD, 02675 Y>RAM, 02676 JZ(CGA0BF,CGA0BT); ----- ----- 73D 000820D8 33000107 ----- 02677 *RECEIVE A BTT 02678 .ORG CGA0BF, *RECEIVE A BTT 2ND 02679 *B=STOR1 02680 MA(STOR1), RAM>BR, 02681 JUMP(CGA0C); ----- ----- 0D8 0001073E 21000000 ----- 02682 .ORG CGA0C, *RWL=LATCH IN STORE 1 3RD 02683 MA(RWL), 02684 A(0), BRHI>B, OR, 02685 Y>RAM, Y>IO, 02686 JUMP(CGA0D); ----- ----- 73E 0000073F 0B00510C ----- 02687 .ORG CGA0D, *A=THIS BTT UPDATE CODE 4TH 02688 MA(RSPX), RAM>AR, 02689 JUMP(CGA0E); ----- ----- 73F 00020742 3D000000 ----- 02690 .ORG CGA0E, *B=TOPRG1 (INCLUDES LAST BTT UPDATE CODE PLUS ONE) 02691 *CLEAR C4 IN COPY OF RSPX 5TH 02692 MA(TOPRG1), RAM>BR, 02693 AR>A, B(%11110111), AND, 02694 Y>AR, 02695 JUMP(CGA0G); ----- ----- 742 00230743 37F70810 ----- 02696 .ORG CGA0G, *COMPARE UPDATE CODES 6TH 02697 *(DON'T NEED A CIN BECAUSE TOPRG1 HAS UPDATE CODE 02698 *PLUS ONE) 02699 *PARITY OK? 02700 NAR>A, BR.0F>B, ADD, 02701 JN(CGA0HF,CGA0HT); ----- ----- 743 000040DA 00000042 ----- 02702 .ORG CGA0HF, *PARITY OK 7TH 02703 *INIT BTTERR 02704 *BTT UPDATED? 02705 *B=RSPX 02706 MA(RSPX), RAM>BR, 02707 A(>FF-BTTERR), BR>B, AND, 02708 Y>AR, 02709 JZ(CGA0JF,CGA0JT); ----- ----- 0DA 002320DC 3D7F0801 ----- 02710 .ORG CGA0HT, *BAD PARITY 7TH 02711 *BTTERR=1 02712 MA(TOPRG1), 02713 *TCJ A(BTTERR), BR>B, OR, *July 93 BTT update bug fix 02714 A(>FF-BTTERR), BR>B, AND, 02715 Y>RAM, 02716 JBYTE(CGB0F,CGB0T); ----- ----- 0DB 000080DE 377F0901 ----- 02717 .ORG CGA0JF, *BTT UPDATED 8TH 02718 *Y=CLEAR BIT 02719 A(>08), BR>B, AND, 02720 JUMP(CGA0K); ----- ----- 0DC 00000744 00080801 ----- 02721 .ORG CGA0K, *UPDATED AND CLEAR BIT SET? 9TH 02722 *BTTUP=1 02723 MA(TOPRG1), 02724 *TCJ AR>A, B(BTTUP), OR, * July 93 BTT update bug fix 02725 AR>A, B(0), OR, 02726 Y>RAM, Y>AR, 02727 JZ(CGA0LF,CGA0LT); ----- ----- 744 002220E4 37001110 ----- 02728 .ORG CGA0LF, *UPDATED AND CLEAR BIT SET 10TH 02729 *BTTUP=1, UPDATE CODE=0 02730 MA(TOPRG1), 02731 AR.F0>A, B(0), OR, 02732 Y>RAM, 02733 JBYTE(CGB0F,CGB0T); ----- ----- 0E4 000080DE 370011D0 ----- 02734 .ORG CGA0LT, *UPDATED AND CLEAR BIT NOT SET 10TH 02735 *BTTUP=1, UPDATE UPDATE CODE 02736 *(INCREMENT SO ZERO CAUSES UPDATE) 02737 MA(TOPRG1), 02738 AR.F0>A, BR.0F>B, O>CIN, ADD, 02739 Y>RAM, 02740 JBYTE(CGB0F,CGB0T); ----- ----- 0E5 000080DE 370005D2 ----- 02741 * 02742 .ORG CGA0JT, *BTT NOT UPDATED 8TH 02743 *Y=CLEAR BIT 02744 A(>08), BR>B, AND, 02745 JUMP(CGA0M); ----- ----- 0DD 00000745 00080801 ----- 02746 .ORG CGA0M, *NOT UPDATED AND CLEAR BIT SET? 9TH 02747 JZ(CGA0NF,CGA0NT); ----- ----- 745 000020E6 00000000 ----- 02748 .ORG CGA0NF, *NOT UPDATED AND CLEAR BIT SET 10TH 02749 *BTTUP=1, UPDATE CODE=0 02750 MA(TOPRG1), 02751 *TCJ AR.F0>A, B(BTTUP), OR, * July 93 BTT update bug fix 02752 AR.F0>A, B(0), OR, 02753 Y>RAM, 02754 JBYTE(CGB0F,CGB0T); ----- ----- 0E6 000080DE 370011D0 ----- 02755 .ORG CGA0NT, *NOT UPDATED AND NO CLEAR 10TH 02756 *DO NOTHING (BUT NEED TO UPDATE BTTERR) 02757 MA(TOPRG1), 02758 AR>A, B(0), OR, 02759 Y>RAM, 02760 JBYTE(CGB0F,CGB0T); ----- ----- 0E7 000080DE 37001110 ----- 02761 *NOT RECEIVING A BTT 02762 * PR=MASK 02763 .ORG CGA0BT, *B=SPREG0 2ND 02764 MA(SPREG0), RAM>BR, 02765 PCL>A, B(0), ADD, 02766 JUMP(CGA1); ----- ----- 0D9 00010746 54000070 ----- 02767 .ORG CGA1, *COMPARE PCL AND LFPCL0 3RD 02768 *PAGE IN LATCH? 02769 *B=SPREG1 02770 MA(SPREG1), RAM>BR, 02771 PCL>A, BRHI>B, XOR, 02772 JN(CGA2F,BSE4T); ----- ----- 746 000140E8 5500187C ----- 02773 *+++ PAGE NOT IN LATCH, CAPTURE IT IN BROWSE MODE? 02774 .ORG BSE4T, *BR=DHREG 4TH 02775 MA(DHREG), RAM>BR, 02776 JUMP(BSE5); ----- ----- 0E9 00010747 32000000 ----- 02777 .ORG BSE5, *Y=BWSE, BR=RSPM 5TH 02778 MA(RSPM), RAM>BR, 02779 A(BWSE), BR>B, AND, 02780 JUMP(BSE6); ----- ----- 747 00010748 3F010801 ----- 02781 * 02782 * TCJ Dec 93 02783 * 02784 .ORG BSE6, *Y=SUBT, BROWSE MODE? 6TH 02785 *AR=STBRW 02786 MA(DHREG), RAM>AR, 02787 A(%00001000), BR>B, AND, 02788 JZ(BSE7F,BSE7T); ----- ----- 748 000220EA 32080801 ----- 02789 * 02790 .ORG BSE7T, *NOT BROWSING, EXIT TO PNIL0 02791 *AR=STOR0 02792 MA(STOR0), RAM>AR, 02793 JUMP(PNIL0); ----- ----- 0EB 00020749 20000000 ----- 02794 * 02795 .ORG BSE7F, *Y=STBRW, SUBTITLE PAGE? 02796 *AR=RET4 (HEX PAGE NUMBER MARKER) 02797 MA(RET4), RAM>AR, 02798 AR>A, B(STBRW), AND, 02799 JZ(BSE8F,BSE8T); ----- ----- 0EA 000220EC 79020810 ----- 02800 * 02801 * TCJ Dec 93 02802 * Addition of subtitle browse, if it is a subbtitle 02803 * page and STBRW is set then capture it. 02804 * 02805 .ORG BSE8F, *SUBTITLE PAGE, STBRW ? 02806 JZ(TCJBSE00F,TCJBSE00T); ----- ----- 0EC 000020EE 00000000 ----- 02807 * 02808 .ORG TCJBSE00F, *SUBBTITLE & STBRW==1, So capture it 02809 *WAIT FOR CGB 02810 JBYTE(BSE10F,BSE10T); ----- ----- 0EE 000080F8 00000000 ----- 02811 * 02812 .ORG TCJBSE00T, *DO NOT BROWSE ONTO A SUBT PAGE, EXIT TO PNIL0 02813 *AR=STOR0 02814 MA(STOR0), RAM>AR, 02815 JUMP(PNIL0); ----- ----- 0EF 00020749 20000000 ----- 02816 * 02817 .ORG BSE8T, *Y=RET4 02818 *AR=STOR0 02819 MA(STOR0), RAM>AR, 02820 AR>A, B(0), OR, 02821 JZ(TCJBSE01F,TCJBSE01T); ----- ----- 0ED 000220FA 20001010 ----- 02822 * 02823 .ORG TCJBSE01F, *NOT SUBTITLE & STBRW==1, EXIT TO PNIL0 02824 *AR=STOR0 02825 MA(STOR0), RAM>AR, 02826 JUMP(PNIL0); ----- ----- 0FA 00020749 20000000 ----- 02827 * 02828 .ORG TCJBSE01T, *NOT SUBTITLE & STBRW==0 02829 *HEX PAGE NUMBER? 02830 *RWL=STOR0 02831 MA(RWL), 02832 ARHI>A, B(7), AND, 02833 Y>RAM, Y>IO, 02834 JZ(BSE9F,BSE9T); ----- ----- 0FB 000020FC 0B074920 ----- 02835 * 02836 .ORG BSE9F, *DO NOT BROWSE ONTO A HEX PAGE, EXIT TO PNIL0 02837 *AR=STOR0 02838 MA(STOR0), RAM>AR, 02839 JUMP(PNIL0); ----- ----- 0FC 00020749 20000000 ----- 02840 .ORG BSE9T, *NOT A HEX PAGE, OK TO RECIEVE 02841 *WAIT FOR CGB 02842 JBYTE(BSE10F,BSE10T); ----- ----- 0FD 000080F8 00000000 ----- 02843 .ORG BSE10F, *WAIT FOR CGB 02844 JBYTE(BSE10F,BSE10T); ----- ----- 0F8 000080F8 00000000 ----- 02845 .ORG BSE10T, *LPPREG=8 1ST 02846 CBRDY, 02847 MA(LPPREG), 02848 Y(8), 02849 Y>RAM, 02850 JUMP(CGB0B); ----- ----- 0F9 0000074A 7E083100 ----- 02851 *+++PAGE IN A LATCH 02852 * A=MASK, B=SPREG1, LAST Y WAS PCL XOR LFPCL0 02853 .ORG CGA2F, *PAGE IN LATCH 4TH 02854 *COMPARE PCL AND LFPCL1 02855 *PCL=LFPCL0? 02856 *B=SPREG2 02857 MA(SPREG2), RAM>BR, 02858 PCL>A, BRHI>B, XOR, 02859 JZ(CGA3F,CGA3T); ----- ----- 0E8 000120FE 5600187C ----- 02860 .ORG CGA3T, *PCL=LFPCL0 5TH 02861 *B=SPREG0 02862 MA(SPREG0), RAM>BR, 02863 JUMP(CGA5T); ----- ----- 0FF 00010107 54000000 ----- 02864 .ORG CGA3F, *PCL!=LFPCL0 5TH 02865 *COMPARE PCL AND LFPCL2 02866 *PCL=LFPCL1? 02867 PCL>A, BRHI>B, XOR, 02868 JZ(CGA4F,CGA4T); ----- ----- 0FE 00002104 0000187C ----- 02869 .ORG CGA4T, *PCL=LFPCL1 6TH 02870 *B=SPREG1 02871 MA(SPREG1), RAM>BR, 02872 JUMP(CGA5T); ----- ----- 105 00010107 55000000 ----- 02873 .ORG CGA4F, *PCL!=LFPCL1 6TH 02874 *PCL=LFPCL2? 02875 JZ(CGA5F,CGA5T); ----- ----- 104 00002106 00000000 ----- 02876 .ORG CGA5F, *PCL IS NOT FOR A SUB-PAGE 7TH 02877 *RWL=PCL 02878 MA(RWL), 02879 PCL>A, B(7), AND, 02880 Y>RAM, Y>IO, 02881 JBYTE(CGB0F,CGB0T); ----- ----- 106 000080DE 0B074970 ----- 02882 * 02883 .ORG CGA5T, *CASE MASK.MASKx 7TH 02884 *AR = SPFRC 02885 MA(SPFRC), RAM>AR, 02886 AR.0F>A, BR.0F>B, AND, 02887 JUMP(CGA6); ----- ----- 107 0002074B 570008C2 ----- 02888 * 02889 .ORG CGA6, * CASE Y = SPFRC & 7 8TH 02890 AR.0F>A, B(7), AND, 02891 JY(CGAXX.0); ----- ----- 74B 0000C040 000708C0 ----- 02892 * 02893 .ORG CGAXX.0, *CASE =000 9TH 02894 *NOT LOOKING FOR THIS SUB-PAGE 02895 JY(CGAZZ.0); ----- ----- 040 0000C548 00000000 ----- 02896 * 02897 .ORG CGAXX.1, *CASE MASK=001 9TH 02898 *AR=LFSP0 02899 MA(LFSP0), RAM>AR, 02900 JUMP(CGAYY); ----- ----- 041 0002074C 48000000 ----- 02901 * 02902 .ORG CGAXX.2, * CASE MASK=010 9TH 02903 * AR = LFSP1 02904 MA(LFSP1), RAM>AR, 02905 JUMP(CGAYY); ----- ----- 042 0002074C 49000000 ----- 02906 * 02907 .ORG CGAXX.3, *CASE MASK=011, ERROR, 9TH 02908 *Assume MASK==001 02909 MA(LFSP0), RAM>AR, 02910 JUMP(CGAYY); ----- ----- 043 0002074C 48000000 ----- 02911 * 02912 .ORG CGAXX.4, *CASE MASK=100 9TH 02913 MA(LFSP2), RAM>AR, 02914 JUMP(CGAYY); ----- ----- 044 0002074C 4A000000 ----- 02915 * 02916 .ORG CGAYY, *RWL=LFSPx 10TH 02917 MA(RWL), 02918 AR.0F>A, B(0), OR, 02919 Y>RAM, Y>IO, 02920 JBYTE(CGB0F,CGB0T); ----- ----- 74C 000080DE 0B0051C0 ----- 02921 * 02922 * The following three cases are errors which imply that 02923 * two or more latches have been set to identical page numbers. 02924 * This can happen when TOP broadcasters update the tables as more 02925 * than one identical AIT page number can appear in the PLT. This 02926 * does not cause a problem because the AIT search code will look 02927 * in all the captured AITs until it finds a page number. The 02928 * situation will correct itself as soon as a BTT is received 02929 * with no duplicate page numbers. 02930 * 02931 .ORG CGAXX.5, *CASE MASK=101 9TH 02932 *ERROR 02933 *AR=LFSP0 02934 MA(LFSP0), RAM>AR, 02935 JUMP(CGAYY); ----- ----- 045 0002074C 48000000 ----- 02936 * 02937 .ORG CGAXX.6, *CASE MASK=110 9TH 02938 *ERROR 02939 *AR=LFSP1 02940 MA(LFSP1), RAM>AR, 02941 JUMP(CGAYY); ----- ----- 046 0002074C 49000000 ----- 02942 * 02943 .ORG CGAXX.7, *CASE MASK=111 9TH 02944 *ERROR 02945 *AR=LFSP0 02946 MA(LFSP0), RAM>AR, 02947 JUMP(CGAYY); ----- ----- 047 0002074C 48000000 ----- 02948 * 02949 * TCJ Jan 92 02950 * Page in latch but not for one of the given 02951 * subpage numbers. Do a case jump on the 02952 * SPFRC flag in case we need to force a capture 02953 * 02954 .ORG CGAZZ.0, * CASE SPFRC==0, Don'y force 02955 * AR = STOR0 02956 MA(STOR0), RAM>AR, 02957 JUMP(PNIL0); ----- ----- 548 00020749 20000000 ----- 02958 * 02959 .ORG CGAZZ.1, * CASE SPFRC==1 02960 * AR = LFSP0 02961 MA(LFSP0), RAM>AR, 02962 JUMP(CGAYY); ----- ----- 549 0002074C 48000000 ----- 02963 * 02964 .ORG CGAZZ.2, * CASE SPFRC==2 02965 * AR = LFSP1 02966 MA(LFSP1), RAM>AR, 02967 JUMP(CGAYY); ----- ----- 54A 0002074C 49000000 ----- 02968 * 02969 .ORG CGAZZ.3, * CASE SPFRC==3, Error 02970 MA(STOR0), RAM>AR, 02971 JUMP(PNIL0); ----- ----- 54B 00020749 20000000 ----- 02972 * 02973 .ORG CGAZZ.4, * CASE SPFRC==4 02974 * AR = LFSP2 02975 MA(LFSP2), RAM>AR, 02976 JUMP(CGAYY); ----- ----- 54C 0002074C 4A000000 ----- 02977 * 02978 .ORG CGAZZ.5, * CASE SPFRC==5, Error 02979 MA(STOR0), RAM>AR, 02980 JUMP(PNIL0); ----- ----- 54D 00020749 20000000 ----- 02981 * 02982 .ORG CGAZZ.6, * CASE SPFRC==6, Error 02983 MA(STOR0), RAM>AR, 02984 JUMP(PNIL0); ----- ----- 54E 00020749 20000000 ----- 02985 * 02986 .ORG CGAZZ.7, * CASE SPFRC==7, Error 02987 MA(STOR0), RAM>AR, 02988 JUMP(PNIL0); ----- ----- 54F 00020749 20000000 ----- 02989 * 02990 *+++ 02991 .ORG CGB0F, *WAITING FOR CGB 02992 *GOING TO CAPTURE THE PAGE 02993 JBYTE(CGB0F,CGB0T); ----- ----- 0DE 000080DE 00000000 ----- 02994 .ORG CGB0T, *LPPREG=2 1ST 02995 CBRDY, 02996 MA(LPPREG), 02997 Y(2), 02998 Y>RAM, 02999 JUMP(CGB0B); ----- ----- 0DF 0000074A 7E023100 ----- 03000 *ENTRY POINT FROM BROWSE CODE 03001 .ORG CGB0B, *BR=DHREG 2ND 03002 MA(DHREG), RAM>BR, 03003 JUMP(CGB1); ----- ----- 74A 0001074D 32000000 ----- 03004 .ORG CGB1, *Y=HOFF 3RD 03005 A(HOFF), BR>B, AND, 03006 JUMP(CGB2); ----- ----- 74D 0000074E 00800801 ----- 03007 .ORG CGB2, *CGB=CGB 4TH 03008 *HOFF? 03009 MA(CGB), 03010 A(0), HAM>B, ADD, 03011 Y>RAM, 03012 JZ(CGB3F,CGB3T); ----- ----- 74E 00082108 34000107 ----- 03013 * 03014 *ENTRY POINT FROM PNIL CODE 03015 * 03016 .ORG CGB3F, *DO NOT RECEIVE HEADER 9TH 03017 *GO TO TIME 03018 *WAIT FOR BYTE 03019 *BR=SCREEN 03020 MA(SCREEN), RAM>BR, 03021 JBYTE(CGB4F,CGB4T); ----- ----- 108 0001810A 60000000 ----- 03022 .ORG CGB4F, *WAIT FOR BYTE 03023 JBYTE(CGB4F,CGB4T); ----- ----- 10A 0000810A 00000000 ----- 03024 .ORG CGB4T, *Y=MNDP1+MNDP0 1ST 03025 *AR=VDPOSD 03026 CBRDY, 03027 MA(VDPOSD), RAM>AR, 03028 A(MNDP1+MNDP0), BR>B, AND, 03029 JUMP(CGB4A); ----- ----- 10B 0002074F 2C032801 ----- 03030 .ORG CGB4A, *DISPLAYING A MENU PAGE? 2ND 03031 *Y=CFU 03032 AR>A, B(CFU), AND, 03033 JZ(CGB4BF,CGB4BT); ----- ----- 74F 0000210C 00040810 ----- 03034 .ORG CGB4BT, *NO, RWL ALREADY SET TO STORE 0 3RD 03035 JUMP(CGB4CT); ----- ----- 10D 0000010F 00000000 ----- 03036 .ORG CGB4BF, *MENU PAGE, UPDATING CLOCK FIELD? 03037 *AR=VDP0 3RD 03038 MA(VDP0), RAM>AR, 03039 JZ(CGB4CF,CGB4CT); ----- ----- 10C 0002210E 00000000 ----- 03040 .ORG CGB4CF, *UPDATING CLOCK IN MENU PAGE 4TH 03041 *RWL=DPL 03042 MA(RWL), 03043 AR>A, B(0), OR, 03044 Y>RAM, Y>IO, 03045 JUMP(CGB4CT); ----- ----- 10E 0000010F 0B005110 ----- 03046 * 03047 .ORG CGB4CT, *AR=23, SKIP 23 BYTES 5TH 03048 Y(23), 03049 Y>AR, 03050 JUMP(CGB4D); ----- ----- 10F 0022075C 00171000 ----- 03051 .ORG CGB4D, *CALL WAIT 6TH 03052 *RETURN=0, RETURN TO CGB5Y 03053 MA(RETURN), 03054 A(0), B(0), AND, 03055 Y>RAM, 03056 JUMP(WAIT0F); ----- ----- 75C 0000065E 7C000900 ----- 03057 .ORG CGB5Y, *BASE CASE OF WAIT RETURN ->5TH 03058 *P=32 03059 A(16), B(16), ADD, 03060 Y>PR, 03061 JUMP(CGB6); ----- ----- 030 0000075D 80100000 ----- 03062 .ORG CGB6, *COUNT=8 6TH 03063 *CALL RDC 03064 *RETURN TO LPP0 03065 MA(COUNT), 03066 A(4), B(4), ADD, 03067 Y>RAM, 03068 JBYTE(RDC0F,RDC0T); ----- ----- 75D 00008118 78040100 ----- 03069 *** 03070 .ORG CGB3T, *RECEIVE HEADER CHARACTERS 9TH 03071 *AND TIME 03072 *P=8 03073 A(4), B(4), ADD, 03074 Y>PR, 03075 JUMP(CGB7); ----- ----- 109 0000075E 80040000 ----- 03076 .ORG CGB7, *COUNT=32 10TH 03077 *CALL RDC 03078 *RETURN TO LPP0 03079 MA(COUNT), 03080 A(16), B(16), ADD, 03081 Y>RAM, 03082 JBYTE(RDC0F,RDC0T); ----- ----- 75E 00008118 78100100 ----- 03083 * 03084 ***PNIL: PAGE NOT IN LATCH***** 03085 * 03086 * This routines either:- 03087 * 1) stores header characters for a rolling header 03088 * 2) store time characters for time display 03089 * or 3) does not store characters as appropriate. 03090 * 03091 * It updates LPPREG to specify The correct type of post processing 03092 * after the required characters have been received. 03093 * 03094 * AR=STORE0 03095 .ORG PNIL0, *SET RWL TO STORE 0 LATCH 10TH 03096 MA(RWL), 03097 ARHI>A, B(DPL), AND, 03098 Y>RAM, Y>IO, 03099 JUMP(PNIL0AF); ----- ----- 749 0000011A 0B0F4920 ----- 03100 .ORG PNIL0AF, *WAIT FOR CGB 11TH 03101 *AR=DISPLAY PAGE MAGAZINE 03102 MA(DPM), RAM>AR, 03103 JBYTE(PNIL0AF,PNIL0AT); ----- ----- 11A 0002811A 68000000 ----- 03104 .ORG PNIL0AT, *SET RWL TO DISPLAY LATCH 1ST 03105 *MOVE TO LO NIBBLE 03106 CBRDY, 03107 ARHI>A, B(0), OR, 03108 Y>AR, 03109 JUMP(PNIL4); ----- ----- 11B 0022075F 00003020 ----- 03110 .ORG PNIL4, *Y=MS (MAG SERIAL) 2ND 03111 MA(RCM), RAM>BR, 03112 A(%0001), HAM>B, AND, 03113 JUMP(PNIL7); ----- ----- 75F 00090764 28010807 ----- 03114 .ORG PNIL7, *MS? 3RD 03115 *Y=RCM-MAG OF DISPLAY LATCH 03116 *AS DISPLAYED PAGE 03117 *AR=CGA 03118 MA(CGA), RAM>AR, 03119 NAR.0F>A, BR.0F>B, O>CIN, ADD, 03120 JZ(PNIL8F,PNIL8T); ----- ----- 764 0002211C 33000462 ----- 03121 *** 03122 .ORG PNIL8F, *SERIAL MAG 4TH 03123 *Y=PTY+SH+ID+IS OF CGA 03124 AR>A, B(%10001101), AND, 03125 JUMP(PNIL8A); ----- ----- 11C 00000765 008D0810 ----- 03126 .ORG PNIL8A, *SET LPPREG=1 5TH 03127 *PTY ERROR, SH, ID OR IS? 03128 MA(LPPREG), 03129 Y(1), 03130 Y>RAM, 03131 JZ(PNIL10F,PNIL10T); ----- ----- 765 0000211E 7E011100 ----- 03132 *** 03133 .ORG PNIL8T, *PARALLEL MAG 4TH 03134 *HEADER FROM SAME MAG AS DISPLAY PAGE? 03135 *Y=PTY+SH+ID+IS OF CGA 03136 AR>A, B(%10001101), AND, 03137 JZ(PNIL9F,PNIL9T); ----- ----- 11D 00002128 008D0810 ----- 03138 .ORG PNIL9F, *NO, NO GOOD FOR ROLLING 5TH 03139 *HEADER OR TIME 03140 *SET LPPREG=1 03141 MA(LPPREG), 03142 Y(1), 03143 Y>RAM, 03144 JUMP(PNIL10F); ----- ----- 128 0000011E 7E011100 ----- 03145 .ORG PNIL9T, *PARALLEL ROLLING HEADER 5TH 03146 *OR TIME 03147 *SET LPPREG=1 03148 *PTY ERROR, SH, ID OR IS? 03149 MA(LPPREG), 03150 Y(1), 03151 Y>RAM, 03152 JZ(PNIL10F,PNIL10T); ----- ----- 129 0000211E 7E011100 ----- 03153 ***PARALLEL AND SERIAL MAG JOIN HERE 03154 .ORG PNIL10F, *DO NOT USE FOR HEADER 03155 *OR TIME 03156 *CGB=HAM 03157 MA(CGB), 03158 A(0), HAM>B, ADD, 03159 Y>RAM, 03160 JUMP(LPP0); ----- ----- 11E 00080712 34000107 ----- 03161 .ORG PNIL10T, *BR=DHREG 5TH/6TH 03162 MA(DHREG), RAM>BR, 03163 JUMP(PNIL10A); ----- ----- 11F 00010766 32000000 ----- 03164 .ORG PNIL10A, *Y=POOCD+NRH 7TH 03165 A(NRH+POOCD), BR>B, AND, 03166 JUMP(PNIL10B); ----- ----- 766 00000767 00300801 ----- 03167 .ORG PNIL10B, *ROLLING HEADER ENABLED? 8TH 03168 *CGB=HAM 03169 MA(CGB), 03170 A(0), HAM>B, ADD, 03171 Y>RAM, 03172 JZ(CGB3F,CGB3T); ----- ----- 767 00082108 34000107 ----- 03173 *+++ 03174 ***END OF ROW 0**************** 03175 ***DISPLAY ROW 1-23************ 03176 * input parameters:- AR=LAFR 03177 .ORG DR0, *ROW 1 TO 23 7TH 03178 *Y=(AITL+BTTL) 03179 AR>A, B(AITL+BTTL), AND, 03180 JUMP(DR1); ----- ----- 07F 0000076C 00030810 ----- 03181 .ORG DR1, *BR=THISRW 8TH 03182 *CASE (AITL+BTTL)=? 03183 MA(THISRW), RAM>BR, 03184 JY(DR10Y); ----- ----- 76C 0001C018 7D000000 ----- 03185 .ORG DR10Y, *CASE NOT BTT OR AIT 9TH 03186 *DISPLAY ROW OFF? 03187 *COUNT=40 03188 MA(COUNT), 03189 A(20), B(20), ADD, 03190 Y>RAM, 03191 JUMP(DR10); ----- ----- 018 0000076D 78140100 ----- 03192 .ORG DR10, *RECEIVE BYTES 10TH 03193 *CALL RDC 03194 *RETURNS TO POST PROCESSING CODE 03195 JBYTE(RDC0F,RDC0T); ----- ----- 76D 00008118 00000000 ----- 03196 .ORG DR11, *CASE AIT 9TH 03197 *CALL AIT 03198 *RETURNS TO POST PROCESSING CODE 03199 *Y=THISRW-23 03200 A(-23), BR>B, ADD, 03201 JUMP(AIT0A); ----- ----- 019 0000076E 00E90001 ----- 03202 .ORG DR12, *CASE BTT 03203 *RETURNS TO POST PROCESSING CODE 03204 *Y=THISRW-23 03205 A(-23), BR>B, ADD, 03206 JUMP(BTT0A); ----- ----- 01A 0000076F 00E90001 ----- 03207 ***ROW 24********************** 03208 * A=STOR7 03209 .ORG I30Y, *POINT TO FLOF FLAGS 8TH 03210 *B=RWL 03211 MA(RWL), RAM>BR, 03212 Y(-16), 03213 Y>PR, 03214 JUMP(RBR0); ----- ----- 010 00010770 8BF01000 ----- 03215 .ORG RBR0, *Y=STOR7 XOR RWL 9TH 03216 *A=STOR0 03217 *TPD= FLOF FLAGS FOR THIS LATCH 03218 RVDP, 03219 MA(STOR0), RAM>AR, 03220 ARHI>A, BR.0F>B, XOR, 03221 JUMP(RBR1); ----- ----- 770 00020771 20009822 ----- 03222 .ORG RBR1, *LPPREG=0 10TH 03223 *RECEIVING ROW 24 FOR STORE 7? 03224 *LPPREG=0 03225 MA(LPPREG), 03226 Y(0), 03227 Y>RAM, 03228 JZ(RBR2F,RBR2T); ----- ----- 771 0000212A 7E001100 ----- 03229 .ORG RBR2T, *INHIBIT ROW 24 RECEPTION FOR STORE 7 03230 JUMP(LPP0); ----- ----- 12B 00000712 00000000 ----- 03231 .ORG RBR2F, *SET P24R FLAG IN FLOF FLAGS 11TH 03232 TPD>A, B(>40), OR, 03233 Y>DR, 03234 JBYTE(RBR10F,RBR10T); ----- ----- 12A 0000912C 00401090 ----- 03235 *WAITING FOR FIRST BYTE 03236 .ORG RBR10F, * 03237 JBYTE(RBR10F,RBR10T); ----- ----- 12C 0000812C 00000000 ----- 03238 .ORG RBR10T, *COMPARE RWL AND STOR0 1ST 03239 CBRDY, 03240 ARHI>A, BR.0F>B, XOR, 03241 JUMP(RBR11); ----- ----- 12D 00000772 00003822 ----- 03242 .ORG RBR11, *RWL= DISPLAY LATCH? 2ND 03243 *B=STOR7 03244 *A=PTY 03245 MA(STOR7), RAM>BR, 03246 A(0), PTY>B, OR, 03247 Y>AR, 03248 JZ(RBR11F,RBR11T); ----- ----- 772 0027212E 27001005 ----- 03249 .ORG RBR11T, *ROW 24 FOR DISPLAY PAGE, PUT IT IN STORE 7 03250 * 3RD 03251 MA(RWL), 03252 A(0), BRHI>B, OR, 03253 Y>RAM, Y>IO, 03254 JUMP(RBR12); ----- ----- 12F 00000773 0B00510C ----- 03255 .ORG RBR12, *B=SYS2 4TH 03256 MA(SYS2), RAM>BR, 03257 JUMP(RBR13); ----- ----- 773 00010774 09000000 ----- 03258 .ORG RBR13, *SET CPYR24 AND R24RTC 5TH 03259 MA(SYS2), 03260 A(CPYR24+R24RTC), BR>B, OR, 03261 Y>RAM, 03262 JUMP(RBR11F); ----- ----- 774 0000012E 09061101 ----- 03263 * 03264 .ORG RBR11F, *Y=PTY 6TH 03265 AR>A, B(0), OR, 03266 JUMP(RBR22); ----- ----- 12E 00000775 00001010 ----- 03267 .ORG RBR22, *P=POINTER TO FIRST COL 7TH 03268 *PTY OK? 03269 Y(-64), 03270 Y>PR, 03271 JN(RBR23F,RBR23T); ----- ----- 775 00004138 80C01000 ----- 03272 .ORG RBR23F, *PARITY OK, WRITE CHARACTER 8TH 03273 AR>A, B(0), OR, 03274 Y>DR, 03275 JUMP(RBR23T); ----- ----- 138 00001139 00001010 ----- 03276 .ORG RBR23T, *POINT TO 2ND COL 9TH 03277 Y(-63), 03278 Y>PR, 03279 JUMP(RBR24); ----- ----- 139 00000776 80C11000 ----- 03280 .ORG RBR24, *COUNT=39 TO RECEIVE 39 BYTES 10TH 03281 MA(COUNT), 03282 Y(39), 03283 Y>RAM, 03284 JBYTE(RDC0F,RDC0T); ----- ----- 776 00008118 78271100 ----- 03285 ***ROW 25********************** 03286 .ORG I31, *ROW 25, 03287 *LPPREG=0 03288 MA(LPPREG), 03289 Y(0), 03290 Y>RAM, 03291 JUMP(LPP0); ----- ----- 011 00000712 7E001100 ----- 03292 ***ROW 26********************** 03293 .ORG I32, *ROW 26 9TH 03294 *PR=INDEX TO P26FLGS 03295 * *PACKET 26 FRONT END ENABLE 03296 * MA(P26EN), 03297 * Y>IO, 03298 Y(-11), 03299 Y>PR, 03300 JBYTE(SP0F,SP0T); ----- ----- 012 0000813A 80F51000 ----- 03301 ***ROW 27********************** 03302 .ORG I33, *ROW 27 03303 *LPPREG=0 03304 MA(LPPREG), 03305 Y(0), 03306 Y>RAM, 03307 JBYTE(PLP0F,PLP0T); ----- ----- 013 0000813C 7E001100 ----- 03308 ***ROW 28********************** 03309 .ORG I34, *ROW 28 03310 *LPPREG=0 03311 MA(LPPREG), 03312 Y(0), 03313 Y>RAM, 03314 JUMP(LPP0); ----- ----- 014 00000712 7E001100 ----- 03315 ***ROW 29********************** 03316 .ORG I35, *ROW 29 03317 *LPPREG=0 03318 MA(LPPREG), 03319 Y(0), 03320 Y>RAM, 03321 JUMP(LPP0); ----- ----- 015 00000712 7E001100 ----- 03322 ***ROW 30********************** 03323 .ORG I5T, *ROW 30 03324 *Y=RCM 03325 A(0), BR.0F>B, OR, 03326 JUMP(BSD0); ----- ----- 07B 00000777 00001002 ----- 03327 .ORG BSD0, *LPPREG=9 6TH 03328 *MAGAZINE 8? 03329 MA(LPPREG), 03330 Y(9), 03331 Y>RAM, 03332 JZ(BSD1F,BSD1T); ----- ----- 777 0000213E 7E091100 ----- 03333 .ORG BSD1F, *NOT 8/30 7TH 03334 *LPPREG=0 03335 MA(LPPREG), 03336 Y(0), 03337 Y>RAM, 03338 JUMP(LPP0); ----- ----- 13E 00000712 7E001100 ----- 03339 .ORG BSD1T, *WAIT FOR DC 7TH 03340 JBYTE(BSD2F,BSD2T); ----- ----- 13F 00008148 00000000 ----- 03341 .ORG BSD2F, 03342 JBYTE(BSD2F,BSD2T); ----- ----- 148 00008148 00000000 ----- 03343 .ORG BSD2T, *MASK 2 LSBS 1ST 03344 CBRDY, 03345 A(>FC), HAM>B, AND, 03346 JUMP(BSD3); ----- ----- 149 0008077A 00FC2807 ----- 03347 .ORG BSD3, *STORE=FORMAT 2ND 03348 *FORMAT 1 OR 2? 03349 MA(STORE), 03350 A(>02), HAM>B, AND, 03351 Y>RAM, 03352 JZ(BSD4F,BSD4T); ----- ----- 77A 0008214A 77020907 ----- 03353 .ORG BSD4F, *NOT FORMAT 1 OR 2, OR HAMMING ERROR 03354 *LPPREG=0 03355 MA(LPPREG), 03356 Y(0), 03357 Y>RAM, 03358 JUMP(LPP0); ----- ----- 14A 00000712 7E001100 ----- 03359 .ORG BSD4T, *OK TO PROCESS 3RD 03360 *WAIT FOR UNITS 03361 JBYTE(BSD5F,BSD5T); ----- ----- 14B 0000814C 00000000 ----- 03362 .ORG BSD5F, * 03363 JBYTE(BSD5F,BSD5T); ----- ----- 14C 0000814C 00000000 ----- 03364 .ORG BSD5T, *RET2=UNITS, CHECK FOR HAMMING ERROR LATER 03365 CBRDY, 03366 MA(RET2), 03367 A(0), HAM>B, OR, 03368 Y>RAM, 03369 JUMP(BSD5A); ----- ----- 14D 0008077B 7B003107 ----- 03370 .ORG BSD5A, *THIS IS INSTRUCTION BETWEEN CBRDY AND JBYTE 03371 JUMP(BSD6F); ----- ----- 77B 0000014E 00000000 ----- 03372 .ORG BSD6F, *WAIT FOR TENS 03373 *AR=2 FOR WAIT CALL 03374 Y(2), 03375 Y>AR, 03376 JBYTE(BSD6F,BSD6T); ----- ----- 14E 0022814E 00021000 ----- 03377 .ORG BSD6T, *RET3=TENS, CHECK FOR HAMMING ERROR LATER 03378 CBRDY, 03379 MA(RET3), 03380 A(0), HAM>B, OR, 03381 Y>RAM, 03382 JUMP(BSD6A); ----- ----- 14F 0008077C 7A003107 ----- 03383 .ORG BSD6A, *THIS IS INSTRUCTION BETWEEN CBRDY AND JBYTE 03384 *CALL WAIT0F, AR=2 (WAIT FOR TWO BYTES) 03385 *RETURN=1, RETURN TO BSD7 03386 MA(RETURN), 03387 Y(1), 03388 Y>RAM, 03389 JUMP(WAIT0F); ----- ----- 77C 0000065E 7C011100 ----- 03390 .ORG BSD7, *Y=C4 03391 A(>08), HAM>B, AND, 03392 JUMP(BSD7A); ----- ----- 031 0008077D 00080807 ----- 03393 .ORG BSD7A, *ASSUME C4=0, KEEP ERROR INFO 03394 *IS C4=0? 03395 MA(RET4), 03396 A(>F0), HAM>B, AND, 03397 Y>RAM, Y>AR, 03398 JZ(BSD8F,BSD8T); ----- ----- 77D 002A2150 79F00907 ----- 03399 .ORG BSD8F, *ACTUALLY C4=1, CORRECT RET4, KEEP ERROR INFO 03400 MA(RET4), 03401 AR>A, B(1), ADD, 03402 Y>RAM, 03403 JUMP(BSD8T); ----- ----- 150 00000151 79010110 ----- 03404 .ORG BSD8T, *CALL WAIT0F, AR=2 (WAIT FOR TWO BYTES) 03405 *RETURN=2, RETURN TO BSD9 03406 *(ALSO USE THIS IN BSD13) 03407 MA(RETURN), 03408 Y(2), 03409 Y>RAM, Y>AR, 03410 JUMP(WAIT0F); ----- ----- 151 0022065E 7C021100 ----- 03411 .ORG BSD9, *BR=RET4 5TH 03412 *PUT C5 AND C6 IN AR 03413 *MASK 2ND LSB TO PRESERVE C4 03414 MA(RET4), RAM>BR, 03415 A(>FD), HAM>B, AND, 03416 Y>AR, 03417 JUMP(BSD10); ----- ----- 032 002B077E 79FD0807 ----- 03418 .ORG BSD10, *OR C5 AND C6 INTO RET4, KEEP ERROR INFO 6TH 03419 *C4, C5 AND C6 NOW IN CORRECT POSITIONS 03420 MA(RET4), 03421 AR>>1>A, BR>B, OR, 03422 Y>RAM, 03423 JUMP(BSD11); ----- ----- 77E 0000077F 790011E1 ----- 03424 *WHICH FORMAT? 03425 .ORG BSD11, *BR=STORE 7TH 03426 MA(STORE), RAM>BR, 03427 JUMP(BSD12); ----- ----- 77F 00010782 77000000 ----- 03428 .ORG BSD12, *Y=STORE 2ND LSB 8TH 03429 *AR=EXPREG 03430 MA(EXPREG), RAM>AR, 03431 A(>02), BR>B, AND, 03432 JUMP(BSD13); ----- ----- 782 00020783 63020801 ----- 03433 .ORG BSD13, *FORMAT 1 OR FORMAT 2? 9TH 03434 *POINT TO PAGE FOR FIRST 6 BYTES OF 03435 *FORMAT 1 DATA FIELD 03436 *RWL=0 03437 *IF FORMAT 1, CALL RDDA TO RECEIVE FIRST 6 BYTES 03438 *RETURN=2 (SEE BSD8T), RETURN TO BSD20 03439 MA(RWL), 03440 Y(0), 03441 Y>RAM, Y>IO, 03442 JZ(BSD14F,RDDA); ----- ----- 783 00002152 0B005100 ----- 03443 *RECIEVING PACKET 8/30 FORMAT 1 DATA 03444 .ORG BSD20, *POINT TO PAGE FOR LAST 7 BYTES OF DATA FIELD 03445 *RWL=1 03446 MA(RWL), 03447 Y(1), 03448 Y>RAM, Y>IO, 03449 JUMP(BSD21); ----- ----- 58A 00000784 0B015100 ----- 03450 .ORG BSD21, *CALL RDDB TO RX LAST 7 BYTES 03451 *RETURN=1, RETURN TO BSD30 03452 MA(RETURN), 03453 Y(1), 03454 Y>RAM, 03455 JUMP(RDDB); ----- ----- 784 00000785 7C011100 ----- 03456 *ENTRY POINT FROM FORMAT 2 CODE 03457 .ORG BSD30, *POINT TO PAGE FOR FIRST 6 BYTES OF STATUS FIELD 03458 *RWL=2 03459 MA(RWL), 03460 Y(2), 03461 Y>RAM, Y>IO, 03462 JUMP(BSD31); ----- ----- 589 00000786 0B025100 ----- 03463 .ORG BSD31, *CALL RPDA TO RX FIRST 6 BYTES OF STATUS FIELD 03464 *RETURN=0, RETURN TO BSD40Y 03465 MA(RETURN), 03466 Y(0), 03467 Y>RAM, 03468 JUMP(RPDA); ----- ----- 786 00000787 7C001100 ----- 03469 .ORG BSD40Y, *POINT TO PAGE FOR NEXT 7 BYTES OF STATUS FIELD 03470 *RWL=3 03471 MA(RWL), 03472 Y(3), 03473 Y>RAM, Y>IO, 03474 JUMP(BSD41); ----- ----- 588 0000078C 0B035100 ----- 03475 .ORG BSD41, *CALL RPDB TO RX NEXT 7 BYTES OF STATUS FIELD 03476 *RETURN=3, RETURN TO BSD50 03477 MA(RETURN), 03478 Y(3), 03479 Y>RAM, 03480 JUMP(RPDB); ----- ----- 78C 0000078D 7C031100 ----- 03481 .ORG BSD50, *POINT TO PAGE FOR LAST 7 BYTES OF STATUS FIELD 03482 *RWL=4 03483 MA(RWL), 03484 Y(4), 03485 Y>RAM, Y>IO, 03486 JUMP(BSD51); ----- ----- 58B 0000078E 0B045100 ----- 03487 .ORG BSD51, *CALL RPDB TO RX LAST 7 BYTES OF STATUS FIELD 03488 *RETURN=4, RETURN TO BSD60 03489 MA(RETURN), 03490 Y(4), 03491 Y>RAM, 03492 JUMP(RPDB); ----- ----- 78E 0000078D 7C041100 ----- 03493 .ORG BSD60, *AR=EXPREG 03494 MA(EXPREG), RAM>AR, 03495 JUMP(BSD61); ----- ----- 58C 0002078F 63000000 ----- 03496 .ORG BSD61, *Y=USM 03497 AR>A, B(USM), AND, 03498 JUMP(BSD62); ----- ----- 78F 0000079B 00020810 ----- 03499 .ORG BSD62, *USM? 03500 JZ(BSD63F,BSD63T); ----- ----- 79B 00002154 00000000 ----- 03501 .ORG BSD63F, *SRTC=1, CGAP=1 03502 *USER STATUS MODE, GENERATE A PROMPT 03503 MA(EXPREG), 03504 AR>A, B(SRTC+CGAP), OR, 03505 Y>RAM, 03506 JUMP(LPP0); ----- ----- 154 00000712 63091110 ----- 03507 .ORG BSD63T, *SRTC=1 03508 MA(EXPREG), 03509 AR>A, B(SRTC), OR, 03510 Y>RAM, 03511 JUMP(LPP0); ----- ----- 155 00000712 63011110 ----- 03512 *PROCESS PACKET 8/30 FORMAT 2 DATA 03513 * A=EXPREG 03514 .ORG BSD14F, *FORMAT 2 10TH 03515 *LPPREG=7 03516 MA(LPPREG), 03517 Y(7), 03518 Y>RAM, 03519 JUMP(BSD70F); ----- ----- 152 00000156 7E071100 ----- 03520 .ORG BSD70F, *WAIT FOR FIRST DATA BYTE 11TH 03521 *Y=P830F2 03522 AR>A, B(P830F2), AND, 03523 JBYTE(BSD70F,BSD70T); ----- ----- 156 00008156 00800810 ----- 03524 .ORG BSD70T, *Y=HAM 1ST 03525 *CAPTURING EXTENSION PACKETS? 03526 *AR=STOR7 03527 CBRDY, 03528 MA(STOR7), RAM>AR, 03529 A(0), HAM>B, OR, 03530 JZ(BSD71F,BSD71T); ----- ----- 157 000A2158 27003007 ----- 03531 *NOT CAPTURING FORMAT 2 DATA 03532 .ORG BSD71T, *WAIT FOR STATUS FIELD (12 BYTES) 03533 Y(12), 03534 Y>AR, 03535 JUMP(BSD71A); ----- ----- 159 0022079C 000C1000 ----- 03536 *ENTRY POINT IF HAMMING ERROR IN THIS BYTE 03537 .ORG BSD71A, *CALL WAIT0F 03538 *RETURN=3, RETURN TO BSD71B 03539 MA(RETURN), 03540 Y(3), 03541 Y>RAM, 03542 JUMP(WAIT0F); ----- ----- 79C 0000065E 7C031100 ----- 03543 .ORG BSD71B, *GO AND RECIEVE STATUS 03544 JUMP(BSD30); ----- ----- 033 00000589 00000000 ----- 03545 *CAPTURING FORMAT 2 DATA 03546 .ORG BSD71F, *HAMMING OK? 2ND 03547 *POINT TO STOR7 03548 *RWL=STOR7 03549 MA(RWL), 03550 ARHI>A, B(0), OR, 03551 Y>RAM, Y>IO, 03552 JN(BSD72F,BSD72T); ----- ----- 158 0000415A 0B005120 ----- 03553 .ORG BSD72T, *HAMMING ERROR 03554 *WAIT FOR STATUS FIELD (12 BYTES) 03555 Y(12), 03556 Y>AR, 03557 JUMP(BSD71A); ----- ----- 15B 0022079C 000C1000 ----- 03558 .ORG BSD72F, *AR=LABEL INTERLEAVE BITS 3RD 03559 A(3), HAM>B, AND, 03560 Y>AR, 03561 JUMP(BSD73); ----- ----- 15A 002A079D 00030807 ----- 03562 .ORG BSD73, *POINT TO ROW FOR THIS INTERLEAVE 4TH 03563 AR<<3>A, AR<<5>B, ADD, 03564 Y>PR, 03565 JUMP(BSD74); ----- ----- 79D 0000079E 80000059 ----- 03566 .ORG BSD74, *READ BYTE COUNT STORED IN PAGE MEMORY 5TH 03567 *BR=MEMORY POINTER 03568 *SET AR AS A LOOP COUNTER TO RECIEVE 12 BYTES 03569 RVDP, 03570 PR>BR, 03571 Y(12), 03572 Y>AR, 03573 JUMP(BSD75); ----- ----- 79E 0063079F 000C9000 ----- 03574 .ORG BSD75, *INCREMENT BYTE COUNT 6TH 03575 TPD>A, B(1), ADD, 03576 Y>DR, 03577 JUMP(BSD76); ----- ----- 79F 000017A9 00010090 ----- 03578 .ORG BSD76, *POINT TO LOC FOR 1ST DATA BYTE 7TH 03579 A(1), BR>B, ADD, 03580 Y>PR, 03581 JUMP(BSD77); ----- ----- 7A9 000007AA 80010001 ----- 03582 .ORG BSD77, *STORE 1ST DATA BYTE 8TH 03583 *BR=PR 03584 *OR WITH >30 TO MAKE IT VISIBLE 03585 PR>BR, 03586 A(>30), HAM>B, OR, 03587 Y>DR, 03588 JBYTE(BSD90F,BSD90T); ----- ----- 7AA 0049915C 00301007 ----- 03589 *LOOP TO RECIEVE 12 BYTES OF HAMMING DATA 03590 * RWL, PR POINT TO RAM, AR=COUNT 03591 .ORG BSD90F, *WAIT FOR BYTE 03592 *BR=PR 03593 PR>BR, 03594 JBYTE(BSD90F,BSD90T); ----- ----- 15C 0041815C 00000000 ----- 03595 .ORG BSD90T, *DEC LOOP COUNT 1ST 03596 CBRDY, 03597 AR>A, B(-1), ADD, 03598 Y>AR, 03599 JUMP(BSD91); ----- ----- 15D 002207AB 00FF2010 ----- 03600 .ORG BSD91, *INCREMENT RAM ADDRESS, LAST BYTE? 2ND 03601 A(1), BR>B, ADD, 03602 Y>PR, 03603 JZ(BSD92F,BSD92T); ----- ----- 7AB 0000215E 80010001 ----- 03604 .ORG BSD92F, *STORE BYTE 3RD 03605 *OR WITH >30 TO MAKE IT VISIBLE 03606 A(>30), HAM>B, OR, 03607 Y>DR, 03608 JUMP(BSD90F); ----- ----- 15E 0008115C 00301007 ----- 03609 *END OF LOOP 03610 .ORG BSD92T, *STORE LAST BYTE 3RD 03611 *OR WITH >30 TO MAKE IT VISIBLE 03612 A(>30), HAM>B, OR, 03613 Y>DR, 03614 JUMP(BSD30); ----- ----- 15F 00081589 00301007 ----- 03615 ***ROW 31********************** 03616 .ORG I37, *ROW 31 03617 *LPPREG=0 03618 MA(LPPREG), 03619 Y(0), 03620 Y>RAM, 03621 JUMP(LPP0); ----- ----- 017 00000712 7E001100 ----- 03622 * 03623 ***RDD: RECEIVE 'DATA' DATA 03624 * 03625 * This routine stores incomming bytes in data mode. It is a tight 03626 * loop which enables it to be called to receive sections of 03627 * extension packets as appropriate. It does not check for packet 26 03628 * markers. The i/p pars are:- 03629 * PR, RWL:page memory start address -1 03630 * COUNT: number of bytes to receive 03631 * RETURN: pointer to return address 03632 * 03633 *SET BR=-7, COUNT=6 BEFORE CALLING RDD0F 03634 .ORG RDDA, *PR=-7 03635 Y(-7), 03636 Y>PR, 03637 JUMP(RDDAA); ----- ----- 153 000007AC 80F91000 ----- 03638 .ORG RDDAA, *COUNT=6 03639 MA(COUNT), 03640 Y(6), 03641 Y>RAM, 03642 JBYTE(RDD0F,RDD0T); ----- ----- 7AC 00008160 78061100 ----- 03643 *SET BR=-8, COUNT=7 BEFORE CALLING RDD0F 03644 .ORG RDDB, *PR=-8 03645 Y(-8), 03646 Y>PR, 03647 JUMP(RDDBB); ----- ----- 785 000007AD 80F81000 ----- 03648 .ORG RDDBB, *COUNT=7 03649 MA(COUNT), 03650 Y(7), 03651 Y>RAM, 03652 JBYTE(RDD0F,RDD0T); ----- ----- 7AD 00008160 78071100 ----- 03653 * 03654 .ORG RDD0F, *WAIT FOR BYTE 03655 JBYTE(RDD0F,RDD0T); ----- ----- 160 00008160 00000000 ----- 03656 .ORG RDD0T, *AR=RETURN 03657 *BR=SCREEN POINTER 03658 PR>BR, 03659 CBRDY, 03660 MA(RETURN), RAM>AR, 03661 JUMP(RDD10); ----- ----- 161 004307AE 7C002000 ----- 03662 .ORG RDD10, *PR++ 2ND 03663 *BR=COUNT 03664 MA(COUNT), RAM>BR, 03665 A(1), BR>B, ADD, 03666 Y>PR, 03667 JUMP(RDD20); ----- ----- 7AE 000107AF F8010001 ----- 03668 .ORG RDD20, *DR=DATA 3RD 03669 *TCJ A(0), PTY>B, OR, 03670 A(0), DATA>B, OR, 03671 Y>DR, 03672 JUMP(RDD20A); ----- ----- 7AF 000017B8 00001005 ----- 03673 .ORG RDD20A, *COUNT-- 4TH 03674 MA(COUNT), 03675 A(-1), BR>B, ADD, 03676 Y>RAM, 03677 JUMP(RDD21); ----- ----- 7B8 000007B9 78FF0101 ----- 03678 .ORG RDD21, *LAST BYTE? 5TH 03679 *Y=RETURN 03680 AR>A, B(0), OR, 03681 JZ(RDD22F,RDD22T); ----- ----- 7B9 00002162 00001010 ----- 03682 .ORG RDD22F, *WAIT FOR BYTE 6TH 03683 *BR=PR 03684 PR>BR, 03685 JBYTE(RDD0F,RDD0T); ----- ----- 162 00418160 00000000 ----- 03686 *EXIT 03687 .ORG RDD22T, *CASE RETURN 6TH 03688 JY(BSD40Y); ----- ----- 163 0000C588 00000000 ----- 03689 * 03690 ***RPD: RECEIVE PARITY DATA 03691 * 03692 * This routine stores incomming bytes in parity mode. It is a tight 03693 * loop which enables it to be called to receive sections of 03694 * extension packets as appropriate. It does not check for packet 26 03695 * markers. The i/p pars are:- 03696 * PR, RWL:page memory start address -1 03697 * COUNT: number of bytes to receive 03698 * RETURN: pointer to return address 03699 * 03700 *SET BR=-7, COUNT=6 BEFORE CALLING RPD0F 03701 .ORG RPDA, *PR=-7 03702 Y(-7), 03703 Y>PR, 03704 JUMP(RPDAA); ----- ----- 787 000007BA 80F91000 ----- 03705 .ORG RPDAA, *COUNT=6 03706 MA(COUNT), 03707 Y(6), 03708 Y>RAM, 03709 JBYTE(RPD0F,RPD0T); ----- ----- 7BA 00008164 78061100 ----- 03710 *SET BR=-8, COUNT=7 BEFORE CALLING RPD0F 03711 .ORG RPDB, *PR=-8 03712 Y(-8), 03713 Y>PR, 03714 JUMP(RPDBB); ----- ----- 78D 000007BB 80F81000 ----- 03715 .ORG RPDBB, *COUNT=7 03716 MA(COUNT), 03717 Y(7), 03718 Y>RAM, 03719 JBYTE(RPD0F,RPD0T); ----- ----- 7BB 00008164 78071100 ----- 03720 * 03721 .ORG RPD0F, *WAIT FOR BYTE 03722 JBYTE(RPD0F,RPD0T); ----- ----- 164 00008164 00000000 ----- 03723 .ORG RPD0T, *Y=PTY 1ST 03724 *AR=RETURN 03725 PR>BR, 03726 CBRDY, 03727 MA(RETURN), RAM>AR, 03728 A(0), PTY>B, OR, 03729 JUMP(RPD10); ----- ----- 165 004707BC 7C003005 ----- 03730 .ORG RPD10, *PTY OK? 2ND 03731 *PR++ 03732 *BR=COUNT 03733 MA(COUNT), RAM>BR, 03734 A(1), BR>B, ADD, 03735 Y>PR, 03736 JN(RPD20F,RPD20T); ----- ----- 7BC 00014166 F8010001 ----- 03737 .ORG RPD20F, *PTY OK, DR=PTY 3RD 03738 A(0), PTY>B, OR, 03739 Y>DR, 03740 JUMP(RPD20T); ----- ----- 166 00041167 00001005 ----- 03741 * 03742 .ORG RPD20T, *COUNT-- 4TH 03743 MA(COUNT), 03744 A(-1), BR>B, ADD, 03745 Y>RAM, 03746 JUMP(RPD21); ----- ----- 167 000007BD 78FF0101 ----- 03747 .ORG RPD21, *LAST BYTE? 5TH 03748 *Y=RETURN 03749 AR>A, B(0), OR, 03750 JZ(RPD22F,RPD22T); ----- ----- 7BD 00002168 00001010 ----- 03751 .ORG RPD22F, *WAIT FOR BYTE 6TH 03752 *BR=PR 03753 PR>BR, 03754 JBYTE(RPD0F,RPD0T); ----- ----- 168 00418164 00000000 ----- 03755 *EXIT 03756 .ORG RPD22T, *CASE RETURN 6TH 03757 JY(BSD40Y); ----- ----- 169 0000C588 00000000 ----- 03758 * 03759 ***RDC: RECEIVE DISPLAY CHARACTERS 03760 * 03761 * This routine stores incomming display characters in the memory location 03762 * defined by the input parameters:- 03763 * PR, COUNT (contains number of characters), RWL 03764 * The routine exits to line post processing routine 03765 * 03766 .ORG RDC0F, *LINE RDY? 03767 JLINE(RDC1F,RDC1T); ----- ----- 118 0000616A 00000000 ----- 03768 .ORG RDC0T, *BYTE IS READY 3RD 03769 RVDP, BIT8, CBRDY, 03770 A(0), PTY>B, OR, 03771 JUMP(RDC2); ----- ----- 119 000407BE 0000B405 ----- 03772 .ORG RDC1F, *BYTE RDY? 2ND 03773 JBYTE(RDC0F,RDC0T); ----- ----- 16A 00008118 00000000 ----- 03774 .ORG RDC1T, *LINE RDY, ERROR 03775 CBRDY, 03776 JUMP(LPP0); ----- ----- 16B 00000712 00002000 ----- 03777 * 03778 .ORG RDC2, *Y=EXISTING DATA WITH MARKER 4TH 03779 *B=LAFR 03780 MA(LAFR), RAM>BR, 03781 TPD>A, B(0), OR, 03782 JUMP(RDC3); ----- ----- 7BE 000107BF 35001090 ----- 03783 .ORG RDC3, *P26 MARKER? 5TH 03784 *Y=PTY 03785 *A=COUNT 03786 MA(COUNT), RAM>AR, 03787 A(0), PTY>B, OR, 03788 JN(RDC4F,RDC4T); ----- ----- 7BF 0006416C 78001005 ----- 03789 .ORG RDC4T, *P26 MARKER 6TH+8TH 03790 *COUNT-- 03791 MA(COUNT), 03792 AR>A, B(-1), ADD, 03793 Y>RAM, 03794 JUMP(RDC8T); ----- ----- 16D 00000171 78FF0110 ----- 03795 .ORG RDC4F, *NOT A MARKED P26 CHARACTER 6TH 03796 *Y=CLR 03797 *PARITY OK? 03798 A(CLR), BR>B, AND, 03799 JN(RDC7F,RDC7T); ----- ----- 16C 0000416E 00200801 ----- 03800 .ORG RDC7F, *PTY OK, WRITE PTY DATA TO RAM 7TH 03801 A(0), PTY>B, OR, 03802 Y>DR, 03803 JUMP(RDC4T); ----- ----- 16E 0004116D 00001005 ----- 03804 .ORG RDC7T, *BAD PTY 7TH 03805 *CLEAR PAGE PENDING? 03806 *COUNT-- 03807 MA(COUNT), 03808 AR>A, B(-1), ADD, 03809 Y>RAM, 03810 JZ(RDC8F,RDC8T); ----- ----- 16F 00002170 78FF0110 ----- 03811 .ORG RDC8F, *CLEAR PAGE PENDING AND BAD PARITY 03812 *WRITE A SPACE 8TH 03813 *COUNT=0? 03814 *B=P 03815 PR>BR, 03816 Y(>20), 03817 Y>DR, 03818 JZ(RDC9F,RDC9T); ----- ----- 170 00413172 00201000 ----- 03819 .ORG RDC8T, *NO CLEAR PAGE PENDING AND BAD PARITY 03820 *OR P26 MARKER 8TH+9TH 03821 *DO NOTHING 03822 *COUNT=0? 03823 *B=P 03824 PR>BR, 03825 JZ(RDC9F,RDC9T); ----- ----- 171 00412172 00000000 ----- 03826 .ORG RDC9F, *COUNT!=0, MORE CHARACTERS 10TH 03827 *INC P 03828 A(1), BR>B, ADD, 03829 Y>PR, 03830 JBYTE(RDC0F,RDC0T); ----- ----- 172 00008118 80010001 ----- 03831 .ORG RDC9T, *NO MORE CHARACTERS 03832 *CALL LPP0 03833 JUMP(LPP0); ----- ----- 173 00000712 00000000 ----- 03834 * 03835 ***AIT: RECEIVE ADDITIONAL INFORMATION TABLE CHARACTERS 03836 * 03837 * This routine stores incomming AIT characters in the memory location 03838 * defined by the input parameters:- 03839 * PR, COUNT (contains number of characters), RWL 03840 * The routine exits to line post processing routine 03841 * 03842 .ORG AIT0A, *THISRW<23? 10TH 03843 *COUNT=40 03844 MA(COUNT), 03845 A(20), B(20), ADD, 03846 Y>RAM, 03847 JN(AIT0BF,AIT0BT); ----- ----- 76E 00004174 78140100 ----- 03848 .ORG AIT0BT, *BYTE RDY? 11TH 03849 JBYTE(AIT0F,AIT0T); ----- ----- 175 00008176 00000000 ----- 03850 .ORG AIT0BF, *THISRW>23, ERROR 03851 JUMP(LPP0); ----- ----- 174 00000712 00000000 ----- 03852 ***RECEIVE HAM FIELDS 03853 .ORG AIT0F, *LINE RDY? 03854 JLINE(AIT1F,AIT1T); ----- ----- 176 00006178 00000000 ----- 03855 .ORG AIT0T, *BYTE IS READY 3RD 03856 *Y=BYTE, 03857 CBRDY, 03858 MA(COUNT), RAM>AR, 03859 A(0), HAM>B, OR, 03860 JUMP(AIT2); ----- ----- 177 000A07CA 78003007 ----- 03861 .ORG AIT1F, *BYTE RDY? 2ND 03862 JBYTE(AIT0F,AIT0T); ----- ----- 178 00008176 00000000 ----- 03863 .ORG AIT1T, *LINE RDY, ERROR 03864 CBRDY, 03865 JUMP(LPP0); ----- ----- 179 00000712 00002000 ----- 03866 .ORG AIT2, *PTY OK? 4TH 03867 *COUNT-- 03868 MA(COUNT), 03869 AR>A, B(-1), ADD, 03870 Y>RAM, Y>AR, 03871 JN(AIT3F,AIT3T); ----- ----- 7CA 0022417A 78FF0110 ----- 03872 .ORG AIT3T, *PTY ERROR 5TH 03873 JUMP(AIT4); ----- ----- 17B 000007CB 00000000 ----- 03874 .ORG AIT3F, *PTY OK 5TH+6TH 03875 *WRITE TO RAM 03876 A(>30), HAM>B, OR, 03877 Y>DR, 03878 JUMP(AIT4); ----- ----- 17A 000817CB 00301007 ----- 03879 .ORG AIT4, *Y=COUNT-32 7TH 03880 AR>A, B(-32), ADD, 03881 JUMP(AIT5); ----- ----- 7CB 000007CC 00E00010 ----- 03882 .ORG AIT5, *Y=COUNT-12, COUNT==32? 8TH 03883 PR>BR, 03884 AR>A, B(-12), ADD, 03885 JZ(AIT6F,AIT6T); ----- ----- 7CC 0041217C 00F40010 ----- 03886 .ORG AIT6F, *COUNT!=32, COUNT==12? 9TH 03887 *INC P 03888 A(1), BR>B, ADD, 03889 Y>PR, 03890 JZ(AIT7F,AIT7T); ----- ----- 17C 0000217E 80010001 ----- 03891 .ORG AIT7F, *COUNT NOT 32 OR 12 9TH 03892 *CONT WITH HAM 03893 JBYTE(AIT0F,AIT0T); ----- ----- 17E 00008176 00000000 ----- 03894 .ORG AIT6T, *COUNT IS 32, RCV PTY 9TH 03895 *INC P 03896 A(1), BR>B, ADD, 03897 Y>PR, 03898 JBYTE(AIT10F,AIT10T); ----- ----- 17D 00008180 80010001 ----- 03899 .ORG AIT7T, *COUNT IS 12, RCV PTY 10TH 03900 JBYTE(AIT10F,AIT10T); ----- ----- 17F 00008180 00000000 ----- 03901 ***RECEIVE PARITY FIELDS 03902 .ORG AIT10F, *LINE RDY? 03903 JLINE(AIT11F,AIT11T); ----- ----- 180 00006182 00000000 ----- 03904 .ORG AIT10T, *BYTE IS READY 3RD 03905 *Y=BYTE, 03906 CBRDY, 03907 MA(COUNT), RAM>AR, 03908 A(0), PTY>B, OR, 03909 JUMP(AIT12); ----- ----- 181 000607CD 78003005 ----- 03910 .ORG AIT11F, *BYTE RDY? 2ND 03911 JBYTE(AIT10F,AIT10T); ----- ----- 182 00008180 00000000 ----- 03912 .ORG AIT11T, *LINE RDY, ERROR 03913 CBRDY, 03914 JUMP(LPP0); ----- ----- 183 00000712 00002000 ----- 03915 .ORG AIT12, *PTY OK? 4TH 03916 *COUNT-- 03917 MA(COUNT), 03918 AR>A, B(-1), ADD, 03919 Y>RAM, Y>AR, 03920 JN(AIT13F,AIT13T); ----- ----- 7CD 00224184 78FF0110 ----- 03921 .ORG AIT13T, *PTY ERROR, COUNT++ ==0? 5TH 03922 JZ(AIT14F,AIT14T); ----- ----- 185 00002186 00000000 ----- 03923 .ORG AIT13F, *PTY OK, COUNT ==0? 5TH+6TH 03924 *WRITE TO RAM 03925 A(0), PTY>B, OR, 03926 Y>DR, 03927 JZ(AIT14F,AIT14T); ----- ----- 184 00043186 00001005 ----- 03928 .ORG AIT14T, *COUNT==0 7TH 03929 *CALL LPP0 03930 JUMP(LPP0); ----- ----- 187 00000712 00000000 ----- 03931 .ORG AIT14F, *Y=COUNT-20 7TH 03932 PR>BR, 03933 AR>A, B(-20), ADD, 03934 JUMP(AIT15); ----- ----- 186 004107CE 00EC0010 ----- 03935 .ORG AIT15, *COUNT=20? 8TH 03936 *INC P 03937 A(1), BR>B, ADD, 03938 Y>PR, 03939 JZ(AIT16F,AIT16T); ----- ----- 7CE 00002188 80010001 ----- 03940 .ORG AIT16F, *COUNT IS NOT 20 OR 0 9TH 03941 *CONT WITH PTY 03942 JBYTE(AIT10F,AIT10T); ----- ----- 188 00008180 00000000 ----- 03943 .ORG AIT16T, *COUNT IS 20, RCV HAM 9TH 03944 JBYTE(AIT0F,AIT0T); ----- ----- 189 00008176 00000000 ----- 03945 ***BTT: RECEIVE BASIC TOP TABLE CHARACTERS 03946 * 03947 * This routine stores incomming BTT characters in the memory location 03948 * defined by the input parameters:- 03949 * PR, COUNT (contains number of characters), RWL 03950 * The routine exits to line post processing routine 03951 * 03952 .ORG BTT0A, *THISRW<23? 10TH 03953 *COUNT=40 03954 MA(COUNT), 03955 A(20), B(20), ADD, 03956 Y>RAM, 03957 JN(BTT0BF,BTT0BT); ----- ----- 76F 0000418A 78140100 ----- 03958 .ORG BTT0BT, *BYTE RDY? 11TH 03959 JBYTE(BTT0F,BTT0T); ----- ----- 18B 0000818C 00000000 ----- 03960 .ORG BTT0BF, *THISRW>23, ERROR 03961 JUMP(LPP0); ----- ----- 18A 00000712 00000000 ----- 03962 ***RECEIVE HAM FIELDS 03963 .ORG BTT0F, *LINE RDY? 03964 JLINE(BTT1F,BTT1T); ----- ----- 18C 0000618E 00000000 ----- 03965 .ORG BTT0T, *BYTE IS READY 3RD 03966 *TPD=EXISTING BYTE 03967 *LOCAL= THIS BYTE 03968 RVDP, 03969 CBRDY, 03970 MA(LOCAL), 03971 A(0), HAM>B, OR, 03972 Y>RAM, 03973 JUMP(BTT2); ----- ----- 18D 000807CF 7200B107 ----- 03974 .ORG BTT1F, *BYTE RDY? 2ND 03975 JBYTE(BTT0F,BTT0T); ----- ----- 18E 0000818C 00000000 ----- 03976 .ORG BTT1T, *LINE RDY, ERROR 03977 CBRDY, 03978 JUMP(LPP0); ----- ----- 18F 00000712 00002000 ----- 03979 .ORG BTT2, *HAMMING ERROR? 4TH 03980 *A= COPY OF INVENTORY FLAG 03981 TPD>A, B(>80), AND, 03982 Y>AR, 03983 JN(BTT3F,BTT3T); ----- ----- 7CF 00224190 00800890 ----- 03984 * 03985 .ORG BTT3T, *HAMMING ERROR 5TH 03986 *CALL BTT ERROR CODE IN LINE POST PROCESSING 03987 *LPPREG=10 03988 MA(LPPREG), 03989 Y(10), 03990 Y>RAM, 03991 JUMP(BTT3A); ----- ----- 191 000007D8 7E0A1100 ----- 03992 .ORG BTT3A, *A=COUNT 6TH 03993 MA(COUNT), RAM>AR, 03994 JUMP(BTT5); ----- ----- 7D8 000207D9 78000000 ----- 03995 * 03996 .ORG BTT3F, *HAMMING OK 5TH 03997 *OR COPY OF EXISTING BYTE WITH >30 TO MAKE IT VISIBLE 03998 *B=HAM BYTE 03999 MA(LOCAL), RAM>BR, 04000 AR>A, B(>30), OR, 04001 Y>AR, 04002 JUMP(BTT4); ----- ----- 190 002307DA 72301010 ----- 04003 .ORG BTT4, *UPDATE BYTE 6TH 04004 *A=COUNT 04005 MA(COUNT), RAM>AR, 04006 AR.F0>A, BR.0F>B, OR, 04007 Y>DCLR, 04008 JUMP(BTT5); ----- ----- 7DA 000217D9 780014D2 ----- 04009 * 04010 .ORG BTT5, *COUNT-- 7TH 04011 MA(COUNT), 04012 AR>A, B(-1), ADD, 04013 Y>RAM, 04014 JUMP(BTT6); ----- ----- 7D9 000007DB 78FF0110 ----- 04015 .ORG BTT6, *COUNT=0? 8TH 04016 PR>BR, 04017 JZ(BTT7F,BTT7T); ----- ----- 7DB 00412192 00000000 ----- 04018 .ORG BTT7F, *MORE BYTES 9TH 04019 *INC P 04020 A(1), BR>B, ADD, 04021 Y>PR, 04022 JBYTE(BTT0F,BTT0T); ----- ----- 192 0000818C 80010001 ----- 04023 * 04024 .ORG BTT7T, *COUNT==0 04025 *CALL LPP0 04026 JUMP(LPP0); ----- ----- 193 00000712 00000000 ----- 04027 * 04028 *+++SP: PACKET 26 PROCESSING 04029 * 04030 * PR=INDEX TO PACKET 26 FLAGS, RWL=LATCH FOR THIS PAGE 04031 *FIRST PROCESS DESIGNATION CODE 04032 .ORG SP0F, *WAIT FOR DC 04033 JBYTE(SP0F,SP0T); ----- ----- 13A 0000813A 00000000 ----- 04034 .ORG SP0T, *PACKET 26 FRONT END ENABLE 1ST 04035 *TPD=P26FLGS 04036 CBRDY, 04037 RVDP, 04038 MA(P26EN), 04039 Y>IO, 04040 JUMP(SP1); ----- ----- 13B 000007DC 0A00E000 ----- 04041 .ORG SP1, *AR=P26FLGS 2ND 04042 *USE AR AS TEMP STORE FOR P26FLGS, STORE UPDATES 04043 *IN TPD BEFORE LEAVING SP CODE 04044 TPD>A, B(0), OR, 04045 Y>AR, 04046 JUMP(SP2); ----- ----- 7DC 002207DD 00001090 ----- 04047 .ORG SP2, *Y=DC 4TH 04048 A(0), HAM>B, OR, 04049 JUMP(SP3); ----- ----- 7DD 000807DE 00001007 ----- 04050 .ORG SP3, *DC=0? 5TH 04051 *Y=DC XOR OLDC 04052 AR.0F>A, HAM>B, XOR, 04053 JZ(SP4F,SP4T); ----- ----- 7DE 00082194 000018C7 ----- 04054 .ORG SP4T, *DC=0, OLDDC=1 6TH 04055 *STORE IT FOR LPP0 CODE 04056 MA(RET2), 04057 AR.F0>A, B(1), ADD, 04058 Y>AR, Y>RAM, 04059 JUMP(SP6F); ----- ----- 195 00220196 7B0101D0 ----- 04060 .ORG SP4F, *OLDDC=DC+1 04061 *IN SEQUENCE? 04062 *STORE IT FOR LPP0 CODE 04063 MA(RET2), 04064 AR.F0>A, HAM>B, O>CIN, ADD, 04065 Y>AR, Y>RAM, 04066 JZ(SP6F,SP6T); ----- ----- 194 002A2196 7B0005D7 ----- 04067 * 04068 .ORG SP6F, *OUT OF SEQUENCE OR DC=0 7TH 04069 *P26ON=0 04070 AR>A, B(>7F), AND, 04071 Y>AR, 04072 JUMP(SP6T); ----- ----- 196 00220197 007F0810 ----- 04073 *COMMON EXIT FROM DC CODE 04074 .ORG SP6T, *INITIALISE TRIPLET COUNT 8TH 04075 *ALSO USE COUNT AS OFFSET FOR PDC STORAGE 04076 *COUNT=39 04077 MA(COUNT), 04078 Y(39), 04079 Y>RAM, 04080 JUMP(SP7); ----- ----- 197 000007DF 78271100 ----- 04081 .ORG SP7, *LPPREG=0 9TH 04082 *NO POST PROCESSING REQUIRED UNLESS PDC TRIPLET STORED 04083 MA(LPPREG), 04084 Y(0), 04085 Y>RAM, 04086 JUMP(SP8); ----- ----- 7DF 000007E0 7E001100 ----- 04087 .ORG SP8, *INIT PDC BYTE COUNT 04088 MA(LOCAL), 04089 Y(0), 04090 Y>RAM, 04091 JUMP(SP10F); ----- ----- 7E0 0000019A 72001100 ----- 04092 *WAIT FOR PACKET 26 TRIPLET 04093 .ORG SP10F, *BYTE READY? 10TH 04094 *PR=INDEX TO P26ROW 04095 Y(-12), 04096 Y>PR, 04097 JBYTE(SP11F,SP11T); ----- ----- 19A 00008198 80F41000 ----- 04098 .ORG SP11F, *LINE READY? 04099 JLINE(SP10F,SP10T); ----- ----- 198 0000619A 00000000 ----- 04100 .ORG SP10T, *UNEXPECTED LINE READY ERROR 04101 CBRDY, 04102 JUMP(SP53T); ----- ----- 19B 000001B1 00002000 ----- 04103 *PROCESS PACKET 26 TRIPLET 04104 .ORG SP11T, *Y=ADDRESS 2ND 04105 *TPD=P26ROW 04106 CBRDY, 04107 RVDP, 04108 A(0), P26AD>B, OR, 04109 JUMP(SP12); ----- ----- 199 000007E1 0000B008 ----- 04110 .ORG SP12, *PARITY OK? 3RD 04111 *Y=ADDRESS-40 04112 A(-40), P26AD>B, ADD, 04113 JN(SP13F,SP13T); ----- ----- 7E1 0000419C 00D80008 ----- 04114 .ORG SP13T, *TRIPLET HAMMING ERROR 4TH 04115 *P26ON=0 04116 AR>A, B(>7F), AND, 04117 Y>AR, 04118 JUMP(SP50T); ----- ----- 19D 002201AB 007F0810 ----- 04119 .ORG SP13F, *TRIPLET PARITY OK 4TH 04120 *ROW OR COLUMN FORMAT BYTE? 04121 *Y=ADDRESS-40 04122 A(-40), P26AD>B, ADD, 04123 JN(SP14F,SP14T); ----- ----- 19C 0000419E 00D80008 ----- 04124 *ROW FORMAT BYTE 04125 .ORG SP14F, *ADDRESS=40? 5TH 04126 *Y=ADDRESS-63 04127 A(-63), P26AD>B, ADD, 04128 JZ(SP20F,SP20T); ----- ----- 19E 000021A0 00C10008 ----- 04129 .ORG SP20F, *ADDRESS=63? 04130 *Y=MODE-31 04131 A(-31), P26MO>B, ADD, 04132 JZ(SP21F,SP21T); ----- ----- 1A0 000421A2 00E10008 ----- 04133 .ORG SP21F, *ADDRESS NOT 40 OR 63 04134 JUMP(SP22F); ----- ----- 1A2 000001A4 00000000 ----- 04135 .ORG SP21T, *ADDRESS=63, MODE=31? 04136 JZ(SP22F,SP22T); ----- ----- 1A3 000021A4 00000000 ----- 04137 .ORG SP22T, *ADDRESS=63, MODE=31 04138 *PACKET 26 TERMINATOR 04139 *P26ON=0, EXIT 04140 AR>A, B(>7F), AND, 04141 Y>AR, 04142 JUMP(SP53T); ----- ----- 1A5 002201B1 007F0810 ----- 04143 * NOT PACKET 26 TERMINATOR OR ADDRESS 40 04144 .ORG SP22F, *P26ROW=ADDRESS-40 04145 A(-40), P26AD>B, ADD, 04146 Y>DR, 04147 JUMP(SP25); ----- ----- 1A4 000017E2 00D80008 ----- 04148 * ADDRESS 40 04149 .ORG SP20T, *P26ROW=24 04150 Y(24), 04151 Y>DR, 04152 JUMP(SP25); ----- ----- 1A1 000017E2 00181000 ----- 04153 * 04154 .ORG SP25, *P26ON=1 04155 *JUMP TO PDC ROUTINE 04156 *RETURN TO SP50T 04157 *B=RWL 04158 MA(RWL), RAM>BR, 04159 AR>A, B(>80), OR, 04160 Y>AR, 04161 JUMP(SPT0T); ----- ----- 7E2 002301A9 0B801010 ----- 04162 *COLUMN FORMAT BYTE 04163 .ORG SP14T, *Y=P26MO-2 04164 *B=RWL 04165 MA(RWL), RAM>BR, 04166 A(-2), P26MO>B, ADD, 04167 JUMP(SP30); ----- ----- 19F 000507E3 0BFE0008 ----- 04168 .ORG SP30, *Y=P26MO-15 04169 *MODE=2? 04170 A(-15), P26MO>B, ADD, 04171 JZ(SP30AF,SP30AT); ----- ----- 7E3 000421A6 00F10008 ----- 04172 .ORG SP30AT, *YES, PROCESS IT AS A CHARACTER 04173 *Y=P26ON 04174 AR>A, B(>80), AND, 04175 JUMP(SP30BF); ----- ----- 1A7 000001A8 00800810 ----- 04176 .ORG SP30AF, *Y=P26ON 04177 *MODE>= 15? 04178 *IF NO, JUMP TO PDC ROUTINE 04179 *RETURN TO SP50T 04180 AR>A, B(>80), AND, 04181 JN(SP30BF,SPT0T); ----- ----- 1A6 000041A8 00800810 ----- 04182 *PROCESS A PACKET 26 CHARACTER 04183 .ORG SP30BF, *P26ON? 04184 *RECEIVING CHARACTERS AT THE MOMENT? 04185 *STORE=P26FLGS 04186 MA(STORE), 04187 AR>A, B(0), ADD, 04188 Y>RAM, 04189 JZ(SP31F,SP50T); ----- ----- 1A8 000021AA 77000110 ----- 04190 * 04191 *@@@ start of changes which inhibit packets 26 in row 24 04192 * 04193 *RECEIVING PACKET 26 CHARACTERS FOR THIS PAGE, CALCULATE ADDRESS 04194 .ORG SP31F, *RECEIVING CHARACTERS 04195 *AR=P26ROW 04196 TPD>A, B(0), ADD, 04197 Y>AR, 04198 JUMP(SP31A); ----- ----- 1AA 002207E4 00000090 ----- 04199 .ORG SP31A, *Y=P26ROW-24 04200 AR>A, B(-24), ADD, 04201 JUMP(SP32); ----- ----- 7E4 000007E5 00E80010 ----- 04202 .ORG SP32, *AR=START OF ROW 04203 *ROW 24? 04204 AR<<3>A, AR<<5>B, ADD, 04205 Y>AR, 04206 JZ(SP33F,SP33T); ----- ----- 7E5 002221AC 00000059 ----- 04207 *ROW 24, NOT SUPPORTED! 04208 .ORG SP33T, 04209 JUMP(SP50T); ----- ----- 1AD 000001AB 00000000 ----- 04210 *NOT ROW 24 04211 .ORG SP33F, *PR=ADDRESS OF PACKET 26 CHARACTER 04212 *PUT P26FLGS BACK IN AR 04213 MA(STORE), RAM>AR, 04214 AR>A, P26AD>B, ADD, 04215 Y>PR, 04216 JUMP(SP40); ----- ----- 1AC 000207E6 F7000018 ----- 04217 * 04218 *@@@ end of changes which inhibit packets 26 in row 24 04219 * 04220 *FIND CHARACTER CODE AND STORE IN MEMORY 04221 * 04222 * TCJ Feb 94 04223 * Remove CTL correction code for >B6 and >B7 04224 * 04225 .ORG SP40, *UPDATE CTL MODE LATCH 04226 MA(P26MO), 04227 A(>1F), P26MO>B, AND, 04228 Y>IO, 04229 JUMP(SP41); ----- ----- 7E6 000407E7 081F4808 ----- 04230 * 04231 .ORG SP41, *UPDATE CTL CHARACTER LATCH 04232 MA(P26CH), 04233 A(>7F), P26CH>B, AND, 04234 Y>IO, 04235 JUMP(SP42); ----- ----- 7E7 000807E8 097F4808 ----- 04236 * 04237 .ORG SP42, *TCJ, 203 and 211 now require NOP 04238 *between P26CH or P26MO and looking 04239 *at CTL. 04240 JUMP(SP43); ----- ----- 7E8 000007E9 00000000 ----- 04241 * 04242 .ORG SP43, *Y=CTL OUTPUT 04243 CTL>A, B(0), OR, 04244 JUMP(SP44); ----- ----- 7E9 000007EA 00001080 ----- 04245 * 04246 .ORG SP44, *VALID CHARACTER/ MODE COMBINATION? 04247 JN(SP45F,SP45T); ----- ----- 7EA 000041AE 00000000 ----- 04248 * 04249 .ORG SP45T, *WRITE VALID CHARACTER 04250 *SET MARKER BIT 04251 CTL>A, B(0), OR, 04252 Y>DR, 04253 JUMP(SP50T); ----- ----- 1AF 000011AB 00001080 ----- 04254 * 04255 .ORG SP45F, *NOT VALID- DO NOTHING 04256 JUMP(SP50T); ----- ----- 1AE 000001AB 00000000 ----- 04257 * 04258 *ENTRY POINT TO INCREMENT BYTE COUNTER 04259 .ORG SP50T, *BR=COUNT 04260 MA(COUNT), RAM>BR, 04261 JUMP(SP51); ----- ----- 1AB 000107EB 78000000 ----- 04262 .ORG SP51, *COUNT=COUNT-3 04263 MA(COUNT), 04264 A(-3), BR>B, ADD, 04265 Y>RAM, 04266 JUMP(SP52); ----- ----- 7EB 000007EC 78FD0101 ----- 04267 .ORG SP52, *COUNT==0? 04268 JZ(SP53F,SP53T); ----- ----- 7EC 000021B0 00000000 ----- 04269 .ORG SP53F, *MORE TRIPLETS 04270 JUMP(SP10F); ----- ----- 1B0 0000019A 00000000 ----- 04271 * 04272 .ORG SP53T, *COMMON EXIT 04273 *PR=INDEX TO P26FLGS 04274 Y(-11), 04275 Y>PR, 04276 JUMP(SP54); ----- ----- 1B1 000007ED 80F51000 ----- 04277 .ORG SP54, *UPDATE P26FLGS IN TPD 04278 AR>A, B(0), OR, 04279 Y>DR, 04280 JUMP(LPP0); ----- ----- 7ED 00001712 00001010 ----- 04281 * 04282 *+++SPT: STORE PDC TRIPLET 04283 * 04284 * This routine routine stores packet 26 triplets in store 6 if 04285 * this is the display page and PDC mode is set. 04286 * 04287 * B=RWL, LOCAL=number of PDC bytes stored so far 04288 .ORG SPT0T, *PRESERVE P26FLGS IN STORE 04289 MA(STORE), 04290 AR>A, B(0), OR, 04291 Y>RAM, 04292 JUMP(SPT10); ----- ----- 1A9 000007EE 77001110 ----- 04293 .ORG SPT10, *A=STOR0 04294 MA(STOR0), RAM>AR, 04295 JUMP(SPT11); ----- ----- 7EE 000207EF 20000000 ----- 04296 .ORG SPT11, *COMPARE LATCHES 04297 *A=EXPREG 04298 MA(EXPREG), RAM>AR, 04299 ARHI>A, BR.0F>B, XOR, 04300 JUMP(SPT12); ----- ----- 7EF 000207F0 63001822 ----- 04301 .ORG SPT12, *THIS THE DISPLAY PAGE? 04302 *Y=PDC 04303 *A=PACKET 26 FLAGS 04304 MA(STORE), RAM>AR, 04305 AR>A, B(PDC), AND, 04306 JZ(SPT20F,SPT20T); ----- ----- 7F0 000221B2 77400810 ----- 04307 .ORG SPT20F, *NOT, EXIT 04308 JUMP(SP50T); ----- ----- 1B2 000001AB 00000000 ----- 04309 .ORG SPT20T, *DISPLAY PAGE, PDC? 04310 *A=OLDDC+3 04311 *B=STOR7 04312 MA(STOR7), RAM>BR, 04313 AR.0F>A, B(3), ADD, 04314 Y>AR, 04315 JZ(SPT21F,SPT21T); ----- ----- 1B3 002321B4 270300C0 ----- 04316 .ORG SPT21T, *NOT, EXIT 04317 *A=PACKET 26 FLAGS 04318 MA(STORE), RAM>AR, 04319 JUMP(SP50T); ----- ----- 1B5 000201AB 77000000 ----- 04320 *OK TO STORE TRIPLET 04321 .ORG SPT21F, *P=ADDRESS OF START OF ROW (PDC BYTE COUNT) 04322 *A=LOCAL 04323 MA(LOCAL), RAM>AR, 04324 AR<<3>A, AR<<5>B, ADD, 04325 Y>PR, 04326 JUMP(SPT25); ----- ----- 1B4 000207F1 F2000059 ----- 04327 .ORG SPT25, *B=ADDRESS OF START OF ROW 04328 *RWL= LATCH FOR STORE 7 04329 PR>BR, 04330 MA(RWL), 04331 A(0), BRHI>B, OR, 04332 Y>IO, Y>RAM, 04333 JUMP(SPT26); ----- ----- 7F1 004107F2 0B00510C ----- 04334 .ORG SPT26, *UPDATE PDC BYTE COUNT 04335 *B=POINTER TO PDC BYTE COUNT 04336 PR>BR, 04337 MA(LOCAL), 04338 AR>A, B(3), ADD, 04339 Y>DR, Y>RAM, 04340 JUMP(SPT30); ----- ----- 7F2 004117F3 72030110 ----- 04341 .ORG SPT30, *POINT TO ADDRESS STORE FOR THIS TRIPLET 04342 AR>A, BR>B, ADD, O>CIN, 04343 Y>PR, 04344 JUMP(SPT32); ----- ----- 7F3 000007F4 80000411 ----- 04345 .ORG SPT32, *STORE ADDRESS, PRESERVE PTY 04346 PR>BR, 04347 A(0), P26AD>B, OR, 04348 Y>DR, 04349 JUMP(SPT33); ----- ----- 7F4 004117F5 00001008 ----- 04350 .ORG SPT33, *POINT TO MODE STORE FOR THIS TRIPLET 04351 A(1), BR>B, ADD, 04352 Y>PR, 04353 JUMP(SPT34); ----- ----- 7F5 000007F6 80010001 ----- 04354 .ORG SPT34, *STORE MODE, PRESERVE PTY 04355 PR>BR, 04356 A(0), P26MO>B, OR, 04357 Y>DR, 04358 JUMP(SPT35); ----- ----- 7F6 004517F7 00001008 ----- 04359 .ORG SPT35, *POINT TO DATA STORE FOR THIS TRIPLET 04360 *B=STOR0 04361 MA(STOR0), RAM>BR, 04362 A(1), BR>B, ADD, 04363 Y>PR, 04364 JUMP(SPT36); ----- ----- 7F7 000107F8 A0010001 ----- 04365 .ORG SPT36, *STORE DATA 04366 *A=PACKET 26 FLAGS 04367 MA(STORE), RAM>AR, 04368 A(0), P26CH>B, OR, 04369 Y>DR, 04370 JUMP(SPT37); ----- ----- 7F8 000A17F9 77001008 ----- 04371 .ORG SPT37, *PUT DISPLAY PAGE LATCH BACK IN RWL 04372 MA(RWL), 04373 A(0), BRHI>B, OR, 04374 Y>RAM, Y>IO, 04375 JUMP(SPT38); ----- ----- 7F9 000007FA 0B00510C ----- 04376 .ORG SPT38, *LPPREG=6 04377 MA(LPPREG), 04378 Y(6), 04379 Y>RAM, 04380 JUMP(SP50T); ----- ----- 7FA 000001AB 7E061100 ----- 04381 * 04382 *+++PLP: PACKET 27 PROCESSING 04383 * 04384 * LPPREG=7, RWL=LATCH FOR THIS PAGE 04385 *FIRST PROCESS DESIGNATION CODE 04386 .ORG PLP0F, *WAIT FOR DC 04387 JBYTE(PLP0F,PLP0T); ----- ----- 13C 0000813C 00000000 ----- 04388 .ORG PLP0T, *Y=DC 1ST 04389 CBRDY, 04390 A(0), HAM>B, OR, 04391 JUMP(PLP2); ----- ----- 13D 000807FB 00003007 ----- 04392 .ORG PLP2, *INIT LINK COUNT 04393 *DC=0 AND HAM OK? 04394 MA(COUNT), 04395 Y(0), 04396 Y>RAM, Y>AR, 04397 JZ(PLP3F,PLP3T); ----- ----- 7FB 002221B6 78001100 ----- 04398 .ORG PLP3F, *DC NOT ZERO OR HAMMING ERROR 04399 JUMP(LPP0); ----- ----- 1B6 00000712 00000000 ----- 04400 .ORG PLP3T, *WAIT FOR UNITS 04401 JBYTE(PLP10F,PLP10T); ----- ----- 1B7 000081B8 00000000 ----- 04402 *LOOP START 04403 *WAIT FOR LINK UNITS 04404 * A=LINK 04405 .ORG PLP10F, * 04406 JBYTE(PLP10F,PLP10T); ----- ----- 1B8 000081B8 00000000 ----- 04407 .ORG PLP10T, *Y=LINK 04408 CBRDY, 04409 AR>A, B(7), AND, 04410 JUMP(PLP11); ----- ----- 1B9 000007FC 00072810 ----- 04411 .ORG PLP11, *A=LOCAL=UNITS 04412 *CASE LINK 04413 MA(LOCAL), 04414 A(0), HAM>B, OR, 04415 Y>RAM, Y>AR, 04416 JY(PLP20Y); ----- ----- 7FC 002AC0B0 72001107 ----- 04417 .ORG PLP20Y, *CASE RED LINK 04418 *P=-24 04419 Y(-24), 04420 Y>PR, 04421 JUMP(PLP30); ----- ----- 0B0 000007FD 80E81000 ----- 04422 .ORG PLP21, *CASE GREEN LINK 04423 *P=-23 04424 Y(-23), 04425 Y>PR, 04426 JUMP(PLP30); ----- ----- 0B1 000007FD 80E91000 ----- 04427 .ORG PLP22, *CASE YELLOW LINK 04428 *P=-22 04429 Y(-22), 04430 Y>PR, 04431 JUMP(PLP30); ----- ----- 0B2 000007FD 80EA1000 ----- 04432 .ORG PLP23, *CASE CYAN LINK 04433 *P=-21 04434 Y(-21), 04435 Y>PR, 04436 JUMP(PLP30); ----- ----- 0B3 000007FD 80EB1000 ----- 04437 .ORG PLP24, *CASE NULL LINK 04438 *A=BYTE COUNT 04439 Y(5), 04440 Y>AR, 04441 JUMP(PLP24A); ----- ----- 0B4 002207FE 00051000 ----- 04442 .ORG PLP24A, *CALL WAIT0F TO SKIP NULL LINK 04443 *RETURN=6, RETURN TO PLP24B 04444 MA(RETURN), 04445 Y(6), 04446 Y>RAM, 04447 JUMP(WAIT0F); ----- ----- 7FE 0000065E 7C061100 ----- 04448 .ORG PLP24B, *A=LINK 04449 MA(COUNT), RAM>AR, 04450 JUMP(PLP71); ----- ----- 036 000207FF 78000000 ----- 04451 .ORG PLP25, *CASE INDEX LINK 04452 *P=-20 04453 Y(-20), 04454 Y>PR, 04455 JUMP(PLP30); ----- ----- 0B5 000007FD 80EC1000 ----- 04456 .ORG PLP26, *CASE NO MORE LINKS 04457 *P=-16 (POINT TO FLOF FLAGS) 04458 Y(-16), 04459 Y>PR, 04460 JUMP(PLP100); ----- ----- 0B6 00000800 80F01000 ----- 04461 * A=LOCAL=HAM 04462 .ORG PLP30, *Y=LINK UNITS PARITY 04463 *TPD=OLD LINK 04464 RVDP, 04465 AR.F0>A, B(0), OR, 04466 JUMP(PLP31); ----- ----- 7FD 00000801 000090D0 ----- 04467 .ORG PLP31, *PTY OK? 04468 *B=HAM 04469 MA(LOCAL), RAM>BR, 04470 JZ(PLP32F,PLP32T); ----- ----- 801 000121BA 72000000 ----- 04471 .ORG PLP32T, *PTY OK, STORE UNITS 04472 *STORE NEW UNITS AND OLD TENS IN LOCAL 04473 MA(LOCAL), 04474 TPD.F0>A, BR.0F>B, OR, 04475 Y>DR, Y>RAM, 04476 JBYTE(PLP40F,PLP40T); ----- ----- 1BB 000091BC 720011B2 ----- 04477 .ORG PLP32F, *BAD PTY 04478 *STORE OLD UNITS AND TENS IN LOCAL 04479 MA(LOCAL), 04480 TPD>A, B(0), OR, 04481 Y>RAM, 04482 JBYTE(PLP40F,PLP40T); ----- ----- 1BA 000081BC 72001190 ----- 04483 *WAIT FOR LINK TENS 04484 .ORG PLP40F, * 04485 JBYTE(PLP40F,PLP40T); ----- ----- 1BC 000081BC 00000000 ----- 04486 .ORG PLP40T, *A=Y=LINK TENS 04487 *B=LATEST CORRECT UNITS 04488 CBRDY, 04489 MA(LOCAL), RAM>BR, 04490 A(0), HAM>B, OR, 04491 Y>AR, 04492 JUMP(PLP41); ----- ----- 1BD 002B0802 72003007 ----- 04493 .ORG PLP41, *PTY OK? 04494 *RETURN=4 04495 MA(RETURN), 04496 Y(4), 04497 Y>RAM, 04498 JN(PLP42F,PLP42T); ----- ----- 802 000041BE 7C041100 ----- 04499 .ORG PLP42F, *PTY OK, STORE TENS 04500 AR<<4>A, BR.0F>B, OR, 04501 Y>DR, 04502 JUMP(PLP42T); ----- ----- 1BE 000011BF 00001032 ----- 04503 * 04504 .ORG PLP42T, *CALL WAIT0F TO WAIT FOR TWO BYTES 04505 *A=BYTE COUNT 04506 *RETURN=4, RETURN TO PLP45 04507 Y(2), 04508 Y>AR, 04509 JUMP(WAIT0F); ----- ----- 1BF 0022065E 00021000 ----- 04510 * LAST Y WAS HAM 04511 .ORG PLP45, *Y=C4, PTY OK? 5TH 04512 *B=RCM 04513 MA(RCM), RAM>BR, 04514 A(>08), HAM>B, AND, 04515 JN(PLP46F,PLP46T); ----- ----- 034 000941C0 28080807 ----- 04516 .ORG PLP46T, *BAD PTY 04517 *A=BYTE COUNT 04518 Y(2), 04519 Y>AR, 04520 JUMP(PLP47T); ----- ----- 1C1 002201C3 00021000 ----- 04521 .ORG PLP46F, *PTY OK, C4? 04522 *A=BYTE COUNT 04523 Y(1), 04524 Y>AR, 04525 JZ(PLP47F,PLP47T); ----- ----- 1C0 002221C2 00011000 ----- 04526 * 04527 .ORG PLP47T, *C4 NOT SET OR BAD PTY, STORE=RCM 04528 MA(STORE), 04529 A(0), BR>B, OR, 04530 Y>RAM, 04531 JUMP(PLP48); ----- ----- 1C3 00000803 77001101 ----- 04532 .ORG PLP47F, *C4 SET, LINK MAG=RCM WITH LSB INVERTED 04533 MA(STORE), 04534 A(1), BR>B, XOR, 04535 Y>RAM, 04536 JUMP(PLP48); ----- ----- 1C2 00000803 77011901 ----- 04537 * A=BYTE COUNT 04538 .ORG PLP48, *CALL WAIT0F TO SKIP SP THOUSANDS 04539 *RETURN=5, RETURN TO PLP55 04540 MA(RETURN), 04541 Y(5), 04542 Y>RAM, 04543 JUMP(WAIT0F); ----- ----- 803 0000065E 7C051100 ----- 04544 .ORG PLP55, *WAIT FOR SP TEN THOUSANDS 04545 JBYTE(PLP61F,PLP61T); ----- ----- 035 000081C4 00000000 ----- 04546 .ORG PLP61F, * 04547 JBYTE(PLP61F,PLP61T); ----- ----- 1C4 000081C4 00000000 ----- 04548 .ORG PLP61T, *Y=HAM 04549 CBRDY, 04550 A(0), HAM>B, OR, 04551 JUMP(PLP62); ----- ----- 1C5 00080804 00003007 ----- 04552 .ORG PLP62, *Y=C5, PTY OK? 04553 A(>04), HAM>B, AND, 04554 JN(PLP63F,PLP63T); ----- ----- 804 000841C6 00040807 ----- 04555 .ORG PLP63T, *BAD PTY 04556 JUMP(PLP65T); ----- ----- 1C7 000001CB 00000000 ----- 04557 .ORG PLP63F, *PTY OK, Y=C6 04558 *C5 SET? 04559 *A=LINK MAG 04560 MA(STORE), RAM>AR, 04561 A(>08), HAM>B, AND, 04562 JZ(PLP64F,PLP64T); ----- ----- 1C6 000A21C8 77080807 ----- 04563 .ORG PLP64F, *C5 SET, INVERT 2ND LSB OF LINK MAG 04564 *C6 SET? 04565 MA(STORE), 04566 AR>A, B(>02), XOR, 04567 Y>RAM, Y>AR, 04568 JZ(PLP65F,PLP65T); ----- ----- 1C8 002221CA 77021910 ----- 04569 .ORG PLP64T, *C5 NOT SET 04570 *C6 SET? 04571 JZ(PLP65F,PLP65T); ----- ----- 1C9 000021CA 00000000 ----- 04572 .ORG PLP65F, *C6 SET, INVERT 3RD LSB OF LINK MAG 04573 MA(STORE), 04574 AR>A, B(>04), XOR, 04575 Y>RAM, 04576 JUMP(PLP65T); ----- ----- 1CA 000001CB 77041910 ----- 04577 * 04578 .ORG PLP65T, *C6 NOT SET 04579 *A=LINK 04580 MA(COUNT), RAM>AR, 04581 JUMP(PLP66); ----- ----- 1CB 00020805 78000000 ----- 04582 .ORG PLP66, *P=-19+A/2 (POINT TO LINK MAG BYTE) 04583 AR>>1>A, B(-19), ADD, 04584 Y>PR, 04585 JUMP(PLP67); ----- ----- 805 00000806 80ED00E0 ----- 04586 .ORG PLP67, *TPD= LINK MAG BYTE 04587 *Y=LINK LSB 04588 *A=NEW LINK MAG 04589 RVDP, 04590 MA(STORE), RAM>AR, 04591 AR>A, B(1), AND, 04592 JUMP(PLP68); ----- ----- 806 00020807 77018810 ----- 04593 .ORG PLP68, *LINK LSB? 04594 *STORE=TPD 04595 MA(STORE), 04596 TPD>A, B(0), OR, 04597 Y>RAM, 04598 JZ(PLP69F,PLP69T); ----- ----- 807 000021CC 77001190 ----- 04599 *UPDATE HI NIB 04600 .ORG PLP69F, *B=TPD 04601 MA(STORE), RAM>BR, 04602 JUMP(PLP70); ----- ----- 1CC 00010808 77000000 ----- 04603 .ORG PLP70, *A=LINK 04604 MA(COUNT), RAM>AR, 04605 AR<<4>A, BR.0F>B, OR, 04606 Y>DR, 04607 JUMP(PLP71); ----- ----- 808 000217FF 78001032 ----- 04608 *UPDATE LO NIB 04609 .ORG PLP69T, *B=TPD 04610 MA(STORE), RAM>BR, 04611 JUMP(PLP70A); ----- ----- 1CD 00010809 77000000 ----- 04612 .ORG PLP70A, *A=LINK 04613 MA(COUNT), RAM>AR, 04614 AR.0F>A, BR.F0>B, OR, 04615 Y>DR, 04616 JUMP(PLP71); ----- ----- 809 000217FF 780010C3 ----- 04617 *ENTRY POINT FROM UNUSED LINK 04618 .ORG PLP71, *LINK++ 04619 MA(COUNT), 04620 AR>A, B(1), ADD, 04621 Y>RAM, Y>AR, 04622 JBYTE(PLP10F,PLP10T); ----- ----- 7FF 002281B8 78010110 ----- 04623 *STORE PACKET 27 FLAGS BYTE 04624 * A=LOCAL=HAM, P=POINTER TO FLOF FLAGS 04625 .ORG PLP100, *Y=HAM PTY, TPD=FLOF FLAGS 04626 RVDP, 04627 AR.F0>A, B(0), OR, 04628 JUMP(PLP101); ----- ----- 800 0000080A 000090D0 ----- 04629 .ORG PLP101, *PTY OK? 04630 *A=FLOF FLAGS WITH P27R SET 04631 *B=HAM 04632 MA(LOCAL), RAM>BR, 04633 TPD>A, B(>80), OR, 04634 Y>AR, 04635 JZ(PLP101F,PLP101T); ----- ----- 80A 002321CE 72801090 ----- 04636 .ORG PLP101T, *PARITY OK, STORE NEW PACKET 27 FLAGS 04637 AR.F0>A, BR.0F>B, OR, 04638 Y>DR, 04639 JUMP(LPP0); ----- ----- 1CF 00001712 000010D2 ----- 04640 .ORG PLP101F, *BAD PARITY, KEEP OLD FLAGS 04641 AR>A, B(0), OR, 04642 Y>DR, 04643 JUMP(LPP0); ----- ----- 1CE 00001712 00001010 ----- 04644 ***LPP: LINE POST PROCESSING 04645 * THISRW= ROW JUST RECEIVED 04646 * IF LPPREG=6, RET2=OLDDC 04647 * This routine carries out the line post processing required by the 04648 * LPPREG register. It is a common exit point from all teletext 04649 * reception routines. (The common entry point is G1T where the default 04650 * value LPPREG=3 is set.) 04651 * This routine should only exit to PL0 or ST0F. 04652 * 04653 .ORG LPP0, *B=OGLCNT 04654 MA(OGLCNT), RAM>BR, 04655 JUMP(LPP0A); ----- ----- 712 0001080B 6B000000 ----- 04656 .ORG LPP0A, *INC ON-GOING LINE COUNT 04657 MA(OGLCNT), 04658 A(>01), BR>B, ADD, 04659 Y>RAM, 04660 JUMP(LPP0B); ----- ----- 80B 0000080C 6B010101 ----- 04661 .ORG LPP0B, *B=LPPREG 04662 MA(LPPREG), RAM>BR, 04663 JUMP(LPP1); ----- ----- 80C 0001080D 7E000000 ----- 04664 .ORG LPP1, *Y=LPPREG 04665 *B=ERRCNT 04666 MA(ERRCNT), RAM>BR, 04667 A(>F), BR>B, AND, 04668 JUMP(LPP2); ----- ----- 80D 0001080E 3A0F0801 ----- 04669 .ORG LPP2, *CASE LPPREG=? 04670 *AR=THISRW 04671 MA(THISRW), RAM>AR, 04672 JY(LPP10Y); ----- ----- 80E 0002C370 7D000000 ----- 04673 .ORG LPP10Y, *CASE LPPREG=0 04674 *no processing to do 04675 *(mag off, not enabled, ROW 24 or TOFF=1) 04676 JUMP(PL0); ----- ----- 370 0000080F 00000000 ----- 04677 .ORG LPP11, *CASE LPPREG=1 04678 *process a header of a page not in a latch. 04679 *CALL UPI0A TO UPDATE INVENTORY 04680 *RET2=0, RETURN TO HPP0T 04681 MA(RET2), 04682 Y(0), 04683 Y>RAM, 04684 JUMP(UPI0A); ----- ----- 371 00000810 7B001100 ----- 04685 *ENTRY POINT FROM BROWSE HEADER POST PROCESSING 04686 .ORG LPP12, *CASE LPPREG=2 04687 *process a header of a page in a latch. 04688 *AR=CGB 04689 MA(CGB), RAM>AR, 04690 JUMP(HPP0T); ----- ----- 372 00020235 34000000 ----- 04691 *ENTRY POINT FROM PACKET 24 CODE 04692 *ENTRY POINT FROM BTT LINE POST PROCESSING 04693 .ORG LPP13, *CASE LPPREG=3 04694 *packet 1-24 received (update markers, count errors) 04695 *CALL MASK0 04696 *RETURN=1, RETURN TO LPP20 04697 *A=THISRW= CURRENT ROW 04698 MA(RETURN), 04699 Y(1), 04700 Y>RAM, 04701 JUMP(MASK0); ----- ----- 373 00000811 7C011100 ----- 04702 .ORG LPP14, *CASE LPPREG=4 04703 *there was a ROW or MAG hamming error 04704 *A=ERRCNT++ 04705 *B=MREG0 04706 MA(MREG0), RAM>BR, 04707 A(1), BR>B, ADD, 04708 Y>AR, 04709 JUMP(LPP80); ----- ----- 374 00230812 39010001 ----- 04710 .ORG LPP15, *CASE LPPREG=5 04711 *there was a UNITS or TENS hamming error 04712 JUMP(PL0); ----- ----- 375 0000080F 00000000 ----- 04713 .ORG LPP16, *CASE LPPREG=6 04714 *packet 26 received and PDC triplets stored 04715 MA(RETURN), 04716 Y(2), 04717 Y>RAM, 04718 JUMP(LPP100); ----- ----- 376 00000813 7C021100 ----- 04719 *ENTRY POINT FOR FORMAT 1 04720 .ORG LPP17, *CASE LPPREG=7 04721 *process packet 8/30 format 2 04722 *BR=RET4 04723 *JUMP TO INITIAL PAGE ROUTINE 04724 MA(RET4), RAM>BR, 04725 JUMP(LPP50); ----- ----- 377 00010814 79000000 ----- 04726 .ORG LPP18, *CASE LPPREG=8 04727 *process header in browse mode 04728 *CALL PPB0 04729 *P=3, RETURN TO LPP30 04730 *B=PEN 04731 MA(PEN), RAM>BR, 04732 Y(3), 04733 Y>PR, 04734 JUMP(PPB0); ----- ----- 378 000104D7 9B031000 ----- 04735 .ORG LPP19, *CASE LPPREG=9 04736 *process packet 8/30 format 1 04737 *INCREMENT PACKET COUNT 04738 *RWL=0 04739 MA(RWL), 04740 Y(0), 04741 Y>RAM, Y>IO, 04742 JUMP(LPP19A); ----- ----- 379 00000815 0B005100 ----- 04743 .ORG LPP19A, *POINT TO PACKET COUNT 04744 *P=-7 04745 Y(-7), 04746 Y>PR, 04747 JUMP(LPP19B); ----- ----- 815 00000816 80F91000 ----- 04748 .ORG LPP19B, *TPD=PACKET COUNT 04749 RVDP, 04750 JUMP(LPP19C); ----- ----- 816 00000817 00008000 ----- 04751 .ORG LPP19C, *INC PACKET COUNT 04752 *BR=RET4 04753 *JUMP TO INITIAL PAGE ROUTINE 04754 MA(RET4), RAM>BR, 04755 TPD>A, B(1), ADD, 04756 Y>DR, 04757 JUMP(LPP50); ----- ----- 817 00011814 79010090 ----- 04758 .ORG LPP1A, *CASE LPPREG=10 04759 *process BTT line with an error 04760 *Y=THISRW-21 04761 AR>A, B(-21), ADD, 04762 JUMP(LPP90); ----- ----- 37A 00000818 00EB0010 ----- 04763 * 04764 *+++Display row post processing 04765 * AR=MASK, PR=CLEAR ROW MARKER BYTE POINTER 04766 * B=RET2=CLEAR ROW MARKER BYTE 04767 .ORG LPP20, *SET ROW MARKER BIT 04768 AR>A, BR>B, OR, 04769 Y>DR, 04770 JUMP(ST0F); ----- ----- 0E1 00001001 00001011 ----- 04771 * 04772 *+++Process header in browse mode 04773 * (### could be compressed with tricky loop) 04774 .ORG LPP30, *A=STOR0 04775 MA(STOR0), RAM>AR, 04776 JUMP(LPP30A); ----- ----- 2DB 00020819 20000000 ----- 04777 .ORG LPP30A, *AR=LATCH FOR STORE 0 04778 ARHI>A, B(7), AND, 04779 Y>AR, 04780 JUMP(LPP31); ----- ----- 819 0022081A 00070820 ----- 04781 .ORG LPP31, *PR=INDEX TO MAG OF STOR0 04782 *AR=RCM (RECEIVED MAG) 04783 MA(RCM), RAM>AR, 04784 AR>A, B(M0), ADD, 04785 Y>PR, 04786 JUMP(LPP32); ----- ----- 81A 0002081B A8100010 ----- 04787 .ORG LPP32, *BR= MAG OF STOR0 04788 PR>MA, RAM>BR, 04789 JUMP(LPP33); ----- ----- 81B 0011081C 00000000 ----- 04790 .ORG LPP33, *UPDATE MAG LATCH OF STOR0 TO RCM 04791 PR>MA, 04792 AR.0F>A, BR.F0>B, OR, 04793 Y>RAM, Y>IO, 04794 JUMP(LPP34); ----- ----- 81C 0010081D 000051C3 ----- 04795 .ORG LPP34, *BR=DPM 04796 MA(DPM), RAM>BR, 04797 JUMP(LPP35); ----- ----- 81D 0001081E 68000000 ----- 04798 .ORG LPP35, *UPDATE DPM 04799 *BR= INDEX 04800 PR>BR, 04801 MA(DPM), 04802 AR<<4>A, BR.0F>B, OR, 04803 Y>RAM, 04804 JUMP(LPP36); ----- ----- 81E 0041081F 68001132 ----- 04805 .ORG LPP36, *PR= INDEX TO TENS OF STOR0 04806 *AR=RCT (RECEIVED TENS) 04807 MA(RCT), RAM>AR, 04808 A(8), BR>B, ADD, 04809 Y>PR, 04810 JUMP(LPP37); ----- ----- 81F 00020820 A9080001 ----- 04811 .ORG LPP37, *BR= TENS OF STOR0 04812 PR>MA, RAM>BR, 04813 JUMP(LPP38); ----- ----- 820 00110821 00000000 ----- 04814 .ORG LPP38, *UPDATE TENS LATCH OF STOR0 TO RCT 04815 PR>MA, 04816 AR.0F>A, BR.F0>B, OR, 04817 Y>RAM, Y>IO, 04818 JUMP(LPP39); ----- ----- 821 00100822 000051C3 ----- 04819 .ORG LPP39, *BR=DPT 04820 MA(DPT), RAM>BR, 04821 JUMP(LPP40); ----- ----- 822 00010823 69000000 ----- 04822 .ORG LPP40, *UPDATE DPT 04823 *BR= INDEX 04824 PR>BR, 04825 MA(DPT), 04826 AR<<4>A, BR.0F>B, OR, 04827 Y>RAM, 04828 JUMP(LPP41); ----- ----- 823 00410824 69001132 ----- 04829 .ORG LPP41, *PR= INDEX TO UNITS OF STOR0 04830 *AR=RCU (RECEIVED UNITS) 04831 MA(RCU), RAM>AR, 04832 A(8), BR>B, ADD, 04833 Y>PR, 04834 JUMP(LPP42); ----- ----- 824 00020825 AA080001 ----- 04835 .ORG LPP42, *BR= UNITS OF STOR0 04836 PR>MA, RAM>BR, 04837 JUMP(LPP43); ----- ----- 825 00110826 00000000 ----- 04838 .ORG LPP43, *UPDATE UNITS LATCH OF STOR0 TO RCU 04839 PR>MA, 04840 AR.0F>A, BR.F0>B, OR, 04841 Y>RAM, Y>IO, 04842 JUMP(LPP44); ----- ----- 826 00100827 000051C3 ----- 04843 .ORG LPP44, *BR=DPU 04844 MA(DPU), RAM>BR, 04845 JUMP(LPP45); ----- ----- 827 00010828 6A000000 ----- 04846 .ORG LPP45, *UPDATE DPU 04847 MA(DPU), 04848 AR<<4>A, BR.0F>B, OR, 04849 Y>RAM, 04850 JUMP(LPP46); ----- ----- 828 00000829 6A001132 ----- 04851 * 04852 .ORG LPP46, *AR=DHREG 04853 MA(DHREG), RAM>AR, 04854 JUMP(LPP47); ----- ----- 829 0002082A 32000000 ----- 04855 .ORG LPP47, *BWSE=0 04856 *GO AND DO NORMAL PROCESSING ON HEADER 04857 MA(DHREG), 04858 AR>A, B(>FF-BWSE), AND, 04859 Y>RAM, 04860 JUMP(LPP48); ----- ----- 82A 0000082B 32FE0910 ----- 04861 *SET SBL TO SORT BACKGROUND LATCHES 04862 .ORG LPP48, *BR=VPPRG1 04863 MA(VPPRG1), RAM>BR, 04864 JUMP(LPP49); ----- ----- 82B 0001082C 61000000 ----- 04865 .ORG LPP49, *SBL=1 04866 MA(VPPRG1), 04867 A(SBL), BR>B, OR, 04868 Y>RAM, 04869 JUMP(LPP49A); ----- ----- 82C 0000082D 61801101 ----- 04870 .ORG LPP49A, *BR=EXPREG 04871 MA(EXPREG), RAM>BR, 04872 JUMP(LPP49B); ----- ----- 82D 0001082E 63000000 ----- 04873 .ORG LPP49B, *CGAP=1, CPRF=1 04874 MA(EXPREG), 04875 A(CGAP+CPRF), BR>B, OR, 04876 Y>RAM, 04877 JUMP(LPP12); ----- ----- 82E 00000372 630C1101 ----- 04878 * 04879 *+++Packet 8/30 initial page post processing 04880 * BR=RET4 (INITIAL PAGE MAGAZINE) 04881 .ORG LPP50, *AR=RET2 (INITIAL PAGE UNITS) 04882 *Y=MAG 04883 MA(RET2), RAM>AR, 04884 A(0), BR>B, OR, 04885 JUMP(LPP51); ----- ----- 814 0002082F 7B001001 ----- 04886 .ORG LPP51, *HAMMING ERROR IN MAG? 04887 *BR=RET3 (INITIAL PAGE TENS) 04888 MA(RET3), RAM>BR, 04889 JN(LPP52F,LPP52T); ----- ----- 82F 000141D0 7A000000 ----- 04890 .ORG LPP52T, *HAMMING ERROR IN MAG, DO NOT PROCESS INITIAL PAGE 04891 JUMP(LPP55T); ----- ----- 1D1 000001DB 00000000 ----- 04892 .ORG LPP52F, *Y=RET2+RET3 04893 AR>A, BR>B, OR, 04894 JUMP(LPP53); ----- ----- 1D0 00000830 00001011 ----- 04895 .ORG LPP53, *TENS AND UNITS PARITY OK? 04896 *Y=UNITS->F 04897 AR>A, B(->0F), ADD, 04898 JN(LPP53AF,LPP53AT); ----- ----- 830 000041D2 00F10010 ----- 04899 .ORG LPP53AT, *HAMMING ERROR, DO NOT PROCESS INITIAL PAGE 04900 JUMP(LPP55T); ----- ----- 1D3 000001DB 00000000 ----- 04901 .ORG LPP53AF, *UNITS=F? 04902 *Y=TENS->F 04903 *B=SYS1 04904 MA(SYS1), RAM>BR, 04905 A(->0F), BR>B, ADD, 04906 JZ(LPP53BF,LPP53BT); ----- ----- 1D2 000121D4 08F10001 ----- 04907 .ORG LPP53BF, *UNITS<>F, NOT A NULL PAGE 04908 *BR=EXPREG, Y=FTOP 04909 * MA(EXPREG), RAM>BR, *TCJ WSS 04910 MA(VPPRG1), RAM>BR, 04911 * 04912 A(FTOP), BR>B, AND, 04913 JUMP(LPP53CF); ----- ----- 1D4 000101D6 61020801 ----- 04914 .ORG LPP53BT, *UNITS=F, NULL PAGE? 04915 *BR=EXPREG, Y=FTOP 04916 * MA(EXPREG), RAM>BR, *TCJ WSS 04917 MA(VPPRG1), RAM>BR, 04918 * 04919 A(FTOP), BR>B, AND, 04920 JZ(LPP53CF,LPP53CT); ----- ----- 1D5 000121D6 61020801 ----- 04921 .ORG LPP53CT, *NULL PAGE, DO NOT PROCESS INITIAL PAGE 04922 JUMP(LPP55T); ----- ----- 1D7 000001DB 00000000 ----- 04923 .ORG LPP53CF, *TOP FORCED? 04924 *Y=SINP 04925 A(SINP), BR>B, AND, 04926 JZ(LPP54F,LPP54T); ----- ----- 1D6 000021D8 00080801 ----- 04927 .ORG LPP54F, *TOP FORCED, INHIBIT PACKET 8/30 INIT PAGE 04928 JUMP(LPP55T); ----- ----- 1D8 000001DB 00000000 ----- 04929 .ORG LPP54T, *TOP NOT FORCED 04930 *SINP? 04931 JZ(LPP55F,LPP55T); ----- ----- 1D9 000021DA 00000000 ----- 04932 *PROCESS INITIAL PAGE NUMBER 04933 * AR=RET2 (INITIAL PAGE UNITS) 04934 .ORG LPP55F, *UPDATE DPU 04935 MA(DPU), 04936 AR<<4>A, B(0), OR, 04937 Y>RAM, 04938 JUMP(LPP56); ----- ----- 1DA 00000831 6A001130 ----- 04939 .ORG LPP56, *AR=RET3 (INITIAL PAGE TENS) 04940 MA(RET3), RAM>AR, 04941 JUMP(LPP57); ----- ----- 831 00020832 7A000000 ----- 04942 .ORG LPP57, *UPDATE DPT 04943 MA(DPT), 04944 AR<<4>A, B(0), OR, 04945 Y>RAM, 04946 JUMP(LPP58); ----- ----- 832 00000833 69001130 ----- 04947 .ORG LPP58, *AR=MAG 04948 MA(RET4), RAM>AR, 04949 JUMP(LPP59); ----- ----- 833 00020834 79000000 ----- 04950 .ORG LPP59, *UPDATE DPM 04951 *JUMP TO PAGE ENTRY CODE 04952 MA(DPM), 04953 AR<<4>A, B(1), OR, 04954 Y>RAM, 04955 JUMP(CMPE0); ----- ----- 834 000004F1 68011130 ----- 04956 *END OF INITIAL PAGE PROCESSING 04957 .ORG LPP55T, * 04958 JUMP(ST0F); ----- ----- 1DB 00000001 00000000 ----- 04959 * 04960 *+++MAG or ROW hamming error processing 04961 * A=ERRCNT++, B=MREG0 04962 .ORG LPP80, *Y=0 IF ERRCNT OVERFLOW 04963 AR>>1>A, B(>80), ADD, 04964 JUMP(LPP81); ----- ----- 812 00000835 008000E0 ----- 04965 .ORG LPP81, *Y=ERROVF 04966 *MAX VALUE? 04967 *B=VPPRG1 04968 MA(VPPRG1), RAM>BR, 04969 A(ERROVF), BR>B, AND, 04970 JZ(LPP82F,LPP82T); ----- ----- 835 000121DC 61100801 ----- 04971 .ORG LPP82T, *MAX VALUE, ALLOWED TO OVERFLOW? 04972 JZ(LPP83F,LPP83T); ----- ----- 1DD 000021DE 00000000 ----- 04973 .ORG LPP82F, *NOT MAX VALUE 04974 *ERRCNT = A 04975 MA(ERRCNT), 04976 AR>A, B(0), OR, 04977 Y>RAM, 04978 JUMP(LPP83T); ----- ----- 1DC 000001DF 3A001110 ----- 04979 .ORG LPP83F, *MAX VALUE, OVERFLOW 04980 *ERRCNT = A 04981 MA(ERRCNT), 04982 AR>A, B(0), OR, 04983 Y>RAM, 04984 JUMP(LPP83T); ----- ----- 1DE 000001DF 3A001110 ----- 04985 .ORG LPP83T, *CALL SVDP 04986 MA(VPPRG1), 04987 A(CSVDP), BR>B, OR, 04988 Y>RAM, 04989 JUMP(ST0F); ----- ----- 1DF 00000001 61101101 ----- 04990 * 04991 *+++BTT with error post processing 04992 * A=THISRW, LAST Y WAS THISRW-21 04993 .ORG LPP90, *Y=THISRW-22 04994 *B=TOPRG1 04995 *ROW 21? 04996 MA(TOPRG1), RAM>BR, 04997 AR>A, B(-22), ADD, 04998 * JZ(LPP91F,LPP91T); 04999 *TCJ July 93 05000 * Ignore BTTERR as it is possible to receive correct 05001 * PLT rows 21 & 22 that also contain hamming errors 05002 * e.g. Hessentext on HR3. 05003 * 05004 JUMP (LPP13); ----- ----- 818 00010373 37EA0010 ----- 05005 * 05006 *ORG LPP91T, *ROW 21, BTTERR=1, EXIT TO LPP13 05007 * MA(TOPRG1), 05008 * A(BTTERR), BR>B, OR, 05009 * Y>RAM, 05010 * JUMP(LPP13); 05011 *ORG LPP91F, *ROW 22? 05012 * JZ(LPP92F,LPP92T); 05013 *ORG LPP92T, *ROW 22, BTTERR=1, EXIT TO LPP13 05014 * MA(TOPRG1), 05015 * A(BTTERR), BR>B, OR, 05016 * Y>RAM, 05017 * JUMP(LPP13); 05018 *ORG LPP92F, *NOT A PLT ROW, EXIT TO LPP13 05019 * JUMP(LPP13); * JUMP(LPP13); 05020 * 05021 *+++PDC triplets post processing 05022 * 05023 * Use MASK0 routine to update DC markers in PDCRG1 and 2. 05024 * 05025 * RETURN=2 05026 .ORG LPP100, *A=DC FOR P26 JUST RECEIVED PLUS ONE 05027 MA(RET2), RAM>AR, 05028 JUMP(LPP101); ----- ----- 813 00020836 7B000000 ----- 05029 .ORG LPP101, *PUT IT IN THISRW FOR MASK, MASK UNWANTED BITS 05030 *CALL MASK 05031 *RETURN=2, RETURN TO LPP110 05032 MA(THISRW), 05033 AR>A, B(>1F), AND, 05034 Y>RAM, Y>AR, 05035 JUMP(MASK0); ----- ----- 836 00220811 7D1F0910 ----- 05036 * A=MARKER BIT, P=SCREEN POINTER 05037 .ORG LPP110, *B=SCREEN POINTER 05038 PR>BR, 05039 JUMP(LPP111); ----- ----- 0E2 00410837 00000000 ----- 05040 .ORG LPP111, *Y=SCREEN POINTER LSB 05041 A(1), BR>B, AND, 05042 JUMP(LPP112); ----- ----- 837 00000838 00010801 ----- 05043 .ORG LPP112, *PUT IT IN PDCRG1 OR 2? 05044 *B=PDCRG1 05045 MA(PDCRG1), RAM>BR, 05046 JZ(LPP113F,LPP113T); ----- ----- 838 000121E0 6C000000 ----- 05047 .ORG LPP113T, *UPDATE PDCRG1 05048 MA(PDCRG1), 05049 AR>A, BR>B, OR, 05050 Y>RAM, 05051 JUMP(ST0F); ----- ----- 1E1 00000001 6C001111 ----- 05052 .ORG LPP113F, *UPDATE PDCRG2 05053 *B=PDCRG2 05054 MA(PDCRG2), RAM>BR, 05055 JUMP(LPP114); ----- ----- 1E0 00010839 6D000000 ----- 05056 .ORG LPP114, * 05057 MA(PDCRG2), 05058 AR>A, BR>B, OR, 05059 Y>RAM, 05060 JUMP(ST0F); ----- ----- 839 00000001 6D001111 ----- 05061 * 05062 *+++Header post processing. All MFx maintenance should be done here. 05063 * AR=CGB 05064 .ORG HPP0T, *Y=MS 05065 *BR=RCM 05066 MA(RCM), RAM>BR, 05067 AR>A, B(%0001), AND, 05068 JUMP(HPP1); ----- ----- 235 0001083A 28010810 ----- 05069 .ORG HPP1, *MS? 05070 *INIT LOOP FOR SMOF 05071 *A=COUNT=7 05072 MA(COUNT), 05073 Y(7), 05074 Y>RAM, Y>AR, 05075 JZ(HPP2F,HPP2T); ----- ----- 83A 002221E2 78071100 ----- 05076 *+++SERIAL HEADER, CLOSE ALL MAGS 05077 * A=COUNT=7 05078 .ORG HPP2F, *P=MF0+COUNT 05079 AR>A, B(MF0), ADD, 05080 Y>PR, 05081 JN(SMOF0F,SMOF0T); ----- ----- 1E2 000041E4 80580010 ----- 05082 .ORG SMOF0F, *A=MFx 05083 PR>MA, RAM>AR, 05084 JUMP(SMOF1); ----- ----- 1E4 0012083B 00000000 ----- 05085 .ORG SMOF1, *Y=MOP 05086 *B=COUNT 05087 MA(COUNT), RAM>BR, 05088 AR>A, B(MOP), AND, 05089 JUMP(SMOF2); ----- ----- 83B 0001083C 78080810 ----- 05090 .ORG SMOF2, *CLOSE THIS MAG, WAS IT OPEN? 05091 PR>MA, 05092 AR>A, B(>FF-MOP), AND, 05093 Y>RAM, Y>AR, 05094 JZ(SMOF3F,SMOF3T); ----- ----- 83C 003221E6 00F70910 ----- 05095 *MAG WAS OPEN 05096 .ORG SMOF3F, *P=LAF0+MLP (INDEX TO LATCH FLAGS) 05097 *B=COUNT 05098 MA(COUNT), RAM>BR, 05099 AR.0F>A, B(LAF0), ADD, 05100 Y>PR, 05101 JUMP(SMOF4); ----- ----- 1E6 0001083D F84000C0 ----- 05102 .ORG SMOF4, *A=LAFx 05103 PR>MA, RAM>AR, 05104 JUMP(SMOF5); ----- ----- 83D 0012083E 00000000 ----- 05105 .ORG SMOF5, *SET VBICAP 05106 AR>A, B(VBICAP), OR, 05107 Y>AR, 05108 JUMP(SMOF5A); ----- ----- 83E 0022083F 00401010 ----- 05109 .ORG SMOF5A, *CLEAR OPN 05110 PR>MA, 05111 AR>A, B(>FF-OPN), AND, 05112 Y>RAM, 05113 JUMP(SMOF3T); ----- ----- 83F 001001E7 00EF0910 ----- 05114 * B=COUNT 05115 .ORG SMOF3T, *COUNT=A=B-1 05116 MA(COUNT), 05117 A(-1), BR>B, ADD, 05118 Y>RAM, Y>AR, 05119 JUMP(HPP2F); ----- ----- 1E7 002201E2 78FF0101 ----- 05120 * 05121 .ORG SMOF0T, *CLOSED ALL MAGS EXIT 05122 *A=LPPREG 05123 MA(LPPREG), RAM>AR, 05124 JUMP(HPP6); ----- ----- 1E5 00020840 7E000000 ----- 05125 *+++PARALLEL MAG, CLOSE THIS MAG 05126 * BR=RCM 05127 .ORG HPP2T, *P=MF0+RCM 05128 A(MF0), BR.0F>B, ADD, 05129 Y>PR, 05130 JUMP(PMOF0F); ----- ----- 1E3 00000841 80580002 ----- 05131 .ORG PMOF0F, *AR=MFx 05132 PR>MA, RAM>AR, 05133 JUMP(PMOF1); ----- ----- 841 00120842 00000000 ----- 05134 .ORG PMOF1, *Y=MOP 05135 AR>A, B(MOP), AND, 05136 JUMP(PMOF2); ----- ----- 842 00000843 00080810 ----- 05137 .ORG PMOF2, *WAS MAG OPEN? 05138 *CLOSE MAG 05139 *SAVE MFx INDEX IN BR 05140 PR>MA, 05141 AR>A, B(>FF-MOP), AND, 05142 Y>RAM, Y>AR, 05143 JZ(PMOF3F,PMOF3T); ----- ----- 843 003221E8 00F70910 ----- 05144 *+++MAG WAS OPEN 05145 .ORG PMOF3F, *PR=INDEX TO LAFx 05146 AR.0F>A, B(LAF0), ADD, 05147 Y>PR, 05148 JUMP(PMOF4); ----- ----- 1E8 00000844 804000C0 ----- 05149 .ORG PMOF4, *AR=LAFx 05150 PR>MA, RAM>AR, 05151 JUMP(PMOF5); ----- ----- 844 00120845 00000000 ----- 05152 .ORG PMOF5, *SET VBICAP 05153 AR>A, B(VBICAP), OR, 05154 Y>AR, 05155 JUMP(PMOF5A); ----- ----- 845 00220846 00401010 ----- 05156 .ORG PMOF5A, *CLEAR OPN 05157 PR>MA, 05158 AR>A, B(>FF-OPN), AND, 05159 Y>RAM, 05160 JUMP(PMOF3T); ----- ----- 846 001001E9 00EF0910 ----- 05161 .ORG PMOF3T, *A=LPPREG 05162 MA(LPPREG), RAM>AR, 05163 JUMP(HPP6); ----- ----- 1E9 00020840 7E000000 ----- 05164 *NECESSARY MAGS HAVE BEEN CLOSED 05165 * A=LPPREG 05166 .ORG HPP6, *Y=LPPREG-1 05167 *BR=RCM 05168 MA(RCM), RAM>BR, 05169 AR.0F>A, B(-1), ADD, 05170 JUMP(HPP7); ----- ----- 840 00010847 28FF00C0 ----- 05171 .ORG HPP7, *LPPREG==1? 05172 *PR=MFx INDEX 05173 *AR=LATCH OPEN FOR THIS PAGE 05174 MA(RWL), RAM>AR, 05175 A(MF0), BR.0F>B, ADD, 05176 Y>PR, 05177 JZ(HPP8F,HPP8T); ----- ----- 847 000221EA 8B580002 ----- 05178 .ORG HPP8T, *LPPREG==1 05179 *PNIL 05180 JUMP(ST0F); ----- ----- 1EB 00000001 00000000 ----- 05181 *+++OPEN MAGAZINE (PAGE IN LATCH) 05182 * OLD LPPREG=2 05183 .ORG HPP8F, *AR=RWL+MOP 05184 *BR=MFx 05185 PR>MA, RAM>BR, 05186 AR.0F>A, B(MOP), OR, 05187 Y>AR, 05188 JUMP(HPP9); ----- ----- 1EA 00330848 000810C0 ----- 05189 .ORG HPP9, *UPDATE MLP AND MO FOR MFx 05190 PR>MA, 05191 AR.0F>A, BR.F0>B, ADD, 05192 Y>RAM, 05193 JUMP(HPP10); ----- ----- 848 00100849 000001C3 ----- 05194 *+++STORE SP AND CG IN PAGE RAM 05195 .ORG HPP10, *AR=RSPX 05196 MA(RSPX), RAM>AR, 05197 JUMP(HPP11); ----- ----- 849 0002084A 3D000000 ----- 05198 .ORG HPP11, *BR=RSPI 05199 *PR=-15 05200 MA(RSPI), RAM>BR, 05201 A(-15), B(-15), OR, 05202 Y>PR, 05203 JUMP(HPP12); ----- ----- 84A 0001084B BCF11000 ----- 05204 .ORG HPP12, *Y=RSPI+RSPX 05205 AR>A, BR>B, OR, 05206 JUMP(HPP13); ----- ----- 84B 0000084C 00001011 ----- 05207 .ORG HPP13, *PTY OK? 05208 JN(HPP14F,HPP14T); ----- ----- 84C 000041EC 00000000 ----- 05209 .ORG HPP14F, *YES, STORE IT 05210 *SPARBY15 05211 AR<<4>A, BR.0F>B, OR, 05212 Y>DR, 05213 JUMP(HPP14T); ----- ----- 1EC 000011ED 00001032 ----- 05214 .ORG HPP14T, *AR=RSPM 05215 MA(RSPM), RAM>AR, 05216 JUMP(HPP21); ----- ----- 1ED 0002084D 3F000000 ----- 05217 .ORG HPP21, *BR=RSPC 05218 *PR=-14 05219 MA(RSPC), RAM>BR, 05220 A(-14), B(-14), OR, 05221 Y>PR, 05222 JUMP(HPP22); ----- ----- 84D 0001084E BEF21000 ----- 05223 .ORG HPP22, *Y=RSPC+RSPM 05224 AR>A, BR>B, OR, 05225 JUMP(HPP23); ----- ----- 84E 0000084F 00001011 ----- 05226 .ORG HPP23, *PTY OK? 05227 JN(HPP24F,HPP24T); ----- ----- 84F 000041EE 00000000 ----- 05228 .ORG HPP24F, *YES, STORE IT 05229 *SPARBY14 05230 AR<<4>A, BR.0F>B, OR, 05231 Y>DR, 05232 JUMP(HPP24T); ----- ----- 1EE 000011EF 00001032 ----- 05233 .ORG HPP24T, *AR=CGB 05234 MA(CGB), RAM>AR, 05235 JUMP(HPP31); ----- ----- 1EF 00020850 34000000 ----- 05236 .ORG HPP31, *BR=CGA 05237 *PR=-13 05238 MA(CGA), RAM>BR, 05239 A(-13), B(-13), OR, 05240 Y>PR, 05241 JUMP(HPP32); ----- ----- 850 00010851 B3F31000 ----- 05242 .ORG HPP32, *Y=CGA+CGB 05243 AR>A, BR>B, OR, 05244 JUMP(HPP33); ----- ----- 851 00000852 00001011 ----- 05245 .ORG HPP33, *PTY OK? 05246 JN(HPP34F,HPP34T); ----- ----- 852 000041F0 00000000 ----- 05247 .ORG HPP34F, *YES, STORE IT 05248 *SPARBY13 05249 AR<<4>A, BR.0F>B, OR, 05250 Y>DR, 05251 JUMP(HPP34T); ----- ----- 1F0 000011F1 00001032 ----- 05252 .ORG HPP34T, *BR=LATCH OPEN FOR THIS PAGE 05253 MA(RWL), RAM>BR, 05254 JUMP(HPP35); ----- ----- 1F1 00010853 0B000000 ----- 05255 .ORG HPP35, *PR=LAF INDEX 05256 *AR=RSPX 05257 MA(RSPX), RAM>AR, 05258 A(LAF0), BR.0F>B, ADD, 05259 Y>PR, 05260 JUMP(HPP35A); ----- ----- 853 00020854 BD400002 ----- 05261 .ORG HPP35A, *Y=C4, A=LAFx 05262 PR>MA, RAM>AR, 05263 AR>A, B(%1000), AND, 05264 JUMP(HPP35B); ----- ----- 854 00120855 00080810 ----- 05265 .ORG HPP35B, *SET OPN 05266 *C4 SET? 05267 PR>MA, 05268 AR>A, B(OPN), OR, 05269 Y>RAM, Y>AR, 05270 JZ(HPP36F,HPP36T); ----- ----- 855 003221F2 00101110 ----- 05271 *ERASE BIT SET, SET FLAGS TO CLEAR IN VPP 05272 .ORG HPP36F, *C4 SET 05273 *AR=LAFx 05274 PR>MA, RAM>AR, 05275 JUMP(HPP37T); ----- ----- 1F2 001201F5 00000000 ----- 05276 *ERASE BIT NOT SET. IF FIRST CAPTURE, SET FLAGS TO CLEAR IN VPP 05277 .ORG HPP36T, *C4 NOT SET 05278 *AR=LAFx 05279 PR>MA, RAM>AR, 05280 JUMP(HPP36A); ----- ----- 1F3 00120856 00000000 ----- 05281 .ORG HPP36A, *Y=CAP 05282 AR>A, B(CAP), AND, 05283 JUMP(HPP36B); ----- ----- 856 00000857 00800810 ----- 05284 .ORG HPP36B, *CAPTURED YET? 05285 *B=STOR0 05286 MA(STOR0), RAM>BR, 05287 JZ(HPP37F,HPP37T); ----- ----- 857 000121F4 20000000 ----- 05288 *SET CLR AND CLEAR ROW MARKERS FOR VPP 05289 .ORG HPP37T, *SET CLR IN LAFx 05290 PR>MA, 05291 AR>A, B(CLR), OR, 05292 Y>RAM, Y>AR, 05293 JUMP(HPP37A); ----- ----- 1F5 00320858 00201110 ----- 05294 .ORG HPP37A, *PR=-8 05295 Y(-8), 05296 Y>PR, 05297 JUMP(HPP37B); ----- ----- 858 00000859 80F81000 ----- 05298 .ORG HPP37B, *DR=0 05299 *SPARBY08 05300 A(0), B(0), OR, 05301 Y>DR, 05302 JUMP(HPP37C); ----- ----- 859 0000185A 00001000 ----- 05303 .ORG HPP37C, *PR=-9 05304 Y(-9), 05305 Y>PR, 05306 JUMP(HPP37D); ----- ----- 85A 0000085B 80F71000 ----- 05307 .ORG HPP37D, *DR=0 05308 *SPARBY09 05309 A(0), B(0), OR, 05310 Y>DR, 05311 JUMP(HPP37E); ----- ----- 85B 0000185C 00001000 ----- 05312 .ORG HPP37E, *PR=-10 05313 Y(-10), 05314 Y>PR, 05315 JUMP(HPP37G); ----- ----- 85C 0000085D 80F61000 ----- 05316 .ORG HPP37G, *DR=0 05317 *SPARBY10 05318 *B=STOR0 05319 MA(STOR0), RAM>BR, 05320 A(0), B(0), OR, 05321 Y>DR, 05322 JUMP(HPP37H); ----- ----- 85D 0001185E 20001000 ----- 05323 .ORG HPP37H, *P=-16 05324 Y(-16), 05325 Y>PR, 05326 JUMP(HPP37J); ----- ----- 85E 0000085F 80F01000 ----- 05327 .ORG HPP37J, *CLEAR FLOF FLAGS (DR24, P27R, P24R) 05328 Y(0), 05329 Y>DR, 05330 JUMP(HPP37F); ----- ----- 85F 000011F4 00001000 ----- 05331 *+++USER SELECTED PAGE HEADER PROCESSING 05332 * B=STOR0, A=LAFx 05333 .ORG HPP37F, *LOCAL=LAFx 05334 MA(LOCAL), 05335 AR>A, B(0), OR, 05336 Y>RAM, 05337 JUMP(HPP40); ----- ----- 1F4 00000860 72001110 ----- 05338 .ORG HPP40, *A=LATCH OPEN FOR THIS PAGE 05339 MA(RWL), RAM>AR, 05340 JUMP(HPP40A); ----- ----- 860 00020861 0B000000 ----- 05341 .ORG HPP40A, *COMPARE THIS HEADER LATCH WITH DISPLAY PAGE LATCH 05342 *A=DHREG 05343 MA(DHREG), RAM>AR, 05344 AR.0F>A, BRHI>B, XOR, 05345 JUMP(HPP41); ----- ----- 861 00020862 320018CC ----- 05346 .ORG HPP41, *DISPLAY PAGE? 05347 *NRH=1, 05348 MA(DHREG), 05349 AR>A, B(NRH), OR, 05350 Y>RAM, 05351 JZ(HPP42F,HPP42T); ----- ----- 862 000021F6 32101110 ----- 05352 .ORG HPP42F, *NOT THE DISPLAY PAGE 05353 *RESTORE ORIGINAL NRH AND EXIT 05354 MA(DHREG), 05355 AR>A, B(0), OR, 05356 Y>RAM, 05357 JUMP(ST0F); ----- ----- 1F6 00000001 32001110 ----- 05358 *DISPLAY PAGE 05359 .ORG HPP42T, *A=LAFx 05360 MA(LOCAL), RAM>AR, 05361 JUMP(HPP42A); ----- ----- 1F7 00020863 72000000 ----- 05362 .ORG HPP42A, *Y=CLR 05363 AR>A, B(CLR), AND, 05364 JUMP(HPP42B); ----- ----- 863 00000864 00200810 ----- 05365 .ORG HPP42B, *CLR BIT SET? 05366 *BR=CGA 05367 MA(CGA), RAM>BR, 05368 JZ(HPP43F,HPP43T); ----- ----- 864 000121F8 33000000 ----- 05369 *CLEAR PDC FLAGS 05370 .ORG HPP43F, *PDCRG1=0 05371 MA(PDCRG1), 05372 Y(0), 05373 Y>RAM, 05374 JUMP(HPP43A); ----- ----- 1F8 00000865 6C001100 ----- 05375 .ORG HPP43A, *PDCRG2=0 05376 MA(PDCRG2), 05377 Y(0), 05378 Y>RAM, 05379 JUMP(HPP43T); ----- ----- 865 000001F9 6D001100 ----- 05380 * 05381 .ORG HPP43T, *Y=HEADER UPDATE BIT 05382 *B=VPPRG2 05383 MA(VPPRG2), RAM>BR, 05384 A(%0010), BR>B, AND, 05385 JUMP(HPP44); ----- ----- 1F9 00010866 62020801 ----- 05386 .ORG HPP44, *UPDATE? 05387 *AR=VDPTXT 05388 MA(VDPTXT), RAM>AR, 05389 JZ(HPP45F,HPP45T); ----- ----- 866 000221FA 2B000000 ----- 05390 .ORG HPP45F, *C8 SET 05391 *SET C8YET 05392 MA(VDPTXT), 05393 AR>A, B(C8YET), OR, 05394 Y>RAM, 05395 JUMP(HPP45T); ----- ----- 1FA 000001FB 2B101110 ----- 05396 .ORG HPP45T, *SET DPHC TO CALL DISPLAY PAGE HEADER PROCESSING 05397 *AFTER VBI 05398 MA(VPPRG2), 05399 A(DPHC), BR>B, OR, 05400 Y>RAM, 05401 JUMP(ST0F); ----- ----- 1FB 00000001 62011101 ----- 05402 * 05403 *+++UPDATE PAGE INVENTORY 05404 * 05405 * RET2=RETURN POINTER 05406 *ENTRY POINT FROM LINE POST PROCESSING 05407 *MOVE RECEIVED PAGE TO PM,PT AND PU FOR PNTIN0 ROUTINE 05408 .ORG UPI0A, *A=RCM 05409 MA(RCM), RAM>AR, 05410 JUMP(UPI1A); ----- ----- 810 00020867 28000000 ----- 05411 .ORG UPI1A, *PM=RCM 05412 MA(PM), 05413 AR<<4>A, B(0), OR, 05414 Y>RAM, 05415 JUMP(UPI1B); ----- ----- 867 00000868 74001130 ----- 05416 .ORG UPI1B, *A=RCT 05417 MA(RCT), RAM>AR, 05418 JUMP(UPI2); ----- ----- 868 00020869 29000000 ----- 05419 .ORG UPI2, *PT=RCT 05420 MA(PT), 05421 AR<<4>A, B(0), OR, 05422 Y>RAM, 05423 JUMP(UPI3); ----- ----- 869 0000086A 75001130 ----- 05424 .ORG UPI3, *A=RCU 05425 MA(RCU), RAM>AR, 05426 JUMP(UPI4); ----- ----- 86A 0002086B 2A000000 ----- 05427 .ORG UPI4, *PU=RCU 05428 MA(PU), 05429 AR<<4>A, B(0), OR, 05430 Y>RAM, 05431 JUMP(UPI5); ----- ----- 86B 0000086C 76001130 ----- 05432 *COMMON CODE FOR LPP AND VPP 05433 *CHECK IF FLOF BEFORE UPDATING INVENTORY PAGE 05434 .ORG UPI5, *A=SYS1 05435 MA(SYS1), RAM>AR, 05436 JUMP(UPI5A); ----- ----- 86C 0002086D 08000000 ----- 05437 .ORG UPI5A, *Y=PCM-2 05438 ARHI>A, B(-2), ADD, 05439 JUMP(UPI5B); ----- ----- 86D 0000086E 00FE0020 ----- 05440 .ORG UPI5B, *A=PM 05441 *FLOF MODE? 05442 Y(PM), 05443 Y>AR, 05444 JZ(UPI6F,UPI6T); ----- ----- 86E 002221FC 00741000 ----- 05445 .ORG UPI6T, *FLOF MODE, NO TABLE TO UPDATE, EXIT 05446 JUMP(UPI11T); ----- ----- 1FD 0000020F 00000000 ----- 05447 *NOT FLOF, CALL PNTIN0 TO RETURN INVENTORY PAGE POINTER AND BYTE 05448 .ORG UPI6F, *CALL PNTIN0 05449 *RETURN=7, RETURN TO UPI7 05450 MA(RETURN), 05451 Y(7), 05452 Y>RAM, 05453 JUMP(PNTIN0); ----- ----- 1FC 0000086F 7C071100 ----- 05454 * LAST Y WAS ERROR CODE, TPD= INV POINTER, RWL= LATCH FOR STORE 1 05455 .ORG UPI7, *Y=INCYCLE BIT 05456 *HEX PAGE? 05457 TPD>A, B(>80), AND, 05458 JZ(UPI8F,UPI8T); ----- ----- 797 000021FE 00800890 ----- 05459 .ORG UPI8F, *HEX PAGE, NO MARKER TO SET 05460 JUMP(UPI11T); ----- ----- 1FE 0000020F 00000000 ----- 05461 .ORG UPI8T, *SET INCYCLE BIT AND OR IN >30 TO MAKE IT VISIBLE 05462 *ALREADY SET? 05463 *A=INVCNT 05464 MA(INVCNT), RAM>AR, 05465 TPD>A, B(>B0), OR, 05466 Y>DCLR, 05467 JZ(UPI9F,UPI9T); ----- ----- 1FF 0002320C 38B01490 ----- 05468 .ORG UPI9T, *INCYCLE NOT SET, CLEAR INVENTORY COUNT AND EXIT 05469 *(PRESERVE 'COMPLETE' FLAG) 05470 MA(INVCNT), 05471 AR>A, B(1), AND, 05472 Y>RAM, 05473 JUMP(UPI11T); ----- ----- 20D 0000020F 38010910 ----- 05474 .ORG UPI9F, *INCYCLE SET, Y=INVENTORY COUNT- 50 05475 *B=INVCNT 05476 MA(INVCNT), RAM>BR, 05477 AR>>1>A, B(-50), ADD, 05478 JUMP(UPI10); ----- ----- 20C 00010870 38CE00E0 ----- 05479 .ORG UPI10, *MAX COUNT VALUE? 05480 JZ(UPI11F,UPI11T); ----- ----- 870 0000220E 00000000 ----- 05481 .ORG UPI11F, *COUNT NOT 50 YET, INCREMENT IT 05482 *(PRESERVE 'COMPLETE' FLAG) 05483 MA(INVCNT), 05484 A(2), BR>B, ADD, 05485 Y>RAM, 05486 JUMP(UPI11T); ----- ----- 20E 0000020F 38020101 ----- 05487 *ENTRY POINT FROM VBI POST PROCESSING 05488 * A=THIS LATCH 05489 *COPY PAGE FOR THIS LATCH INTO PM,PT AND PU FOR PNTIN0 CALL 05490 .ORG UPI0B, *P=M0+A 05491 AR>A, B(M0), ADD, 05492 Y>PR, 05493 JUMP(UPI20); ----- ----- 8C0 00000871 80100010 ----- 05494 .ORG UPI20, *A=PAGE MAGS, P=T0+A 05495 PR>MA, RAM>AR, 05496 AR>A, B(T0), ADD, 05497 Y>PR, 05498 JUMP(UPI21); ----- ----- 871 00120872 80180010 ----- 05499 .ORG UPI21, *PM=PAGE MAGS 05500 *B=INDEX TO TENS 05501 PR>BR, 05502 MA(PM), 05503 AR<<4>A, B(0), OR, 05504 Y>RAM, 05505 JUMP(UPI22); ----- ----- 872 00410873 74001130 ----- 05506 .ORG UPI22, *A=PAGE TENS 05507 *P=INDEX TO PAGE UNITS 05508 PR>MA, RAM>AR, 05509 A(8), BR>B, ADD, 05510 Y>PR, 05511 JUMP(UPI23); ----- ----- 873 00120874 80080001 ----- 05512 .ORG UPI23, *PT=PAGE TENS 05513 MA(PT), 05514 AR<<4>A, B(0), OR, 05515 Y>RAM, 05516 JUMP(UPI24); ----- ----- 874 00000875 75001130 ----- 05517 .ORG UPI24, *A=PAGE UNITS 05518 PR>MA, RAM>AR, 05519 JUMP(UPI25); ----- ----- 875 00120876 00000000 ----- 05520 .ORG UPI25, *PU=PAGE UNITS 05521 MA(PU), 05522 AR<<4>A, B(0), OR, 05523 Y>RAM, 05524 JUMP(UPI5); ----- ----- 876 0000086C 76001130 ----- 05525 *EXIT 05526 .ORG UPI11T, *A=RETURN POINTER 05527 MA(RET2), RAM>AR, 05528 JUMP(UPI12); ----- ----- 20F 00020877 7B000000 ----- 05529 .ORG UPI12, *Y=RETURN POINTER 05530 *BR=STOR0 05531 MA(STOR0), RAM>BR, 05532 AR>A, B(1), AND, 05533 JUMP(UPI13); ----- ----- 877 00010878 20010810 ----- 05534 .ORG UPI13, *AR=CGB 05535 MA(CGB), RAM>AR, 05536 JZ(VPP104AF,HPP0T); ----- ----- 878 00022234 34000000 ----- 05537 ************************************************************************ 05538 * section 3: VBI post processing * 05539 ************************************************************************ 05540 *+++DISPLAY PAGE HEADER PROCESSING 05541 * 05542 * A=POLREG 05543 .ORG VPP0, *VBIFLG=0 05544 MA(POLREG), 05545 AR>A, B(>FF-VBIFLG), AND, 05546 Y>RAM, 05547 * JUMP(VPP1); 05548 JUMP(TCJFG2F00); ----- ----- 0B7 00000879 107F0910 ----- 05549 * 05550 * TCJ June 93 05551 * Fix the Even/Odd output pin by setting the FLAG2 direction control 05552 * DDF2, dependant on the state of VDP text/mix/box. 05553 * 05554 .ORG TCJFG2F00, * Fetch BOX/MIX/TEXT bits 05555 MA(MREG2), RAM>AR, 05556 JUMP(TCJFG2F05); ----- ----- 879 0002087A 6E000000 ----- 05557 * 05558 .ORG TCJFG2F05, 05559 AR>A, B(EVODD), AND, 05560 JUMP(TCJFG2F06); ----- ----- 87A 0000087B 00020810 ----- 05561 * 05562 .ORG TCJFG2F06, 05563 MA(VDP1), RAM>AR, 05564 JZ(TCJFG2F01F,VPP1T); ----- ----- 87B 00022236 01000000 ----- 05565 * 05566 .ORG TCJFG2F01F, * 05567 AR>A, B(BOX+MIX+TEXT), AND, 05568 Y>AR, 05569 JUMP(TCJFG2F02); ----- ----- 236 0022087C 00070810 ----- 05570 * 05571 .ORG TCJFG2F02, 05572 AR>A, B(TEXT), XOR, 05573 JUMP(TCJFG2F03); ----- ----- 87C 0000087D 00011810 ----- 05574 * 05575 .ORG TCJFG2F03, 05576 MA(GPIO), RAM>AR, 05577 JZ(TCJFG2F04F,TCJFG2F04T); ----- ----- 87D 00022268 0F000000 ----- 05578 * 05579 .ORG TCJFG2F04F, * not in TEXT mode switch EVEN/ODD off 05580 MA(GPIO), 05581 AR>A, B(>DF), AND, Y>RAM, Y>IO, 05582 JUMP(VPP1T); ----- ----- 268 00000237 0FDF4910 ----- 05583 * 05584 .ORG TCJFG2F04T, * in TEXT mode switch EVEN/ODD on 05585 MA(GPIO), 05586 AR>A, B(>20), OR, Y>RAM, Y>IO, 05587 JUMP(VPP1T); ----- ----- 269 00000237 0F205110 ----- 05588 * 05589 .ORG VPP1T, *A=OGLCNT 05590 MA(OGLCNT), RAM>AR, 05591 JUMP(VPP2); ----- ----- 237 0002087E 6B000000 ----- 05592 .ORG VPP2, *STORE LINE COUNT 05593 MA(LINCNT), 05594 AR>A, B(0), OR, 05595 Y>RAM, 05596 JUMP(VPP3); ----- ----- 87E 0000087F 66001110 ----- 05597 .ORG VPP3, *INIT ON-GOING COUNT FOR NEXT VBI 05598 MA(OGLCNT), 05599 Y(0), 05600 Y>RAM, 05601 JUMP(VPP10); ----- ----- 87F 00000880 6B001100 ----- 05602 .ORG VPP10, *A=VPPRG2 05603 MA(VPPRG2), RAM>AR, 05604 JUMP(VPP40); ----- ----- 880 00020881 62000000 ----- 05605 .ORG VPP40, *Y=DPHC 05606 *B=VPPRG1 05607 MA(VPPRG1), RAM>BR, 05608 AR>A, B(DPHC), AND, 05609 JUMP(VPP41); ----- ----- 881 00010882 61010810 ----- 05610 .ORG VPP41, *DPHC=0, DPHC? 05611 *IF NOT SET, SKIP PROCESSING 05612 MA(VPPRG2), 05613 AR>A, B(>FF-DPHC), AND, 05614 Y>RAM, 05615 JZ(VPP42F,TCJVPP10T); ----- ----- 882 0000226A 62FE0910 ----- 05616 * 05617 * TCJ Nov 92 05618 * We know at this point that we have received a header for the 05619 * display page. If in alternate subpage mode, force the capture 05620 * of the next two subpages 05621 * 05622 .ORG VPP42F, *CSVDP=1 05623 * AREG = PEN, key states 05624 MA(PEN), RAM>AR, 05625 JUMP(TCJVPP00); ----- ----- 26A 00020883 1B000000 ----- 05626 * 05627 .ORG TCJVPP00, * Y = PEN - 4, to see if we are in subpage mode 05628 ARHI>A, B(-4), ADD, 05629 JUMP(TCJVPP01); ----- ----- 883 00000884 00FC0020 ----- 05630 * 05631 .ORG TCJVPP01, * Subpage mode ? 05632 MA(MREG2), RAM>AR, 05633 JN(TCJVPP02F,TCJVPP02T); ----- ----- 884 0002426C 6E000000 ----- 05634 * 05635 .ORG TCJVPP02F, * In Subpage mode 05636 * Y = SPALT 05637 AR>A, B(SPALT), AND, 05638 JUMP(TCJVPP03); ----- ----- 26C 00000885 00010810 ----- 05639 * 05640 .ORG TCJVPP03, 05641 JZ(TCJVPP04F,TCJVPP04T); ----- ----- 885 0000226E 00000000 ----- 05642 * 05643 .ORG TCJVPP04F, * Call FSP0F to find STORE1 05644 * Returns to TCJVPP05.2 05645 MA(RETURN), 05646 Y(2), 05647 Y>RAM, 05648 JUMP(FSP0F); ----- ----- 26E 00000318 7C021100 ----- 05649 * 05650 .ORG TCJVPP05.2, * AR = STORE1 pointer 05651 MA(PT), RAM>AR, 05652 JUMP(TCJVPP06); ----- ----- 432 00020886 75000000 ----- 05653 * 05654 .ORG TCJVPP06, * AR = AR >> 1 05655 AR>>1>A, B(0), OR, 05656 Y>AR, 05657 JUMP(TCJVPP07); ----- ----- 886 00220887 000010E0 ----- 05658 * 05659 .ORG TCJVPP07, * Y = (AR >> 1) & 3 05660 AR>>1>A, B(3), AND, 05661 JUMP(TCJVPP08.0); ----- ----- 887 00000450 000308E0 ----- 05662 * 05663 .ORG TCJVPP08.0, 05664 JY(TCJVPP08.0); ----- ----- 450 0000C450 00000000 ----- 05665 * 05666 .ORG TCJVPP08.1, * Force a capture of Subpage latch 0 05667 MA(SPFRC), 05668 Y(FSP0), 05669 Y>RAM, 05670 JUMP(TCJVPP60); ----- ----- 451 00000888 57011100 ----- 05671 * 05672 .ORG TCJVPP08.2, * Force a capture of Subpage latch 1 05673 MA(SPFRC), 05674 Y(FSP1), 05675 Y>RAM, 05676 JUMP(TCJVPP60); ----- ----- 452 00000888 57021100 ----- 05677 * 05678 .ORG TCJVPP08.3, * Force a capture of Subpage latch 2 05679 MA(SPFRC), 05680 Y(FSP2), 05681 Y>RAM, 05682 JUMP(TCJVPP60); ----- ----- 453 00000888 57041100 ----- 05683 * 05684 .ORG TCJVPP60, * AR = STORE2 pointer 05685 MA(PU), RAM>AR, 05686 JUMP(TCJVPP61); ----- ----- 888 00020889 76000000 ----- 05687 * 05688 .ORG TCJVPP61, * AR = AR >> 1 05689 AR>>1>A, B(0), OR, 05690 Y>AR, 05691 JUMP(TCJVPP62); ----- ----- 889 0022088A 000010E0 ----- 05692 * 05693 .ORG TCJVPP62, * Y = (AR >> 1) & 3 05694 AR>>1>A, B(3), AND, 05695 JUMP(TCJVPP63.0); ----- ----- 88A 00000480 000308E0 ----- 05696 * 05697 .ORG TCJVPP63.0, * BR = First force flag 05698 MA(SPFRC), RAM>BR, 05699 JY(TCJVPP63.0); ----- ----- 480 0001C480 57000000 ----- 05700 * 05701 .ORG TCJVPP63.1, * Force a capture of Subpage latch 0 05702 MA(SPFRC), 05703 A(FSP0*16), BR>B, OR, 05704 Y>RAM, 05705 JUMP(TCJVPP64); ----- ----- 481 0000088B 57101101 ----- 05706 * 05707 .ORG TCJVPP63.2, * Force a capture of Subpage latch 1 05708 MA(SPFRC), 05709 A(FSP1*16), BR>B, OR, 05710 Y>RAM, 05711 JUMP(TCJVPP64); ----- ----- 482 0000088B 57201101 ----- 05712 * 05713 .ORG TCJVPP63.3, * Force a capture of Subpage latch 2 05714 MA(SPFRC), 05715 A(FSP2*16), BR>B, OR, 05716 Y>RAM, 05717 JUMP(TCJVPP64); ----- ----- 483 0000088B 57401101 ----- 05718 * 05719 .ORG TCJVPP64, 05720 JUMP(TCJVPP02T); ----- ----- 88B 0000026D 00000000 ----- 05721 * 05722 .ORG TCJVPP04T, * Not in special subpage capture 05723 JUMP(TCJVPP02T); ----- ----- 26F 0000026D 00000000 ----- 05724 * 05725 .ORG TCJVPP02T, * Common exit for forced subage mode 05726 MA(VPPRG1), RAM>BR, 05727 JUMP(TCJVPP09); ----- ----- 26D 0001088C 61000000 ----- 05728 * 05729 .ORG TCJVPP09, 05730 MA(VPPRG1), 05731 A(CSVDP), BR>B, OR, 05732 Y>RAM, 05733 JUMP(VPP43); ----- ----- 88C 0000088D 61101101 ----- 05734 * 05735 .ORG VPP43, *A=STOR0 05736 MA(STOR0), RAM>AR, 05737 JUMP(VPP44); ----- ----- 88D 0002088E 20000000 ----- 05738 .ORG VPP44, *P=INDEX TO LAFx 05739 *A=VDPTXT 05740 MA(VDPTXT), RAM>AR, 05741 ARHI>A, B(LAF0), ADD, 05742 Y>PR, 05743 JUMP(VPP45); ----- ----- 88E 0002088F AB400020 ----- 05744 .ORG VPP45, *B=LAFx 05745 PR>MA, RAM>BR, 05746 JUMP(VPP46); ----- ----- 88F 00110890 00000000 ----- 05747 .ORG VPP46, *Y=CAP 05748 A(CAP), BR>B, AND, 05749 JUMP(VPP47); ----- ----- 890 00000891 00800801 ----- 05750 .ORG VPP47, *Y=CLR, FIRST CAPTURE? 05751 A(CLR), BR>B, AND, 05752 JZ(VPP48F,VPP48T); ----- ----- 891 00002274 00200801 ----- 05753 .ORG VPP48T, *FIRST CAPTURE, C8YET=1 05754 *GO AND CLEAR URVL AS WELL 05755 AR>A, B(C8YET), OR, 05756 Y>AR, 05757 JUMP(VPP49F); ----- ----- 275 00220276 00101010 ----- 05758 .ORG VPP48F, *GOING TO CLEAR IT? 05759 JZ(VPP49F,VPP49T); ----- ----- 274 00002276 00000000 ----- 05760 .ORG VPP49F, *GOING TO CLEAR, URVL=0 05761 MA(VDPTXT), 05762 AR>A, B(>FF-URVL), AND, 05763 Y>RAM, 05764 JUMP(VPP60T); ----- ----- 276 00000279 2BF70910 ----- 05765 .ORG VPP49T, *NO CLEAR 05766 JUMP(VPP60T); ----- ----- 277 00000279 00000000 ----- 05767 * 05768 * TCJ Nov 92 05769 * Check to see if we have captured a page and if so, is 05770 * it the one we are forceing ?. 05771 * 05772 .ORG TCJVPP10T, * AR = Forceing subpage flags 05773 MA(SPFRC), RAM>AR, 05774 JUMP(TCJVPP11); ----- ----- 26B 00020892 57000000 ----- 05775 * 05776 .ORG TCJVPP11, * Y = Flags 05777 AR>A, B(7), AND, 05778 JUMP(TCJVPP12); ----- ----- 892 00000893 00070810 ----- 05779 * 05780 .ORG TCJVPP12, 05781 JY(TCJVPP13.0); ----- ----- 893 0000C7D0 00000000 ----- 05782 * 05783 .ORG TCJVPP13.0, * No subpage forced 05784 JUMP(VPP60T); ----- ----- 7D0 00000279 00000000 ----- 05785 * 05786 .ORG TCJVPP13.1, * Forcing capture of Subpage 0 05787 MA(LFSP0), RAM>AR, 05788 JUMP(TCJVPP21); ----- ----- 7D1 00020894 48000000 ----- 05789 * 05790 .ORG TCJVPP21, * STORE = Pointer to subpage number 05791 MA(STORE), 05792 Y(SP0I), 05793 Y>RAM, 05794 JUMP(TCJVPP14); ----- ----- 894 00000895 77481100 ----- 05795 * 05796 .ORG TCJVPP13.2, * Forcing capture of Subpage 1 05797 * Fetch pointer to page latch flags 05798 MA(LFSP1), RAM>AR, 05799 JUMP(TCJVPP22); ----- ----- 7D2 00020896 49000000 ----- 05800 * 05801 .ORG TCJVPP22, * STORE = Pointer to subpage number 05802 MA(STORE), 05803 Y(SP1I), 05804 Y>RAM, 05805 JUMP(TCJVPP14); ----- ----- 896 00000895 774C1100 ----- 05806 * 05807 .ORG TCJVPP13.3, 05808 JUMP(VPP60T); ----- ----- 7D3 00000279 00000000 ----- 05809 * 05810 .ORG TCJVPP13.4, * Forcing capture of Subpage 2 05811 MA(LFSP2), RAM>AR, 05812 JUMP(TCJVPP23); ----- ----- 7D4 00020897 4A000000 ----- 05813 * 05814 .ORG TCJVPP23, * STORE = Pointer to subpage number 05815 MA(STORE), 05816 Y(SP2I), 05817 Y>RAM, 05818 JUMP(TCJVPP14); ----- ----- 897 00000895 77501100 ----- 05819 * 05820 .ORG TCJVPP13.5, 05821 JUMP(VPP60T); ----- ----- 7D5 00000279 00000000 ----- 05822 * 05823 .ORG TCJVPP13.6, 05824 JUMP(VPP60T); ----- ----- 7D6 00000279 00000000 ----- 05825 * 05826 .ORG TCJVPP13.7, 05827 JUMP(VPP60T); ----- ----- 7D7 00000279 00000000 ----- 05828 * 05829 * TCJ Dec 92 05830 * We have a pointer to the subpage we are forcing capture. 05831 * See if we have captured it, and if so sort out the mess. 05832 * with the subpage numbers. 05833 * 05834 .ORG TCJVPP14, * PR = Subpage latch pointer 05835 AR.0F>A, B(LAF0), ADD, 05836 Y>PR, 05837 JUMP(TCJVPP15); ----- ----- 895 00000898 804000C0 ----- 05838 * 05839 .ORG TCJVPP15, * BR = *(PR+LAF0), Fetch the flag for the subpage latch 05840 PR>MA, RAM>BR, 05841 JUMP(TCJVPP16); ----- ----- 898 00110899 00000000 ----- 05842 * 05843 .ORG TCJVPP16, * Y = Flag && VBICAP, have we just captured 05844 * the forced subpage. 05845 A(VBICAP), BR>B, AND, 05846 JUMP(TCJVPP17); ----- ----- 899 0000089A 00400801 ----- 05847 * 05848 .ORG TCJVPP17, * RWL = Subpage store 05849 MA(RWL), 05850 AR.0F>A, B(0), OR, 05851 Y>RAM, Y>IO, 05852 JZ(TCJVPP24F,VPP60T); ----- ----- 89A 00002278 0B0051C0 ----- 05853 * 05854 .ORG TCJVPP24F, * BR = Pointer to subpage latch 05855 * PR = Pointer to number in page store 05856 MA(STORE), RAM>BR, 05857 A(-15), B(-15), OR, 05858 Y>PR, 05859 JUMP(TCJVPP25); ----- ----- 278 0001089B F7F11000 ----- 05860 * 05861 .ORG TCJVPP25, * TDP = subpage tens and units 05862 * PR = Pointer to subpage latch units 05863 RVDP, 05864 JUMP(TCJVPP25A); ----- ----- 89B 0000089C 00008000 ----- 05865 * 05866 .ORG TCJVPP25A, 05867 TPD>A, B(0), OR, 05868 Y>AR, 05869 JUMP(TCJVPP26); ----- ----- 89C 0022089D 00001090 ----- 05870 * 05871 .ORG TCJVPP26, 05872 A(0), BR>B, ADD, 05873 Y>PR, 05874 JUMP(TCJVPP27); ----- ----- 89D 0000089E 80000001 ----- 05875 * 05876 .ORG TCJVPP27, * BR = Old latch value 05877 PR>MA, RAM>BR, 05878 JUMP(TCJVPP28); ----- ----- 89E 0011089F 00000000 ----- 05879 * 05880 .ORG TCJVPP28, * SPxI = New subpage units 05881 PR>MA, 05882 AR<<4>A, BR.0F>B, OR, 05883 Y>RAM, 05884 PR>BR, 05885 JUMP(TCJVPP29); ----- ----- 89F 005108A0 00001132 ----- 05886 * 05887 .ORG TCJVPP29, * PR = Pointer to subpage latch tens 05888 BR>B, A(1), ADD, 05889 Y>PR, 05890 JUMP(TCJVPP30); ----- ----- 8A0 000008A1 80010001 ----- 05891 * 05892 .ORG TCJVPP30, * BR = Old latch value 05893 * AR = AR & 0x70, remove C4 bit 05894 PR>MA, RAM>BR, 05895 AR.F0>A, B(>70), AND, 05896 Y>AR, 05897 JUMP(TCJVPP31); ----- ----- 8A1 003308A2 007008D0 ----- 05898 * 05899 .ORG TCJVPP31, * SPxX = Subpage number tens 05900 PR>MA, 05901 AR.F0>A, BR.0F>B, OR, 05902 Y>RAM, 05903 PR>BR, 05904 JUMP(TCJVPP32); ----- ----- 8A2 005108A3 000011D2 ----- 05905 * 05906 .ORG TCJVPP32, * PR = pointer to subpage hundreds and thousands 05907 A(-14), B(-14), OR, 05908 Y>PR, 05909 JUMP(TCJVPP33); ----- ----- 8A3 000008A4 80F21000 ----- 05910 * 05911 .ORG TCJVPP33, * TDP = subpage hundreds and thousands 05912 * PR = Pointer the subpage latch hundreds 05913 RVDP, 05914 JUMP(TCJVPP33A); ----- ----- 8A4 000008A5 00008000 ----- 05915 * 05916 .ORG TCJVPP33A, 05917 BR>B, A(1), ADD, 05918 Y>PR, 05919 JUMP(TCJVPP34); ----- ----- 8A5 000008A6 80010001 ----- 05920 * 05921 .ORG TCJVPP34, * AR = subpage hundreds and thousands 05922 TPD>A, B(0), OR, 05923 Y>AR, 05924 JUMP(TCJVPP35); ----- ----- 8A6 002208A7 00001090 ----- 05925 * 05926 .ORG TCJVPP35, * BR = Old latch hundreds value 05927 PR>MA, RAM>BR, 05928 JUMP(TCJVPP36); ----- ----- 8A7 001108A8 00000000 ----- 05929 * 05930 .ORG TCJVPP36, * SPxC = New subpage hundreds 05931 PR>MA, 05932 AR<<4>A, BR.0F>B, OR, 05933 Y>RAM, 05934 PR>BR, 05935 JUMP(TCJVPP37); ----- ----- 8A8 005108A9 00001132 ----- 05936 * 05937 .ORG TCJVPP37, * PR = pointer to subpage latch thousands 05938 BR>B, A(1), ADD, 05939 Y>PR, 05940 JUMP(TCJVPP38); ----- ----- 8A9 000008AA 80010001 ----- 05941 * 05942 .ORG TCJVPP38, * SPxM = New subpage thousands 05943 AR.F0>A, B(>30), AND, 05944 Y>RAM, 05945 JUMP(TCJVPP40); ----- ----- 8AA 000008AB 003009D0 ----- 05946 * 05947 .ORG TCJVPP40, * BR = forceing flag 05948 MA(SPFRC), RAM>BR, 05949 JUMP(TCJVPP41); ----- ----- 8AB 000108AC 57000000 ----- 05950 * 05951 .ORG TCJVPP41, * Set up for next flag value 05952 MA(SPFRC), 05953 A(>0F), BR>>4>B, AND, 05954 Y>RAM, 05955 JUMP(VPP60T); ----- ----- 8AC 00000279 570F0904 ----- 05956 * 05957 *+++MAINTAIN TIME OUT 05958 .ORG VPP60T, *A=TIMOUT 05959 MA(TIMOUT), RAM>AR, 05960 JUMP(VPP61); ----- ----- 279 000208AD 3B000000 ----- 05961 .ORG VPP61, *Y=TIMOUT 05962 AR>A, B(0), OR, 05963 JUMP(VPP62); ----- ----- 8AD 000008AE 00001010 ----- 05964 .ORG VPP62, *TIME OUT ACTIVE? 05965 *IF NOT, EXIT 05966 *B=VPPRG1 05967 MA(VPPRG1), RAM>BR, 05968 JZ(VPP63F,VPP100T); ----- ----- 8AE 0001227A 61000000 ----- 05969 .ORG VPP63F, *ACTIVE TIME OUT, DECREMENT COUNT 05970 MA(TIMOUT), 05971 AR>A, B(-1), ADD, 05972 Y>RAM, 05973 JUMP(VPP64); ----- ----- 27A 000008AF 3BFF0110 ----- 05974 .ORG VPP64, *COUNT COMPLETE? 05975 *A=DHREG 05976 MA(DHREG), RAM>AR, 05977 JZ(VPP65F,VPP65T); ----- ----- 8AF 0002227C 32000000 ----- 05978 .ORG VPP65F, *NO, EXIT 05979 JUMP(VPP100T); ----- ----- 27C 0000027B 00000000 ----- 05980 .ORG VPP65T, *COUNT COMPLETE 05981 *RE-ENABLE HEADERS AND REMOVE TIMED OUT DISPLAY 05982 MA(DHREG), 05983 AR>A, B(>FF-POOCD-TOD), AND, 05984 Y>RAM, 05985 JUMP(VPP66); ----- ----- 27D 000008B0 32D70910 ----- 05986 .ORG VPP66, *CALL SVDP TO UPDATE PAGE NUMBER 05987 *CSVDP=1 05988 MA(VPPRG1), 05989 A(CSVDP), BR>B, OR, 05990 Y>RAM, 05991 JUMP(VPP100T); ----- ----- 8B0 0000027B 61101101 ----- 05992 *+++VBICAP, CAP AND CLEAR PROCESSING 05993 * 05994 .ORG VPP100T, *INIT INDEX OFFSET FOR LAFx LOOP 05995 *COUNT=AR=7 05996 MA(COUNT), 05997 A(7), B(7), OR, 05998 Y>RAM, Y>AR, 05999 JUMP(VPP111); ----- ----- 27B 002208B1 78071100 ----- 06000 * 06001 .ORG VPP111, *PR=LAFx INDEX, COUNT<0? 06002 AR>A, B(LAF0), ADD, 06003 Y>PR, 06004 JN(VPP101F,VPP230T); ----- ----- 8B1 0000427E 80400010 ----- 06005 *CLR PROCESSING 06006 * for each LAFx:- 06007 * if (CLR==1) {CLR=0, clear page} 06008 .ORG VPP101F, *BR=LAFx 06009 PR>MA, RAM>BR, 06010 JUMP(VPP200A); ----- ----- 27E 001108B2 00000000 ----- 06011 .ORG VPP200A, *LAFR= LAFx 06012 MA(LAFR), 06013 A(0), BR>B, OR, 06014 Y>RAM, 06015 JUMP(VPP200B); ----- ----- 8B2 000008B3 35001101 ----- 06016 .ORG VPP200B, *RWL=COUNT 06017 MA(RWL), 06018 AR>A, B(0), ADD, 06019 Y>RAM, Y>IO, 06020 JUMP(VPP200C); ----- ----- 8B3 000008B4 0B004110 ----- 06021 .ORG VPP200C, *Y=CLR 06022 A(CLR), BR>B, AND, 06023 JUMP(VPP201); ----- ----- 8B4 000008B5 00200801 ----- 06024 .ORG VPP201, *CLR=0, CLR? 06025 *IF NO, SKIP CLEAR 06026 PR>MA, 06027 A(>FF-CLR), BR>B, AND, 06028 Y>RAM, 06029 JZ(VPP202F,VPP202T); ----- ----- 8B5 00102280 00DF0901 ----- 06030 *CLEAR THIS PAGE 06031 .ORG VPP202F, *RETURN=0 06032 MA(RETURN), 06033 Y(0), 06034 Y>RAM, 06035 JUMP(VPP203); ----- ----- 280 000008B6 7C001100 ----- 06036 .ORG VPP203, *USE THISRW FOR ROW LOOP 06037 *AR=THISRW=23 06038 *CALL MASK0 06039 *RETURN=0, RETURN TO VPP215Y 06040 MA(THISRW), 06041 Y(23), 06042 Y>RAM, Y>AR, 06043 JUMP(MASK0); ----- ----- 8B6 00220811 7D171100 ----- 06044 *START OF ROW CLEAR LOOP 06045 .ORG VPP215Y, *Y=MARKER BYTE FOR THIS ROW 06046 *AR=THISRW 06047 MA(THISRW), RAM>AR, 06048 AR>A, BR>B, AND, 06049 JUMP(VPP216); ----- ----- 0E0 000208B7 7D000811 ----- 06050 .ORG VPP216, *CLEAR THIS ROW? 06051 *PR=AR*40, POINT TO FIRST BYTE ON ROW 06052 *A=LAFx 06053 MA(LAFR), RAM>AR, 06054 AR<<3>A, AR<<5>B, ADD, 06055 Y>PR, 06056 JZ(VPP217F,VPP217T); ----- ----- 8B7 00022282 B5000059 ----- 06057 .ORG VPP217F, *NO, SKIP CLEAR 06058 *AR=THISRW 06059 MA(THISRW), RAM>AR, 06060 JUMP(VPP223T); ----- ----- 282 0002028B 7D000000 ----- 06061 *CLEAR THIS ROW, LEAVE MARKED PACKET 26 CHARACTERS 06062 * A=LAFx 06063 .ORG VPP217T, *Y=BTTL 06064 AR>A, B(BTTL), AND, 06065 JUMP(VPP217A); ----- ----- 283 000008B8 00020810 ----- 06066 .ORG VPP217A, *USE STORE FOR LOOP COUNT 06067 *INIT LOOP COUNT 06068 *IS THIS LATCH SET TO RECEIVE A BTT? 06069 MA(STORE), 06070 A(40), B(40), OR, 06071 Y>RAM, 06072 JZ(VPP218F,VPP218T); ----- ----- 8B8 00002284 77281100 ----- 06073 *CLEAR A BTT ROW (DO NOT OVERWRITE THE PAGE INVENTORY) 06074 .ORG VPP218F, *AR= LOOP, TPD=EXISTING BYTE 06075 RVDP, 06076 MA(STORE), RAM>AR, 06077 JUMP(VPP218A); ----- ----- 284 000208B9 77008000 ----- 06078 .ORG VPP218A, *DEC LOOP 06079 MA(STORE), 06080 AR>A, B(-1), ADD, 06081 Y>RAM, 06082 JUMP(VPP218B); ----- ----- 8B9 000008BA 77FF0110 ----- 06083 .ORG VPP218B, *CLEAR BTT NIBBLE ONLY 06084 *LAST BYTE? 06085 *B=COLUMN POINTER 06086 PR>BR, 06087 TPD.F0>A, B(0), OR, 06088 Y>DCLR, 06089 JZ(VPP218CF,VPP218CT); ----- ----- 8BA 00413286 000014B0 ----- 06090 .ORG VPP218CF, *MORE BYTES 06091 *PR++ 06092 A(1), BR>B, ADD, 06093 Y>PR, 06094 JUMP(VPP218F); ----- ----- 286 00000284 80010001 ----- 06095 * 06096 .ORG VPP218CT, *COMPLETED CLEARING BTT ROW 06097 *AR=THISRW 06098 MA(THISRW), RAM>AR, 06099 JUMP(VPP223T); ----- ----- 287 0002028B 7D000000 ----- 06100 *CLEAR AN ORDINARY ROW 06101 .ORG VPP218T, *READ TELETEXT MEMORY WITH 9TH BIT 06102 *AR=STORE 06103 MA(STORE), RAM>AR, 06104 BIT8, 06105 RVDP, 06106 JUMP(VPP220); ----- ----- 285 000208BB 77009400 ----- 06107 .ORG VPP220, *Y=TELETEXT DATA WITH 9TH BIT 06108 TPD>A, B(0), ADD, 06109 JUMP(VPP221); ----- ----- 8BB 000008BC 00000090 ----- 06110 .ORG VPP221, *LOOP COUNT-- 06111 *9TH BIT SET? 06112 MA(STORE), 06113 AR>A, B(-1), ADD, 06114 Y>RAM, 06115 JN(VPP222F,VPP222T); ----- ----- 8BC 00004288 77FF0110 ----- 06116 .ORG VPP222F, *9TH BIT NOT SET, CLEAR THE BYTE 06117 *DR=>20 06118 *LAST BYTE? 06119 *BR=PR 06120 *AR=THISRW 06121 MA(THISRW), RAM>AR, 06122 PR>BR, 06123 A(>20), B(>20), OR, 06124 Y>DR, 06125 JZ(VPP223F,VPP223T); ----- ----- 288 0043328A 7D201000 ----- 06126 .ORG VPP222T, *9TH BIT SET, LEAVE THE BYTE 06127 *LAST BYTE? 06128 *BR=PR 06129 *AR=THISRW 06130 MA(THISRW), RAM>AR, 06131 PR>BR, 06132 JZ(VPP223F,VPP223T); ----- ----- 289 0043228A 7D000000 ----- 06133 .ORG VPP223F, *MORE BYTES 06134 *PR++ 06135 A(1), BR>B, ADD, 06136 Y>PR, 06137 JUMP(VPP218T); ----- ----- 28A 00000285 80010001 ----- 06138 *LAST ROW? 06139 * AR=THISRW 06140 .ORG VPP223T, *THISRW-- 06141 MA(THISRW), 06142 AR>A, B(-1), ADD, 06143 Y>RAM, 06144 JUMP(VPP224); ----- ----- 28B 000008BD 7DFF0110 ----- 06145 .ORG VPP224, *CLEARED ALL ROWS? 06146 *THISRW==0? 06147 *AR=COUNT 06148 MA(COUNT), RAM>AR, 06149 JZ(VPP225F,VPP225T); ----- ----- 8BD 0002228C 78000000 ----- 06150 .ORG VPP225F, *CALL MASK0 AND RETURN FOR NEXT ROW 06151 *RETURN=0, RETURN TO VPP215Y 06152 *AR=THISRW 06153 MA(THISRW), RAM>AR, 06154 JUMP(MASK0); ----- ----- 28C 00020811 7D000000 ----- 06155 * 06156 .ORG VPP225T, *PR=LAFx INDEX 06157 AR>A, B(LAF0), ADD, 06158 Y>PR, 06159 JUMP(VPP202T); ----- ----- 28D 00000281 80400010 ----- 06160 *LAFx PROCESSING 06161 * PR=LAFx INDEX 06162 .ORG VPP202T, *BR=LAFx 06163 PR>MA, RAM>BR, 06164 JUMP(VPP102); ----- ----- 281 001108BE 00000000 ----- 06165 .ORG VPP102, *Y=VBICAP 06166 *AR=COUNT 06167 MA(COUNT), RAM>AR, 06168 A(VBICAP), BR>B, AND, 06169 JUMP(VPP103); ----- ----- 8BE 000208BF 78400801 ----- 06170 .ORG VPP103, *VBICAP=0, VBICAP? 06171 PR>MA, 06172 A(>FF-VBICAP), BR>B, AND, 06173 Y>RAM, 06174 JZ(VPP104F,VPP104T); ----- ----- 8BF 0010228E 00BF0901 ----- 06175 *VBICAP SET, PROCESS PAGE CAPTURED DURING LAST VBI 06176 * 06177 * First update inventory table. There is not enough time to do 06178 * this in LPP for pages which are in a latch. 06179 * 06180 .ORG VPP104F, *CALL UPI0B TO UPDATE PAGE INVENTORY 06181 *RET2=1, RETURN TO VPP104AF 06182 *A=THIS LATCH 06183 MA(RET2), 06184 Y(1), 06185 Y>RAM, 06186 JUMP(UPI0B); ----- ----- 28E 000008C0 7B011100 ----- 06187 * B= STOR0 06188 .ORG VPP104AF, *A=THIS LATCH 06189 MA(COUNT), RAM>AR, 06190 JUMP(VPP104B); ----- ----- 234 000208C1 78000000 ----- 06191 .ORG VPP104B, *PR=LAFx INDEX 06192 AR>A, B(LAF0), ADD, 06193 Y>PR, 06194 JUMP(VPP104C); ----- ----- 8C1 000008C2 80400010 ----- 06195 .ORG VPP104C, *Y=THIS LATCH XOR DISPLAY LATCH 06196 *A=LAFx 06197 PR>MA, RAM>AR, 06198 AR>A, BRHI>B, XOR, 06199 JUMP(VPP105); ----- ----- 8C2 001208C3 0000181C ----- 06200 .ORG VPP105, *JUST CAPTURED DISPLAY PAGE? 06201 *B=SYS1 06202 MA(SYS1), RAM>BR, 06203 JZ(VPP105AF,VPP105AT); ----- ----- 8C3 00012296 08000000 ----- 06204 *JUST CAPTURED THE DISPLAY PAGE 06205 .ORG VPP105AT, *Y=PCM-2 06206 *B=VPPRG1 06207 MA(VPPRG1), RAM>BR, 06208 A(-2), BRHI>B, ADD, 06209 JUMP(VPP105AA); ----- ----- 297 000108C4 61FE000C ----- 06210 .ORG VPP105AA, *Y=CAP 06211 *FLOF MODE? 06212 *A=VPPRG2 06213 MA(VPPRG2), RAM>AR, 06214 AR>A, B(CAP), AND, 06215 JZ(VPP106F,VPP106T); ----- ----- 8C4 0002229A 62800810 ----- 06216 .ORG VPP106T, *FLOF MODE, SORT BACKGROUND LATCHES 06217 *SBL=1, CSVDP=1 06218 *FIRST CAPTURE? 06219 MA(VPPRG1), 06220 A(SBL+CSVDP), BR>B, OR, 06221 Y>RAM, 06222 JZ(VPP106AF,VPP106AT); ----- ----- 29B 0000229C 61901101 ----- 06223 .ORG VPP106F, *NOT FLOF MODE 06224 *CSVDP=1 06225 *FIRST CAPTURE? 06226 MA(VPPRG1), 06227 A(CSVDP), BR>B, OR, 06228 Y>RAM, 06229 JZ(VPP106AF,VPP106AT); ----- ----- 29A 0000229C 61101101 ----- 06230 *FIRST CAPTURE 06231 .ORG VPP106AT, *SET DPC AND DPFC 06232 MA(VPPRG2), 06233 AR>A, B(DPC+DPFC), OR, 06234 Y>RAM, 06235 JUMP(VPP105AF); ----- ----- 29D 00000296 62121110 ----- 06236 *NOT FIRST CAPTURE 06237 .ORG VPP106AF, *SET DPC ONLY 06238 MA(VPPRG2), 06239 AR>A, B(DPC), OR, 06240 Y>RAM, 06241 JUMP(VPP105AF); ----- ----- 29C 00000296 62021110 ----- 06242 *LAFx PROCESSING 06243 .ORG VPP105AF, *A=LAFx 06244 PR>MA, RAM>AR, 06245 JUMP(VPP105AB); ----- ----- 296 001208C5 00000000 ----- 06246 .ORG VPP105AB, *CAP=1 06247 PR>MA, 06248 AR>A, B(CAP), OR, 06249 Y>RAM, Y>AR, 06250 JUMP(VPP107A); ----- ----- 8C5 003208C6 00801110 ----- 06251 .ORG VPP107A, *Y=AITL+BTTL 06252 *B=AITCNT 06253 MA(AITCNT), RAM>BR, 06254 AR>A, B(AITL+BTTL), AND, 06255 JUMP(VPP107B); ----- ----- 8C6 000108C7 4C030810 ----- 06256 .ORG VPP107B, *Y=BTTL, A=TOPRG1 06257 *CAPTURED A TOP TABLE? 06258 MA(TOPRG1), RAM>AR, 06259 AR>A, B(BTTL), AND, 06260 JZ(VPP107CF,VPP107CT); ----- ----- 8C7 0002229E 37020810 ----- 06261 .ORG VPP107CF, *CAPTURED A TOP TABLE 06262 *Y=AITCNT 06263 *BTTL? 06264 A(0), BR.0F>B, OR, 06265 JZ(VPP107DF,VPP107DT); ----- ----- 29E 000022A0 00001002 ----- 06266 *CAPTURED A BTT 06267 .ORG VPP107DF, *CAPTURED A BTT 06268 *BTTP=1, BTTCAP=1 06269 MA(TOPRG1), 06270 AR>A, B(BTTP+BTTCAP), OR, 06271 Y>RAM, 06272 JUMP(VPP107DA); ----- ----- 2A0 000008C8 37601110 ----- 06273 .ORG VPP107DA, *A=STSWD0 06274 MA(STSWD0), RAM>AR, 06275 JUMP(VPP107DB); ----- ----- 8C8 000208C9 64000000 ----- 06276 .ORG VPP107DB, *TFLG=1 06277 MA(STSWD0), 06278 AR>A, B(TFLG), OR, 06279 Y>RAM, 06280 JUMP(VPP107CT); ----- ----- 8C9 0000029F 64801110 ----- 06281 *CAPTURED AN AIT 06282 .ORG VPP107DT, *A=EXPREG, AITCNT=0? 06283 MA(EXPREG), RAM>AR, 06284 JZ(VPP107EF,VPP107ET); ----- ----- 2A1 000222A2 63000000 ----- 06285 .ORG VPP107EF, *AITCNT<>0, WAIT FOR ALL AITS BEFORE GENERATING A PROMPT 06286 *AITCNT-- 06287 MA(AITCNT), 06288 A(-1), BR>B, ADD, 06289 Y>RAM, 06290 JUMP(VPP107CT); ----- ----- 2A2 0000029F 4CFF0101 ----- 06291 .ORG VPP107ET, *OK TO GENERATE A PROMPT 06292 MA(EXPREG), 06293 AR>A, B(CGAP), OR, 06294 Y>RAM, 06295 JUMP(VPP107CT); ----- ----- 2A3 0000029F 63081110 ----- 06296 *CLEAR PACKET 26 MARKERS 06297 .ORG VPP107CT, *P=-24 06298 *A=THIS LATCH 06299 MA(COUNT), RAM>AR, 06300 Y(-24), 06301 Y>PR, 06302 JUMP(VPP107E); ----- ----- 29F 000208CA F8E81000 ----- 06303 .ORG VPP107E, *B=-24 06304 *RWL= THIS LATCH 06305 PR>BR, 06306 MA(RWL), 06307 AR>A, B(0), OR, 06308 Y>RAM, Y>IO, 06309 JUMP(VPP110); ----- ----- 8CA 004108CB 0B005110 ----- 06310 *LOOP START 06311 .ORG VPP110, *PR=BR-1 06312 A(-1), BR>B, ADD, 06313 Y>PR, 06314 JUMP(VPP108); ----- ----- 8CB 000008CC 80FF0001 ----- 06315 .ORG VPP108, *FINISHED? 06316 *READ MEMORY 06317 RVDP, 06318 JZ(VPP109F,VPP109T); ----- ----- 8CC 000022A4 00008000 ----- 06319 .ORG VPP109F, *NOT YET 06320 *WRITE BACK TO MEMORY 06321 *CLEAR P26 MARKER 06322 PR>BR, 06323 TPD>A, B(0), OR, 06324 Y>DCLR, 06325 JUMP(VPP110); ----- ----- 2A4 004118CB 00001490 ----- 06326 * 06327 .ORG VPP109T, *LAST LOC 06328 *WRITE BACK TO MEMORY 06329 *AR=COUNT 06330 MA(COUNT), RAM>AR, 06331 TPD>A, B(0), OR, 06332 Y>DCLR, 06333 JUMP(VPP104T); ----- ----- 2A5 0002128F 78001490 ----- 06334 *BACK TO LAFx LOOP 06335 * AR=COUNT 06336 .ORG VPP104T, *COUNT--, AR-- 06337 MA(COUNT), 06338 AR>A, B(-1), ADD, 06339 Y>RAM, Y>AR, 06340 JUMP(VPP111); ----- ----- 28F 002208B1 78FF0110 ----- 06341 * 06342 *END OF VBICAP, CAP AND CLEAR PROCESSING 06343 * 06344 * 06345 *+++TOP POST PROCESSING 06346 * 06347 .ORG TPP0, *A=TOPRG1 06348 MA(TOPRG1), RAM>AR, 06349 JUMP(TPP14); ----- ----- 622 000208CD 37000000 ----- 06350 .ORG TPP14, *Y=BTTUP 06351 AR>A, B(BTTUP), AND, 06352 JUMP(TPP20); ----- ----- 8CD 000008CE 00100810 ----- 06353 .ORG TPP20, *BTTUP? 06354 *BTTP=0 06355 MA(TOPRG1), 06356 AR>A, B(>FF-BTTP), AND, 06357 Y>RAM, Y>AR, 06358 JZ(TPP21F,TPP21T); ----- ----- 8CE 002222A6 37DF0910 ----- 06359 * BTT UPDATED, INITIALISE AIT LATCHES 06360 .ORG TPP21F, *INIT LOOP VARIABLE 06361 *COUNT=0 06362 MA(COUNT), 06363 Y(0), 06364 Y>RAM, 06365 JUMP(TPP30Y); ----- ----- 2A6 00000648 78001100 ----- 06366 * 06367 *^^^ start of fix for single AITs 06368 * 06369 .ORG TPP21A, *P=INDEX TO STORx MAGS 06370 A(M0), BRHI>B, ADD, 06371 Y>PR, 06372 JUMP(TPP21AA); ----- ----- 8D5 000008CF 8010000C ----- 06373 .ORG TPP21AA, *A=STORx MAGS 06374 PR>MA, RAM>AR, 06375 JUMP(TPP21AB); ----- ----- 8CF 001208D0 00000000 ----- 06376 .ORG TPP21AB, *SET NULL MAGS (IN CASE AIT NOT FOUND IN TABLE) 06377 PR>MA, 06378 AR>A, B(>0F), OR, 06379 Y>RAM, Y>IO, 06380 JUMP(TPP21AC); ----- ----- 8D0 001008D1 000F5110 ----- 06381 .ORG TPP21AC, *P=INDEX TO STORx LATCH 06382 *A=COUNT 06383 MA(COUNT), RAM>AR, 06384 A(LAF0), BRHI>B, ADD, 06385 Y>PR, 06386 JUMP(TPP21B); ----- ----- 8D1 000208D2 F840000C ----- 06387 * 06388 *^^^ end of fix for single AITs 06389 * 06390 *SET LATCH FLAGS IN STORES 2 AND 3 06391 .ORG TPP21B, *CAP=VBICAP=CLR=OPN=MPG=BTTL=0 06392 *AITL=1 06393 *INIT LAFx 06394 PR>MA, 06395 Y(AITL), 06396 Y>RAM, 06397 JUMP(TPP22); ----- ----- 8D2 001008D3 00011100 ----- 06398 .ORG TPP22, *COUNT++ 06399 MA(COUNT), 06400 AR>A, B(1), ADD, 06401 Y>RAM, 06402 JUMP(TPP29); ----- ----- 8D3 000008D4 78010110 ----- 06403 .ORG TPP29, *CASE LOOP? 06404 *B=SCREEN 06405 MA(SCREEN), RAM>BR, 06406 JY(TPP30Y); ----- ----- 8D4 0001C648 60000000 ----- 06407 .ORG TPP30Y, *B=STOR2 06408 MA(STOR2), RAM>BR, 06409 JUMP(TPP21A); ----- ----- 648 000108D5 22000000 ----- 06410 .ORG TPP31, *B=STOR3 06411 MA(STOR3), RAM>BR, 06412 JUMP(TPP21A); ----- ----- 649 000108D5 23000000 ----- 06413 .ORG TPP32, *Y=MENM 06414 *A=VPPRG1 06415 MA(VPPRG1), RAM>AR, 06416 A(MENM), BR>B, AND, 06417 JUMP(TPP32A); ----- ----- 64A 000208D6 61080801 ----- 06418 .ORG TPP32A, *B=STOR7 06419 *MENU MODE? 06420 MA(STOR7), RAM>BR, 06421 JZ(TPP21BF,TPP21BT); ----- ----- 8D6 000122A8 27000000 ----- 06422 .ORG TPP21BT, *NOT MENU MODE 06423 *P=INDEX TO STOR7 LATCH 06424 A(LAF0), BRHI>B, ADD, 06425 Y>PR, 06426 JUMP(TPP21C); ----- ----- 2A9 000008D7 8040000C ----- 06427 .ORG TPP21C, *INIT STOR7 06428 *CAP=VBICAP=CLR=OPN=MPG=AITL=BTTL=0 06429 *THIS STORE ONLY SET FOR AN AIT 06430 *IF A THIRD AIT IS PRESENT IN THE BTT 06431 *INIT LAFx 06432 PR>MA, 06433 Y(0), 06434 Y>RAM, 06435 JUMP(TPP33); ----- ----- 8D7 0010064B 00001100 ----- 06436 * 06437 .ORG TPP21BF, *MENU MODE, EXIT 06438 *SORT BACKGROUND LATCHES 06439 *SBL=1 06440 MA(VPPRG1), 06441 AR>A, B(SBL), OR, 06442 Y>RAM, 06443 JUMP(TPP21T); ----- ----- 2A8 000002A7 61801110 ----- 06444 * 06445 .ORG TPP33, *CASE EXIT 06446 *A=VPPRG1 06447 MA(VPPRG1), RAM>AR, 06448 JUMP(TPP21BF); ----- ----- 64B 000202A8 61000000 ----- 06449 * 06450 *LOAD LATCHES FROM PLT 06451 * 06452 .ORG TPP21T, *COUNT=0 06453 *CALL INSPRG0 TO INIT SUB-PAGE LATCHES 06454 *A=0, RETURN TO TPP50Y 06455 MA(COUNT), 06456 Y(0), 06457 Y>RAM, Y>AR, 06458 JUMP(INSPRG0); ----- ----- 2A7 002208D8 78001100 ----- 06459 .ORG TPP50Y, *BR=STOR1 06460 MA(STOR1), RAM>BR, 06461 JUMP(TPP51); ----- ----- 6B0 000108D9 21000000 ----- 06462 .ORG TPP51, *RWL=BTT LATCH 06463 MA(RWL), 06464 A(0), BRHI>B, OR, 06465 Y>RAM, Y>IO, 06466 JUMP(TPP52); ----- ----- 8D9 000008DA 0B00510C ----- 06467 .ORG TPP52, *INIT OFFSET 06468 MA(THISRW), 06469 Y(-80), 06470 Y>RAM, Y>AR, 06471 JUMP(TPP60F); ----- ----- 8DA 002202C4 7DB01100 ----- 06472 *PROCESS A PLT FIELD 06473 * A=THISRW 06474 .ORG TPP60F, *POINT TO THIS FIELD 06475 AR>A, B(-104), ADD, 06476 Y>PR, 06477 JUMP(TPP60A); ----- ----- 2C4 000008DB 80980010 ----- 06478 .ORG TPP60A, *TPD=MAG BYTE 06479 *P=POINTER 06480 PR>BR, 06481 RVDP, 06482 JUMP(TPP61); ----- ----- 8DB 004108DC 00008000 ----- 06483 .ORG TPP61, *Y=MAG BYTE-9 06484 TPD.0F>A, B(-9), ADD, 06485 JUMP(TPP62); ----- ----- 8DC 000008DD 00F700A0 ----- 06486 .ORG TPP62, *MAG>8? 06487 *Y=MAG-8 06488 TPD.0F>A, B(-8), ADD, 06489 JN(TPP63F,TPP63T); ----- ----- 8DD 000042AA 00F800A0 ----- 06490 *MAG IS IN RANGE 9-F 06491 .ORG TPP63F, *Y=MAG->F 06492 TPD.0F>A, B(->F), ADD, 06493 JUMP(TPP63A); ----- ----- 2AA 000008DE 00F100A0 ----- 06494 .ORG TPP63A, *END CODE? 06495 JZ(TPP63BF,TPP63BT); ----- ----- 8DE 000022B0 00000000 ----- 06496 .ORG TPP63BT, *END CODE, DON'T LOOK AT ANY MORE PLT FIELDS 06497 *B=TOPRG1 06498 MA(TOPRG1), RAM>BR, 06499 JUMP(TPP300); ----- ----- 2B1 000108DF 37000000 ----- 06500 .ORG TPP63BF, *MAG IN THE RANGE 9->E, EXIT TO NEXT FIELD 06501 *AR=OFFSET 06502 MA(THISRW), RAM>AR, 06503 JUMP(TPP200); ----- ----- 2B0 000208E0 7D000000 ----- 06504 *MAG IS IN RANGE 0-8 06505 .ORG TPP63T, *MAG=8? 06506 *AR=MAG 06507 TPD.0F>A, B(0), OR, 06508 Y>AR, 06509 JZ(TPP64F,TPP64T); ----- ----- 2AB 002222B2 000010A0 ----- 06510 .ORG TPP64T, *MAG=8, SET PM=0 06511 MA(PM), 06512 Y(0), 06513 Y>RAM, 06514 JUMP(TPP64AF); ----- ----- 2B3 000002B8 74001100 ----- 06515 .ORG TPP64F, *MAG=0? 06516 *PM=MAG<<4 06517 MA(PM), 06518 AR<<4>A, B(0), ADD, 06519 Y>RAM, 06520 JZ(TPP64AF,TPP64AT); ----- ----- 2B2 000022B8 74000130 ----- 06521 .ORG TPP64AT, *INVALID MAG, EXIT TO NEXT FIELD 06522 *AR=OFFSET 06523 MA(THISRW), RAM>AR, 06524 JUMP(TPP200); ----- ----- 2B9 000208E0 7D000000 ----- 06525 .ORG TPP64AF, *P=POINTER TO TABLE IDENT BYTE 06526 A(7), BR>B, ADD, 06527 Y>PR, 06528 JUMP(TPP65); ----- ----- 2B8 000008E1 80070001 ----- 06529 .ORG TPP65, *TPD=TABLE IDENT BYTE 06530 RVDP, 06531 JUMP(TPP66); ----- ----- 8E1 000008E2 00008000 ----- 06532 .ORG TPP66, *Y=TABLE IDENT-2 06533 TPD.0F>A, B(-2), ADD, 06534 JUMP(TPP67); ----- ----- 8E2 000008E3 00FE00A0 ----- 06535 .ORG TPP67, *AIT FIELD? 06536 *B=POINTER 06537 *A=COUNT 06538 PR>BR, 06539 MA(COUNT), RAM>AR, 06540 JZ(TPP68F,TPP68T); ----- ----- 8E3 004322BA 78000000 ----- 06541 .ORG TPP68F, *NOT AN AIT, EXIT TO NEXT FIELD 06542 *AR=OFFSET 06543 MA(THISRW), RAM>AR, 06544 JUMP(TPP200); ----- ----- 2BA 000208E0 7D000000 ----- 06545 *PROCESS AIT FIELD 06546 * A=COUNT, P=POINTER TO TABLE IDENT 06547 .ORG TPP68T, *Y=COUNT 06548 *B=SCREEN 06549 MA(SCREEN), RAM>BR, 06550 AR>A, B(0), OR, 06551 JUMP(TPP69); ----- ----- 2BB 000108E4 60001010 ----- 06552 .ORG TPP69, *CASE COUNT=? 06553 JY(TPP70Y); ----- ----- 8E4 0000C678 00000000 ----- 06554 .ORG TPP70Y, *1ST AIT 06555 *A=STOR2 06556 *P=POINTER 06557 PR>BR, 06558 MA(STOR2), RAM>AR, 06559 JUMP(TPP80); ----- ----- 678 004308E5 22000000 ----- 06560 .ORG TPP71, *2ND AIT 06561 *A=STOR3 06562 *P=POINTER 06563 PR>BR, 06564 MA(STOR3), RAM>AR, 06565 JUMP(TPP80); ----- ----- 679 004308E5 23000000 ----- 06566 .ORG TPP72, *3RD AIT 06567 *Y=MENM 06568 A(MENM), BR>B, AND, 06569 JUMP(TPP72A); ----- ----- 67A 000008E6 00080801 ----- 06570 .ORG TPP72A, *MENU MODE? 06571 *IF YES, EXIT (NO ROOM FOR 3RD AIT) 06572 JZ(TPP72BF,TPP72BT); ----- ----- 8E6 000022BC 00000000 ----- 06573 .ORG TPP72BT, *A=STOR7 06574 *P=POINTER 06575 PR>BR, 06576 MA(STOR7), RAM>AR, 06577 JUMP(TPP80); ----- ----- 2BD 004308E5 27000000 ----- 06578 * A=STORx, B=POINTER 06579 *FIRST PUT NULL VALUE IN LATCH MAG 06580 .ORG TPP80, *STORE=A=LATCH, 06581 MA(STORE), 06582 ARHI>A, B(0), OR, 06583 Y>RAM, Y>AR, 06584 JUMP(TPP81); ----- ----- 8E5 002208E7 77001120 ----- 06585 *IS IT NECESSARY TO INITIALISE STORE 7 FOR THE THIRD AIT? 06586 *(MUST BE STORE 7 IF AITL IS NOT SET) 06587 .ORG TPP81, *P=POINTER TO LAFx 06588 AR>A, B(LAF0), ADD, 06589 Y>PR, 06590 JUMP(TPP82); ----- ----- 8E7 000008E8 80400010 ----- 06591 .ORG TPP82, *A=LAFx 06592 PR>MA, RAM>AR, 06593 JUMP(TPP83); ----- ----- 8E8 001208E9 00000000 ----- 06594 .ORG TPP83, *Y=AITL 06595 AR>A, B(AITL), AND, 06596 JUMP(TPP84); ----- ----- 8E9 000008EA 00010810 ----- 06597 .ORG TPP84, *AITL SET? 06598 *A= VPPRG1 06599 MA(VPPRG1), RAM>AR, 06600 JZ(TPP84AF,TPP84AT); ----- ----- 8EA 000222BE 61000000 ----- 06601 *INITIALISE STORE 7 FOR THE THIRD AIT 06602 .ORG TPP84AT, *LAFx= AITL 06603 PR>MA, 06604 Y(AITL), 06605 Y>RAM, 06606 JUMP(TPP84B); ----- ----- 2BF 001008EB 00011100 ----- 06607 .ORG TPP84B, *SBL=1 06608 MA(VPPRG1), 06609 AR>A, B(SBL), OR, 06610 Y>RAM, 06611 JUMP(TPP84AF); ----- ----- 8EB 000002BE 61801110 ----- 06612 *READ TENS AND UNITS INTO PT AND PU 06613 .ORG TPP84AF, *P=POINTER TO TENS 06614 A(-6), BR>B, ADD, 06615 Y>PR, 06616 JUMP(TPP85); ----- ----- 2BE 000008EC 80FA0001 ----- 06617 .ORG TPP85, *TPD=TENS, B=POINTER 06618 RVDP, 06619 PR>BR, 06620 JUMP(TPP86); ----- ----- 8EC 004108ED 00008000 ----- 06621 .ORG TPP86, *P=POINTER TO UNITS 06622 A(1), BR>B, ADD, 06623 Y>PR, 06624 JUMP(TPP87); ----- ----- 8ED 000008EE 80010001 ----- 06625 .ORG TPP87, *AR=TENS 06626 TPD.0F>A, B(0), OR, 06627 Y>AR, 06628 JUMP(TPP88); ----- ----- 8EE 002208EF 000010A0 ----- 06629 .ORG TPP88, *PT=TENS<<4, TPD=UNITS 06630 RVDP, 06631 MA(PT), 06632 AR<<4>A, B(0), OR, 06633 Y>RAM, 06634 JUMP(TPP89); ----- ----- 8EF 000008F0 75009130 ----- 06635 .ORG TPP89, *AR=UNITS 06636 *BR=COUNT 06637 MA(COUNT), RAM>BR, 06638 TPD.0F>A, B(0), OR, 06639 Y>AR, 06640 JUMP(TPP90); ----- ----- 8F0 002308F1 780010A0 ----- 06641 .ORG TPP90, *PU=UNITS<<4 06642 MA(PU), 06643 AR<<4>A, B(0), OR, 06644 Y>RAM, 06645 JUMP(TPP91); ----- ----- 8F1 000008F2 76001130 ----- 06646 *LOAD SUB-PAGE LATCHES FOR AITS 06647 * BR=COUNT, P=PLT INDEX 06648 .ORG TPP91, *Y=COUNT 06649 *A=LATCH 06650 MA(STORE), RAM>AR, 06651 A(0), BR>B, OR, 06652 JUMP(TPP91A); ----- ----- 8F2 000208F3 77001001 ----- 06653 .ORG TPP91A, *COUNT++ 06654 *CASE COUNT=? 06655 MA(COUNT), 06656 A(1), BR>B, ADD, 06657 Y>RAM, 06658 JY(TPP92Y); ----- ----- 8F3 0000C694 78010101 ----- 06659 * 06660 .ORG TPP92Y, *CASE COUNT=0 06661 *MASK=SP0I-1 06662 MA(MASK), 06663 Y(SP0I-1), 06664 Y>RAM, 06665 JUMP(TPP92A); ----- ----- 694 000008F4 73471100 ----- 06666 .ORG TPP92A, *B=LFSP0 06667 MA(LFSP0), RAM>BR, 06668 JUMP(TPP92B); ----- ----- 8F4 000108F5 48000000 ----- 06669 .ORG TPP92B, *UPDATE LFSP0 WITH AIT LATCH 06670 MA(LFSP0), 06671 AR.0F>A, BR.F0>B, OR, 06672 Y>RAM, 06673 JUMP(TPP92C); ----- ----- 8F5 000008F6 480011C3 ----- 06674 .ORG TPP92C, *B=VPPRG2 06675 MA(VPPRG2), RAM>BR, 06676 JUMP(TPP92J); ----- ----- 8F6 000108F7 62000000 ----- 06677 .ORG TPP92J, *CALL UPDATE OF SUB-PAGE REGISTERS 06678 *USPR=1 06679 MA(VPPRG2), 06680 A(USPR), BR>B, OR, 06681 Y>RAM, 06682 JUMP(TPP95); ----- ----- 8F7 000008F8 62081101 ----- 06683 * 06684 .ORG TPP93, *CASE COUNT=1 06685 *MASK=SP1I-1 06686 MA(MASK), 06687 Y(SP1I-1), 06688 Y>RAM, 06689 JUMP(TPP93A); ----- ----- 695 000008F9 734B1100 ----- 06690 .ORG TPP93A, *B=LFSP1 06691 MA(LFSP1), RAM>BR, 06692 JUMP(TPP93B); ----- ----- 8F9 000108FA 49000000 ----- 06693 .ORG TPP93B, *UPDATE LFSP0 WITH AIT LATCH 06694 MA(LFSP1), 06695 AR.0F>A, BR.F0>B, OR, 06696 Y>RAM, 06697 JUMP(TPP95); ----- ----- 8FA 000008F8 490011C3 ----- 06698 * 06699 .ORG TPP94, *CASE COUNT=2 06700 *MASK=SP2I-1 06701 MA(MASK), 06702 Y(SP2I-1), 06703 Y>RAM, 06704 JUMP(TPP94A); ----- ----- 696 000008FB 734F1100 ----- 06705 .ORG TPP94A, *B=LFSP2 06706 MA(LFSP2), RAM>BR, 06707 JUMP(TPP94B); ----- ----- 8FB 000108FC 4A000000 ----- 06708 .ORG TPP94B, *UPDATE LFSP2 WITH AIT LATCH 06709 MA(LFSP2), 06710 AR.0F>A, BR.F0>B, OR, 06711 Y>RAM, 06712 JUMP(TPP95); ----- ----- 8FC 000008F8 4A0011C3 ----- 06713 * 06714 .ORG TPP95, *INIT LOOP VARIABLE 06715 MA(RET2), 06716 Y(3), 06717 Y>RAM, 06718 JUMP(TPP95A); ----- ----- 8F8 000008FD 7B031100 ----- 06719 *LOOP START 06720 .ORG TPP95A, *A=PLT FIELD OFFSET 06721 MA(THISRW), RAM>AR, 06722 JUMP(TPP96); ----- ----- 8FD 000208FE 7D000000 ----- 06723 .ORG TPP96, *P=INDEX TO PLT SUB PAGE THOU'S 06724 AR>A, B(-101), ADD, 06725 Y>PR, 06726 JUMP(TPP97); ----- ----- 8FE 000008FF 809B0010 ----- 06727 .ORG TPP97, *B=INDEX TO PLT SUB-PAGE THOU'S 06728 *A=LOOP VARIABLE 06729 MA(RET2), RAM>AR, 06730 PR>BR, 06731 JUMP(TPP98); ----- ----- 8FF 00430900 7B000000 ----- 06732 .ORG TPP98, *P=INDEX TO PLT SUB-PAGE DIGIT 06733 *B=INDEX TO LAST SP STORE 06734 *(SP0I-1, SP1I-1 OR SP2I-1) 06735 MA(MASK), RAM>BR, 06736 AR>A, BR>B, ADD, 06737 Y>PR, 06738 JUMP(TPP98A); ----- ----- 900 00010901 F3000011 ----- 06739 .ORG TPP98A, *TPD=PLT SUB-PAGE DIGIT 06740 *P=INDEX TO THIS SP STORE 06741 RVDP, 06742 MA(MASK), 06743 A(1), BR>B, ADD, 06744 Y>RAM, Y>PR, 06745 JUMP(TPP98C); ----- ----- 901 00000902 F3018101 ----- 06746 .ORG TPP98C, *DEC LOOP COUNT 06747 MA(RET2), 06748 AR>A, B(-1), ADD, 06749 Y>RAM, 06750 JUMP(TPP98D); ----- ----- 902 00000903 7BFF0110 ----- 06751 .ORG TPP98D, *EXIT LOOP? 06752 *A= PLT SUB-PAGE DIGIT 06753 *B= THIS SUB-PAGE STORE 06754 PR>MA, RAM>BR, 06755 TPD.0F>A, B(0), OR, 06756 Y>AR, 06757 JN(TPP100F,TPP100T); ----- ----- 903 003342C2 000010A0 ----- 06758 .ORG TPP100F, *MORE DIGITS 06759 *UPDATE SP STORE WITH PLT SUB-PAGE DIGIT 06760 PR>MA, 06761 AR<<4>A, BR.0F>B, OR, 06762 Y>RAM, 06763 JUMP(TPP95A); ----- ----- 2C2 001008FD 00001132 ----- 06764 .ORG TPP100T, *LAST DIGIT 06765 *UPDATE SP STORE WITH PLT SUB-PAGE DIGIT 06766 PR>MA, 06767 AR<<4>A, BR.0F>B, OR, 06768 Y>RAM, 06769 JUMP(TPP101); ----- ----- 2C3 00100904 00001132 ----- 06770 *LOAD LATCH WITH PM, PT AND PU 06771 *ENTRY POINT AFTER SUB-PAGE SKIP WHEN IN SUB-PAGE MODE 06772 .ORG TPP101, *A=LATCH 06773 MA(STORE), RAM>AR, 06774 JUMP(TPP101A); ----- ----- 904 00020905 77000000 ----- 06775 .ORG TPP101A, *CALL PXTOLA0T, 06776 *RETURN=3, RETURN TO TPP102T, 06777 MA(RETURN), 06778 Y(3), 06779 Y>RAM, 06780 JUMP(PXTOLA0T); ----- ----- 905 000003C1 7C031100 ----- 06781 .ORG TPP102T, *AR=THISRW 06782 MA(THISRW), RAM>AR, 06783 JUMP(TPP200); ----- ----- 3C3 000208E0 7D000000 ----- 06784 *MORE FIELDS TO PROCESS? 06785 * A=OFFSET 06786 .ORG TPP200, *UPDATE OFFSET 06787 MA(THISRW), 06788 AR>A, B(8), ADD, 06789 Y>RAM, Y>AR, 06790 JUMP(TPP201); ----- ----- 8E0 00220906 7D080110 ----- 06791 .ORG TPP201, *LAST FIELD? 06792 JZ(TPP60F,TPP60T); ----- ----- 906 000022C4 00000000 ----- 06793 *PROCESSED LAST FIELD IN PLT, EXIT 06794 .ORG TPP60T, *B=TOPRG1 06795 MA(TOPRG1), RAM>BR, 06796 JUMP(TPP300); ----- ----- 2C5 000108DF 37000000 ----- 06797 *MENU MODE, NO ROOM FOR THIRD AIT, EXIT 06798 .ORG TPP72BF, *B=TOPRG1 06799 MA(TOPRG1), RAM>BR, 06800 JUMP(TPP300); ----- ----- 2BC 000108DF 37000000 ----- 06801 *NO ROOM FOR FOURTH AIT, EXIT 06802 .ORG TPP73, *CASE COUNT=3 06803 *B=TOPRG1 06804 MA(TOPRG1), RAM>BR, 06805 JUMP(TPP300); ----- ----- 67B 000108DF 37000000 ----- 06806 *INIT AITCNT TO COUNT AITS RCVD BEFORE MENU UPDATE 06807 * B=TOPRG1 06808 .ORG TPP300, *Y=BTTUP, A=COUNT 06809 MA(COUNT), RAM>AR, 06810 A(BTTUP), BR>B, AND, 06811 JUMP(TPP301); ----- ----- 8DF 00020907 78100801 ----- 06812 .ORG TPP301, *P=Y=COUNT, BTT JUST UPDATED? 06813 *A=AITCNT 06814 MA(AITCNT), RAM>AR, 06815 AR>A, B(0), OR, 06816 Y>PR, 06817 JZ(TPP302F,TPP302T); ----- ----- 907 000222C6 CC001010 ----- 06818 .ORG TPP302T, *BTT NOT UPDATED 06819 JUMP(PPP100); ----- ----- 2C7 00000623 00000000 ----- 06820 .ORG TPP302F, *BTTUP=0, ANY AITS FOUND? 06821 *B=COUNT 06822 PR>BR, 06823 MA(TOPRG1), 06824 A(>FF-BTTUP), BR>B, AND, 06825 Y>RAM, 06826 JZ(TPP303F,TPP303T); ----- ----- 2C6 004122C8 37EF0901 ----- 06827 *NO AITS FOUND 06828 .ORG TPP303T, *AITCNT=0 06829 MA(AITCNT), 06830 AR.F0>A, B(0), OR, 06831 Y>RAM, 06832 JUMP(PPP100); ----- ----- 2C9 00000623 4C0011D0 ----- 06833 *AITS HAVE BEEN FOUND 06834 .ORG TPP303F, *A=COUNT-1 06835 *B=AITCNT 06836 MA(AITCNT), RAM>BR, 06837 A(-1), BR>B, ADD, 06838 Y>AR, 06839 JUMP(TPP304); ----- ----- 2C8 00230908 4CFF0001 ----- 06840 .ORG TPP304, *AITCNT=COUNT-1 06841 MA(AITCNT), 06842 AR.0F>A, BR.F0>B, OR, 06843 Y>RAM, 06844 JUMP(PPP100); ----- ----- 908 00000623 4C0011C3 ----- 06845 * 06846 *END OF TOP POST PROCESSING 06847 * 06848 *+++LOOK AT INVENTORY COUNT 06849 * 06850 .ORG VPP230T, *A=INVCNT 06851 MA(INVCNT), RAM>AR, 06852 JUMP(VPP231); ----- ----- 27F 00020909 38000000 ----- 06853 .ORG VPP231, *Y=INVENTORY COUNT- 50 06854 AR>>1>A, B(-50), ADD, 06855 JUMP(VPP232); ----- ----- 909 0000090A 00CE00E0 ----- 06856 .ORG VPP232, *INVENTORY COUNT <50? 06857 JN(VPP233F,VPP233T); ----- ----- 90A 000042CA 00000000 ----- 06858 * 06859 * TCJ Jan 94 06860 * Once set, stop the inventory complete flag from being 06861 * reset, and when it is set for the first time, force 06862 * a new row24 to be generated. 06863 * 06864 .ORG VPP233F, *COUNT IS COMPLETE 06865 *SET COMPLETE FLAG, KEEP COUNT AT 50 06866 MA(INVCNT), 06867 Y(101), 06868 Y>RAM, 06869 JUMP(TCJVPP233A); ----- ----- 2CA 0000090B 38651100 ----- 06870 * 06871 .ORG TCJVPP233A, * AR = NMOFF flag 06872 MA(MREG2), RAM>AR, 06873 JUMP(TCJVPP233E); ----- ----- 90B 0002090C 6E000000 ----- 06874 * 06875 .ORG TCJVPP233E, * Y = NMOFF flag 06876 AR>A, B(NMOFF), AND, 06877 JUMP(TCJVPP233G); ----- ----- 90C 0000090D 00040810 ----- 06878 * 06879 .ORG TCJVPP233G, * Is NMOFF set ? 06880 MA(EXPREG),RAM>AR, 06881 JZ(TCJVPP233BF,TCJVPP233BT); ----- ----- 90D 000222CC 63000000 ----- 06882 * 06883 .ORG TCJVPP233BT, * NMOFF is not set, don't update row 24 06884 JUMP(PPP0); ----- ----- 2CD 0000090E 00000000 ----- 06885 * 06886 .ORG TCJVPP233BF, * NMOFF is set, update row 24 06887 MA(EXPREG), 06888 AR>A, B(CGAP), OR, 06889 Y>RAM, 06890 JUMP(TCJVPP233C); ----- ----- 2CC 0000090F 63081110 ----- 06891 * 06892 .ORG TCJVPP233C, 06893 MA(VPPRG1), RAM>AR, 06894 JUMP(TCJVPP233D); ----- ----- 90F 00020910 61000000 ----- 06895 * 06896 .ORG TCJVPP233D, 06897 MA(VPPRG1), 06898 AR>A, B(SBL), OR, 06899 Y>RAM, 06900 JUMP(PPP0); ----- ----- 910 0000090E 61801110 ----- 06901 * 06902 .ORG VPP233T, *COUNT INCOMPLETE 06903 *CLR COMPLETE FLAG 06904 * MA(INVCNT), 06905 * AR>A, B(>FE), AND, 06906 * Y>RAM, 06907 JUMP(PPP0); ----- ----- 2CB 0000090E 00000000 ----- 06908 * 06909 *+++PAGE CAPTURE MODE POST PROCESSING 06910 * 06911 .ORG PPP0, *A=PEN 06912 MA(PEN), RAM>AR, 06913 JUMP(PPP7); ----- ----- 90E 00020911 1B000000 ----- 06914 .ORG PPP7, *B=SYS1 06915 *Y=PEN 06916 MA(SYS1), RAM>BR, 06917 ARHI>A, B(0), OR, 06918 JUMP(PPP8); ----- ----- 911 00010912 08001020 ----- 06919 .ORG PPP8, *INCOMPLETE MAIN PAGE OR SUB-PAGE MODE? 06920 *IF YES, DELAY PCM PROCESSING 06921 A(-3), BRHI>B, ADD, 06922 JZ(PPP9F,PPP9T); ----- ----- 912 000022CE 00FD000C ----- 06923 .ORG PPP9F, *INCOMPLETE MAIN PAGE OR SUB-PAGE MODE 06924 JUMP(PPP100); ----- ----- 2CE 00000623 00000000 ----- 06925 .ORG PPP9T, *Y=FNRM, FAVP MODE? 06926 A(FNRM), BR>B, AND, 06927 JZ(PPP10F,PPP10T); ----- ----- 2CF 000022D0 00040801 ----- 06928 .ORG PPP10T, *FAVP MODE 06929 JUMP(PPP100); ----- ----- 2D1 00000623 00000000 ----- 06930 .ORG PPP10F, *Y=FFLF, NORMAL MODE FORCED? 06931 *A=BTT STORE 06932 MA(STOR1), RAM>AR, 06933 A(FFLF), BR>B, AND, 06934 JZ(PPP11F,PPP11T); ----- ----- 2D0 000222D2 21010801 ----- 06935 .ORG PPP11F, *NORMAL MODE FORCED, SKIP PCM PROCESSING 06936 JUMP(PPP100); ----- ----- 2D2 00000623 00000000 ----- 06937 .ORG PPP11T, *Y=BTTERR 06938 *FLOF MODE FORCED? 06939 *P=POINTER TO BTT LATCH FLAGS 06940 ARHI>A, B(LAF0), ADD, 06941 Y>PR, 06942 JZ(PPP12F,PPP12T); ----- ----- 2D3 000022D4 80400020 ----- 06943 .ORG PPP12F, *FLOF FORCED 06944 *A=VPPRG2 06945 MA(VPPRG2), RAM>AR, 06946 JUMP(PPP22T); ----- ----- 2D4 000202F3 62000000 ----- 06947 * Check if BTT latch is closed (ie TOP flags are valid) and call 06948 * TOP processing if appropriate. 06949 * B=SYS1, P=POINTER TO BTT LAFx 06950 .ORG PPP12T, *A=BTT LAFx 06951 PR>MA, RAM>AR, 06952 JUMP(PPP12A); ----- ----- 2D5 00120913 00000000 ----- 06953 .ORG PPP12A, *Y=OPN, A=TOPRG1 06954 MA(TOPRG1), RAM>AR, 06955 AR>A, B(OPN), AND, 06956 JUMP(PPP12B); ----- ----- 913 00020914 37100810 ----- 06957 .ORG PPP12B, *Y=BTTERR 06958 *LATCH OPEN? 06959 AR>A, B(BTTERR), AND, 06960 JZ(PPP12CF,PPP12CT); ----- ----- 914 000022D6 00800810 ----- 06961 .ORG PPP12CF, *LATCH IS OPEN, DO NOT PROCESS YET 06962 JUMP(PPP14T); ----- ----- 2D6 000002ED 00000000 ----- 06963 .ORG PPP12CT, *LATCH IS CLOSED, BTT ERROR? 06964 *Y=PCM-1 06965 A(-1), BRHI>B, ADD, 06966 JZ(PPP13F,PPP13T); ----- ----- 2D7 000022E4 00FF000C ----- 06967 .ORG PPP13F, *BTT ERROR 06968 JUMP(PPP14T); ----- ----- 2E4 000002ED 00000000 ----- 06969 .ORG PPP13T, *IN TOP MODE? 06970 *Y=BTTP 06971 AR>A, B(BTTP), AND, 06972 JZ(PPP13AF,PPP13AT); ----- ----- 2E5 000022E6 00200810 ----- 06973 *TOP MODE 06974 .ORG PPP13AT, *TOP MODE, BTT PROCESSING TO DO? 06975 JZ(PPP14F,PPP14T); ----- ----- 2E7 000022EC 00000000 ----- 06976 *BTT RECEIVED AND READY TO PROCESS 06977 .ORG PPP14F, *JUMP TO TOP POST PROCESSING 06978 JUMP(TPP0); ----- ----- 2EC 00000622 00000000 ----- 06979 *NOT TOP 06980 .ORG PPP13AF, *Y=FIND 06981 A(FIND), BR>B, AND, 06982 JUMP(PPP15); ----- ----- 2E6 00000915 00080801 ----- 06983 .ORG PPP15, *Y=BTTCAP, FIND? 06984 AR>A, B(BTTCAP), AND, 06985 JZ(PPP15AF,PPP15AT); ----- ----- 915 000022EE 00400810 ----- 06986 .ORG PPP15AT, *FIND=0 06987 JUMP(PPP14T); ----- ----- 2EF 000002ED 00000000 ----- 06988 .ORG PPP15AF, *FIND, BTTCAP? 06989 JZ(PPP16F,PPP16T); ----- ----- 2EE 000022F0 00000000 ----- 06990 .ORG PPP16T, *BTTCAP=0 06991 JUMP(PPP14T); ----- ----- 2F1 000002ED 00000000 ----- 06992 *NOT TOP AND FIND AND A BTT HAS BEEN CAPTURED, SET TOP MODE 06993 .ORG PPP16F, *B=TOPRG1, A=SYS1 06994 MA(TOPRG1), RAM>BR, 06995 A(0), BR>B, OR, 06996 Y>AR, 06997 JUMP(PPP16A); ----- ----- 2F0 00230916 37001001 ----- 06998 .ORG PPP16A, *PCM=1 06999 MA(SYS1), 07000 AR.0F>A, B(>10), OR, 07001 Y>RAM, 07002 JUMP(PPP16B); ----- ----- 916 00000917 081011C0 ----- 07003 * Set BTTUP to ensure that AITs are initialised (parity errors 07004 * can prevent BTTUP from being set even though a BTT with no 07005 * errors has been captured. 07006 .ORG PPP16B, *BTTUP=1 07007 MA(TOPRG1), 07008 A(BTTUP), BR>B, OR, 07009 Y>RAM, 07010 JUMP(PPP17); ----- ----- 917 00000918 37101101 ----- 07011 .ORG PPP17, *CALL INPCM0 07012 *RETURN=2, RETURN TO TPP0 07013 MA(RETURN), 07014 Y(2), 07015 Y>RAM, 07016 JUMP(INPCM0); ----- ----- 918 00000919 7C021100 ----- 07017 * 07018 *NO BTT READY TO PROCESS 07019 * B=SYS1 07020 *ENTRY POINT FROM PPP16T 07021 .ORG PPP14T, *Y=FTOP 07022 A(FTOP), BR>B, AND, 07023 JUMP(PPP21); ----- ----- 2ED 0000091A 00020801 ----- 07024 .ORG PPP21, *FTOP? 07025 *A=VPPRG2 07026 MA(VPPRG2), RAM>AR, 07027 JZ(PPP22F,PPP22T); ----- ----- 91A 000222F2 62000000 ----- 07028 .ORG PPP22F, *FORCE TOP, DO NOT INIT FLOF! 07029 JUMP(PPP100); ----- ----- 2F2 00000623 00000000 ----- 07030 *ENTRY POINT FROM FLOF FORCED 07031 * A=VPPRG2 07032 .ORG PPP22T, *Y=DPC 07033 AR>A, B(DPC), AND, 07034 JUMP(PPP23); ----- ----- 2F3 0000091B 00020810 ----- 07035 .ORG PPP23, *DISPLAY PAGE CAPTURED? 07036 *DPC=0 07037 MA(VPPRG2), 07038 AR>A, B(>FF-DPC), AND, 07039 Y>RAM, 07040 JZ(PPP24F,PPP24T); ----- ----- 91B 000022F4 62FD0910 ----- 07041 .ORG PPP24T, *NO PROCESSING TO DO, EXIT 07042 JUMP(PPP100); ----- ----- 2F5 00000623 00000000 ----- 07043 *UPDATE DPP27 AND DPP24 FLAGS 07044 .ORG PPP24F, *A=STOR0, P=POINTER TO FLOF FLAGS 07045 MA(STOR0), RAM>AR, 07046 Y(-16), 07047 Y>PR, 07048 JUMP(PPP25); ----- ----- 2F4 0002091C A0F01000 ----- 07049 .ORG PPP25, *RWL=LATCH FOR DISPLAY PAGE 07050 MA(RWL), 07051 ARHI>A, B(0), OR, 07052 Y>RAM, Y>IO, 07053 JUMP(PPP26); ----- ----- 91C 0000091D 0B005120 ----- 07054 .ORG PPP26, *TPD=FLOF FLAGS 07055 RVDP, 07056 JUMP(PPP27); ----- ----- 91D 0000091E 00008000 ----- 07057 .ORG PPP27, *A=TPD WITH P24R, P27R, AMD DR24 INVERTED 07058 TPD>A, B(%11001000), XOR, 07059 Y>AR, 07060 JUMP(PPP28); ----- ----- 91E 0022091F 00C81890 ----- 07061 .ORG PPP28, *Y=!P24R+!P27R+!DR24 07062 *A=SYS1 07063 MA(SYS1), RAM>AR, 07064 AR>A, B(%11001000), AND, 07065 JUMP(PPP29); ----- ----- 91F 00020920 08C80810 ----- 07066 .ORG PPP29, *FULL FLOF? 07067 *Y=P27R 07068 *B=FLFREG 07069 MA(FLFREG), RAM>BR, 07070 TPD>A, B(%10000000), AND, 07071 JZ(PPP30F,PPP30T); ----- ----- 920 000122F6 12800890 ----- 07072 .ORG PPP30F, *PACKET 27 FLOF? 07073 *Y=FIND 07074 AR>A, B(FIND), AND, 07075 JZ(PPP31F,PPP31T); ----- ----- 2F6 000022F8 00080810 ----- 07076 *FULL FLOF 07077 .ORG PPP30T, *SET FULFLF, CLEAR P27FLF 07078 MA(FLFREG), 07079 A(FULFLF), BR.0F>B, OR, 07080 Y>RAM, 07081 JUMP(PPP32); ----- ----- 2F7 00000921 12801102 ----- 07082 *PACKET 27 FLOF 07083 .ORG PPP31F, *SET P27FLF, CLEAR FULFLF 07084 MA(FLFREG), 07085 A(P27FLF), BR.0F>B, OR, 07086 Y>RAM, 07087 JUMP(PPP31A); ----- ----- 2F8 00000922 12401102 ----- 07088 .ORG PPP31A, *B=EXPREG 07089 MA(EXPREG), RAM>BR, 07090 JUMP(PPP31B); ----- ----- 922 00010923 63000000 ----- 07091 .ORG PPP31B, *CGAP=CPRF=1 TO GENERATE PAGE NUMBER MENU DISPLAY 07092 MA(EXPREG), 07093 A(CGAP+CPRF), BR>B, OR, 07094 Y>RAM, 07095 JUMP(PPP32); ----- ----- 923 00000921 630C1101 ----- 07096 *INIT FLOF MODE 07097 * A=SYS1 07098 .ORG PPP32, *FIND=0 07099 *B=STSWD0 07100 MA(STSWD0), RAM>BR, 07101 AR>A, B(>FF-FIND), AND, 07102 Y>AR, 07103 JUMP(PPP33); ----- ----- 921 00230924 64F70810 ----- 07104 .ORG PPP33, *PCM=2 07105 MA(SYS1), 07106 AR.0F>A, B(>20), OR, 07107 Y>RAM, 07108 JUMP(PPP34); ----- ----- 924 00000925 082011C0 ----- 07109 .ORG PPP34, *FFLG=1 07110 MA(STSWD0), 07111 A(FFLG), BR>B, OR, 07112 Y>RAM, 07113 JUMP(PPP40); ----- ----- 925 00000926 64201101 ----- 07114 *INIT NORMAL MODE IF FIND=0 (DO NOT OVERRIDE TOP IF FIND=1) 07115 * A=SYS1, B=FLFREG, LAST Y WAS FIND 07116 .ORG PPP31T, *FIND? 07117 JZ(PPP35F,PPP35T); ----- ----- 2F9 000022FA 00000000 ----- 07118 .ORG PPP35F, *FIND=1 07119 JUMP(PPP100); ----- ----- 2FA 00000623 00000000 ----- 07120 .ORG PPP35T, *FIND=0, INIT NORM MODE 07121 *PCM=0 07122 MA(SYS1), 07123 AR.0F>A, B(0), OR, 07124 Y>RAM, 07125 JUMP(PPP40); ----- ----- 2FB 00000926 080011C0 ----- 07126 *INIT NORMAL AND FLOF MERGE HERE 07127 .ORG PPP40, *CALL INPCM0 07128 *RETURN=3, RETURN TO PPP100 07129 MA(RETURN), 07130 Y(3), 07131 Y>RAM, 07132 JUMP(INPCM0); ----- ----- 926 00000919 7C031100 ----- 07133 *+++UPDATE RP24 FLAG (ENABLE OR DISABLE PACKET 24 RECEPTION) 07134 * 07135 .ORG PPP100, *AR=SYS2 07136 MA(SYS2), RAM>AR, 07137 JUMP(PPP181); ----- ----- 623 00020927 09000000 ----- 07138 .ORG PPP181, *Y=APIN 07139 AR>A, B(APIN), AND, 07140 JUMP(PPP182); ----- ----- 927 00000928 00010810 ----- 07141 .ORG PPP182, *APIN? 07142 *Y=R24EN 07143 *B=EXPREG 07144 MA(EXPREG), RAM>BR, 07145 AR>A, B(R24EN), AND, 07146 JZ(PPP183F,PPP183T); ----- ----- 928 000122FC 63800810 ----- 07147 *AUTOMATIC PROMPTS INHIBITED 07148 * A=SYS2 07149 .ORG PPP183F, *R24EN? 07150 *USER SET PACKET 24 RECEPTION? 07151 JZ(PPP184F,PPP184T); ----- ----- 2FC 000022FE 00000000 ----- 07152 .ORG PPP184F, *GO AND ENABLE ROW 24 RECEPTION 07153 JUMP(PPP200T); ----- ----- 2FE 00000307 00000000 ----- 07154 .ORG PPP184T, *NO, RP24=0 07155 MA(SYS2), 07156 AR>A, B(>FF-RP24), AND, 07157 Y>RAM, 07158 JUMP(VPP234); ----- ----- 2FF 00000306 09F70910 ----- 07159 *AUTOMATIC PROMPTS ENABLED 07160 * B=EXPREG 07161 .ORG PPP183T, *Y=USM 07162 *B=SYS1 07163 MA(SYS1), RAM>BR, 07164 A(USM), BR>B, AND, 07165 JUMP(PPP185); ----- ----- 2FD 00010929 08020801 ----- 07166 .ORG PPP185, *Y=PCM-2 07167 *B=FLFREG 07168 MA(FLFREG), RAM>BR, 07169 A(-2), BRHI>B, ADD, 07170 JZ(PPP186F,PPP186T); ----- ----- 929 00012300 12FE000C ----- 07171 .ORG PPP186F, *USER STATUS MODE 07172 *RP24=0 07173 MA(SYS2), 07174 AR>A, B(>FF-RP24), AND, 07175 Y>RAM, 07176 JUMP(VPP234); ----- ----- 300 00000306 09F70910 ----- 07177 .ORG PPP186T, *FLOF MODE? 07178 *Y=FULFLF 07179 *B=PEN 07180 MA(PEN), RAM>BR, 07181 A(FULFLF), BR>B, AND, 07182 JZ(PPP187F,PPP187T); ----- ----- 301 00012302 1B800801 ----- 07183 .ORG PPP187F, *NOT FLOF MODE 07184 *DISABLE ROW 24 COPY 07185 *RP24=0 07186 MA(SYS2), 07187 AR>A, B(>FF-RP24), AND, 07188 Y>RAM, 07189 JUMP(VPP234); ----- ----- 302 00000306 09F70910 ----- 07190 .ORG PPP187T, *FLOF MODE 07191 *FULFLF? 07192 *Y=PEN-4 07193 A(-4), BRHI>B, ADD, 07194 JZ(PPP188F,PPP188T); ----- ----- 303 00002304 00FC000C ----- 07195 .ORG PPP188T, *PACKET 27 FLOF, RP24=0 BECAUSE MENU IS GENERATED 07196 *DISABLE ROW 24 COPY 07197 *RP24=0 07198 MA(SYS2), 07199 AR>A, B(>FF-RP24), AND, 07200 Y>RAM, 07201 JUMP(VPP234); ----- ----- 305 00000306 09F70910 ----- 07202 .ORG PPP188F, *FULL FLOF, SUB-PAGE MODE? 07203 *IF YES, DISABLE ROW 24 COPY 07204 *RP24=0 07205 MA(SYS2), 07206 AR>A, B(>FF-RP24), AND, 07207 Y>RAM, 07208 JN(VPP234,PPP200T); ----- ----- 304 00004306 09F70910 ----- 07209 *ENABLE PACKET 24 COPY 07210 * A=SYS2 07211 .ORG PPP200T, *Y=RP24 07212 AR>A, B(RP24), AND, 07213 JUMP(PPP201); ----- ----- 307 0000092A 00080810 ----- 07214 .ORG PPP201, *WAS IT ZERO? 07215 *B=EXPREG 07216 MA(EXPREG), RAM>BR, 07217 JZ(PPP202F,PPP202T); ----- ----- 92A 00012308 63000000 ----- 07218 .ORG PPP202F, *ALREADY SET, RESTORE IT 07219 *RP24=1 07220 MA(SYS2), 07221 AR>A, B(RP24), OR, 07222 Y>RAM, 07223 JUMP(VPP234); ----- ----- 308 00000306 09081110 ----- 07224 .ORG PPP202T, *YES, COPY IT TO DISPLAY PAGE IF R24RTC=1 07225 *RP24=1, CPYR24=1 07226 MA(SYS2), 07227 AR>A, B(RP24+CPYR24), OR, 07228 Y>RAM, 07229 JUMP(PPP204); ----- ----- 309 0000092B 090C1110 ----- 07230 .ORG PPP204, *CLEAR ROW 24 FIRST 07231 *CGAP=1, CPRF=1 07232 MA(EXPREG), 07233 A(CGAP+CPRF), BR>B, OR, 07234 Y>RAM, 07235 JUMP(VPP234); ----- ----- 92B 00000306 630C1101 ----- 07236 * 07237 *+++DO VBI POST PROCESSING POINTED TO BY VPPRG1 FLAGS 07238 * 07239 *PMPN: PROCESS NEW PAGE NUMBER 07240 .ORG VPP234, *MOVE DPM/T/U TO PM/T/U FOR PIL AND SST ROUTINES 07241 *CALL DPTP0 07242 *AR=0, RETURN TO VPP250Y 07243 Y(0), 07244 Y>AR, 07245 JUMP(DPTP0); ----- ----- 306 0022092C 00001000 ----- 07246 *UPDATE OLDSTR SO WE CAN SORT OUT ROW 24 AFTER THE LATCHES HAVE BEEN 07247 *SHUFFLED 07248 .ORG VPP250Y, *A=ROTATE 07249 MA(ROTATE), RAM>AR, 07250 JUMP(VPP250A); ----- ----- 3F0 0002092D 15000000 ----- 07251 .ORG VPP250A, *B=STOR7 07252 *NBY=1 07253 MA(STOR7), RAM>BR, 07254 AR>A, B(NBY), OR, 07255 Y>AR, 07256 JUMP(VPP250B); ----- ----- 92D 0023092E 27201010 ----- 07257 .ORG VPP250B, *ROTT=0 07258 MA(ROTATE), 07259 AR>A, B(>FF-ROTT), AND, 07260 Y>RAM, 07261 JUMP(VPP250C); ----- ----- 92E 0000092F 15EF0910 ----- 07262 .ORG VPP250C, *A=STOR0 07263 MA(STOR0), RAM>AR, 07264 JUMP(VPP250D); ----- ----- 92F 00020930 20000000 ----- 07265 .ORG VPP250D, *UPDATE OLDSTR 07266 MA(OLDSTR), 07267 AR.F0>A, BRHI>B, OR, 07268 Y>RAM, 07269 JUMP(VPP250E); ----- ----- 930 00000931 710011DC ----- 07270 .ORG VPP250E, *AR=VPPRG1 07271 MA(VPPRG1), RAM>AR, 07272 JUMP(VPP251); ----- ----- 931 00020932 61000000 ----- 07273 .ORG VPP251, *Y=PMPN 07274 AR>A, B(PMPN), AND, 07275 JUMP(VPP251A); ----- ----- 932 00000933 00200810 ----- 07276 .ORG VPP251A, *PMPN=0, PMPN? 07277 *AR=VPPRG1 07278 MA(VPPRG1), 07279 AR>A, B(>FF-PMPN), AND, 07280 Y>RAM, Y>AR, 07281 JZ(VPP252F,VPP252T); ----- ----- 933 0022230A 61DF0910 ----- 07282 *PMPN=0 07283 .ORG VPP252T, * 07284 JUMP(VPP300); ----- ----- 30B 00000934 00000000 ----- 07285 *PMPN=1 07286 *INITIALISE BROWSE? 07287 .ORG VPP252F, *Y=SLFB 07288 *BR=DHREG 07289 MA(DHREG), RAM>BR, 07290 AR>A, B(SLFB), AND, 07291 JUMP(VPP253B); ----- ----- 30A 00010935 32400810 ----- 07292 .ORG VPP253B, *SLFB? SLFB=0 07293 MA(VPPRG1), 07294 AR>A, B(>FF-SLFB), AND, 07295 Y>RAM, 07296 JZ(VPP253CF,VPP253CT); ----- ----- 935 0000230C 61BF0910 ----- 07297 *INITIALISE BROWSE 07298 .ORG VPP253CF, *BWSE=1 07299 MA(DHREG), 07300 A(BWSE), BR>B, OR, 07301 Y>RAM, 07302 JUMP(VPP256F); ----- ----- 30C 0000030E 32011101 ----- 07303 *NO BROWSE 07304 .ORG VPP253CT, *TEST IF PAGE IN A LATCH 07305 *CALL PIL 07306 *RETURN=1, RETURN TO VPP254 07307 MA(RETURN), 07308 Y(1), 07309 Y>RAM, 07310 JUMP(PIL0); ----- ----- 30D 00000936 7C011100 ----- 07311 *AR=RETURN DATA FROM PIL 07312 .ORG VPP254, *Y=PAGE NOT IN LATCH FLAG 07313 AR>A, B(>08), AND, 07314 JUMP(VPP255); ----- ----- 291 00000937 00080810 ----- 07315 .ORG VPP255, *PAGE IN A LATCH? 07316 *Y=CAP FLAG 07317 AR>A, B(CAP), AND, 07318 JZ(VPP256F,VPP256T); ----- ----- 937 0000230E 00800810 ----- 07319 .ORG VPP256T, *PAGE IN A LATCH 07320 *HAS IT BEEN CAPTURED? 07321 *BR=DHREG 07322 MA(DHREG), RAM>BR, 07323 JZ(VPP257F,VPP257T); ----- ----- 30F 00012310 32000000 ----- 07324 *PAGE IN A LATCH AND CAPTURED, GO AND SORT ALL LATCHES TO DISPLAY IT 07325 .ORG VPP257F, *STOP ROLLING THE HEADER 07326 MA(DHREG), 07327 A(NRH), BR>B, OR, 07328 Y>RAM, 07329 JUMP(VPP258); ----- ----- 310 00000938 32101101 ----- 07330 .ORG VPP258, *AR=VPPRG1 07331 MA(VPPRG1), RAM>AR, 07332 JUMP(VPP259); ----- ----- 938 00020939 61000000 ----- 07333 .ORG VPP259, *SBL=0 07334 MA(VPPRG1), 07335 AR>A, B(>FF-SBL), AND, 07336 Y>RAM, 07337 JUMP(VPP259A); ----- ----- 939 0000093A 617F0910 ----- 07338 .ORG VPP259A, *A=VPPRG2 07339 MA(VPPRG2), RAM>AR, 07340 JUMP(VPP259B); ----- ----- 93A 0002093B 62000000 ----- 07341 .ORG VPP259B, *SET DPC TO INIT FLOF/NORM IN PPP100 IF NECESSARY 07342 *SET DPFC TO CAUSE A TOD ON BOXED PAGES 07343 MA(VPPRG2), 07344 AR>A, B(DPC+DPFC), OR, 07345 Y>RAM, 07346 JUMP(VPP259C); ----- ----- 93B 0000093C 62121110 ----- 07347 .ORG VPP259C, *A=VDPTXT 07348 MA(VDPTXT), RAM>AR, 07349 JUMP(VPP259D); ----- ----- 93C 0002093D 2B000000 ----- 07350 .ORG VPP259D, *CLEAR URVL 07351 MA(VDPTXT), 07352 AR>A, B(>FF-URVL), AND, 07353 Y>RAM, 07354 JUMP(VPP259E); ----- ----- 93D 0000093E 2BF70910 ----- 07355 .ORG VPP259E, *A=SYS2 07356 MA(SYS2), RAM>AR, 07357 JUMP(VPP259G); ----- ----- 93E 0002093F 09000000 ----- 07358 .ORG VPP259G, *R24RTC=0 07359 MA(SYS2), 07360 AR>A, B(>FF-R24RTC), AND, 07361 Y>AR, 07362 JUMP(VPP259H); ----- ----- 93F 00220940 09FD0810 ----- 07363 .ORG VPP259H, *RP24=1 FOR PPP100 CODE 07364 MA(SYS2), 07365 AR>A, B(RP24), OR, 07366 Y>RAM, 07367 JUMP(VPP259J); ----- ----- 940 00000941 09081110 ----- 07368 *INIT PDC REGISTERS 07369 .ORG VPP259J, *PDCRG1=0 07370 MA(PDCRG1), 07371 Y(0), 07372 Y>RAM, 07373 JUMP(VPP259K); ----- ----- 941 00000942 6C001100 ----- 07374 .ORG VPP259K, *PDCRG2=0 07375 MA(PDCRG2), 07376 Y(0), 07377 Y>RAM, 07378 JUMP(SST0A); ----- ----- 942 00000943 6D001100 ----- 07379 *PAGE NOT IN A LATCH 07380 *ENTRY POINT FROM BROWSE INIT 07381 *ENTRY POINT FROM PAGE IN A LATCH BUT NOT CAPTURED 07382 .ORG VPP256F, *AR=STOR0 07383 MA(STOR0), RAM>AR, 07384 JUMP(VPP260); ----- ----- 30E 00020944 20000000 ----- 07385 .ORG VPP260, *STORE=0 07386 *(I/P PAR FOR INLA0) 07387 MA(STORE), 07388 Y(0), 07389 Y>RAM, 07390 JUMP(VPP261); ----- ----- 944 00000945 77001100 ----- 07391 .ORG VPP261, *AR=LATCH FOR INIT 07392 *(I/P PAR FOR INLA0) 07393 ARHI>A, B(7), AND, 07394 Y>AR, 07395 JUMP(VPP262); ----- ----- 945 00220946 00070820 ----- 07396 .ORG VPP262, *INITILAISE STORE 0 07397 *CALL INLA0 07398 *RETURN=1, RETURN TO VPP263 07399 MA(RETURN), 07400 Y(1), 07401 Y>RAM, 07402 JUMP(INLA0); ----- ----- 946 00000947 7C011100 ----- 07403 .ORG VPP263, *BR=DHREG 07404 MA(DHREG), RAM>BR, 07405 JUMP(VPP263A); ----- ----- 299 00010948 32000000 ----- 07406 .ORG VPP263A, *ROLL THE HEADER 07407 *NRH=0 07408 MA(DHREG), 07409 A(>FF-NRH), BR>B, AND, 07410 Y>RAM, 07411 JUMP(VPP263B); ----- ----- 948 00000949 32EF0901 ----- 07412 .ORG VPP263B, *BR=SYS1 07413 MA(SYS1), RAM>BR, 07414 JUMP(VPP264); ----- ----- 949 0001094A 08000000 ----- 07415 .ORG VPP264, *Y=PCM-2 07416 A(-2), BRHI>B, ADD, 07417 JUMP(VPP265); ----- ----- 94A 0000094B 00FE000C ----- 07418 .ORG VPP265, *FLOF MODE? 07419 *AR=VPPRG1 07420 MA(VPPRG1), RAM>AR, 07421 JZ(VPP266F,VPP266T); ----- ----- 94B 00022312 61000000 ----- 07422 .ORG VPP266F, *NOT FLOF, SORT BACKGROUND LATCHES NOW 07423 *SBL=1 07424 MA(VPPRG1), 07425 AR>A, B(SBL), OR, 07426 Y>RAM, 07427 JUMP(VPP290); ----- ----- 312 000003A1 61801110 ----- 07428 .ORG VPP266T, *FLOF, SORT BACKGROUND WHEN DISPLAY PAGE RCVD 07429 JUMP(VPP290); ----- ----- 313 000003A1 00000000 ----- 07430 *PAGE NOT CAPTURED BUT IN A LATCH 07431 * AR=RETURN DATA FROM PIL 07432 .ORG VPP257T, *PR=INDEX TO MAG OF LATCH OF THIS PAGE 07433 *CAP=0 SO NO NEED TO MASK 07434 AR.0F>A, B(M0), ADD, 07435 Y>PR, 07436 JUMP(VPP270); ----- ----- 311 0000094C 801000C0 ----- 07437 .ORG VPP270, *BR=Mx 07438 PR>MA, RAM>BR, 07439 JUMP(VPP271); ----- ----- 94C 0011094D 00000000 ----- 07440 .ORG VPP271, *PUT NULL VALUE IN LATCH 07441 PR>MA, 07442 A(>0F), BR.F0>B, OR, 07443 Y>RAM, Y>IO, 07444 JUMP(VPP256F); ----- ----- 94D 0010030E 000F5103 ----- 07445 *COMMON EXIT FROM PMPN ROUTINE 07446 .ORG VPP290, *AR=VPPRG1 07447 MA(VPPRG1), RAM>AR, 07448 JUMP(VPP291); ----- ----- 3A1 0002094E 61000000 ----- 07449 .ORG VPP291, *CSVDP=1 07450 MA(VPPRG1), 07451 AR>A, B(CSVDP), OR, 07452 Y>RAM, Y>AR, 07453 JUMP(VPP300); ----- ----- 94E 00220934 61101110 ----- 07454 *NEED TO SORT BACKGROUND LATCHES? 07455 * AR=VPPRG1 07456 .ORG VPP300, *Y=SBL 07457 *B=PEN 07458 MA(PEN), RAM>BR, 07459 AR>A, B(SBL), AND, 07460 JUMP(VPP301); ----- ----- 934 0001094F 1B800810 ----- 07461 .ORG VPP301, * SBL? 07462 *Y=PEN-4 07463 A(-4), BRHI>B, ADD, 07464 JZ(VPP302F,VPP310); ----- ----- 94F 00002314 00FC000C ----- 07465 .ORG VPP302F, *SBL, SUB-PAGE MODE? 07466 *IF NO, CALL SST0B TO SORT BACKGROUND LATCHES 07467 *RETURNS TO VPP310 07468 JN(VPP303F,SST0B); ----- ----- 314 00004316 00000000 ----- 07469 .ORG VPP303F, *SUB-PAGE MODE, INHIBIT LATCH SORT 07470 JUMP(VPP310); ----- ----- 316 00000315 00000000 ----- 07471 * AR=VPPRG1 07472 .ORG VPP310, *Y=HOSP+PCSP+SPIN 07473 AR>A, B(HOSP+PCSP+SPIN), AND, 07474 JUMP(VPP311); ----- ----- 315 00000950 00070810 ----- 07475 .ORG VPP311, *SUB-PAGE LATCH MANAGEMENT TO DO? 07476 *IF YES, CALL FSP0T 07477 *RETURN=0, RETURN TO SPLM0.0 -> VPP330T 07478 MA(RETURN), 07479 Y(0), 07480 Y>RAM, 07481 JZ(FSP0F,VPP330T); ----- ----- 950 00002318 7C001100 ----- 07482 * 07483 *+++ SUB-PAGE LATCH MANAGEMENT 07484 * PM= STOR0 SP LATCH, PT= STOR4 SP LATCH, PU= STOR5 SP LATCH 07485 * A=VPPRG1 07486 .ORG SPLM0.0, *Y=HOSP+SPIN 07487 *B=STOR0 07488 MA(STOR0), RAM>BR, 07489 AR>A, B(HOSP+SPIN), AND, 07490 JUMP(SPLM10); ----- ----- 430 00010951 20050810 ----- 07491 .ORG SPLM10, *INIT ALL SP LATCHES? 07492 *A= POINTER TO STORE 5 SUB-PAGE LATCH 07493 MA(PU), RAM>AR, 07494 JZ(SPLM100F,SPLM20T); ----- ----- 951 0002231A 76000000 ----- 07495 *ROUTINE TO SEE IF SUB-PAGE CAPTURED 07496 *IS USP IN STORE 5? 07497 * A= POINTER TO STORE 5 SUB-PAGE LATCH 07498 .ORG SPLM20T, *PCSP=1 07499 *CALL CSP0 TO COMPARE USP 07500 *RETURN=0, RETURN TO SPLM22Y 07501 MA(RETURN), 07502 Y(0), 07503 Y>RAM, 07504 JUMP(CSP0); ----- ----- 31B 00000952 7C001100 ----- 07505 * LAST Y WAS COMPARE TRUE FLAG 07506 .ORG SPLM22Y, *B=STOR5 07507 MA(STOR5), RAM>BR, 07508 JZ(SPLM23F,SPLM23T); ----- ----- 2C0 0001231C 25000000 ----- 07509 .ORG SPLM23T, *USP NOT IN STORE 5 07510 JUMP(SPLM40T); ----- ----- 31D 0000031F 00000000 ----- 07511 .ORG SPLM23F, *USP IS IN STORE 5 07512 *P=LAFx POINTER FOR STORE 5 07513 A(LAF0), BRHI>B, ADD, 07514 Y>PR, 07515 JUMP(SPLM24); ----- ----- 31C 00000953 8040000C ----- 07516 .ORG SPLM24, *B=LAFx FOR STORE 5 07517 PR>MA, RAM>BR, 07518 JUMP(SPLM25); ----- ----- 953 00110954 00000000 ----- 07519 .ORG SPLM25, *Y=CAP 07520 *A=STOR0 07521 MA(STOR0), RAM>AR, 07522 A(CAP), BR>B, AND, 07523 JUMP(SPLM26); ----- ----- 954 00020955 20800801 ----- 07524 .ORG SPLM26, *HAS IT BEEN CAPTURED? 07525 *B=STOR5 07526 MA(STOR5), RAM>BR, 07527 JZ(SPLM27F,SPLM40T); ----- ----- 955 0001231E 25000000 ----- 07528 .ORG SPLM27F, *USP IS IN STORE 5 07529 *PUT STOR0 IN STOR5 07530 MA(STOR5), 07531 AR.F0>A, BR.0F>B, OR, 07532 Y>RAM, 07533 JUMP(SPLM28); ----- ----- 31E 00000956 250011D2 ----- 07534 .ORG SPLM28, *PUT STOR5 IN STOR0 07535 MA(STOR0), 07536 AR.0F>A, BR.F0>B, OR, 07537 Y>RAM, 07538 JUMP(SPLM30); ----- ----- 956 00000957 200011C3 ----- 07539 .ORG SPLM30, *A=PM 07540 MA(PM), RAM>AR, 07541 JUMP(SPLM31); ----- ----- 957 00020958 74000000 ----- 07542 .ORG SPLM31, *PU MUST POINT TO LATCH FOR NEW STORE 5 07543 *FOR SPLM300 CODE 07544 *EXIT TO INIT STORE 4 AND STORE 5 07545 MA(PU), 07546 AR>A, B(0), OR, 07547 Y>RAM, 07548 JUMP(SPLM32); ----- ----- 958 00000959 76001110 ----- 07549 .ORG SPLM32, *A=DHREG 07550 MA(DHREG), RAM>AR, 07551 JUMP(SPLM33); ----- ----- 959 0002095A 32000000 ----- 07552 .ORG SPLM33, *NRH=1 07553 MA(DHREG), 07554 AR>A, B(NRH), OR, 07555 Y>RAM, 07556 JUMP(SPLM34); ----- ----- 95A 0000095B 32101110 ----- 07557 .ORG SPLM34, *A=VDPTXT 07558 MA(VDPTXT), RAM>AR, 07559 JUMP(SPLM35); ----- ----- 95B 0002095C 2B000000 ----- 07560 .ORG SPLM35, *CLEAR URVL 07561 MA(VDPTXT), 07562 AR>A, B(>FF-URVL), AND, 07563 Y>RAM, 07564 JUMP(SPLM200T); ----- ----- 95C 00000327 2BF70910 ----- 07565 *IS USP IN STORE 4? 07566 .ORG SPLM40T, *A= POINTER TO STORE 4 SUB-PAGE LATCH 07567 MA(PT), RAM>AR, 07568 JUMP(SPLM41); ----- ----- 31F 0002095D 75000000 ----- 07569 .ORG SPLM41, *CALL CSP0 TO COMPARE USP 07570 *RETURN=1, RETURN TO SPLM42 07571 MA(RETURN), 07572 Y(1), 07573 Y>RAM, 07574 JUMP(CSP0); ----- ----- 95D 00000952 7C011100 ----- 07575 * LAST Y WAS COMPARE TRUE FLAG 07576 .ORG SPLM42, *B=STOR4 07577 MA(STOR4), RAM>BR, 07578 JZ(SPLM43F,SPLM43T); ----- ----- 2C1 00012320 24000000 ----- 07579 .ORG SPLM43T, *USP NOT IN STORE 4 07580 JUMP(SPLM60T); ----- ----- 321 00000323 00000000 ----- 07581 .ORG SPLM43F, *USP IS IN STORE 4 07582 *P=LAFx POINTER FOR STORE 4 07583 *A=STOR0 07584 MA(STOR0), RAM>AR, 07585 A(LAF0), BRHI>B, ADD, 07586 Y>PR, 07587 JUMP(SPLM44); ----- ----- 320 0002095E A040000C ----- 07588 .ORG SPLM44, *B=LAFx FOR STORE 4 07589 *PR=STOR0 07590 PR>MA, RAM>BR, 07591 AR>A, B(0), OR, 07592 Y>PR, 07593 JUMP(SPLM45); ----- ----- 95E 0011095F 80001010 ----- 07594 .ORG SPLM45, *Y=CAP 07595 *B=STOR4 07596 MA(STOR4), RAM>BR, 07597 A(CAP), BR>B, AND, 07598 JUMP(SPLM46); ----- ----- 95F 00010960 24800801 ----- 07599 .ORG SPLM46, *HAS IT BEEN CAPTURED? 07600 JZ(SPLM47F,SPLM60T); ----- ----- 960 00002322 00000000 ----- 07601 *USP IS IN STORE 5, SHUFFLE STORES 07602 * A=P=STOR0, B=STOR4, 07603 .ORG SPLM47F, *STOR4->STOR0 07604 MA(STOR0), 07605 AR.0F>A, BR.F0>B, OR, 07606 Y>RAM, 07607 JUMP(SPLM48); ----- ----- 322 00000961 200011C3 ----- 07608 .ORG SPLM48, *A=STOR5 07609 MA(STOR5), RAM>AR, 07610 JUMP(SPLM49); ----- ----- 961 00020962 25000000 ----- 07611 .ORG SPLM49, *STOR5->STOR4 07612 *B=STOR0 07613 PR>BR, 07614 MA(STOR4), 07615 AR.F0>A, BR.0F>B, OR, 07616 Y>RAM, 07617 JUMP(SPLM50); ----- ----- 962 00410963 240011D2 ----- 07618 .ORG SPLM50, *STOR0->STOR5 07619 MA(STOR5), 07620 AR.0F>A, BR.F0>B, OR, 07621 Y>RAM, 07622 JUMP(SPLM51); ----- ----- 963 00000964 250011C3 ----- 07623 .ORG SPLM51, *A=PU 07624 MA(PU), RAM>AR, 07625 JUMP(SPLM52); ----- ----- 964 00020965 76000000 ----- 07626 .ORG SPLM52, *PT MUST POINT TO LATCH FOR NEW STORE 4 07627 *FOR SPLM200T CODE 07628 MA(PT), 07629 AR>A, B(0), OR, 07630 Y>RAM, 07631 JUMP(SPLM53); ----- ----- 965 00000966 75001110 ----- 07632 .ORG SPLM53, *A=PM 07633 MA(PM), RAM>AR, 07634 JUMP(SPLM54); ----- ----- 966 00020967 74000000 ----- 07635 .ORG SPLM54, *PU MUST POINT TO LATCH FOR NEW STORE 5 07636 *FOR SPLM300 CODE 07637 MA(PU), 07638 AR>A, B(0), OR, 07639 Y>RAM, 07640 JUMP(SPLM55); ----- ----- 967 00000968 76001110 ----- 07641 .ORG SPLM55, *A=DHREG 07642 MA(DHREG), RAM>AR, 07643 JUMP(SPLM56); ----- ----- 968 00020969 32000000 ----- 07644 .ORG SPLM56, *NRH=1 07645 MA(DHREG), 07646 AR>A, B(NRH), OR, 07647 Y>RAM, 07648 JUMP(SPLM57); ----- ----- 969 0000096A 32101110 ----- 07649 .ORG SPLM57, *A=VDPTXT 07650 MA(VDPTXT), RAM>AR, 07651 JUMP(SPLM58); ----- ----- 96A 0002096B 2B000000 ----- 07652 .ORG SPLM58, *CLEAR URVL 07653 MA(VDPTXT), 07654 AR>A, B(>FF-URVL), AND, 07655 Y>RAM, 07656 JUMP(SPLM300); ----- ----- 96B 00000442 2BF70910 ----- 07657 *USP IS NOT HAS NOT BEEN CAPTURED IN STORE 4 OR 5 07658 .ORG SPLM60T, *GO AND INIT ALL SUB-PAGE LATCHES 07659 *B= STOR0 07660 MA(STOR0), RAM>BR, 07661 JUMP(SPLM100F); ----- ----- 323 0001031A 20000000 ----- 07662 *ENTRY POINT TO INIT ALL SUB-PAGE LATCHES 07663 *INIT STORE 0 SP LATCH 07664 * B= STOR0 07665 .ORG SPLM100F, *P= POINTER TO STORE 0 LAFx 07666 *B= POINTER TO SP LATCH FOR STORE 0 07667 MA(PM), RAM>BR, 07668 A(LAF0), BRHI>B, ADD, 07669 Y>PR, 07670 JUMP(SPLM100A); ----- ----- 31A 0001096C F440000C ----- 07671 .ORG SPLM100A, *CLEAR LAFx FOR STORE 0 07672 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 07673 PR>MA, 07674 Y(0), 07675 Y>RAM, 07676 JUMP(SPLM100B); ----- ----- 96C 0010096D 00001100 ----- 07677 * B= PM 07678 .ORG SPLM100B, *RET2= POINTER TO SOURCE 07679 MA(RET2), 07680 Y(USPI-1), 07681 Y>RAM, 07682 JUMP(SPLM101); ----- ----- 96D 0000096E 7B571100 ----- 07683 .ORG SPLM101, *RET3= POINTER TO DEST 07684 MA(RET3), 07685 A(0), BR>B, OR, 07686 Y>RAM, 07687 JUMP(SPLM102); ----- ----- 96E 0000096F 7A001101 ----- 07688 .ORG SPLM102, *RET4= ZERO OFFSET TO COPY WITHOUT ADDING 07689 MA(RET4), 07690 Y(0), 07691 Y>RAM, 07692 JUMP(SPLM103); ----- ----- 96F 00000970 79001100 ----- 07693 .ORG SPLM103, *CALL DISP0 TO COPY USP0 TO SP LATCH FOR STORE 0 07694 *RETURN=1, RETURN TO SPLM110 07695 MA(RETURN), 07696 Y(1), 07697 Y>RAM, 07698 JUMP(DISP0); ----- ----- 970 00000971 7C011100 ----- 07699 * B=VPPRG1 07700 .ORG SPLM110, *Y=HOSP+SPIN 07701 *A= POINTER TO STORE 0 SUB-PAGE LATCH 07702 MA(PM), RAM>AR, 07703 A(HOSP+SPIN), BR>B, AND, 07704 JUMP(SPLM111); ----- ----- 441 00020972 74050801 ----- 07705 .ORG SPLM111, *P= POINTER TO STORE 0 SUB-PAGE LATCH THOUSANDS 07706 *HOSP OR SPIN? 07707 *A=DHREG 07708 MA(DHREG), RAM>AR, 07709 AR>A, B(4), ADD, 07710 Y>PR, 07711 JZ(SPLM112F,SPLM112T); ----- ----- 972 00022324 B2040010 ----- 07712 .ORG SPLM112T, *DO NOT NULLIFY LATCH 07713 JUMP(SPLM200T); ----- ----- 325 00000327 00000000 ----- 07714 *NULLIFY SUB-PAGE LATCH (DO NOT RECEIVE DISPLAY PAGE) 07715 .ORG SPLM112F, *NRH=1 (STOP THE HEADER ROLLING) 07716 MA(DHREG), 07717 AR>A, B(NRH), OR, 07718 Y>RAM, 07719 JUMP(SPLM112A); ----- ----- 324 00000973 32101110 ----- 07720 .ORG SPLM112A, *A=SPxM, Y=HOSP 07721 PR>MA, RAM>AR, 07722 A(HOSP), BR>B, AND, 07723 JUMP(SPLM120); ----- ----- 973 00120974 00040801 ----- 07724 .ORG SPLM120, *NULLIFY LATCH 07725 *HOSP? 07726 PR>MA, 07727 AR.0F>A, B(>F0), OR, 07728 Y>RAM, 07729 JZ(SPLM121F,SPLM200T); ----- ----- 974 00102326 00F011C0 ----- 07730 .ORG SPLM121F, *INCOMPLETE SUB-PAGE, LEAVE OTHER LATCHES 07731 JUMP(SPLM400); ----- ----- 326 00000443 00000000 ----- 07732 *INIT STORE 4 SP LATCH 07733 * 07734 * TCJ Jan 93 07735 * If we are in the force capture subpage mode we need 07736 * to leave any page we have already captured in the store. So all 07737 * we need todo is to set CLR, clear VBICAP+OPN+MPG+BTTL+AITL 07738 * and leave CAP as it is. 07739 * 07740 .ORG SPLM200T, * BR = MREG2 for SPALT flag 07741 MA(MREG2), RAM>BR, 07742 JUMP(TCJSPLM01); ----- ----- 327 00010975 6E000000 ----- 07743 * 07744 .ORG TCJSPLM01, * Y = SPALT set ? 07745 MA(STOR4), RAM>BR, 07746 A(SPALT), BR>B, AND, 07747 JUMP(TCJSPLM02); ----- ----- 975 00010976 24010801 ----- 07748 * 07749 .ORG TCJSPLM02, *P= POINTER TO STORE 4 LAFx 07750 *B= POINTER TO SP LATCH FOR STORE 4 07751 MA(PT), RAM>BR, 07752 A(LAF0), BRHI>B, ADD, 07753 Y>PR, 07754 JZ(TCJSPLM03F,TCJSPLM03T); ----- ----- 976 00012328 F540000C ----- 07755 * 07756 .ORG TCJSPLM03F,* Fetch the page flag for this store 07757 PR>MA, RAM>AR, 07758 JUMP(TCJSPLM04); ----- ----- 328 00120977 00000000 ----- 07759 * 07760 .ORG TCJSPLM04, * Leave only the CAP flag 07761 AR>A, B(CAP), AND, 07762 Y>AR, 07763 JUMP(TCJSPLM05); ----- ----- 977 00220978 00800810 ----- 07764 * 07765 .ORG TCJSPLM05, * Set CLR to force page clear 07766 PR>MA, 07767 AR>A, B(CLR), OR, 07768 Y>RAM, 07769 JUMP(SPLM300); ----- ----- 978 00100442 00201110 ----- 07770 * 07771 .ORG TCJSPLM03T,*CLEAR LAFx FOR STORE 4 07772 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 07773 PR>MA, 07774 Y(0), 07775 Y>RAM, 07776 JUMP(SPLM200C); ----- ----- 329 00100979 00001100 ----- 07777 * 07778 .ORG SPLM200C, *RET2= POINTER TO SOURCE 07779 MA(RET2), 07780 Y(USPI-1), 07781 Y>RAM, 07782 JUMP(SPLM201); ----- ----- 979 0000097A 7B571100 ----- 07783 .ORG SPLM201, *RET3= POINTER TO DEST 07784 MA(RET3), 07785 A(0), BR>B, OR, 07786 Y>RAM, 07787 JUMP(SPLM202); ----- ----- 97A 0000097B 7A001101 ----- 07788 .ORG SPLM202, *RET4= OFFSET TO INCREMENT USP 07789 MA(RET4), 07790 Y(1), 07791 Y>RAM, 07792 JUMP(SPLM203); ----- ----- 97B 0000097C 79011100 ----- 07793 .ORG SPLM203, *CALL DISP0 TO COPY USP0+1 TO SP LATCH FOR STORE 4 07794 *RETURN=2, RETURN TO SPLM300 07795 MA(RETURN), 07796 Y(2), 07797 Y>RAM, 07798 JUMP(DISP0); ----- ----- 97C 00000971 7C021100 ----- 07799 *INIT STORE 5 SP LATCH 07800 .ORG SPLM300, * BR = MREG2 for SPALT flag 07801 MA(MREG2), RAM>BR, 07802 JUMP(TCJSPLM11); ----- ----- 442 0001097D 6E000000 ----- 07803 * 07804 .ORG TCJSPLM11, * Y = SPALT set ? 07805 MA(STOR5), RAM>BR, 07806 A(SPALT), BR>B, AND, 07807 JUMP(TCJSPLM12); ----- ----- 97D 0001097E 25010801 ----- 07808 * 07809 .ORG TCJSPLM12, *P= POINTER TO STORE 5 LAFx 07810 *B= POINTER TO SP LATCH FOR STORE 5 07811 MA(PU), RAM>BR, 07812 A(LAF0), BRHI>B, ADD, 07813 Y>PR, 07814 JZ(TCJSPLM13F,TCJSPLM13T); ----- ----- 97E 0001232A F640000C ----- 07815 * 07816 .ORG TCJSPLM13F,* Fetch the page flag for this store 07817 PR>MA, RAM>AR, 07818 JUMP(TCJSPLM14); ----- ----- 32A 0012097F 00000000 ----- 07819 * 07820 .ORG TCJSPLM14, * Leave only the CAP flag 07821 AR>A, B(CAP), AND, 07822 Y>AR, 07823 JUMP(TCJSPLM15); ----- ----- 97F 00220980 00800810 ----- 07824 * 07825 .ORG TCJSPLM15, * Set CLR to force page clear 07826 PR>MA, 07827 AR>A, B(CLR), OR, 07828 Y>RAM, 07829 JUMP(SPLM400); ----- ----- 980 00100443 00201110 ----- 07830 * 07831 .ORG TCJSPLM13T,*CLEAR LAFx FOR STORE 4 07832 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 07833 PR>MA, 07834 Y(0), 07835 Y>RAM, 07836 JUMP(SPLM300C); ----- ----- 32B 00100981 00001100 ----- 07837 .ORG SPLM300C, *A= POINTER TO SP LATCH FOR STORE 4 07838 MA(PT), RAM>AR, 07839 JUMP(SPLM300D); ----- ----- 981 00020982 75000000 ----- 07840 .ORG SPLM300D, *RET2= POINTER TO SOURCE 07841 MA(RET2), 07842 AR>A, B(0), OR, 07843 Y>RAM, 07844 JUMP(SPLM301); ----- ----- 982 00000983 7B001110 ----- 07845 .ORG SPLM301, *RET3= POINTER TO DEST 07846 MA(RET3), 07847 A(0), BR>B, OR, 07848 Y>RAM, 07849 JUMP(SPLM302); ----- ----- 983 00000984 7A001101 ----- 07850 .ORG SPLM302, *RET4= OFFSET TO INCREMENT USP 07851 MA(RET4), 07852 Y(1), 07853 Y>RAM, 07854 JUMP(SPLM303); ----- ----- 984 00000985 79011100 ----- 07855 .ORG SPLM303, *CALL DISP0 TO COPY SP IN LATCH 4 TO LATCH 5 WITH 07856 *INCREMENT 07857 *RETURN=3, RETURN TO SPLM400 07858 MA(RETURN), 07859 Y(3), 07860 Y>RAM, 07861 JUMP(DISP0); ----- ----- 985 00000971 7C031100 ----- 07862 *SUB-PAGE LATCH INITIALISATION COMPLETED 07863 *COMMON EXIT FROM SUB-PAGE PROCESSING 07864 * 07865 * TCJ Jan 93 07866 * We have reinitalised the subpage store so, clear the 07867 * SPFRC flags to abort any subpage capture that is in 07868 * progress. 07869 * 07870 .ORG SPLM400, * Abort forced subpage capture 07871 MA(SPFRC), 07872 Y(0), 07873 Y>RAM, 07874 JUMP(TCJSPLM400); ----- ----- 443 00000986 57001100 ----- 07875 * 07876 .ORG TCJSPLM400, 07877 MA(VPPRG1), RAM>BR, 07878 JUMP(SPLM401); ----- ----- 986 00010987 61000000 ----- 07879 * 07880 .ORG SPLM401, *HOSP=0, PCSP=0, SPIN=0 07881 A(0), BR.F0>B, OR, 07882 Y>AR, 07883 JUMP(SPLM402); ----- ----- 987 00220988 00001003 ----- 07884 .ORG SPLM402, *CSVDP=1 07885 MA(VPPRG1), 07886 AR>A, B(CSVDP), OR, 07887 Y>RAM, 07888 JUMP(VPP330T); ----- ----- 988 00000319 61101110 ----- 07889 *NEWSFLASH AND SUBTITLE PROCESSING 07890 * This routine updates the SUBT and NWSF flags in VPPRG2 ready 07891 * for the SVDP routine. It also initiates a timed out display 07892 * of row 0 and 24 if a SUBT or NWSF page is being newly 07893 * displayed. 07894 .ORG VPP330T, *A=STOR0 07895 *P=-14 07896 MA(STOR0), RAM>AR, 07897 Y(-14), 07898 Y>PR, 07899 JUMP(VPP330A); ----- ----- 319 00020989 A0F21000 ----- 07900 .ORG VPP330A, *SET RWL FOR STORE 0 07901 MA(RWL), 07902 ARHI>A, B(0), OR, 07903 Y>RAM, Y>IO, 07904 JUMP(VPP331); ----- ----- 989 0000098A 0B005120 ----- 07905 .ORG VPP331, *TPD=SPM+SPC 07906 *A=VPPRG2 07907 RVDP, 07908 MA(VPPRG2), RAM>AR, 07909 JUMP(VPP332); ----- ----- 98A 0002098B 62008000 ----- 07910 .ORG VPP332, *CLEAR OLD SUBT AND NWSF FLAGS 07911 MA(VPPRG2), 07912 AR>A, B(>FF-SUBT-NWSF), AND, 07913 Y>RAM, 07914 JUMP(VPP333); ----- ----- 98B 0000098C 623F0910 ----- 07915 .ORG VPP333, *B=SCREEN 07916 *A=SUBT AND NWSF BITS 07917 MA(SCREEN), RAM>BR, 07918 TPD>A, B(SUBT+NWSF), AND, 07919 Y>AR, 07920 JUMP(VPP334); ----- ----- 98C 0023098D 60C00890 ----- 07921 .ORG VPP334, *Y=TDISP 07922 *B=VPPRG2 07923 MA(VPPRG2), RAM>BR, 07924 A(TDISP), BR>B, AND, 07925 JUMP(VPP335); ----- ----- 98D 0001098E 62040801 ----- 07926 .ORG VPP335, *TELETEXT DISPLAYED? 07927 *UPDATE SUBT AND NWSF 07928 MA(VPPRG2), 07929 AR>A, BR>B, OR, 07930 Y>RAM, Y>AR, 07931 JZ(VPP336F,VPP336T); ----- ----- 98E 0022232C 62001111 ----- 07932 .ORG VPP336T, *TELETEXT NOT DISPLAYED 07933 *DPFC=0 07934 MA(VPPRG2), 07935 AR>A, B(>FF-DPFC), AND, 07936 Y>RAM, 07937 JUMP(VPP350); ----- ----- 32D 0000032F 62EF0910 ----- 07938 *TELETEXT DISPLAYED 07939 .ORG VPP336F, *Y=DPFC 07940 AR>A, B(DPFC), AND, 07941 JUMP(VPP337); ----- ----- 32C 0000098F 00100810 ----- 07942 .ORG VPP337, *Y=SUBT+NWSF, DPFC? 07943 *B=DHREG 07944 MA(DHREG), RAM>BR, 07945 AR>A, B(SUBT+NWSF), AND, 07946 JZ(VPP338F,VPP350); ----- ----- 98F 0001232E 32C00810 ----- 07947 *DISPLAY PAGE CAPTURED FOR THE FIRST TIME 07948 .ORG VPP338F, *DPFC=0, NWSF OR SUBT? 07949 MA(VPPRG2), 07950 AR>A, B(>FF-DPFC), AND, 07951 Y>RAM, 07952 JZ(VPP339F,VPP339T); ----- ----- 32E 00002330 62EF0910 ----- 07953 .ORG VPP339T, *NOT NWSF OR SUBT, TERMINATE TOD AND POOCD 07954 MA(DHREG), 07955 A(>FF-TOD-POOCD), BR>B, AND, 07956 Y>RAM, 07957 JUMP(VPP350); ----- ----- 331 0000032F 32D70901 ----- 07958 *NEWLY DISPLAYED SUBT OR NWSF, TIME OUT DISPLAY 07959 * B=DHREG 07960 .ORG VPP339F, *SET TOD 07961 *B=VPPRG1 07962 MA(VPPRG1), RAM>BR, 07963 A(TOD), BR>B, OR, 07964 Y>AR, 07965 JUMP(VPP345); ----- ----- 330 00230990 61081001 ----- 07966 .ORG VPP345, *CLEAR POOCD 07967 MA(DHREG), 07968 AR>A, B(>FF-POOCD), AND, 07969 Y>RAM, Y>AR, 07970 JUMP(VPP346); ----- ----- 990 00220991 32DF0910 ----- 07971 .ORG VPP346, *SET 5S TIME OUT 07972 MA(TIMOUT), 07973 Y(>FF), 07974 Y>RAM, 07975 JUMP(VPP347); ----- ----- 991 00000992 3BFF1100 ----- 07976 .ORG VPP347, *CSVDP=1 07977 MA(VPPRG1), 07978 A(CSVDP), BR>B, OR, 07979 Y>RAM, 07980 JUMP(VPP350); ----- ----- 992 0000032F 61101101 ----- 07981 *SUB-PAGE PROCESSING FOR TOP 07982 .ORG VPP350, *A=VPPRG2 07983 MA(VPPRG2), RAM>AR, 07984 JUMP(VPP350A); ----- ----- 32F 00020993 62000000 ----- 07985 .ORG VPP350A, *Y=USPR 07986 AR>A, B(USPR), AND, 07987 JUMP(VPP351); ----- ----- 993 00000994 00080810 ----- 07988 .ORG VPP351, *USPR=0, USPR? 07989 MA(VPPRG2), 07990 AR>A, B(>FF-USPR), AND, 07991 Y>RAM, 07992 JZ(VPP352F,VPP400T); ----- ----- 994 00002332 62F70910 ----- 07993 *UPDATE LFPCLx IN SPREGx 07994 .ORG VPP352F, *INIT LOOP VARIABLE 07995 *STORE=3 07996 MA(STORE), 07997 Y(3), 07998 Y>RAM, 07999 JUMP(VPP359T); ----- ----- 332 00000337 77031100 ----- 08000 *START OF LOOP 08001 .ORG VPP359T, *A=LOOP VARIABLE 08002 MA(STORE), RAM>AR, 08003 JUMP(VPP354); ----- ----- 337 00020995 77000000 ----- 08004 .ORG VPP354, *DEC LOOP 08005 MA(STORE), 08006 AR>A, B(-1), ADD, 08007 Y>RAM, Y>AR, 08008 JUMP(VPP355); ----- ----- 995 00220996 77FF0110 ----- 08009 .ORG VPP355, *P=INDEX TO LFSPx 08010 *EXIT LOOP? 08011 AR>A, B(LFSP0), ADD, 08012 Y>PR, 08013 JN(VPP356F,VPP356T); ----- ----- 996 00004334 80480010 ----- 08014 .ORG VPP356F, *B=LFSPx 08015 PR>MA, RAM>BR, 08016 JUMP(VPP357); ----- ----- 334 00110997 00000000 ----- 08017 .ORG VPP357, *Y=LFSPx->F 08018 A(->0F), BR.0F>B, ADD, 08019 JUMP(VPP358); ----- ----- 997 00000998 00F10002 ----- 08020 .ORG VPP358, *NULL LFSPx? 08021 *Y=LOOP 08022 AR>A, B(0), OR, 08023 JZ(VPP359F,VPP359T); ----- ----- 998 00002336 00001010 ----- 08024 .ORG VPP359F, *NO NULL 08025 *CASE LOOP=? 08026 *B=STOR7 08027 MA(STOR7), RAM>BR, 08028 JY(VPP360Y); ----- ----- 336 0001C6C0 27000000 ----- 08029 .ORG VPP360Y, *CASE LFSP0 08030 *B=STOR2 08031 MA(STOR2), RAM>BR, 08032 JUMP(VPP362); ----- ----- 6C0 000106C2 22000000 ----- 08033 .ORG VPP361, *CASE LFSP2 08034 *B=STOR3 08035 MA(STOR3), RAM>BR, 08036 JUMP(VPP362); ----- ----- 6C1 000106C2 23000000 ----- 08037 * B=STORx 08038 .ORG VPP362, *CASE LFSP2 08039 *P=INDEX TO Mx 08040 A(M0), BRHI>B, ADD, 08041 Y>PR, 08042 JUMP(VPP363); ----- ----- 6C2 00000999 8010000C ----- 08043 .ORG VPP363, *AR=Mx 08044 *P=INDEX TO Tx 08045 PR>MA, RAM>AR, 08046 A(T0), BRHI>B, ADD, 08047 Y>PR, 08048 JUMP(VPP364); ----- ----- 999 0012099A 8018000C ----- 08049 .ORG VPP364, *PM=Mx 08050 MA(PM), 08051 AR<<4>A, B(0), OR, 08052 Y>RAM, 08053 JUMP(VPP365); ----- ----- 99A 0000099B 74001130 ----- 08054 .ORG VPP365, *AR=Tx 08055 *P=INDEX TO Ux 08056 PR>MA, RAM>AR, 08057 A(U0), BRHI>B, ADD, 08058 Y>PR, 08059 JUMP(VPP366); ----- ----- 99B 0012099C 8020000C ----- 08060 .ORG VPP366, *PT=Tx 08061 MA(PT), 08062 AR<<4>A, B(0), OR, 08063 Y>RAM, 08064 JUMP(VPP367); ----- ----- 99C 0000099D 75001130 ----- 08065 .ORG VPP367, *AR=Ux 08066 PR>MA, RAM>AR, 08067 JUMP(VPP368); ----- ----- 99D 0012099E 00000000 ----- 08068 .ORG VPP368, *PU=Ux 08069 MA(PU), 08070 AR<<4>A, B(0), OR, 08071 Y>RAM, 08072 JUMP(VPP369); ----- ----- 99E 0000099F 76001130 ----- 08073 .ORG VPP369, *CALL PIL TO FIND LFPCLx 08074 *RETURN=2, RETURN TO VPP370 08075 MA(RETURN), 08076 Y(2), 08077 Y>RAM, 08078 JUMP(PIL0); ----- ----- 99F 00000936 7C021100 ----- 08079 * A=LFPCL 08080 .ORG VPP370, *B=LOOP 08081 MA(STORE), RAM>BR, 08082 JUMP(VPP371); ----- ----- 292 000109A0 77000000 ----- 08083 .ORG VPP371, *P=INDEX TO SPREGx 08084 A(SPREG0), BR>B, ADD, 08085 Y>PR, 08086 JUMP(VPP372); ----- ----- 9A0 000009A1 80540001 ----- 08087 .ORG VPP372, *UPDATE LFPCLx AND RETURN TO BEGINNING OF LOOP 08088 *SPREGx=LFPCL 08089 PR>MA, 08090 AR<<4>A, B(0), OR, 08091 Y>RAM, 08092 JUMP(VPP359T); ----- ----- 9A1 00100337 00001130 ----- 08093 *UPDATE MSPx IN SPREGx 08094 .ORG VPP356T, *INIT LOOP VARIABLE 08095 *A=3 08096 Y(3), 08097 Y>AR, 08098 JUMP(VPP374); ----- ----- 335 002209A2 00031000 ----- 08099 *START OF LOOP 08100 * A=COUNT 08101 .ORG VPP374, *DEC LOOP VARIABLE 08102 *COUNT=A=A-1 08103 MA(COUNT), 08104 AR>A, B(-1), ADD, 08105 Y>RAM, Y>AR, 08106 JUMP(VPP375); ----- ----- 9A2 002209A3 78FF0110 ----- 08107 .ORG VPP375, *B=SPREG0 08108 *P=INDEX TO SPREGx 08109 *EXIT LOOP? 08110 MA(SPREG0), RAM>BR, 08111 AR>A, B(SPREG0), ADD, 08112 Y>PR, 08113 JN(VPP376F,VPP376T); ----- ----- 9A3 00014338 D4540010 ----- 08114 .ORG VPP376F, *A=SPREGx 08115 PR>MA, RAM>AR, 08116 JUMP(VPP377); ----- ----- 338 001209A4 00000000 ----- 08117 .ORG VPP377, *COMPARE LFPCLx AND LFPCL0 08118 ARHI>A, BRHI>B, XOR, 08119 JUMP(VPP378); ----- ----- 9A4 000009A5 0000182C ----- 08120 .ORG VPP378, *LFPCLx=LFPCL0? 08121 *B=SPREG1 08122 MA(SPREG1), RAM>BR, 08123 JZ(VPP379F,VPP379T); ----- ----- 9A5 0001233A 55000000 ----- 08124 .ORG VPP379T, *LFPCLx=LFPCL0 08125 *SET MSP0 IN SPREGx 08126 PR>MA, 08127 AR>A, B(MSP0), OR, 08128 Y>RAM, 08129 JUMP(VPP379F); ----- ----- 33B 0010033A 00011110 ----- 08130 .ORG VPP379F, *COMPARE LFPCLx AND LFPCL1 08131 *A=UPDATED SPREGx 08132 PR>MA, RAM>AR, 08133 ARHI>A, BRHI>B, XOR, 08134 JUMP(VPP380); ----- ----- 33A 001209A6 0000182C ----- 08135 .ORG VPP380, *LFPCLx=LFPCL1? 08136 *B=SPREG2 08137 MA(SPREG2), RAM>BR, 08138 JZ(VPP381F,VPP381T); ----- ----- 9A6 0001233C 56000000 ----- 08139 .ORG VPP381T, *LFPCLx=LFPCL1 08140 *SET MSP1 IN SPREGx 08141 PR>MA, 08142 AR>A, B(MSP1), OR, 08143 Y>RAM, 08144 JUMP(VPP381F); ----- ----- 33D 0010033C 00021110 ----- 08145 .ORG VPP381F, *COMPARE LFPCLx AND LFPCL2 08146 *A=UPDATED SPREGx 08147 PR>MA, RAM>AR, 08148 ARHI>A, BRHI>B, XOR, 08149 JUMP(VPP382); ----- ----- 33C 001209A7 0000182C ----- 08150 .ORG VPP382, *LFPCLx=LFPCL2? 08151 JZ(VPP383F,VPP383T); ----- ----- 9A7 0000233E 00000000 ----- 08152 .ORG VPP383T, *LFPCLx=LFPCL0 08153 *SET MSP2 IN SPREGx 08154 PR>MA, 08155 AR>A, B(MSP2), OR, 08156 Y>RAM, 08157 JUMP(VPP383F); ----- ----- 33F 0010033E 00041110 ----- 08158 .ORG VPP383F, *AR=COUNT 08159 *RETURN TO START OF LOOP 08160 MA(COUNT), RAM>AR, 08161 JUMP(VPP374); ----- ----- 33E 000209A2 78000000 ----- 08162 .ORG VPP376T, * 08163 JUMP(VPP400T); ----- ----- 339 00000333 00000000 ----- 08164 *CHECK CGAP. IF SET, CALL GENERATE A PROMPT ROUTINE 08165 .ORG VPP400T, *AR=EXPREG 08166 MA(EXPREG), RAM>AR, 08167 JUMP(VPP401); ----- ----- 333 000209A8 63000000 ----- 08168 .ORG VPP401, *Y=CGAP 08169 *BR=STOR0 FOR GAP0 08170 MA(STOR0), RAM>BR, 08171 AR>A, B(CGAP), AND, 08172 JUMP(VPP402); ----- ----- 9A8 000109A9 20080810 ----- 08173 .ORG VPP402, *CGAP=0, GENERATE A PROMPT? 08174 *JUMP TO GAP0, RETURN TO VPP450 08175 MA(EXPREG), 08176 AR>A, B(>FF-CGAP), AND, 08177 Y>RAM, 08178 JZ(GAP0,VPP450); ----- ----- 9A9 00002340 63F70910 ----- 08179 *NEED TO COPY DISPLAY PAGE ROW 24 FROM STORE 6? 08180 .ORG VPP450, *B=SYS2 08181 MA(SYS2), RAM>BR, 08182 JUMP(VPP451); ----- ----- 341 000109AA 09000000 ----- 08183 .ORG VPP451, *A=SYS2 WITH RP24, CPYR24 AND R24RTC INVERTED 08184 A(RP24+CPYR24+R24RTC), BR>B, XOR, 08185 Y>AR, 08186 JUMP(VPP452); ----- ----- 9AA 002209AB 000E1801 ----- 08187 .ORG VPP452, *Y=!RP24+!CPYR24+!R24RTC 08188 *A=STOR0 08189 MA(STOR0), RAM>AR, 08190 AR>A, B(RP24+CPYR24+R24RTC), AND, 08191 JUMP(VPP453); ----- ----- 9AB 000209AC 200E0810 ----- 08192 .ORG VPP453, *NEED TO COPY ACROSS? 08193 *CPYR24=0 08194 MA(SYS2), 08195 A(>FF-CPYR24), BR>B, AND, 08196 Y>RAM, 08197 JZ(VPP454F,VPP454T); ----- ----- 9AC 00002342 09FB0901 ----- 08198 .ORG VPP454T, *YES, B=STOR7 FOR CBR0 08199 MA(STOR7), RAM>BR, 08200 JUMP(VPP455); ----- ----- 343 000109AD 27000000 ----- 08201 .ORG VPP455, *CALL CBR0 TO COPY ACROSS ROW 24 08202 *RETURN=0, RETURN TO VPP500Y; 08203 MA(RETURN), 08204 Y(0), 08205 Y>RAM, 08206 JUMP(CBR0); ----- ----- 9AD 000009AE 7C001100 ----- 08207 .ORG VPP454F, *A=VPPRG1 08208 MA(VPPRG1), RAM>AR, 08209 JUMP(VPP500Y); ----- ----- 342 000200A0 61000000 ----- 08210 * 08211 *+++ CBR: COPY BOTTOM ROW ROUTINE 08212 * 08213 * This routine copies the row 24 of the latch pointed to by B 08214 * MSN to the latch pointed to by A MSN. 08215 * 08216 * input pars are:- 08217 * A: MSN points to destination latch 08218 * B: MSN points to source latch 08219 * RETURN: return pointer 08220 * 08221 .ORG CBR0, *P=POINTER TO START OF ROW 24 08222 Y(-65), 08223 Y>PR, 08224 JUMP(CBR1); ----- ----- 9AE 000009AF 80BF1000 ----- 08225 .ORG CBR1, *B=POINTER TO START OF ROW 24 08226 *STORE=SOURCE LATCH 08227 PR>BR, 08228 MA(STORE), 08229 A(0), BR>B, OR, 08230 Y>RAM, 08231 JUMP(CBR10); ----- ----- 9AF 004109B0 77001101 ----- 08232 *COPY CHARACTER LOOP 08233 .ORG CBR10, *B=SOURCE LATCH 08234 *INCREMENT SCREEN POINTER 08235 MA(STORE), RAM>BR, 08236 A(1), BR>B, ADD, 08237 Y>PR, 08238 JUMP(CBR11); ----- ----- 9B0 000109B1 F7010001 ----- 08239 .ORG CBR11, *RWL=SOURCE LATCH 08240 *BR=SCREEN POINTER 08241 PR>BR, 08242 MA(RWL), 08243 A(7), BRHI>B, AND, 08244 Y>RAM, Y>IO, 08245 JUMP(CBR12); ----- ----- 9B1 004109B2 0B07490C ----- 08246 .ORG CBR12, *TPD=CHARACTER TO COPY 08247 *Y=POINTER+25 08248 *B=RETURN 08249 RVDP, 08250 MA(RETURN), RAM>BR, 08251 A(25), BR>B, ADD, 08252 JUMP(CBR13); ----- ----- 9B2 000109B3 7C198001 ----- 08253 .ORG CBR13, *RWL=DESTINATION STORE 08254 *LAST CHARACTER? 08255 MA(RWL), 08256 ARHI>A, B(7), AND, 08257 Y>RAM, Y>IO, 08258 JZ(CBR20F,CBR20T); ----- ----- 9B3 00002344 0B074920 ----- 08259 .ORG CBR20F, *COPY CHARACTER TO DESTINATION LATCH AND REPEAT 08260 *BR=SCREEN POINTER 08261 PR>BR, 08262 TPD>A, B(0), OR, 08263 Y>DR, 08264 JUMP(CBR10); ----- ----- 344 004119B0 00001090 ----- 08265 *END OF LOOP 08266 .ORG CBR20T, *Y=RETURN 08267 *B=STOR0 FOR FPFS CODE 08268 MA(STOR0), RAM>BR, 08269 A(3), BR>B, AND, 08270 JUMP(CBR21); ----- ----- 345 000109B4 20030801 ----- 08271 .ORG CBR21, *COPY LAST CHARACTER 08272 *CASE RETURN=? 08273 *AR=VPPRG1 FOR VPP500Y CODE 08274 MA(VPPRG1), RAM>AR, 08275 TPD>A, B(0), OR, 08276 Y>DR, 08277 JY(VPP500Y); ----- ----- 9B4 0002D0A0 61001090 ----- 08278 *CALL SVDP0 TO SET VDP REGISTERS 08279 * A=VPPRG1 08280 .ORG VPP500Y, *Y=CSVDP 08281 AR>A, B(CSVDP), AND, 08282 JUMP(VPP502); ----- ----- 0A0 000009B5 00100810 ----- 08283 .ORG VPP502, *CSVDP? 08284 *IF YES, JUMP TO CSVDP0 TO UDATE VDP REGISTERS 08285 *RETURN TO VPP600T 08286 *CLEAR CSVDP 08287 MA(VPPRG1), 08288 AR>A, B(>FF-CSVDP), AND, 08289 Y>RAM, 08290 JZ(SVDP0,VPP600T); ----- ----- 9B5 00002346 61EF0910 ----- 08291 *RUN QUALITY ALGORITHM 08292 .ORG VPP600T, *Y=QUALITY 08293 *A=HYSREG 08294 MA(HYSREG), RAM>AR, 08295 A(%00000100), PLL>B, AND, 08296 JUMP(VPP610); ----- ----- 347 000209B6 6704080E ----- 08297 .ORG VPP610, *Y=HYSTERISIS COUNT 08298 *QUALITY GOOD? 08299 *B=HYSREG 08300 MA(HYSREG), RAM>BR, 08301 AR.0F>A, B(0), OR, 08302 JZ(VPP611F,VPP611T); ----- ----- 9B6 0001234C 670010C0 ----- 08303 *GOOD QUALITY 08304 .ORG VPP611F, *INC HYS COUNT 08305 MA(HYSREG), 08306 AR>A, B(>01), ADD, 08307 Y>RAM, 08308 JUMP(VPP619); ----- ----- 34C 000009B7 67010110 ----- 08309 .ORG VPP619, *B=NEW HYS COUNT 08310 *A LO NIB= END STOP 08311 MA(HYSREG), RAM>BR, 08312 ARHI>A, B(0), OR, 08313 Y>AR, 08314 JUMP(VPP620); ----- ----- 9B7 002309B8 67001020 ----- 08315 .ORG VPP620, *Y=NEW HYS COUNT - END STOP 08316 *B=STSWD0 08317 MA(STSWD0), RAM>BR, 08318 NAR>A, BR.0F>B, O>CIN, ADD, 08319 JUMP(VPP621); ----- ----- 9B8 000109B9 64000442 ----- 08320 .ORG VPP621, *REACHED END STOP? 08321 *Y=BADFLG 08322 *B=HYSREG 08323 MA(HYSREG), RAM>BR, 08324 A(BADFLG), BR>B, AND, 08325 JN(VPP622F,VPP622T); ----- ----- 9B9 0001434E 67100801 ----- 08326 .ORG VPP622T, *NOT REACHED END STOP, EXIT 08327 JUMP(VPP660T); ----- ----- 34F 00000351 00000000 ----- 08328 .ORG VPP622F, *REACHED END STOP 08329 *BADFLG? 08330 *HYS COUNT =END STOP 08331 MA(HYSREG), 08332 AR.0F>A, BR.F0>B, OR, 08333 Y>RAM, 08334 JZ(VPP623F,VPP660T); ----- ----- 34E 00002350 670011C3 ----- 08335 *BAD->GOOD 08336 .ORG VPP623F, *B=STSWD0 08337 MA(STSWD0), RAM>BR, 08338 JUMP(VPP624); ----- ----- 350 000109BA 64000000 ----- 08339 .ORG VPP624, *BADFLG=0 08340 *GO AND SET CSPLL 08341 MA(STSWD0), 08342 A(>FF-BADFLG), BR>B, AND, 08343 Y>RAM, 08344 JUMP(VPP633T); ----- ----- 9BA 00000357 64EF0901 ----- 08345 *BAD QUALITY 08346 * A=HYSREG, B=HYSREG, LAST Y WAS HYS COUNT 08347 .ORG VPP611T, *DEC HYS COUNT 08348 *COUNT REACHED BOTTOM STOP? 08349 MA(HYSREG), 08350 AR>A, B(->01), ADD, 08351 Y>RAM, Y>AR, 08352 JZ(VPP630F,VPP630T); ----- ----- 34D 00222352 67FF0110 ----- 08353 .ORG VPP630T, *ALREADY REACHED BOTTOM 08354 *RESTORE OLD COUNT AND EXIT 08355 MA(HYSREG), 08356 A(0), BR>B, OR, 08357 Y>RAM, 08358 JUMP(VPP660T); ----- ----- 353 00000351 67001101 ----- 08359 .ORG VPP630F, *Y=NEW COUNT 08360 *B=STSWD0 08361 MA(STSWD0), RAM>BR, 08362 AR.0F>A, B(0), OR, 08363 JUMP(VPP631); ----- ----- 352 000109BB 640010C0 ----- 08364 .ORG VPP631, *REACHED BOTTOM THIS TIME? 08365 *Y=BADFLG 08366 A(BADFLG), BR>B, AND, 08367 JZ(VPP632F,VPP632T); ----- ----- 9BB 00002354 00100801 ----- 08368 .ORG VPP632F, *NO, EXIT 08369 JUMP(VPP660T); ----- ----- 354 00000351 00000000 ----- 08370 .ORG VPP632T, *REACHED THE BOTTOM THIS TIME 08371 *BADFLG=1, BADFLG? 08372 MA(STSWD0), 08373 A(BADFLG), BR>B, OR, 08374 Y>RAM, 08375 JZ(VPP633F,VPP633T); ----- ----- 355 00002356 64101101 ----- 08376 .ORG VPP633F, *ALREADY BAD 08377 JUMP(VPP660T); ----- ----- 356 00000351 00000000 ----- 08378 *GOOD->BAD 08379 *ENTRY POINT FROM BAD->GOOD 08380 .ORG VPP633T, *B=VPPRG2 08381 MA(VPPRG2), RAM>BR, 08382 JUMP(VPP634); ----- ----- 357 000109BC 62000000 ----- 08383 .ORG VPP634, *CSPLL=1 08384 MA(VPPRG2), 08385 A(CSPLL), BR>B, OR, 08386 Y>RAM, 08387 JUMP(VPP660T); ----- ----- 9BC 00000351 62041101 ----- 08388 *MAINTAIN AUTO TELETEXT RECEPTION THRESHOLD 08389 .ORG VPP660T, *A=STSWD0 08390 MA(STSWD0), RAM>AR, 08391 JUMP(VPP661); ----- ----- 351 000209BD 64000000 ----- 08392 .ORG VPP661, *A=MREG1 08393 *Y=BADFLG 08394 MA(MREG1), RAM>AR, 08395 AR>A, B(BADFLG), AND, 08396 JUMP(VPP662); ----- ----- 9BD 000209BE 65100810 ----- 08397 .ORG VPP662, *GOOD OR BAD? 08398 *Y=THRSH 08399 *A=RCM 08400 MA(RCM), RAM>AR, 08401 AR>A, B(THRSH), AND, 08402 JZ(VPP663F,VPP663T); ----- ----- 9BE 00022358 28100810 ----- 08403 .ORG VPP663T, *GOOD, CLEAR AOFF 08404 MA(RCM), 08405 AR>A, B(>FF-AOFF), AND, 08406 Y>RAM, 08407 JUMP(VPP700T); ----- ----- 359 0000035B 28BF0910 ----- 08408 .ORG VPP663F, *BAD, RETURN=1 08409 *AUTO RECEPTION THRESHOLD ENABLED? 08410 MA(RETURN), 08411 Y(1), 08412 Y>RAM, 08413 JZ(VPP664F,VPP700T); ----- ----- 358 0000235A 7C011100 ----- 08414 .ORG VPP664F, *YES, INHIBIT TEXT 08415 *AOFF=1 08416 *CALL CDTXT0 TO TERMINATE PAGES 08417 *RETURN=1, RETURN TO VPP665F 08418 MA(RCM), 08419 AR>A, B(AOFF), OR, 08420 Y>RAM, 08421 JUMP(CDTXT0); ----- ----- 35A 000009BF 28401110 ----- 08422 .ORG VPP665F, * 08423 JUMP(VPP700T); ----- ----- 66E 0000035B 00000000 ----- 08424 *CALL SPLL0 TO SET VDP REGISTERS 08425 .ORG VPP700T, *A=VPPRG2 08426 MA(VPPRG2), RAM>AR, 08427 JUMP(VPP701); ----- ----- 35B 000209C0 62000000 ----- 08428 .ORG VPP701, *Y=CSPLL 08429 *B=UPLL 08430 MA(UPLL), RAM>BR, 08431 AR>A, B(CSPLL), AND, 08432 JUMP(VPP702); ----- ----- 9C0 000109C1 6F040810 ----- 08433 .ORG VPP702, *CSPLL=0, CSPLL? 08434 *IF YES, JUMP TO SPLL0 08435 *RETURN TO VPP703F 08436 MA(VPPRG2), 08437 AR>A, B(>FF-CSPLL), AND, 08438 Y>RAM, 08439 JZ(SPLL0,VPP703F); ----- ----- 9C1 0000235C 62FB0910 ----- 08440 *END OF VBI POST PROCESSING 08441 .ORG VPP703F, 08442 JUMP(ST0F); ----- ----- 35D 00000001 00000000 ----- 08443 * 08444 *+++SORT STORE TABLE ROUTINE 08445 * 08446 * This routine is called by VPP when store table (the table 08447 * which relates stores to latch numbers) must be re-configured 08448 * ie when:- 08449 * 1) new display page entered (if not in FLOF mode) 08450 * 2) FLOF display page has been captured 08451 * 3) TOP table has been captured 08452 * If a page has not been captured, this routine calls INLA to 08453 * initialise a latch. 08454 * PU, PT, PM== (base page for store allocation algorithm) 08455 * 08456 * OLDSTR= contains pointers for store 0 and 6 to sort out row 24 08457 * 08458 *entry point to sort background latches 08459 .ORG SST0B, *INIT LOOP VARIABLE, STORE=0 08460 *GO STRAIGHT TO FPFS ROUTINE 08461 MA(STORE), 08462 Y(0), 08463 Y>RAM, Y>AR, 08464 JUMP(FPFS0F); ----- ----- 317 0022036C 77001100 ----- 08465 *entry point to sort all latches 08466 .ORG SST0A, *INIT LOOP VARIABLE, STORE=0 08467 MA(STORE), 08468 Y(0), 08469 Y>RAM, 08470 JUMP(SST1); ----- ----- 943 000009C2 77001100 ----- 08471 .ORG SST1, *CALL PIL0 08472 *RETURN=0, RETURN TO SST2Y 08473 MA(RETURN), 08474 A(0), B(0), AND, 08475 Y>RAM, 08476 JUMP(PIL0); ----- ----- 9C2 00000936 7C000900 ----- 08477 *START OF STORE LOOP (FIND PAGE FOR STORE RETURNS HERE) 08478 * A=RETURN DATA FROM PIL, PU/T/M=CURRENT PAGE 08479 .ORG SST2Y, *AR==RETURN DATA FROM PIL0 08480 *Y= PAGE NOT IN A LATCH FLAG 08481 *BR=SCREEN 08482 MA(SCREEN), RAM>BR, 08483 AR>A, B(>08), AND, 08484 JUMP(SST3); ----- ----- 290 000109C3 60080810 ----- 08485 .ORG SST3, *PAGE IN A LATCH? 08486 *PR=STORE CONTAINING LATCH 08487 ARHI>A, B(7), AND, 08488 Y>PR, 08489 JZ(SST4F,SST4T); ----- ----- 9C3 0000235E 80070820 ----- 08490 *PAGE IS NOT IN A LATCH 08491 .ORG SST4F, *Y=MENM 08492 *BR=LATCH IN STORE 7 08493 MA(STOR7), RAM>BR, 08494 A(MENM), BR>B, AND, 08495 JUMP(SST4A); ----- ----- 35E 000109C4 27080801 ----- 08496 .ORG SST4A, *MENM? 08497 *P= INDEX TO LAFx FOR STORE 7 08498 A(LAF0), BRHI>B, ADD, 08499 Y>PR, 08500 JZ(SST4BF,SST4BT); ----- ----- 9C4 00002360 8040000C ----- 08501 * 08502 .ORG SST4BT, *NOT MENU MODE 08503 *A= LAFx FOR STORE 7 08504 PR>MA, RAM>AR, 08505 JUMP(SST4BA); ----- ----- 361 001209C5 00000000 ----- 08506 .ORG SST4BA, *Y=AITL 08507 AR>A, B(AITL), AND, 08508 JUMP(SST4BB); ----- ----- 9C5 000009C6 00010810 ----- 08509 .ORG SST4BB, *STORE 7 BEING USED FOR AN AIT? 08510 *RET3= LOWEST PRIORITY STORE 08511 MA(RET3), 08512 Y(7), 08513 Y>RAM, 08514 JZ(SST4BCF,SST4DT); ----- ----- 9C6 00002362 7A071100 ----- 08515 .ORG SST4BCF, *YES, STORE 6 IS LOWEST PRIORITY 08516 MA(STOR6), RAM>BR, 08517 JUMP(SST4BD); ----- ----- 362 000109C7 26000000 ----- 08518 .ORG SST4BD, *RET3= LOWEST PRIORITY STORE 08519 MA(RET3), 08520 Y(6), 08521 Y>RAM, 08522 JUMP(SST4DT); ----- ----- 9C7 00000363 7A061100 ----- 08523 * 08524 .ORG SST4BF, *MENU MODE, LOWEST PRIORITY LATCH IS 5 08525 *BR=LATCH IN STORE 5 08526 MA(STOR5), RAM>BR, 08527 JUMP(SST4C); ----- ----- 360 000109C8 25000000 ----- 08528 .ORG SST4C, *RET3= LOWEST PRIORITY STORE 08529 MA(RET3), 08530 Y(5), 08531 Y>RAM, 08532 JUMP(SST4DT); ----- ----- 9C8 00000363 7A051100 ----- 08533 * B= STORx WHERE x IS THE LOWEST PRIORITY STORE 08534 * RET3= LOWEST PRIORITY STORE 08535 .ORG SST4DT, *AR==LATCH FOR INIT 08536 A(0), BRHI>B, OR, 08537 Y>AR, 08538 JUMP(SST4E); ----- ----- 363 002209C9 0000100C ----- 08539 .ORG SST4E, *CALL INLA0 TO INITIALISE THE LATCH WHICH IS THE 08540 *LOWEST PRIORITY STORE AT THE MOMENT 08541 *RETURN=0, RETURN TO SST5Y 08542 *PU,PT,PM==PAGE FOR LATCH 08543 *RETURN=0 08544 MA(RETURN), 08545 Y(0), 08546 Y>RAM, 08547 JUMP(INLA0); ----- ----- 9C9 00000947 7C001100 ----- 08548 .ORG SST5Y, *A=RET3 (LOWST PRIORITY STORE FOR SHUFFLE) 08549 MA(RET3), RAM>AR, 08550 JUMP(SST8); ----- ----- 298 000209CA 7A000000 ----- 08551 *PAGE IS IN A LATCH 08552 .ORG SST4T, *PAGE HAS BEEN CAPTURED 08553 *BR=STORE CONTAINING LATCH 08554 *PR=RETURN DATA FROM PIL 08555 PR>BR, 08556 AR>A, B(0), OR, 08557 Y>PR, 08558 JUMP(SST7); ----- ----- 35F 004109CB 80001010 ----- 08559 .ORG SST7, *AR=RET3=STORE CONTAINING LATCH 08560 MA(RET3), 08561 A(0), BR>B, OR, 08562 Y>AR, Y>RAM, 08563 JUMP(SST8); ----- ----- 9CB 002209CA 7A001101 ----- 08564 *SHUFFLE LATCH TABLE (MISSING TOP TABLES) 08565 * AR=RET3=STORE CONTAINING LATCH TO BE MOVED 08566 * STORE=DESTINATION STORE FOR LATCH 08567 .ORG SST8, *PR=INDEX TO LATCH TO BE MOVED 08568 AR>A, B(STOR0), ADD, 08569 Y>PR, 08570 JUMP(SST9A); ----- ----- 9CA 000009CC 80200010 ----- 08571 .ORG SST9A, *BR=LATCH TO BE MOVED 08572 PR>MA, RAM>BR, 08573 JUMP(SST10); ----- ----- 9CC 001109CD 00000000 ----- 08574 .ORG SST10, *COUNT= LATCH TO BE MOVED 08575 MA(COUNT), 08576 A(0), BRHI>B, OR, 08577 Y>RAM, 08578 JUMP(SST10A); ----- ----- 9CD 000009CE 7800110C ----- 08579 *ENTRY TO SHUFFLE LOOP 08580 *INPUT PARS:- 08581 * AR=RET3=STORE CONTAINING LATCH TO BE MOVED 08582 * STORE=DESTINATION STORE FOR LATCH 08583 * COUNT=LATCH TO BE MOVED 08584 *VARS:- 08585 * AR=RET3=DESTINATION STORE FOR EACH COPY DOWN 08586 * RET4=SOURCE STORE FOR EACH COPY DOWN 08587 .ORG SST10A, *BR=STORE 08588 MA(STORE), RAM>BR, 08589 JUMP(SST11); ----- ----- 9CE 000109CF 77000000 ----- 08590 .ORG SST11, *Y=STORE-RET3 08591 NAR>A, BR>B, ADD, O>CIN, 08592 JUMP(SST11A); ----- ----- 9CF 000009D0 00000441 ----- 08593 .ORG SST11A, *Y=STORE-RET3 08594 *RET3=STORE? 08595 NAR>A, BR>B, ADD, O>CIN, 08596 JZ(SST11CF,SST11CT); ----- ----- 9D0 00002364 00000441 ----- 08597 *SHUFFLE COMPLETE, LOAD STORE WITH LATCH BEING MOVED AND EXIT 08598 .ORG SST11CT, *STORES THE SAME 08599 *P=INDEX TO DESINATION STORE 08600 *A=LATCH BEING MOVED 08601 MA(COUNT), RAM>AR, 08602 A(STOR0), BR>B, ADD, 08603 Y>PR, 08604 JUMP(SST11D); ----- ----- 365 000209D1 F8200001 ----- 08605 .ORG SST11D, *B=STOREx 08606 PR>MA, RAM>BR, 08607 JUMP(SST11E); ----- ----- 9D1 001109D2 00000000 ----- 08608 .ORG SST11E, *MOVE LATCH AND EXIT 08609 PR>MA, 08610 AR<<4>A, BR.0F>B, OR, 08611 Y>RAM, 08612 JUMP(FPFS0F); ----- ----- 9D2 0010036C 00001132 ----- 08613 *SHUFFLE NOT COMPLETE, FIND NEXT STORE UP (SKIP TOP TABLES) 08614 * AR=RET4 (OR RET3 ON FIRST ENTRY FROM SST11A) 08615 .ORG SST11CF, *RET4-- 08616 MA(RET4), 08617 AR>A, B(-1), ADD, 08618 Y>RAM, Y>AR, 08619 JUMP(SST12); ----- ----- 364 002209D3 79FF0110 ----- 08620 .ORG SST12, *P=INDEX TO RET4 STORE 08621 AR>A, B(STOR0), ADD, 08622 Y>PR, 08623 JUMP(SST13); ----- ----- 9D3 000009D4 80200010 ----- 08624 .ORG SST13, *A=LATCH IN RET4 STORE 08625 PR>MA, RAM>AR, 08626 JUMP(SST13A); ----- ----- 9D4 001209D5 00000000 ----- 08627 .ORG SST13A, *P=INDEX TO LAFx 08628 ARHI>A, B(LAF0), ADD, 08629 Y>PR, 08630 JUMP(SST13B); ----- ----- 9D5 000009D6 80400020 ----- 08631 .ORG SST13B, *B=LAFx 08632 PR>MA, RAM>BR, 08633 JUMP(SST13C); ----- ----- 9D6 001109D7 00000000 ----- 08634 .ORG SST13C, *Y=BTTL+AITL 08635 *B=RET3 08636 MA(RET3), RAM>BR, 08637 A(AITL+BTTL), BR>B, AND, 08638 JUMP(SST13D); ----- ----- 9D7 000109D8 7A030801 ----- 08639 .ORG SST13D, *TOP TABLE? 08640 *P=INDEX TO DESTINATION STORE FOR COPY DOWN 08641 A(STOR0), BR>B, ADD, 08642 Y>PR, 08643 JZ(SST13EF,SST13ET); ----- ----- 9D8 00002366 80200001 ----- 08644 .ORG SST13EF, *RETURN FOR NEXT STORE 08645 *AR=RET4 08646 MA(RET4), RAM>AR, 08647 JUMP(SST11CF); ----- ----- 366 00020364 79000000 ----- 08648 *NOT A TOP TABLE, COPY DOWN LATCH 08649 .ORG SST13ET, *BR=STORx 08650 PR>MA, RAM>BR, 08651 JUMP(SST14); ----- ----- 367 001109D9 00000000 ----- 08652 .ORG SST14, *COMPLETE COPY DOWN 08653 PR>MA, 08654 AR.F0>A, BR.0F>B, OR, 08655 Y>RAM, 08656 JUMP(SST14A); ----- ----- 9D9 001009DA 000011D2 ----- 08657 .ORG SST14A, *AR=RET4 08658 MA(RET4), RAM>AR, 08659 JUMP(SST14B); ----- ----- 9DA 000209DB 79000000 ----- 08660 .ORG SST14B, *AR=RET3=RET4 08661 MA(RET3), 08662 AR>A, B(0), OR, 08663 Y>RAM, 08664 JUMP(SST10A); ----- ----- 9DB 000009CE 7A001110 ----- 08665 *SHUFFLE COMPLETE, FIND PAGE FOR STORE 08666 .ORG FPFS0F, *AR=STORE 08667 MA(STORE), RAM>AR, 08668 JUMP(FPFS1); ----- ----- 36C 000209DC 77000000 ----- 08669 .ORG FPFS1, *Y=STORE-7 08670 *B=SYS2 08671 MA(SYS2), RAM>BR, 08672 AR>A, B(-7), ADD, 08673 JUMP(FPFS2); ----- ----- 9DC 000109DD 09F90010 ----- 08674 .ORG FPFS2, *STORE++ 08675 *LAST STORE? 08676 MA(STORE), 08677 AR>A, B(1), ADD, 08678 Y>RAM, Y>AR, 08679 JZ(FPFS3F,FPFS3T); ----- ----- 9DD 00222368 77010110 ----- 08680 *INITIALISE THIS STORE 08681 * A=STORE 08682 .ORG FPFS3F, *P=INDEX TO STORx 08683 AR>A, B(STOR0), ADD, 08684 Y>PR, 08685 JUMP(FPFS4); ----- ----- 368 000009DE 80200010 ----- 08686 .ORG FPFS4, *B=STORx 08687 PR>MA, RAM>BR, 08688 JUMP(FPFS5); ----- ----- 9DE 001109DF 00000000 ----- 08689 .ORG FPFS5, *P=INDEX TO LAFx 08690 *B=SCREEN 08691 MA(SCREEN), RAM>BR, 08692 A(LAF0), BRHI>B, ADD, 08693 Y>PR, 08694 JUMP(FPFS10); ----- ----- 9DF 000109E0 E040000C ----- 08695 .ORG FPFS10, *B=LAFx 08696 *Y=MENM 08697 PR>MA, RAM>BR, 08698 A(MENM), BR>B, AND, 08699 JUMP(FPFS11); ----- ----- 9E0 001109E1 00080801 ----- 08700 .ORG FPFS11, *MENU MODE? 08701 JZ(FPFS11AF,FPFS11AT); ----- ----- 9E1 0000236A 00000000 ----- 08702 .ORG FPFS11AF, *MENU MODE, CHECK IF STORE IS A MENU PAGE OR A TOP TABLE 08703 *Y=AITL+BTTL+MPG 08704 *B=SYS1 08705 MA(SYS1), RAM>BR, 08706 A(AITL+BTTL+MPG), BR>B, AND, 08707 JUMP(FPFS12); ----- ----- 36A 000109E2 08070801 ----- 08708 .ORG FPFS11AT, *NOT MENU MODE, CHECK IF STORE IS A TOP TABLE ONLY 08709 *Y=AITL+BTTL 08710 *B=SYS1 08711 MA(SYS1), RAM>BR, 08712 A(AITL+BTTL), BR>B, AND, 08713 JUMP(FPFS12); ----- ----- 36B 000109E2 08030801 ----- 08714 .ORG FPFS12, *SKIP THIS STORE? 08715 *Y=PCM 08716 A(3), BRHI>B, AND, 08717 JZ(FPFS0F,FPFS19T); ----- ----- 9E2 0000236C 0003080C ----- 08718 .ORG FPFS19T, *Y=STORE-6 08719 *CASE PCM=? 08720 AR>A, B(-6), ADD, 08721 JY(FPFS30Y); ----- ----- 36D 0000C2AC 00FA0010 ----- 08722 *CASE NORMAL 08723 .ORG FPFS30Y, *Y=STORE-6, STORE<6? 08724 AR>A, B(-6), ADD, 08725 JN(FPFS101F,FPFS101T); ----- ----- 2AC 0000436E 00FA0010 ----- 08726 *CASE TOP 08727 .ORG FPFS31, *A=DPM (POINT TO DISPLAY PAGE) 08728 *CALL PNTIN0 TO RETURN DBB DATA FOR DISPLAY PAGE 08729 Y(DPM), 08730 Y>AR, 08731 JUMP(FPFS40); ----- ----- 2AD 002209E3 00681000 ----- 08732 *CASE FLOF 08733 .ORG FPFS32, *Y=STORE-6, STORE<6? 08734 *RETURN=2 08735 MA(RETURN), 08736 Y(2), 08737 Y>RAM, 08738 JN(FPFS32AF,FPFS200T); ----- ----- 2AE 0000437C 7C021100 ----- 08739 .ORG FPFS32AF, *STORE 6 OR 7, DO THE SAME AS NORMAL 08740 AR>A, B(-6), ADD, 08741 JUMP(FPFS101F); ----- ----- 37C 0000036E 00FA0010 ----- 08742 *CASE FAVP 08743 .ORG FPFS33, *Y=STORE-6, STORE<6? 08744 *IF STORE 2, 3, 4 OR 5, CALL GFP0T 08745 *RETURN=0, RETURN TO FPFS60Y 08746 MA(RETURN), 08747 Y(0), 08748 Y>RAM, 08749 JN(FPFS33AF,GFP0T); ----- ----- 2AF 0000437E 7C001100 ----- 08750 .ORG FPFS33AF, *STORE 6 OR 7, DO THE SAME AS NORMAL 08751 AR>A, B(-6), ADD, 08752 JUMP(FPFS101F); ----- ----- 37E 0000036E 00FA0010 ----- 08753 * 08754 .ORG FPFS40, *CALL PNTIN0 TO RETURN DBB DATA FOR DISPLAY PAGE 08755 *RETURN=3, RETURN TO FPFS41 08756 MA(RETURN), 08757 Y(3), 08758 Y>RAM, 08759 JUMP(PNTIN0); ----- ----- 9E3 0000086F 7C031100 ----- 08760 * AR=DBB RETURN DATA 08761 .ORG FPFS41, *B=STORE 08762 MA(STORE), RAM>BR, 08763 JUMP(FPFS42); ----- ----- 793 000109E4 77000000 ----- 08764 .ORG FPFS42, *Y=STORE-7 08765 *B=MREG1 08766 MA(MREG1), RAM>BR, 08767 A(-7), BR>B, ADD, 08768 JUMP(FPFS43); ----- ----- 9E4 000109E5 65F90001 ----- 08769 .ORG FPFS43, *STORE 7? 08770 *Y=RKM 08771 A(RKM), BR>B, AND, 08772 JZ(FPFS44F,FPFS44T); ----- ----- 9E5 00002380 00020801 ----- 08773 * STORE 7 08774 .ORG FPFS44T, *SIMPLE RED KEY MODE? 08775 *Y= BLOCK PAGE FLAG 08776 AR>A, B(4), AND, 08777 JZ(FPFS44AF,FPFS44AT); ----- ----- 381 00002382 00040810 ----- 08778 .ORG FPFS44AF, *SIMPLE RED KEY MODE 08779 *LOOK FOR ANY PAGE 08780 *MASK=7 08781 MA(MASK), 08782 Y(7), 08783 Y>RAM, 08784 JUMP(FPFS46T); ----- ----- 382 00000387 73071100 ----- 08785 .ORG FPFS44AT, *Y= GROUP PAGE FLAG 08786 *DISPLAY PAGE A BLOCK PAGE? 08787 AR>A, B(2), AND, 08788 JZ(FPFS45F,FPFS45T); ----- ----- 383 00002384 00020810 ----- 08789 .ORG FPFS45F, *BLOCK PAGE, LOOK FOR LAST BLOCK 08790 *MASK=4 08791 MA(MASK), 08792 Y(4), 08793 Y>RAM, 08794 JUMP(FPFS46T); ----- ----- 384 00000387 73041100 ----- 08795 .ORG FPFS45T, *DISPLAY PAGE A GROUP PAGE? 08796 *ELSE, LOOK FOR ANY PAGE 08797 *MASK=7 08798 MA(MASK), 08799 Y(7), 08800 Y>RAM, 08801 JZ(FPFS46F,FPFS46T); ----- ----- 385 00002386 73071100 ----- 08802 .ORG FPFS46F, *GROUP PAGE, LOOK FOR LAST GROUP OR BLOCK 08803 *MASK=6 08804 MA(MASK), 08805 Y(6), 08806 Y>RAM, 08807 JUMP(FPFS46T); ----- ----- 386 00000387 73061100 ----- 08808 *ENTRY POINT FROM STORE 7 IN NORMAL MODE 08809 .ORG FPFS46T, *CALL SBT0B, 08810 *RETURN=1, RETURN TO FPFS331 08811 MA(RETURN), 08812 Y(1), 08813 Y>RAM, 08814 JUMP(SBT0B); ----- ----- 387 000004DB 7C011100 ----- 08815 * NOT STORE 7 08816 * A=DBB RETURN DATA 08817 .ORG FPFS44F, *Y=TV PAGE FLAG 08818 *B=LTK 08819 MA(LTK), RAM>BR, 08820 AR>A, B(>08), AND, 08821 JUMP(FPFS47); ----- ----- 380 000109E6 11080810 ----- 08822 .ORG FPFS47, *TV PAGE? 08823 *Y=LAST TOP KEY 08824 *A=STORE 08825 MA(STORE), RAM>AR, 08826 A(3), BRHI>B, AND, 08827 JZ(FPFS48F,FPFS48T); ----- ----- 9E6 00022388 7703080C ----- 08828 .ORG FPFS48F, *TV PAGE 08829 *Y=STORE 08830 AR>A, B(7), AND, 08831 JUMP(FPFS51); ----- ----- 388 000002B5 00070810 ----- 08832 .ORG FPFS48T, *NOT A TV PAGE 08833 *CASE LAST TOP KEY=? 08834 *STORE MUST BE GREATER THAN 3 08835 *Y=STORE-4 08836 AR.0F>A, B(-4), ADD, 08837 JY(FPFS50Y); ----- ----- 389 0000C2B4 00FC00C0 ----- 08838 .ORG FPFS50Y, *CASE LTK=RED 08839 *CASE STORE-4=? 08840 JY(FPFS110Y); ----- ----- 2B4 0000C768 00000000 ----- 08841 *ENTRY POINT IF TV PAGE 08842 .ORG FPFS51, *CASE LTK=GREEN 08843 *SET MASK FOR NEXT N, G OR B 08844 *MASK=7 08845 MA(MASK), 08846 Y(7), 08847 Y>RAM, 08848 JUMP(FPFS300B); ----- ----- 2B5 0000039B 73071100 ----- 08849 .ORG FPFS52, *CASE LTK=YELLOW 08850 *SET MASK FOR NEXT G OR B 08851 *MASK=6 08852 MA(MASK), 08853 Y(6), 08854 Y>RAM, 08855 JUMP(FPFS300B); ----- ----- 2B6 0000039B 73061100 ----- 08856 .ORG FPFS53, *CASE LTK=BLUE 08857 *SET MASK FOR NEXT B 08858 *MASK=4 08859 MA(MASK), 08860 Y(4), 08861 Y>RAM, 08862 JUMP(FPFS300B); ----- ----- 2B7 0000039B 73041100 ----- 08863 *FAVOURITE PAGE MODE STORES 2, 3, 4, 5 08864 * B=PU, PM,PT,PU=FAV PAGE 08865 .ORG FPFS60Y, *Y=PU LSB (NON-ZERO INDICATES NUMBER NOT PROGRAMMED) 08866 A(1), BR>B, AND, 08867 JUMP(FPFS61); ----- ----- 270 000009E7 00010801 ----- 08868 .ORG FPFS61, *HAS THIS FAV PAGE NUMBER BEEN PROGRAMMED? 08869 JZ(FPFS62F,FPFS62T); ----- ----- 9E7 0000238A 00000000 ----- 08870 .ORG FPFS62T, *YES, SEE IF THE PAGE IS IN A LATCH 08871 JUMP(FPFS332); ----- ----- 38B 00000731 00000000 ----- 08872 .ORG FPFS62F, *NO, SET MASK TO LOOK FOR NEXT PAGE IN INVENTORY 08873 MA(MASK), 08874 Y(>80), 08875 Y>RAM, 08876 JUMP(FPFS300A); ----- ----- 38A 0000039A 73801100 ----- 08877 *NORMAL MODE AND TOP MODE IF BTT NOT CAPTURED 08878 * LAST Y WAS STORE-6, A=STORE 08879 *ENTRY POINT FOR STORES 2,3,4 OR 5 08880 .ORG FPFS101T, *STORE 2,3,4 OR 5 08881 *SET MASK TO LOOK FOR NEXT PAGE IN INVENTORY 08882 MA(MASK), 08883 Y(>80), 08884 Y>RAM, 08885 JUMP(FPFS300B); ----- ----- 36F 0000039B 73801100 ----- 08886 *ENTRY POINT FOR STORES 6 OR 7 08887 *ENTRY POINT FROM FLOF CODE 08888 *ENTRY POINT FROM FAVOURITE PAGE MODE 08889 * LAST Y WAS STORE-6 08890 .ORG FPFS101F, *STORE 6 OR 7, STORE 6? 08891 *A=DPM 08892 MA(DPM), RAM>AR, 08893 JZ(FPFS102F,FPFS102T); ----- ----- 36E 0002238C 68000000 ----- 08894 *STORE 6 IN NORMAL OR FLOF 08895 * A=DPM 08896 .ORG FPFS102T, *PM=LAST PAGE MAG 08897 MA(PM), 08898 AR<<4>A, B(0), OR, 08899 Y>RAM, 08900 JUMP(FPFS103); ----- ----- 38D 000009E8 74001130 ----- 08901 .ORG FPFS103, *A=DPT 08902 MA(DPT), RAM>AR, 08903 JUMP(FPFS103A); ----- ----- 9E8 000209E9 69000000 ----- 08904 .ORG FPFS103A, *PT=LAST PAGE TENS 08905 MA(PT), 08906 AR<<4>A, B(0), OR, 08907 Y>RAM, 08908 JUMP(FPFS103B); ----- ----- 9E9 000009EA 75001130 ----- 08909 .ORG FPFS103B, *A=DPU 08910 MA(DPU), RAM>AR, 08911 JUMP(FPFS103C); ----- ----- 9EA 000209EB 6A000000 ----- 08912 .ORG FPFS103C, *PU=LAST PAGE UNITS 08913 MA(PU), 08914 AR<<4>A, B(0), OR, 08915 Y>RAM, 08916 JUMP(FPFS103D); ----- ----- 9EB 000009EC 76001130 ----- 08917 .ORG FPFS103D, *SET MASK TO RETURN NEXT PAGE IF ALREADY IN A LATCH 08918 MA(MASK), 08919 Y(0), 08920 Y>RAM, 08921 JUMP(FPFS332); ----- ----- 9EC 00000731 73001100 ----- 08922 *STORE 7 IN NORMAL OR FLOF 08923 * A=DPM 08924 .ORG FPFS102F, *A=DPM 08925 Y(DPM), 08926 Y>AR, 08927 JUMP(FPFS104); ----- ----- 38C 002209ED 00681000 ----- 08928 .ORG FPFS104, *CALL PNTIN0 08929 *RETURN=8, RETURN TO FPFS105 08930 MA(RETURN), 08931 Y(8), 08932 Y>RAM, 08933 JUMP(PNTIN0); ----- ----- 9ED 0000086F 7C081100 ----- 08934 .ORG FPFS105, *SET MASK TO LOOK FOR LAST PAGE IN INVENTORY 08935 *JUMP TO TOP CODE 08936 MA(MASK), 08937 Y(>80), 08938 Y>RAM, 08939 JUMP(FPFS46T); ----- ----- 798 00000387 73801100 ----- 08940 *TOP MODE WITH BTT CAPTURED, LAST TOP KEY WAS RED 08941 .ORG FPFS110Y, *CASE STORE 4 IN TOP 08942 *SET MASK FOR NEXT N, G OR B 08943 *MASK=7 08944 MA(MASK), 08945 Y(7), 08946 Y>RAM, 08947 JUMP(FPFS300B); ----- ----- 768 0000039B 73071100 ----- 08948 .ORG FPFS111, *CASE STORE 5 IN TOP 08949 *SET MASK FOR NEXT G OR B 08950 *MASK=6 08951 MA(MASK), 08952 Y(6), 08953 Y>RAM, 08954 JUMP(FPFS300B); ----- ----- 769 0000039B 73061100 ----- 08955 .ORG FPFS112, *CASE STORE 6 IN TOP 08956 *SET MASK FOR NEXT B 08957 *MASK=4 08958 MA(MASK), 08959 Y(4), 08960 Y>RAM, 08961 JUMP(FPFS300B); ----- ----- 76A 0000039B 73041100 ----- 08962 .ORG FPFS113, *CASE STORE 7 IN TOP 08963 *SET MASK FOR NEXT B 08964 *MASK=4 08965 MA(MASK), 08966 Y(4), 08967 Y>RAM, 08968 JUMP(FPFS300B); ----- ----- 76B 0000039B 73041100 ----- 08969 *STORES 1-5 IN FLOF MODE 08970 * RETURN=2, A=STORE 08971 .ORG FPFS200T, *A=POINTER TO FLOF LINK 08972 *CALL GFL0 08973 *RETURN=2, RETURN TO FPFS210 08974 AR>A, B(-1), ADD, 08975 Y>AR, 08976 JUMP(GFL0); ----- ----- 37D 002209EE 00FF0010 ----- 08977 .ORG FPFS210, * 08978 JUMP(FPFS332); ----- ----- 062 00000731 00000000 ----- 08979 *FIND PAGE 08980 * This routine finds the next page of the type defined by MASK. 08981 * 08982 *ENTRY POINT TO SEARCH FROM THE PAGE IN PM/PT/PU 08983 .ORG FPFS300B, *POINT TO PAGE NUMBER IN PU,PT,PM 08984 *A=PM 08985 Y(PM), 08986 Y>AR, 08987 JUMP(FPFS301); ----- ----- 39B 002209EF 00741000 ----- 08988 *ENTRY POINT TO SEARCH FROM THE DISPLAY PAGE 08989 .ORG FPFS300A, *POINT TO PAGE NUMBER IN DPU,DPT,DPM 08990 *A=DPM 08991 Y(DPM), 08992 Y>AR, 08993 JUMP(FPFS301); ----- ----- 39A 002209EF 00681000 ----- 08994 * A=POINTER TO BASE PAGE NUMBER IN SCRATCH RAM 08995 .ORG FPFS301, *FIND BTT POINTER 08996 *CALL PNTIN0 08997 *RETURN=1, RETURN TO FPFS320); 08998 MA(RETURN), 08999 Y(1), 09000 Y>RAM, 09001 JUMP(PNTIN0); ----- ----- 9EF 0000086F 7C011100 ----- 09002 *CHECK IF IT IS NECESSARY TO ROTATE IN BLOCK 09003 .ORG FPFS320, *B=MREG1 09004 MA(MREG1), RAM>BR, 09005 JUMP(FPFS321); ----- ----- 791 000109F0 65000000 ----- 09006 .ORG FPFS321, *B=ROTATE 09007 *Y=RIB 09008 MA(ROTATE), RAM>BR, 09009 A(RIB), BR>B, AND, 09010 JUMP(FPFS322); ----- ----- 9F0 000109F1 15010801 ----- 09011 .ORG FPFS322, *Y=NBY AND ROTT 09012 *ROTATE IN BLOCK ENABLED? 09013 *A=MASK 09014 MA(MASK), RAM>AR, 09015 A(NBY+ROTT), BR>B, AND, 09016 JZ(FPFS323F,FPFS330T); ----- ----- 9F1 0002238E 73300801 ----- 09017 .ORG FPFS323F, *BLOCK NOT FOUND OR ROTATED ALREADY? 09018 *Y=NORMAL AND GROUP FLAGS 09019 AR>A, B(>03), AND, 09020 JZ(FPFS324F,FPFS324T); ----- ----- 38E 00002390 00030810 ----- 09021 .ORG FPFS324F, *BLOCK NOT FOUND OR ROTATED ALREADY 09022 JUMP(FPFS330T); ----- ----- 390 0000038F 00000000 ----- 09023 .ORG FPFS324T, *SEARCHING FOR BLOCKS ONLY? 09024 *RETURN=8 09025 MA(RETURN), 09026 Y(8), 09027 Y>RAM, 09028 JZ(FPFS325F,FPFS325T); ----- ----- 391 00002392 7C081100 ----- 09029 .ORG FPFS325T, *SEARCHING FOR BLOCKS ONLY, DO NOT ROTATE 09030 JUMP(FPFS330T); ----- ----- 393 0000038F 00000000 ----- 09031 *ROTATE IN BLOCK 09032 * A=MASK, B=ROTATE 09033 .ORG FPFS325F, *USE TEST FOR TEMP STORE FOR MASK 09034 MA(TEST), 09035 AR>A, B(0), OR, 09036 Y>RAM, 09037 JUMP(FPFS326); ----- ----- 392 000009F2 70001110 ----- 09038 .ORG FPFS326, *SET MASK TO LOOK FOR BLOCK 09039 MA(MASK), 09040 Y(>04), 09041 Y>RAM, 09042 JUMP(FPFS326A); ----- ----- 9F2 000009F3 73041100 ----- 09043 .ORG FPFS326A, *SET ROTT 09044 *CALL SBT0B TO SEARCH BACK TO LAST BLOCK 09045 *RETURN=8, RETURN TO FPFS327 09046 MA(ROTATE), 09047 A(ROTT), BR>B, OR, 09048 Y>RAM, 09049 JUMP(SBT0B); ----- ----- 9F3 000004DB 15101101 ----- 09050 .ORG FPFS327, *A=TEST 09051 MA(TEST), RAM>AR, 09052 JUMP(FPFS328); ----- ----- 7A8 000209F4 70000000 ----- 09053 .ORG FPFS328, *RESTORE ORIGINAL MASK 09054 MA(MASK), 09055 AR>A, B(0), OR, 09056 Y>RAM, 09057 JUMP(FPFS330T); ----- ----- 9F4 0000038F 73001110 ----- 09058 *END OF RIB CODE 09059 .ORG FPFS330T, *SEARCH BTT 09060 *CALL SBT0A 09061 *RETURN=1, RETURN TO FPFS331 09062 MA(RETURN), 09063 Y(1), 09064 Y>RAM, 09065 JUMP(SBT0A); ----- ----- 38F 000004DA 7C011100 ----- 09066 .ORG FPFS331, *Y=BLOCK FOUND FLAG 09067 AR>A, B(>04), AND, 09068 JUMP(FPFS331A); ----- ----- 7A1 000009F5 00040810 ----- 09069 .ORG FPFS331A, *BLOCK FOUND? 09070 *B=ROTATE 09071 MA(ROTATE), RAM>BR, 09072 JZ(FPFS331AF,FPFS331AT); ----- ----- 9F5 00012394 15000000 ----- 09073 .ORG FPFS331AF, *BLOCK FOUND, CLEAR NBY 09074 MA(ROTATE), 09075 A(>FF-NBY), BR>B, AND, 09076 Y>RAM, 09077 JUMP(FPFS331AT); ----- ----- 394 00000395 15DF0901 ----- 09078 * 09079 .ORG FPFS331AT, *CONVERT BTT POINTER TO PAGE IN PU,PT,PM 09080 *CALL INTPN0 09081 *RETURN=1, RETURN TO FPFS332 09082 MA(RETURN), 09083 Y(1), 09084 Y>RAM, 09085 JUMP(INTPN0); ----- ----- 395 000007A3 7C011100 ----- 09086 * PM, PT AND PU CONTAIN PROPOSED NEXT PAGE 09087 .ORG FPFS332, *CHECK IF ALREADY IN A LATCH 09088 *CALL PIL0 09089 *RETURN=3, RETURN TO FPFS333 09090 MA(RETURN), 09091 Y(3), 09092 Y>RAM, 09093 JUMP(PIL0); ----- ----- 731 00000936 7C031100 ----- 09094 .ORG FPFS333, *Y=PAGE IN LATCH FLAG 09095 AR>A, B(>08), AND, 09096 JUMP(FPFS334); ----- ----- 293 000009F6 00080810 ----- 09097 .ORG FPFS334, *PAGE ALREADY IN A LATCH? 09098 *LOCAL=A 09099 MA(LOCAL), 09100 AR>A, B(0), OR, 09101 Y>RAM, 09102 JZ(FPFS335F,FPFS335T); ----- ----- 9F6 00002396 72001110 ----- 09103 .ORG FPFS335T, *A=STORE SET FOR PAGE IF IN A LATCH ALREADY 09104 *B=CURRENT STORE 09105 MA(STORE), RAM>BR, 09106 ARHI>A, B(7), AND, 09107 Y>AR, 09108 JUMP(FPFS336); ----- ----- 397 002309F7 77070820 ----- 09109 .ORG FPFS336, *IN A LATCH ALREADY 09110 *COMPARE STORES 09111 *(MISS O>CIN TO GET >= TEST) 09112 *A=MASK 09113 MA(MASK), RAM>AR, 09114 NAR>A, BR>B, ADD, 09115 JUMP(FPFS337); ----- ----- 9F7 000209F8 73000041 ----- 09116 .ORG FPFS337, *STORE SET FOR PAGE >= CURRENT STORE? 09117 *IF YES, LOOP BACK TO FIND ANOTHER PAGE 09118 *Y=MASK 09119 AR>A, B(0), OR, 09120 JN(FPFS338F,FPFS338T); ----- ----- 9F8 00004398 00001010 ----- 09121 .ORG FPFS338F, *MASK=0? 09122 * Need to clear MASK here because all the pages which meet the 09123 * search criteria defined by MASK may already be in a latch, 09124 * this would cause an endless loop. 09125 MA(MASK), 09126 Y(0), 09127 Y>RAM, 09128 JZ(FPFS300A,FPFS300B); ----- ----- 398 0000239A 73001100 ----- 09129 .ORG FPFS338T, *STORE SET FOR PAGE >= CURRENT STORE 09130 *OK TO RETURN TO SORT ROUTINE 09131 JUMP(FPFS335F); ----- ----- 399 00000396 00000000 ----- 09132 *COMMON EXIT TO SORT STORE ROUTINE 09133 .ORG FPFS335F, *RESTORE PIL RETURN DATA TO A 09134 MA(LOCAL), RAM>AR, 09135 JUMP(SST2Y); ----- ----- 396 00020290 72000000 ----- 09136 *INITIALISED ALL STORES, SORT OUT ROW 24 09137 *COPY ROW24 FROM OLD STOR0 TO NEW STOR0 IF APIN 09138 * B=SYS2 09139 .ORG FPFS3T, *Y=APIN, B=OLDSTR (SOURCE LATCH) 09140 MA(OLDSTR), RAM>BR, 09141 A(APIN), BR>B, AND, 09142 JUMP(FPFS400); ----- ----- 369 000109F9 71010801 ----- 09143 .ORG FPFS400, *A=STOR0 (DEST LATCH) 09144 *APIN? 09145 MA(STOR0), RAM>AR, 09146 JZ(FPFS401F,FPFS401T); ----- ----- 9F9 0002239C 20000000 ----- 09147 .ORG FPFS401T, *B=STOR0 09148 MA(STOR0), RAM>BR, 09149 JUMP(FPFS410); ----- ----- 39D 000100A1 20000000 ----- 09150 .ORG FPFS401F, *CALL CBR0 TO KEEP USER DEFINED PROMPT 09151 *KEEP ROW 24 DISPLAY 09152 *RETURN=1, RETURN TO FPFS410 09153 MA(RETURN), 09154 Y(1), 09155 Y>RAM, 09156 JUMP(CBR0); ----- ----- 39C 000009AE 7C011100 ----- 09157 * B=NEW STOR0 09158 .ORG FPFS410, *A=OLDSTR 09159 MA(OLDSTR), RAM>AR, 09160 JUMP(FPFS411); ----- ----- 0A1 000209FA 71000000 ----- 09161 .ORG FPFS411, *Y=NEW STOR0 XOR OLD STOR7 09162 AR.0F>A, BRHI>B, XOR, 09163 JUMP(FPFS412); ----- ----- 9FA 000009FB 000018CC ----- 09164 .ORG FPFS412, *NEW STOR0 = OLD STOR7? 09165 *STORE MSN = OLD STOR7 09166 MA(STORE), 09167 AR<<4>A, B(0), OR, 09168 Y>RAM, 09169 JZ(FPFS413F,FPFS413T); ----- ----- 9FB 0000239E 77001130 ----- 09170 *STOR0 IS OLD STOR7 09171 .ORG FPFS413T, *B=VPPRG1 09172 MA(VPPRG1), RAM>BR, 09173 JUMP(FPFS440); ----- ----- 39F 000109FC 61000000 ----- 09174 *COPY ROW 24 BUFFER FROM OLD STOR7 TO NEW STOR7 09175 .ORG FPFS413F, *OK TO COPY ACROSS 09176 *B=SOURCE LATCH 09177 MA(STORE), RAM>BR, 09178 JUMP(FPFS420); ----- ----- 39E 000109FD 77000000 ----- 09179 .ORG FPFS420, *A=DEST LATCH 09180 MA(STOR7), RAM>AR, 09181 JUMP(FPFS421); ----- ----- 9FD 000209FE 27000000 ----- 09182 .ORG FPFS421, *CALL CBR0 09183 *RETURN=2, RETURN TO FPFS430 09184 MA(RETURN), 09185 Y(2), 09186 Y>RAM, 09187 JUMP(CBR0); ----- ----- 9FE 000009AE 7C021100 ----- 09188 * RWL= NEW STOR7 09189 .ORG FPFS430, *POINT TO FLOF FLAGS 09190 Y(-16), 09191 Y>PR, 09192 JUMP(FPFS431); ----- ----- 0A2 000009FF 80F01000 ----- 09193 .ORG FPFS431, *CLEAR STOR7 FLOF FLAGS 09194 *B=VPPRG1 09195 MA(VPPRG1), RAM>BR, 09196 Y(0), 09197 Y>DR, 09198 JUMP(FPFS440); ----- ----- 9FF 000119FC 61001000 ----- 09199 * B=VPPRG1 09200 .ORG FPFS440, *Y=SBL 09201 A(SBL), BR>B, AND, 09202 JUMP(FPFS441); ----- ----- 9FC 00000A00 00800801 ----- 09203 .ORG FPFS441, *SBL=0, SBL? 09204 *IF YES, RETURN TO SST0A CALL 09205 MA(VPPRG1), 09206 A(>FF-SBL), BR>B, AND, 09207 Y>RAM, 09208 JZ(FPFS442F,VPP290); ----- ----- A00 000023A0 617F0901 ----- 09209 .ORG FPFS442F, *RETURN TO SST0B CALL 09210 *AR=VPPRG1 09211 MA(VPPRG1), RAM>AR, 09212 JUMP(VPP310); ----- ----- 3A0 00020315 61000000 ----- 09213 * 09214 *+++PAGE IN LATCH ROUTINE 09215 * 09216 * This routine checks whether the page in PU, PT and PM is 09217 * in a latch and if it has been captured. This information 09218 * is returned in AR in the following format:- 09219 * ----------------------------------------------------------------- 09220 * |CAP |store number |not in |latch number | 09221 * | | |latch | | 09222 * ----------------------------------------------------------------- 09223 * If the page is in a latch, the routine also returns the latch 09224 * flags (LAFx) in BR. 09225 * 09226 * The latch number is the highest latch number that contains 09227 * this page number. 09228 * RETURN=return pointer 09229 .ORG PIL0, *COUNT=7 09230 MA(COUNT), 09231 A(7), B(7), OR, 09232 Y>RAM, Y>AR, 09233 JUMP(PIL1F); ----- ----- 936 002203A8 78071100 ----- 09234 * 09235 .ORG PIL1F, *AR=PU, PR=U0+COUNT 09236 MA(PU), RAM>AR, 09237 AR>A, B(U0), ADD, 09238 Y>PR, 09239 JUMP(PIL2); ----- ----- 3A8 00020A01 F6200010 ----- 09240 .ORG PIL2, *BR=LATCH UNITS 09241 *AR=ARHI 09242 PR>MA, RAM>BR, 09243 ARHI>A, B(0), OR, 09244 Y>AR, 09245 JUMP(PIL3); ----- ----- A01 00330A02 00001020 ----- 09246 .ORG PIL3, *Y=LATCH UNITS - PU 09247 *BR=PR 09248 PR>BR, 09249 NAR>A, BR.0F>B, O>CIN, ADD, 09250 JUMP(PIL4); ----- ----- A02 00410A03 00000442 ----- 09251 .ORG PIL4, *SAME UNITS? 09252 *PR=BR-8 (POINT TO TENS) 09253 *AR=PT 09254 MA(PT), RAM>AR, 09255 A(-8), BR>B, ADD, 09256 Y>PR, 09257 JZ(PIL5F,PIL5T); ----- ----- A03 000223A2 F5F80001 ----- 09258 .ORG PIL5F, *DIFFERENT UNITS 09259 *AR=COUNT 09260 MA(COUNT), RAM>AR, 09261 JUMP(PIL11F); ----- ----- 3A2 000203A6 78000000 ----- 09262 .ORG PIL5T, *SAME UNITS 09263 *BR=LATCH TENS 09264 *AR=ARHI 09265 PR>MA, RAM>BR, 09266 ARHI>A, B(0), OR, 09267 Y>AR, 09268 JUMP(PIL6); ----- ----- 3A3 00330A04 00001020 ----- 09269 .ORG PIL6, *Y=LATCH TENS - PT 09270 *BR=PR 09271 PR>BR, 09272 NAR>A, BR.0F>B, O>CIN, ADD, 09273 JUMP(PIL7); ----- ----- A04 00410A05 00000442 ----- 09274 .ORG PIL7, *SAME TENS? 09275 *PR=BR-8 (POINT TO MAG) 09276 *AR=PM 09277 MA(PM), RAM>AR, 09278 A(-8), BR>B, ADD, 09279 Y>PR, 09280 JZ(PIL8F,PIL8T); ----- ----- A05 000223A4 F4F80001 ----- 09281 .ORG PIL8F, *DIFFERENT TENS 09282 *AR=COUNT 09283 MA(COUNT), RAM>AR, 09284 JUMP(PIL11F); ----- ----- 3A4 000203A6 78000000 ----- 09285 .ORG PIL8T, *SAME TENS 09286 *BR=LATCH MAG 09287 *AR=ARHI 09288 PR>MA, RAM>BR, 09289 ARHI>A, B(0), OR, 09290 Y>AR, 09291 JUMP(PIL9); ----- ----- 3A5 00330A06 00001020 ----- 09292 .ORG PIL9, *Y=LATCH MAG - PM 09293 NAR>A, BR.0F>B, O>CIN, ADD, 09294 JUMP(PIL10); ----- ----- A06 00000A07 00000442 ----- 09295 .ORG PIL10, *SAME MAG? 09296 *AR=COUNT 09297 MA(COUNT), RAM>AR, 09298 JZ(PIL11F,PIL11T); ----- ----- A07 000223A6 78000000 ----- 09299 * 09300 .ORG PIL11F, *PAGE IS NOT IN THIS LATCH 09301 *DEC COUNT, AR=COUNT 09302 MA(COUNT), 09303 AR>A, B(-1), ADD, 09304 Y>RAM, Y>AR, 09305 JUMP(PIL12); ----- ----- 3A6 00220A08 78FF0110 ----- 09306 .ORG PIL12, *COUNT<0? 09307 *BR=RETURN 09308 MA(RETURN), RAM>BR, 09309 JN(PIL1F,PIL13T); ----- ----- A08 000143A8 7C000000 ----- 09310 *PAGE NOT IN A LATCH 09311 .ORG PIL13T, *Y=RETURN 09312 A(7), BR>B, AND, 09313 JUMP(PIL13A); ----- ----- 3A9 00000A09 00070801 ----- 09314 .ORG PIL13A, *SET FLAG IN RETURN DATA 09315 *CASE RETURN=? 09316 Y(>08), 09317 Y>AR, 09318 JY(SST2Y); ----- ----- A09 0022C290 00081000 ----- 09319 *PAGE IN THIS LATCH, WHICH STORE? 09320 * AR==COUNT 09321 .ORG PIL11T, *SET STORE POINTER IN COUNT TO STORE 7 09322 AR>A, B(>70), OR, 09323 Y>AR, 09324 JUMP(PIL14F); ----- ----- 3A7 002203AC 00701010 ----- 09325 * 09326 .ORG PIL14F, *POINT TO STORE TABLE LOC 09327 ARHI>A, B(STOR0), ADD, 09328 Y>PR, 09329 JUMP(PIL15); ----- ----- 3AC 00000A0A 80200020 ----- 09330 .ORG PIL15, *BR=LATCH FOR THIS STORE 09331 PR>MA, RAM>BR, 09332 JUMP(PIL16); ----- ----- A0A 00110A0B 00000000 ----- 09333 .ORG PIL16, *COMPARE LATCH WITH LATCH IN TABLE 09334 AR.0F>A, BRHI>B, XOR, 09335 JUMP(PIL17); ----- ----- A0B 00000A0C 000018CC ----- 09336 .ORG PIL17, *Y=STORE NUMBER 09337 *LATCH IN THIS STORE? 09338 ARHI>A, B(0), OR, 09339 JZ(PIL18F,PIL18T); ----- ----- A0C 000023AA 00001020 ----- 09340 .ORG PIL18F, *NOT IN THIS STORE 09341 *DEC STORE 09342 AR>A, B(-16), ADD, Y>AR, 09343 JZ(PIL14F,PIL19T); ----- ----- 3AA 002223AC 00F00010 ----- 09344 .ORG PIL19T, *LATCH NOT FOUND IN ANY STORE 09345 *BR=RETURN 09346 *ERROR 09347 MA(RETURN), RAM>BR, 09348 JUMP(PIL13T); ----- ----- 3AD 000103A9 7C000000 ----- 09349 *UPDATE CAP 09350 .ORG PIL18T, *PR=LAF0+COUNT 09351 AR.0F>A, B(LAF0), ADD, 09352 Y>PR, 09353 JUMP(PIL20); ----- ----- 3AB 00000A0D 804000C0 ----- 09354 .ORG PIL20, *BR=LAFx 09355 *PR=LAF0+COUNT 09356 PR>MA, RAM>BR, 09357 AR.0F>A, B(LAF0), ADD, 09358 Y>PR, 09359 JUMP(PIL21); ----- ----- A0D 00110A0E 804000C0 ----- 09360 .ORG PIL21, *Y=CAP 09361 *BR=RETURN 09362 MA(RETURN), RAM>BR, 09363 A(CAP), BR>B, AND, 09364 JUMP(PIL22); ----- ----- A0E 00010A0F 7C800801 ----- 09365 .ORG PIL22, *PAGE CAPTURED? 09366 *Y=RETURN 09367 *BR=LAFx 09368 PR>MA, RAM>BR, 09369 A(7), BR>B, AND, 09370 JZ(PIL23F,PIL23T); ----- ----- A0F 001123AE 00070801 ----- 09371 .ORG PIL23F, *YES, UPDATE CAP AND LATCH NUMBER IN RETURN DATA 09372 *CASE RETURN =? 09373 AR>A, B(CAP), OR, 09374 Y>AR, 09375 JY(SST2Y); ----- ----- 3AE 0022C290 00801010 ----- 09376 .ORG PIL23T, *NO, UPDATE CAP AND LATCH NUMBER IN RETURN DATA 09377 *CASE RETURN =? 09378 JY(SST2Y); ----- ----- 3AF 0000C290 00000000 ----- 09379 * 09380 *+++INLA: INITIALISE LATCH ROUTINE 09381 * 09382 * This routine initialises the latch in AR 09383 * to capture the page in PU, PT and PM 09384 * 09385 * input pars are:- 09386 * RETURN: return pointer 09387 * A: latch for init 09388 * PU,PT,PM: page for latch 09389 * local variables used are:- 09390 * COUNT 09391 * 09392 .ORG INLA0, *RWL=LATCH FOR INIT 09393 MA(RWL), 09394 AR>A, B(0), ADD, 09395 Y>RAM, Y>IO, 09396 JUMP(INLA0A); ----- ----- 947 00000A10 0B004110 ----- 09397 .ORG INLA0A, *COUNT=LATCH FOR INIT 09398 MA(COUNT), 09399 AR>A, B(0), ADD, 09400 Y>RAM, 09401 JUMP(INLA1); ----- ----- A10 00000A11 78000110 ----- 09402 *INIT LAFx 09403 .ORG INLA1, *PR=INDEX TO LAFx 09404 AR>A, B(LAF0), ADD, 09405 Y>PR, 09406 JUMP(INLA2); ----- ----- A11 00000A12 80400010 ----- 09407 .ORG INLA2, *CLEAR LAFx 09408 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 09409 PR>MA, 09410 Y(0), 09411 Y>RAM, 09412 JUMP(INLA14); ----- ----- A12 00100A13 00001100 ----- 09413 *INITIALISE NON-DISPLAY AREA (P=-8 -> -24) 09414 *CLEAR CLEAR PACKET 26 FLAGS AND ROW MARKERS 09415 .ORG INLA14, *PR=-8 09416 Y(-8), 09417 Y>PR, 09418 JUMP(INLA17F); ----- ----- A13 000003C0 80F81000 ----- 09419 * 09420 .ORG INLA17F, *DR=0, BR=PR 09421 PR>BR, 09422 Y(0), 09423 Y>DR, 09424 JUMP(INLA15); ----- ----- 3C0 00411A14 00001000 ----- 09425 .ORG INLA15, *Y=BR+12 09426 A(12), BR>B, ADD, 09427 JUMP(INLA16); ----- ----- A14 00000A15 000C0001 ----- 09428 .ORG INLA16, *LAST BYTE? 09429 *IF YES, CALL PXTOLA0T TO LOAD LATCH WITH PM, PT, PU 09430 *RETURN!=3, RETURN TO INLA30F, 09431 *PR++ 09432 A(-1), BR>B, ADD, 09433 Y>PR, 09434 JZ(INLA17F,PXTOLA0T); ----- ----- A15 000023C0 80FF0001 ----- 09435 * 09436 *PXTOLA: LOAD LATCH WITH PU, PT AND PM 09437 * A=LATCH FOR LOAD, RETURN=RETURN POINTER 09438 *UPDATE UNITS 09439 .ORG PXTOLA0T, *PR= LATCH UNITS INDEX 09440 *AR=PU 09441 MA(PU), RAM>AR, 09442 AR>A, B(U0), ADD, 09443 Y>PR, 09444 JUMP(PXTOLA2); ----- ----- 3C1 00020A16 F6200010 ----- 09445 .ORG PXTOLA2, *BR=OLD LATCH UNITS 09446 PR>MA, RAM>BR, 09447 JUMP(PXTOLA3); ----- ----- A16 00110A17 00000000 ----- 09448 .ORG PXTOLA3, *UPDATE LATCH UNITS 09449 PR>MA, PR>BR, 09450 ARHI>A, BR.F0>B, OR, 09451 Y>RAM, Y>IO, 09452 JUMP(PXTOLA4); ----- ----- A17 00510A18 00005123 ----- 09453 *UPDATE TENS 09454 .ORG PXTOLA4, *PR= LATCH TENS INDEX 09455 *AR=PT 09456 MA(PT), RAM>AR, 09457 A(-8), BR>B, ADD, 09458 Y>PR, 09459 JUMP(PXTOLA5); ----- ----- A18 00020A19 F5F80001 ----- 09460 .ORG PXTOLA5, *BR=OLD LATCH TENS 09461 PR>MA, RAM>BR, 09462 JUMP(PXTOLA6); ----- ----- A19 00110A1A 00000000 ----- 09463 .ORG PXTOLA6, *UPDATE LATCH TENS 09464 PR>MA, PR>BR, 09465 ARHI>A, BR.F0>B, OR, 09466 Y>RAM, Y>IO, 09467 JUMP(PXTOLA7); ----- ----- A1A 00510A1B 00005123 ----- 09468 *UPDATE MAG 09469 .ORG PXTOLA7, *PR= LATCH MAG INDEX 09470 *AR=PM 09471 MA(PM), RAM>AR, 09472 A(-8), BR>B, ADD, 09473 Y>PR, 09474 JUMP(PXTOLA8); ----- ----- A1B 00020A1C F4F80001 ----- 09475 .ORG PXTOLA8, *BR=OLD LATCH MAG 09476 PR>MA, RAM>BR, 09477 JUMP(PXTOLA9); ----- ----- A1C 00110A1D 00000000 ----- 09478 .ORG PXTOLA9, *UPDATE LATCH MAG 09479 PR>MA, 09480 ARHI>A, BR.F0>B, OR, 09481 Y>RAM, Y>IO, 09482 JUMP(PXTOLA10); ----- ----- A1D 00100A1E 00005123 ----- 09483 .ORG PXTOLA10, *A=RETURN 09484 MA(RETURN), RAM>AR, 09485 JUMP(PXTOLA11); ----- ----- A1E 00020A1F 7C000000 ----- 09486 .ORG PXTOLA11, *AR=COUNT (CONTAINS LATCH FOR INIT) 09487 *Y=RETURN-3 09488 MA(COUNT), RAM>AR, 09489 AR.0F>A, B(-3), ADD, 09490 JUMP(PXTOLA12); ----- ----- A1F 00020A20 78FD00C0 ----- 09491 .ORG PXTOLA12, *RETURN? 09492 JZ(INLA30F,TPP102T); ----- ----- A20 000023C2 00000000 ----- 09493 *CLOSE ANY MAGS OPEN FOR THIS LATCH 09494 * A=COUNT 09495 .ORG INLA30F, *COUNT=7, INIT LOOP COUNT 09496 MA(COUNT), 09497 Y(7), 09498 Y>RAM, 09499 JUMP(INLA32); ----- ----- 3C2 00000A21 78071100 ----- 09500 .ORG INLA32, *SET MOP IN AR FOR COMPARISON 09501 *BR=COUNT 09502 MA(COUNT), RAM>BR, 09503 AR>A, B(MOP), OR, 09504 Y>AR, 09505 JUMP(INLA39F); ----- ----- A21 002303C6 78081010 ----- 09506 * 09507 .ORG INLA39F, *PR= MFx INDEX 09508 A(MF0), BR>B, ADD, 09509 Y>PR, 09510 JUMP(INLA33); ----- ----- 3C6 00000A22 80580001 ----- 09511 .ORG INLA33, *BR= MFx 09512 PR>MA, RAM>BR, 09513 JUMP(INLA34); ----- ----- A22 00110A23 00000000 ----- 09514 .ORG INLA34, *COMPARE LATCH NUMBERS 09515 AR>A, BR.0F>B, XOR, 09516 JUMP(INLA35); ----- ----- A23 00000A24 00001812 ----- 09517 .ORG INLA35, *MAG OPEN FOR LATCH? 09518 JZ(INLA36F,INLA36T); ----- ----- A24 000023C4 00000000 ----- 09519 .ORG INLA36T, *YES 09520 *CLEAR MO AND MLP 09521 PR>MA, 09522 A(>F0), BR>B, AND, 09523 Y>RAM, 09524 JUMP(INLA36F); ----- ----- 3C5 001003C4 00F00901 ----- 09525 .ORG INLA36F, *BR=COUNT 09526 MA(COUNT), RAM>BR, 09527 JUMP(INLA37); ----- ----- 3C4 00010A25 78000000 ----- 09528 .ORG INLA37, *DEC COUNT 09529 MA(COUNT), 09530 A(-1), BR>B, ADD, 09531 Y>RAM, 09532 JUMP(INLA38); ----- ----- A25 00000A26 78FF0101 ----- 09533 .ORG INLA38, *BR=COUNT 09534 *COUNT<0? 09535 MA(COUNT), RAM>BR, 09536 JN(INLA39F,INLA39T); ----- ----- A26 000143C6 78000000 ----- 09537 *EXIT 09538 .ORG INLA39T, *BR=RETURN 09539 MA(RETURN), RAM>BR, 09540 JUMP(INLA40); ----- ----- 3C7 00010A27 7C000000 ----- 09541 .ORG INLA40, *Y=RETURN 09542 A(3), BR>B, AND, 09543 JUMP(INLA41); ----- ----- A27 00000A28 00030801 ----- 09544 .ORG INLA41, *CASE RETURN=? 09545 JY(SST5Y); ----- ----- A28 0000C298 00000000 ----- 09546 * 09547 *+++PAGE NUMBER TO INVENTORY PAGE POINTER 09548 * 09549 * This routine will return in P a pointer the address 09550 * in the inventory/BTT page of the page number indexed 09551 * by A. Invalid page numbers will return P=0. 09552 * 09553 * input pars are:- 09554 * A: page number index 09555 * RETURN: return pointer 09556 * return pars are:- 09557 * A: return data from DBB 09558 * P,B: inv/BTT pointer 09559 * TPD: inv/BTT byte 09560 * RWL: latch for store 1 09561 * last Y, LOCAL: error code 09562 * local variables used are 09563 * RET3, RET4, LOCAL 09564 .ORG PNTIN0, *RET4=P=INDEX TO PAGE NUMBER 09565 MA(RET4), 09566 AR>A, B(0), ADD, 09567 Y>RAM, Y>PR, 09568 JUMP(PNTIN1); ----- ----- 86F 00000A29 F9000110 ----- 09569 .ORG PNTIN1, *A=PAGE MAGS 09570 PR>MA, RAM>AR, 09571 JUMP(PNTIN2); ----- ----- A29 00120A2A 00000000 ----- 09572 .ORG PNTIN2, *Y=MAG-8 09573 ARHI>A, B(-8), ADD, 09574 JUMP(PNTIN3); ----- ----- A2A 00000A2B 00F80020 ----- 09575 .ORG PNTIN3, *LEGAL MAG? 09576 *LOCAL MSN IS TEMP STORE FOR MAG 09577 *INIT LSN ERROR CODE TO ZERO 09578 MA(LOCAL), 09579 AR.F0>A, B(0), OR, 09580 Y>RAM, 09581 JN(PNTIN4F,PNTIN4T); ----- ----- A2B 000043C8 720011D0 ----- 09582 .ORG PNTIN4F, *MAG ERROR 09583 *SET MAG STORE TO 0 09584 *ERROR CODE=1 09585 MA(LOCAL), 09586 Y(1), 09587 Y>RAM, 09588 JUMP(PNTIN4T); ----- ----- 3C8 000003C9 72011100 ----- 09589 .ORG PNTIN4T, *A=P=240 09590 A(120), B(120), ADD, 09591 Y>PR, Y>AR, 09592 JUMP(PNTIN5); ----- ----- 3C9 00220A2C 80780000 ----- 09593 .ORG PNTIN5, *B=240, P=A=340 09594 PR>BR, 09595 AR>A, B(100), ADD, 09596 Y>PR, Y>AR, 09597 JUMP(PNTIN6); ----- ----- A2C 00630A2D 80640010 ----- 09598 .ORG PNTIN6, *A=580 09599 *B=MAG 09600 MA(LOCAL), RAM>BR, 09601 AR>A, BR>B, ADD, 09602 Y>AR, 09603 JUMP(PNTIN7); ----- ----- A2D 00230A2E 72000011 ----- 09604 .ORG PNTIN7, *Y=MAG 09605 A(7), BRHI>B, AND, 09606 JUMP(PNTIN8); ----- ----- A2E 00000A2F 0007080C ----- 09607 .ORG PNTIN8, *A=640, B=340 09608 *CASE MAG=? 09609 PR>BR, 09610 AR>A, B(60), ADD, 09611 Y>AR, 09612 JY(PNTIN10Y.0); ----- ----- A2F 0063C7B0 003C0010 ----- 09613 * A=640, B=340, P=340 09614 *CASE MAG=0 09615 .ORG PNTIN10Y.0, 09616 *P=740 09617 MA(RET4), RAM>BR, 09618 AR>A, B(100), ADD, 09619 Y>PR, 09620 JUMP(PNTIN20); ----- ----- 7B0 00010A30 F9640010 ----- 09621 *CASE MAG=1 09622 .ORG PNTIN10Y.1, 09623 *P=40 09624 *B=INDEX TO PAGE MAGS 09625 MA(RET4), RAM>BR, 09626 Y(40), 09627 Y>PR, 09628 JUMP(PNTIN20); ----- ----- 7B1 00010A30 F9281000 ----- 09629 *CASE MAG=2 09630 .ORG PNTIN10Y.2, 09631 *P=140 09632 *B=INDEX TO PAGE MAGS 09633 MA(RET4), RAM>BR, 09634 A(70), B(70), ADD, 09635 Y>PR, 09636 JUMP(PNTIN20); ----- ----- 7B2 00010A30 F9460000 ----- 09637 *CASE MAG=3 09638 .ORG PNTIN10Y.3, 09639 *P=240 09640 *B=INDEX TO PAGE MAGS 09641 MA(RET4), RAM>BR, 09642 A(120), B(120), ADD, 09643 Y>PR, 09644 JUMP(PNTIN20); ----- ----- 7B3 00010A30 F9780000 ----- 09645 *CASE MAG=4 09646 .ORG PNTIN10Y.4, 09647 *P=340 09648 *B=INDEX TO PAGE MAGS 09649 MA(RET4), RAM>BR, 09650 A(0), BR>B, OR, 09651 Y>PR, 09652 JUMP(PNTIN20); ----- ----- 7B4 00010A30 F9001001 ----- 09653 *CASE MAG=5 09654 .ORG PNTIN10Y.5, 09655 *P=440 09656 *B=INDEX TO PAGE MAGS 09657 MA(RET4), RAM>BR, 09658 A(100), BR>B, ADD, 09659 Y>PR, 09660 JUMP(PNTIN20); ----- ----- 7B5 00010A30 F9640001 ----- 09661 *CASE MAG=6 09662 .ORG PNTIN10Y.6, 09663 *P=540 09664 *B=INDEX TO PAGE MAGS 09665 MA(RET4), RAM>BR, 09666 AR>A, B(-100), ADD, 09667 Y>PR, 09668 JUMP(PNTIN20); ----- ----- 7B6 00010A30 F99C0010 ----- 09669 *CASE MAG=7 09670 .ORG PNTIN10Y.7, 09671 *P=640 09672 *B=INDEX TO PAGE MAGS 09673 MA(RET4), RAM>BR, 09674 AR>A, B(0), OR, 09675 Y>PR, 09676 JUMP(PNTIN20); ----- ----- 7B7 00010A30 F9001010 ----- 09677 * P=BTT INDEX, B=POINTER TO PAGE MAG 09678 .ORG PNTIN20, *B=BTT INDEX, P=INDEX TO PAGE TENS 09679 PR>BR, 09680 A(1), BR>B, ADD, 09681 Y>PR, 09682 JUMP(PNTIN21); ----- ----- A30 00410A31 80010001 ----- 09683 .ORG PNTIN21, *A=PAGE TENS 09684 PR>MA, RAM>AR, 09685 JUMP(PNTIN22); ----- ----- A31 00120A32 00000000 ----- 09686 .ORG PNTIN22, *Y=TENS-10 09687 ARHI>A, B(-10), ADD, 09688 JUMP(PNTIN23); ----- ----- A32 00000A33 00F60020 ----- 09689 .ORG PNTIN23, *Y=TENS, HEX TENS? 09690 ARHI>A, B(0), OR, 09691 JN(PNTIN24F,PNTIN24T); ----- ----- A33 000043CA 00001020 ----- 09692 .ORG PNTIN24F, *HEX TENS 09693 *DO THE SAME AS IF TENS=9 09694 *ERROR CODE=1 09695 MA(LOCAL), 09696 Y(1), 09697 Y>RAM, 09698 JUMP(PNTIN30Y.9); ----- ----- 3CA 000007C9 72011100 ----- 09699 .ORG PNTIN24T, *DECIMAL TENS, CASE TENS=? 09700 *P= BTT INDEX 09701 A(0), BR>B, OR, 09702 Y>PR, 09703 JY(PNTIN30Y.0); ----- ----- 3CB 0000C7C0 80001001 ----- 09704 *CASE TENS=0 09705 .ORG PNTIN30Y.0, 09706 *NO TENS TO ADD 09707 *B=BTT INDEX 09708 *A=INDEX TO PAGE MAGS 09709 PR>BR, 09710 MA(RET4), RAM>AR, 09711 JUMP(PNTIN40); ----- ----- 7C0 00430A34 79000000 ----- 09712 *CASE TENS=1 09713 .ORG PNTIN30Y.1, 09714 *ADD TENS INTO BTT INDEX 09715 A(10), BR>B, ADD, 09716 Y>PR, 09717 JUMP(PNTIN30Y.0); ----- ----- 7C1 000007C0 800A0001 ----- 09718 *CASE TENS=2 09719 .ORG PNTIN30Y.2, 09720 *ADD TENS INTO BTT INDEX 09721 A(20), BR>B, ADD, 09722 Y>PR, 09723 JUMP(PNTIN30Y.0); ----- ----- 7C2 000007C0 80140001 ----- 09724 *CASE TENS=3 09725 .ORG PNTIN30Y.3, 09726 *ADD TENS INTO BTT INDEX 09727 A(30), BR>B, ADD, 09728 Y>PR, 09729 JUMP(PNTIN30Y.0); ----- ----- 7C3 000007C0 801E0001 ----- 09730 *CASE TENS=4 09731 .ORG PNTIN30Y.4, 09732 *ADD TENS INTO BTT INDEX 09733 A(40), BR>B, ADD, 09734 Y>PR, 09735 JUMP(PNTIN30Y.0); ----- ----- 7C4 000007C0 80280001 ----- 09736 *CASE TENS=5 09737 .ORG PNTIN30Y.5, 09738 *ADD TENS INTO BTT INDEX 09739 A(50), BR>B, ADD, 09740 Y>PR, 09741 JUMP(PNTIN30Y.0); ----- ----- 7C5 000007C0 80320001 ----- 09742 *CASE TENS=6 09743 .ORG PNTIN30Y.6, 09744 *ADD TENS INTO BTT INDEX 09745 A(60), BR>B, ADD, 09746 Y>PR, 09747 JUMP(PNTIN30Y.0); ----- ----- 7C6 000007C0 803C0001 ----- 09748 *CASE TENS=7 09749 .ORG PNTIN30Y.7, 09750 *ADD TENS INTO BTT INDEX 09751 A(70), BR>B, ADD, 09752 Y>PR, 09753 JUMP(PNTIN30Y.0); ----- ----- 7C7 000007C0 80460001 ----- 09754 *CASE TENS=8 09755 .ORG PNTIN30Y.8, 09756 *ADD TENS INTO BTT INDEX 09757 A(80), BR>B, ADD, 09758 Y>PR, 09759 JUMP(PNTIN30Y.0); ----- ----- 7C8 000007C0 80500001 ----- 09760 *CASE TENS=9 09761 .ORG PNTIN30Y.9, 09762 *ADD TENS INTO BTT INDEX 09763 A(90), BR>B, ADD, 09764 Y>PR, 09765 JUMP(PNTIN30Y.0); ----- ----- 7C9 000007C0 805A0001 ----- 09766 * A=INDEX TO PAGE MAGS, B=BTT INDEX 09767 .ORG PNTIN40, *P=INDEX TO PAGE UNITS 09768 AR>A, B(2), ADD, 09769 Y>PR, 09770 JUMP(PNTIN41); ----- ----- A34 00000A35 80020010 ----- 09771 .ORG PNTIN41, *A=PAGE UNITS 09772 PR>MA, RAM>AR, 09773 JUMP(PNTIN42); ----- ----- A35 00120A36 00000000 ----- 09774 .ORG PNTIN42, *Y=PAGE UNITS- 10 09775 ARHI>A, B(-10), ADD, 09776 JUMP(PNTIN43); ----- ----- A36 00000A37 00F60020 ----- 09777 .ORG PNTIN43, *ADD UNITS INTO BTT INDEX 09778 *HEX UNITS? 09779 ARHI>A, BR>B, ADD, 09780 Y>PR, 09781 JN(PNTIN44F,PNTIN44T); ----- ----- A37 000043CC 80000021 ----- 09782 .ORG PNTIN44F, *HEX UNITS, DO THE SAME AS IF TENS=9 09783 A(9), BR>B, ADD, 09784 Y>PR, 09785 JUMP(PNTIN44A); ----- ----- 3CC 00000A38 80090001 ----- 09786 .ORG PNTIN44A, *ERROR CODE=1 09787 MA(LOCAL), 09788 Y(1), 09789 Y>RAM, 09790 JUMP(PNTIN44T); ----- ----- A38 000003CD 72011100 ----- 09791 * P= COMPLETE BTT POINTER 09792 .ORG PNTIN44T, *READ AND DECODE BTT BYTE 09793 *CALL DBB0 09794 *RET3=0, RETURN TO PNTIN46Y 09795 MA(RET3), 09796 Y(0), 09797 Y>RAM, 09798 JUMP(DBB0); ----- ----- 3CD 00000A39 7A001100 ----- 09799 *EXIT 09800 * LOCAL=ERROR CODE 09801 .ORG PNTIN46Y, *B=RETURN 09802 MA(RETURN), RAM>BR, 09803 JUMP(PNTIN47); ----- ----- 740 00010A3A 7C000000 ----- 09804 .ORG PNTIN47, *Y=RETURN 09805 *B=LOCAL 09806 MA(LOCAL), RAM>BR, 09807 A(>0F), BR>B, AND, 09808 JUMP(PNTIN48); ----- ----- A3A 00010A3B 720F0801 ----- 09809 .ORG PNTIN48, *CASE RETURN=? 09810 *Y=LOCAL=ERROR CODE 09811 *B=BTT POINTER 09812 PR>BR, 09813 MA(LOCAL), 09814 A(0), BR.0F>B, OR, 09815 Y>RAM, 09816 JY(DIP4Y); ----- ----- A3B 0041C790 72001102 ----- 09817 * 09818 *+++INVENTORY PAGE POINTER TO PAGE NUMBER 09819 * 09820 * This routine will return in to PU,PT and PM the page 09821 * indexed by inventory/BTT pointer in P. 09822 * Invalid page numbers will return P=>F. 09823 * 09824 * input pars are:- 09825 * P: inv/BTT pointer 09826 * RETURN: return pointer 09827 * return pars are:- 09828 * PU, PT, PM page number 09829 * RET2, mag with mag=8 (not zero) 09830 * local variables used are:- 09831 * 09832 .ORG INTPN0, *B=POINTER 09833 *PU=0 09834 PR>BR, 09835 MA(PU), 09836 Y(0), 09837 Y>RAM, 09838 JUMP(INTPN1); ----- ----- 7A3 00410A3C 76001100 ----- 09839 .ORG INTPN1, *A=POINTER 09840 A(0), BR>B, OR, 09841 Y>AR, 09842 JUMP(INTPN2); ----- ----- A3C 00220A3D 00001001 ----- 09843 .ORG INTPN2, *A=POINTER+100 09844 AR>A, B(100), ADD, 09845 Y>AR, 09846 JUMP(INTPN3); ----- ----- A3D 00220A3E 00640010 ----- 09847 .ORG INTPN3, *P=POINTER-39 09848 A(-39), BR>B, ADD, 09849 Y>PR, 09850 JUMP(INTPN5); ----- ----- A3E 00000A3F 80D90001 ----- 09851 .ORG INTPN5, *PT=0 09852 MA(PT), 09853 Y(0), 09854 Y>RAM, 09855 JUMP(INTPN8); ----- ----- A3F 00000A40 75001100 ----- 09856 .ORG INTPN8, *PM=1 09857 *B=P 09858 PR>BR, 09859 MA(PM), 09860 Y(>10), 09861 Y>RAM, 09862 JUMP(INTPN9); ----- ----- A40 00410A41 74101100 ----- 09863 *P NOW RANGING FROM 1 UPWARDS, PU=PT=PM=0, B=P 09864 .ORG INTPN9, *P=B-1 09865 *B=PM 09866 MA(PM), RAM>BR, 09867 A(-1), BR>B, ADD, 09868 Y>PR, 09869 JUMP(INTPN10); ----- ----- A41 00010A42 F4FF0001 ----- 09870 .ORG INTPN10, *A=PU, P=0? 09871 *IF P=0, EXIT 09872 MA(PU), RAM>AR, 09873 JZ(INTPN11F,INTPN11T); ----- ----- A42 000223CE 76000000 ----- 09874 .ORG INTPN11F, *Y=PU-9, B=PT 09875 MA(PT), RAM>BR, 09876 ARHI>A, B(-9), ADD, 09877 JUMP(INTPN12); ----- ----- 3CE 00010A43 75F70020 ----- 09878 .ORG INTPN12, *PU=PU+1, CARRY? 09879 MA(PU), 09880 AR>A, B(>10), ADD, 09881 Y>RAM, 09882 JZ(INTPN13F,INTPN13T); ----- ----- A43 000023D0 76100110 ----- 09883 .ORG INTPN13F, *NO CARRY, B=P 09884 PR>BR, 09885 JUMP(INTPN9); ----- ----- 3D0 00410A41 00000000 ----- 09886 .ORG INTPN13T, *CARRY TO TENS 09887 *PU=0 09888 MA(PU), 09889 Y(0), 09890 Y>RAM, 09891 JUMP(INTPN14); ----- ----- 3D1 00000A44 76001100 ----- 09892 .ORG INTPN14, *Y=PT-9, A=PM 09893 MA(PM), RAM>AR, 09894 A(-9), BRHI>B, ADD, 09895 JUMP(INTPN15); ----- ----- A44 00020A45 74F7000C ----- 09896 .ORG INTPN15, *PT=PT+1, CARRY? 09897 MA(PT), 09898 A(>10), BR>B, ADD, 09899 Y>RAM, 09900 JZ(INTPN16F,INTPN16T); ----- ----- A45 000023D2 75100101 ----- 09901 .ORG INTPN16F, *NO CARRY, B=P 09902 PR>BR, 09903 JUMP(INTPN9); ----- ----- 3D2 00410A41 00000000 ----- 09904 .ORG INTPN16T, *CARRY TO MAGS 09905 *PT=0 09906 MA(PT), 09907 Y(0), 09908 Y>RAM, 09909 JUMP(INTPN17); ----- ----- 3D3 00000A46 75001100 ----- 09910 .ORG INTPN17, *Y=PM-8 09911 ARHI>A, B(-8), ADD, 09912 JUMP(INTPN18); ----- ----- A46 00000A47 00F80020 ----- 09913 .ORG INTPN18, *PM=PM+1, MAG OVERFLOW? 09914 *B=P 09915 PR>BR, 09916 MA(PM), 09917 AR>A, B(>10), ADD, 09918 Y>RAM, 09919 JUMP(INTPN9); ----- ----- A47 00410A41 74100110 ----- 09920 *EXIT B=PM 09921 .ORG INTPN11T, *RET2= MAG WITH MAG 8= 8 (NOT ZERO) 09922 MA(RET2), 09923 A(0), BR.F0>B, OR, 09924 Y>RAM, 09925 JUMP(INTPN20); ----- ----- 3CF 00000A48 7B001103 ----- 09926 .ORG INTPN20, *Y=PM-8 09927 *A=RETURN 09928 MA(RETURN), RAM>AR, 09929 A(-8), BRHI>B, ADD, 09930 JUMP(INTPN20A); ----- ----- A48 00020A49 7CF8000C ----- 09931 .ORG INTPN20A, *Y=RETURN 09932 *MAG 8? 09933 AR>A, B(7), AND, 09934 JZ(INTPN21F,INTPN21T); ----- ----- A49 000023D4 00070810 ----- 09935 .ORG INTPN21F, *PM!=8 09936 JY(DIP20Y); ----- ----- 3D4 0000C730 00000000 ----- 09937 .ORG INTPN21T, *PM=8, SET TO 0 09938 MA(PM), 09939 Y(>00), 09940 Y>RAM, 09941 JY(DIP20Y); ----- ----- 3D5 0000C730 74001100 ----- 09942 * 09943 *+++SEARCH BTT 09944 * 09945 * This routine will searches the BTT/inventory page for 09946 * types of page. It searches forward or backwards 09947 * according to entry point. It returns a pointer to 09948 * the next or last page (as appropriate) if MASK is set 09949 * to zero, or if it can not find the type of page specified 09950 * in MASK. If the inventory page is not complete, the routine 09951 * will ignore the INCYCLE i/p flag. 09952 * 09953 * input pars are:- 09954 * MASK:- indicates bits to test, if MASK 09955 * is zero, the next or last page 09956 * will be returned 09957 * ----------------------------------------------------------------- 09958 * |INCYCLE|MP |AIT |SUBT |TV |BLOCK |GROUP |NORM | 09959 * ----------------------------------------------------------------- 09960 * RETURN:- return pointer 09961 * P: inv/BTT pointer 09962 * return pars are:- 09963 * A: the decoded BTT byte of the found page 09964 * MASK: set to zero if page not found 09965 * ----------------------------------------------------------------- 09966 * |INCYCLE|MP |AIT |SUBT |TV |BLOCK |GROUP |NORM | 09967 * ----------------------------------------------------------------- 09968 * P: inv/BTT pointer to found page 09969 * TPD: inv/BTT byte 09970 * last Y equal to A for page found test 09971 * local variables used are:- 09972 * LOCAL, RET2, RET3, COUNT 09973 *ENTRY POINT TO SEARCH FORWARDS 09974 .ORG SBT0A, *A=RET2=1 09975 MA(RET2), 09976 Y(1), 09977 Y>RAM, Y>AR, 09978 JUMP(SBT1); ----- ----- 4DA 00220A4A 7B011100 ----- 09979 *ENTRY POINT TO SEARCH BACKWARDS 09980 .ORG SBT0B, *A=RET2=-1 09981 MA(RET2), 09982 Y(-1), 09983 Y>RAM, Y>AR, 09984 JUMP(SBT1); ----- ----- 4DB 00220A4A 7BFF1100 ----- 09985 * 09986 .ORG SBT1, *B=INVCNT 09987 MA(INVCNT), RAM>BR, 09988 JUMP(SBT2); ----- ----- A4A 00010A4B 38000000 ----- 09989 .ORG SBT2, *Y= 'COMPLETE' FLAG 09990 A(1), BR>B, AND, 09991 JUMP(SBT3); ----- ----- A4B 00000A4C 00010801 ----- 09992 .ORG SBT3, *INVENTORY COMPLETE? 09993 *B=MASK 09994 MA(MASK), RAM>BR, 09995 JZ(SBT4F,SBT4T); ----- ----- A4C 000123D6 73000000 ----- 09996 .ORG SBT4T, *INVENTORY NOT COMPLETE, CLEAR INCYCLE FLAG 09997 MA(MASK), 09998 A(>7F), BR>B, AND, 09999 Y>RAM, 10000 JUMP(SBT4F); ----- ----- 3D7 000003D6 737F0901 ----- 10001 * 10002 .ORG SBT4F, *B=POINTER 10003 *LOCAL= WRAP AROUND COUNT HUNDREDS 10004 PR>BR, 10005 MA(LOCAL), 10006 Y(8), 10007 Y>RAM, 10008 JUMP(SBT11); ----- ----- 3D6 00410A4D 72081100 ----- 10009 .ORG SBT11, *COUNT= WRAP AROUND COUNT UNITS 10010 MA(COUNT), 10011 Y(101), 10012 Y>RAM, 10013 JUMP(SBT20); ----- ----- A4D 00000A4E 78651100 ----- 10014 * A=OFFSET, B=POINTER 10015 .ORG SBT20, *UPDATE POINTER 10016 *A=POINTER 10017 AR>A, BR>B, ADD, 10018 Y>PR, Y>AR, 10019 JUMP(SBT21); ----- ----- A4E 00220A4F 80000011 ----- 10020 .ORG SBT21, *POINTER>511? 10021 *Y=POINTER-40 10022 AR>A, B(-40), ADD, 10023 JN(SBT22F,SBT22T); ----- ----- A4F 000043D8 00D80010 ----- 10024 .ORG SBT22F, *POINTER<512 10025 *POINTER<40? 10026 *A=-85 10027 Y(-85), 10028 Y>AR, 10029 JN(SBT23F,SBT23T); ----- ----- 3D8 002243DA 00AB1000 ----- 10030 .ORG SBT23T, *WRAP AROUND TO TOP 10031 *P=-185 10032 *B=LOCAL 10033 MA(LOCAL), RAM>BR, 10034 AR>A, B(-100), ADD, 10035 Y>PR, 10036 JUMP(SBT26T); ----- ----- 3DB 000103DD F29C0010 ----- 10037 .ORG SBT23F, *NO WRAP AROUND 10038 JUMP(SBT26T); ----- ----- 3DA 000003DD 00000000 ----- 10039 * 10040 .ORG SBT22T, *POINTER>512 10041 *A=POINTER+84 10042 AR>A, B(84), ADD, 10043 Y>AR, 10044 JUMP(SBT24); ----- ----- 3D9 00220A50 00540010 ----- 10045 .ORG SBT24, *A=POINTER+184 10046 AR>A, B(100), ADD, 10047 Y>AR, 10048 JUMP(SBT25); ----- ----- A50 00220A51 00640010 ----- 10049 .ORG SBT25, *P>-185? 10050 JN(SBT26F,SBT26T); ----- ----- A51 000043DC 00000000 ----- 10051 .ORG SBT26F, *WRAP AROUND TO BOTTOM 10052 *P=40 10053 *B=LOCAL 10054 MA(LOCAL), RAM>BR, 10055 Y(40), 10056 Y>PR, 10057 JUMP(SBT26T); ----- ----- 3DC 000103DD F2281000 ----- 10058 *P HAS BEEN UPDATED, CHECK IF ALL BTT SEARCHED 10059 .ORG SBT26T, *A=COUNT UNITS 10060 MA(COUNT), RAM>AR, 10061 JUMP(SBT27); ----- ----- 3DD 00020A52 78000000 ----- 10062 .ORG SBT27, *DEC UNITS 10063 MA(COUNT), 10064 AR>A, B(-1), ADD, 10065 Y>RAM, 10066 JUMP(SBT28); ----- ----- A52 00000A53 78FF0110 ----- 10067 .ORG SBT28, *UNITS=0? 10068 *A=COUNT HUNDREDS 10069 MA(LOCAL), RAM>AR, 10070 JZ(SBT29F,SBT29T); ----- ----- A53 000223DE 72000000 ----- 10071 .ORG SBT29T, *UNITS=0, DEC HUNDREDS 10072 MA(LOCAL), 10073 AR>A, B(-1), ADD, 10074 Y>RAM, 10075 JUMP(SBT30); ----- ----- 3DF 00000A54 72FF0110 ----- 10076 .ORG SBT29F, *UNITS>0 10077 JUMP(SBT31F); ----- ----- 3DE 000003E0 00000000 ----- 10078 .ORG SBT30, *UNITS=100, HUNDREDS=0? 10079 MA(COUNT), 10080 Y(100), 10081 Y>RAM, 10082 JZ(SBT31F,SBT31T); ----- ----- A54 000023E0 78641100 ----- 10083 .ORG SBT31T, *ALL BTT SEARCHED 10084 *SET MASK=0 TO EXIT AFTER DBB CALL 10085 MA(MASK), 10086 Y(0), 10087 Y>RAM, 10088 JUMP(SBT31F); ----- ----- 3E1 000003E0 73001100 ----- 10089 *CHECK DECODED BTT BYTE AGAINST MASK 10090 .ORG SBT31F, *CALL DBB TO DECODE BYTE 10091 *RET3=1, RETURN TO SBT33 10092 MA(RET3), 10093 Y(1), 10094 Y>RAM, 10095 JUMP(DBB0); ----- ----- 3E0 00000A39 7A011100 ----- 10096 *A=RETURN DATA FROM DBB 10097 .ORG SBT33, *B=MASK 10098 MA(MASK), RAM>BR, 10099 JUMP(SBT33A); ----- ----- 741 00010A55 73000000 ----- 10100 .ORG SBT33A, *Y=MASK 10101 A(0), BR>B, OR, 10102 JUMP(SBT34); ----- ----- A55 00000A56 00001001 ----- 10103 .ORG SBT34, *Y=MASKED RETURN DATA 10104 *MASK=0? 10105 AR>A, BR>B, AND, 10106 JZ(SBT35F,SBT35T); ----- ----- A56 000023E2 00000811 ----- 10107 .ORG SBT35T, *MASK=0, EXIT 10108 *B=RETURN 10109 MA(RETURN), RAM>BR, 10110 JUMP(SBT36F); ----- ----- 3E3 000103E4 7C000000 ----- 10111 .ORG SBT35F, *MASK NOT ZERO 10112 *THIS TYPE OF PAGE FOUND? 10113 *IF YES, EXIT 10114 *B=RETURN 10115 MA(RETURN), RAM>BR, 10116 JZ(SBT36F,SBT36T); ----- ----- 3E2 000123E4 7C000000 ----- 10117 .ORG SBT36T, *NOT FOUND YET 10118 *B=POINTER 10119 *A=OFFSET 10120 PR>BR, 10121 MA(RET2), RAM>AR, 10122 JUMP(SBT20); ----- ----- 3E5 00430A4E 7B000000 ----- 10123 *EXIT 10124 * B=RETURN 10125 .ORG SBT36F, *Y=RETURN 10126 A(>0F), BR>B, AND, 10127 JUMP(SBT37); ----- ----- 3E4 00000A57 000F0801 ----- 10128 .ORG SBT37, *CASE RETURN 10129 *Y=A FOR PAGE FOUND TEST 10130 AR>A, B(0), OR, 10131 JY(DIP18Y); ----- ----- A57 0000C7A0 00001010 ----- 10132 * 10133 *+++DECODE BTT BYTE 10134 * 10135 * This routine will reads the BTT/inventory page byte 10136 * pointed to by P and sets flags accordingly in A. 10137 * 10138 * input pars are:- 10139 * RET3:- return pointer 10140 * P: inv/BTT pointer 10141 * return pars are:- 10142 * A: 10143 * ----------------------------------------------------------------- 10144 * |INCYCLE|MP |AIT |SUBT |TV |BLOCK |GROUP |NORM | 10145 * ----------------------------------------------------------------- 10146 * P: inv/BTT pointer 10147 * TPD: inv/BTT byte 10148 * RWL: latch for store 1 10149 * local variables used are:- 10150 * 10151 .ORG DBB0, *B=STOR1 10152 MA(STOR1), RAM>BR, 10153 JUMP(DBB1); ----- ----- A39 00010A58 21000000 ----- 10154 .ORG DBB1, *RWL=LATCH FOR STORE 1 10155 MA(RWL), 10156 A(0), BRHI>B, OR, 10157 Y>RAM, Y>IO, 10158 JUMP(DBB2); ----- ----- A58 00000A59 0B00510C ----- 10159 .ORG DBB2, *TPD=BTT/INV BYTE 10160 *B=RETURN POINTER 10161 RVDP, 10162 MA(RET3), RAM>BR, 10163 JUMP(DBB3); ----- ----- A59 00010A5A 7A008000 ----- 10164 .ORG DBB3, *A=BYTE 10165 TPD>A, B(0), OR, 10166 Y>AR, 10167 JUMP(DBB4); ----- ----- A5A 00220A5B 00001090 ----- 10168 .ORG DBB4, *Y=BYTE LO NIB-12 10169 *PAGE IN INVENTORY? 10170 AR.0F>A, B(-12), ADD, 10171 JN(DBB5F,DBB5T); ----- ----- A5B 000043E6 00F400C0 ----- 10172 .ORG DBB5T, *PAGE IN INVENTORY, SET INCYCLE BIT 10173 *VALID BTT CODE? 10174 *A=>80 10175 Y(>80), 10176 Y>AR, 10177 JN(DBB6F,DBB6T); ----- ----- 3E7 002243E8 00801000 ----- 10178 .ORG DBB5F, *PAGE NOT IN INVENTORY, CLEAR INCYCLE BIT 10179 *VALID BTT CODE? IF NOT, EXIT 10180 *A=>00 10181 Y(>00), 10182 Y>AR, 10183 JN(DBB6F,DBB6T); ----- ----- 3E6 002243E8 00001000 ----- 10184 .ORG DBB6T, *VALID BTT CODE, Y=BTT CODE 10185 TPD.0F>A, B(0), OR, 10186 JUMP(DBB7); ----- ----- 3E9 00000A5C 000010A0 ----- 10187 .ORG DBB7, *CASE ON BTT CODE 10188 JY(DBB10Y); ----- ----- A5C 0000C750 00000000 ----- 10189 .ORG DBB10Y, *CASE BTT CODE=0 10190 *NO BITS TO SET 10191 JUMP(DBB6F); ----- ----- 750 000003E8 00000000 ----- 10192 .ORG DBB11, *CASE BTT CODE=1 10193 *MP=0, AIT=1, SUBT=1 10194 *TV=0, BLOCK=0, GROUP=1, NORM=0 10195 AR>A, B(>32), OR, 10196 Y>AR, 10197 JUMP(DBB6F); ----- ----- 751 002203E8 00321010 ----- 10198 .ORG DBB12, *CASE BTT CODE=2 10199 *MP=0, AIT=1, SUBT=0 10200 *TV=1, BLOCK=1, GROUP=0, NORM=0 10201 AR>A, B(>2C), OR, 10202 Y>AR, 10203 JUMP(DBB6F); ----- ----- 752 002203E8 002C1010 ----- 10204 .ORG DBB13, *CASE BTT CODE=3 10205 *MP=1, AIT=1, SUBT=0 10206 *TV=1, BLOCK=1, GROUP=0, NORM=0 10207 AR>A, B(>6C), OR, 10208 Y>AR, 10209 JUMP(DBB6F); ----- ----- 753 002203E8 006C1010 ----- 10210 .ORG DBB14, *CASE BTT CODE=4 10211 *MP=0, AIT=1, SUBT=0 10212 *TV=0, BLOCK=1, GROUP=0, NORM=0 10213 AR>A, B(>24), OR, 10214 Y>AR, 10215 JUMP(DBB6F); ----- ----- 754 002203E8 00241010 ----- 10216 .ORG DBB15, *CASE BTT CODE=5 10217 *MP=1, AIT=1, SUBT=0 10218 *TV=0, BLOCK=1, GROUP=0, NORM=0 10219 AR>A, B(>64), OR, 10220 Y>AR, 10221 JUMP(DBB6F); ----- ----- 755 002203E8 00641010 ----- 10222 .ORG DBB16, *CASE BTT CODE=6 10223 *MP=0, AIT=1, SUBT=0 10224 *TV=0, BLOCK=0, GROUP=1, NORM=0 10225 AR>A, B(>22), OR, 10226 Y>AR, 10227 JUMP(DBB6F); ----- ----- 756 002203E8 00221010 ----- 10228 .ORG DBB17, *CASE BTT CODE=7 10229 *MP=1, AIT=1, SUBT=0 10230 *TV=0, BLOCK=0, GROUP=1, NORM=0 10231 AR>A, B(>62), OR, 10232 Y>AR, 10233 JUMP(DBB6F); ----- ----- 757 002203E8 00621010 ----- 10234 .ORG DBB18, *CASE BTT CODE=8 10235 *MP=0, AIT=0, SUBT=0 10236 *TV=0, BLOCK=0, GROUP=0, NORM=1 10237 AR>A, B(>01), OR, 10238 Y>AR, 10239 JUMP(DBB6F); ----- ----- 758 002203E8 00011010 ----- 10240 .ORG DBB19, *CASE BTT CODE=9 10241 *MP=0, AIT=1, SUBT=0 10242 *TV=0, BLOCK=0, GROUP=0, NORM=1 10243 AR>A, B(>21), OR, 10244 Y>AR, 10245 JUMP(DBB6F); ----- ----- 759 002203E8 00211010 ----- 10246 .ORG DBB1A, *CASE BTT CODE=A 10247 *MP=1, AIT=0, SUBT=0 10248 *TV=0, BLOCK=0, GROUP=0, NORM=1 10249 AR>A, B(>41), OR, 10250 Y>AR, 10251 JUMP(DBB6F); ----- ----- 75A 002203E8 00411010 ----- 10252 .ORG DBB1B, *CASE BTT CODE=B 10253 *MP=1, AIT=1, SUBT=0 10254 *TV=0, BLOCK=0, GROUP=0, NORM=1 10255 AR>A, B(>61), OR, 10256 Y>AR, 10257 JUMP(DBB6F); ----- ----- 75B 002203E8 00611010 ----- 10258 *COMMON EXIT 10259 .ORG DBB6F, *Y=RETURN POINTER 10260 A(1), BR>B, AND, 10261 JUMP(DBB20); ----- ----- 3E8 00000A5D 00010801 ----- 10262 .ORG DBB20, *CASE RETURN 10263 *B=RETURN (FOR PNTIN RETURN) 10264 MA(RETURN), RAM>BR, 10265 JY(PNTIN46Y); ----- ----- A5D 0001C740 7C000000 ----- 10266 * 10267 *+++DPTP: MOVE DPU, DPT AND DPM TO SCRATCH STORAGE IN PM, PT AND PU 10268 * AR=RETURN POINTER 10269 .ORG DPTP0, *BR=DPM 10270 MA(DPM), RAM>BR, 10271 JUMP(DPTP1); ----- ----- 92C 00010A5E 68000000 ----- 10272 .ORG DPTP1, *PM=DPM 10273 MA(PM), 10274 A(0), BR>B, OR, 10275 Y>RAM, 10276 JUMP(DPTP2); ----- ----- A5E 00000A5F 74001101 ----- 10277 .ORG DPTP2, *BR=DPT 10278 MA(DPT), RAM>BR, 10279 JUMP(DPTP3); ----- ----- A5F 00010A60 69000000 ----- 10280 .ORG DPTP3, *PT=DPT 10281 MA(PT), 10282 A(0), BR>B, OR, 10283 Y>RAM, 10284 JUMP(DPTP4); ----- ----- A60 00000A61 75001101 ----- 10285 .ORG DPTP4, *AR=DPU 10286 *Y=RETURN POINTER 10287 MA(DPU), RAM>BR, 10288 AR>A, B(1), AND, 10289 JUMP(DPTP5); ----- ----- A61 00010A62 6A010810 ----- 10290 .ORG DPTP5, *PU=DPU 10291 MA(PU), 10292 A(0), BR>B, OR, 10293 Y>RAM, 10294 JY(VPP250Y); ----- ----- A62 0000C3F0 76001101 ----- 10295 * 10296 *+++GET FLOF LINK 10297 * 10298 * This routine places the FLOF link pointed by the link number 10299 * in A in PU, PT and PM. If the link is null, the las Y will 10300 * be non-zero. 10301 * 10302 * input pars are:- 10303 * A: indicates link (0 is red -> 4 is index) 10304 * RETURN: return pointer 10305 * return pars are:- 10306 * PU,PT,PM contains the link 10307 * last Y non-zero for a null link 10308 * TPD: FLOF flags:- 10309 * ----------------------------------------------------------------- 10310 * |P27R |P24R | X | |DR24 |other packet 27 flags | 10311 * ----------------------------------------------------------------- 10312 * local variables used are:- 10313 * RET2, 10314 * 10315 .ORG GFL0, *B=STOR0 10316 *P IS POINTER TO LINK TENS AND UNITS 10317 MA(STOR0), RAM>BR, 10318 AR>A, B(-24), ADD, 10319 Y>PR, 10320 JUMP(GFL10); ----- ----- 9EE 00010A63 A0E80010 ----- 10321 .ORG GFL10, *RWL=DISPLAY PAGE LATCH 10322 MA(RWL), 10323 A(0), BRHI>B, OR, 10324 Y>RAM, Y>IO, 10325 JUMP(GFL20); ----- ----- A63 00000A64 0B00510C ----- 10326 .ORG GFL20, *TPD=LINK TENS AND UNITS 10327 *RET2=LINK 10328 RVDP, 10329 MA(RET2), 10330 AR>A, B(0), OR, 10331 Y>RAM, 10332 JUMP(GFL21); ----- ----- A64 00000A65 7B009110 ----- 10333 *UPDATE PT WITH TENS 10334 .ORG GFL21, *A=PT=TPD 10335 MA(PT), 10336 TPD>A, B(0), OR, 10337 Y>RAM, Y>AR, 10338 JUMP(GFL22); ----- ----- A65 00220A66 75001190 ----- 10339 *UPDATE PU WITH UNITS 10340 .ORG GFL22, * 10341 MA(PU), 10342 AR<<4>A, B(0), OR, 10343 Y>RAM, 10344 JUMP(GFL30); ----- ----- A66 00000A67 76001130 ----- 10345 .ORG GFL30, *A=LINK 10346 MA(RET2), RAM>AR, 10347 JUMP(GFL31); ----- ----- A67 00020A68 7B000000 ----- 10348 .ORG GFL31, *POINT TO LINK MAG 10349 *P=-19+LINK/2 10350 AR>>1>A, B(-19), ADD, 10351 Y>PR, 10352 JUMP(GFL32); ----- ----- A68 00000A69 80ED00E0 ----- 10353 .ORG GFL32, *Y=LINK-4 10354 *TPD=LINK MAG 10355 RVDP, 10356 AR>A, B(-4), ADD, 10357 JUMP(GFL33); ----- ----- A69 00000A6A 00FC8010 ----- 10358 .ORG GFL33, *INDEX LINK? 10359 *Y=LINK LSB 10360 *B=RETURN 10361 MA(RETURN), RAM>BR, 10362 AR>A, B(1), AND, 10363 JZ(GFL34F,GFL34T); ----- ----- A6A 000123EA 7C010810 ----- 10364 .ORG GFL34T, *INDEX, MAG IN TOP NIB 10365 *PM=TPD 10366 MA(PM), 10367 TPD.F0>A, B(0), OR, 10368 Y>RAM, 10369 JUMP(GFL40); ----- ----- 3EB 00000A6B 740011B0 ----- 10370 .ORG GFL34F, *NOT INDEX 10371 *MAG IN TOP OR BOTTOM NIB? 10372 *A=TPD 10373 TPD>A, B(0), OR, 10374 Y>AR, 10375 JZ(GFL35F,GFL35T); ----- ----- 3EA 002223EC 00001090 ----- 10376 .ORG GFL35F, *MAG IN TOP NIB 10377 *PM=TPD 10378 MA(PM), 10379 TPD.F0>A, B(0), OR, 10380 Y>RAM, 10381 JUMP(GFL40); ----- ----- 3EC 00000A6B 740011B0 ----- 10382 .ORG GFL35T, *MAG IN BOTTOM NIB 10383 *PM=TPD<<4 10384 MA(PM), 10385 AR<<4>A, B(0), OR, 10386 Y>RAM, 10387 JUMP(GFL40); ----- ----- 3ED 00000A6B 74001130 ----- 10388 * B=RETURN 10389 .ORG GFL40, *P=1-6 (POINTER TO FLOF FLAGS) 10390 *A=PT (HAS UNITS IN BOTTOM NIB) 10391 MA(PT), RAM>AR, 10392 Y(-16), 10393 Y>PR, 10394 JUMP(GFL40A); ----- ----- A6B 00020A6C F5F01000 ----- 10395 .ORG GFL40A, *CLEAR UNITS FROM BOTTOM NIB 10396 MA(PT), 10397 AR.F0>A, B(0), OR, 10398 Y>RAM, 10399 JUMP(GFL41); ----- ----- A6C 00000A6D 750011D0 ----- 10400 .ORG GFL41, *Y=LINK TENS AND UNITS XOR >FF 10401 *TPD=FLOF FLAGS 10402 RVDP, 10403 AR>A, B(>FF), XOR, 10404 JUMP(GFL42); ----- ----- A6D 00000A6E 00FF9810 ----- 10405 .ORG GFL42, *NULL LINK? 10406 *Y= P27R (PACKET 27 RECEIVED FLAG) 10407 TPD>A, B(>80), AND, 10408 JZ(GFL43F,GFL43T); ----- ----- A6E 000023EE 00800890 ----- 10409 .ORG GFL43F, *NOT NULL, PACKET 27 RECEIVED? 10410 *A=0 10411 Y(0), 10412 Y>AR, 10413 JZ(GFL44F,GFL44T); ----- ----- 3EE 002223F2 00001000 ----- 10414 .ORG GFL43T, *MARK LINK AS NULL IN A 10415 Y(>FF), 10416 Y>AR, 10417 JUMP(GFL44F); ----- ----- 3EF 002203F2 00FF1000 ----- 10418 .ORG GFL44T, *PACKET 27 NOT RECEIVED, SAME AS NULL LINK 10419 Y(>FF), 10420 Y>AR, 10421 JUMP(GFL44F); ----- ----- 3F3 002203F2 00FF1000 ----- 10422 * A<>0 IF NULL LINK, B=RETURN 10423 .ORG GFL44F, *Y=RETURN 10424 A(3), BR>B, AND, 10425 JUMP(GFL45); ----- ----- 3F2 00000A6F 00030801 ----- 10426 .ORG GFL45, *Y=NULL LINK MARKER 10427 *CASE RETURN=? 10428 AR>A, B(0), OR, 10429 JY(CKR200Y); ----- ----- A6F 0000C060 00001010 ----- 10430 * 10431 *+++GET FAVOURITE PAGE 10432 * 10433 * This routine places the favourite page pointed to by the store 10434 * number in A in PU, PT and PM. 10435 * 10436 * input pars are:- 10437 * A: indicates store (2 -> 5) 10438 * RETURN: return pointer 10439 * 10440 * return pars are:- 10441 * PU,PT,PM favourite page number, lsn contains favp 10442 * high nibble (non-zero if page not prog'd) 10443 * A: STOR0 10444 * B: PU 10445 * LAST Y: non-zero for page not prog'd 10446 * 10447 * local variables used are:- 10448 * MASK, LOCAL 10449 * 10450 .ORG GFP0T, *A=STORE-2 10451 AR>A, B(-2), ADD, 10452 Y>AR, 10453 JUMP(GFP10); ----- ----- 37F 00220A70 00FE0010 ----- 10454 .ORG GFP10, *P=POINTER TO RED AND YELLOW LINKS 10455 *CASE STORE-2? 10456 Y(-7), 10457 Y>PR, 10458 JY(GFP20Y); ----- ----- A70 0000C208 80F91000 ----- 10459 * 10460 .ORG GFP20Y, *CASE RED LINK 10461 *RWL=5 10462 MA(RWL), 10463 Y(5), 10464 Y>RAM, Y>IO, 10465 JUMP(GFP30); ----- ----- 208 00000A71 0B055100 ----- 10466 .ORG GFP21, *CASE GREEN LINK 10467 *P=POINTER TO GREEN LINK 10468 Y(-4), 10469 Y>PR, 10470 JUMP(GFP20Y); ----- ----- 209 00000208 80FC1000 ----- 10471 .ORG GFP22, *CASE YELLOW LINK 10472 *RWL=6 10473 MA(RWL), 10474 Y(6), 10475 Y>RAM, Y>IO, 10476 JUMP(GFP30); ----- ----- 20A 00000A71 0B065100 ----- 10477 .ORG GFP23, *CASE CYAN LINK 10478 *P=POINTER TO CYAN LINK 10479 Y(-4), 10480 Y>PR, 10481 JUMP(GFP22); ----- ----- 20B 0000020A 80FC1000 ----- 10482 * P=POINTER TO LINK MAGS 10483 .ORG GFP30, *INIT DIGIT COUNT 10484 Y(4), 10485 Y>AR, 10486 JUMP(GFP40); ----- ----- A71 00220A72 00041000 ----- 10487 *DIGIT LOOP START 10488 * A=LOOP, P=POINTER TO DIGIT 10489 .ORG GFP40, *LOCAL-- 10490 *TPD=DIGIT 10491 RVDP, 10492 MA(LOCAL), 10493 AR>A, B(-1), ADD, 10494 Y>RAM, 10495 JUMP(GFP42); ----- ----- A72 00000A73 72FF8110 ----- 10496 .ORG GFP42, *CASE LOCAL=? 10497 *A=TPD 10498 *B=RETURN 10499 MA(RETURN), RAM>BR, 10500 TPD>A, B(0), OR, 10501 Y>AR, 10502 JY(GFP50Y); ----- ----- A73 0023C540 7C001090 ----- 10503 .ORG GFP50Y, *LOCAL=0, EXIT 10504 *Y=RETURN 10505 *B=PU 10506 MA(PU), RAM>BR, 10507 A(3), BR>B, AND, 10508 JUMP(GFP70); ----- ----- 540 00010A74 76030801 ----- 10509 .ORG GFP51, *LOCAL=1 10510 *PUT POINTER TO PU IN MASK 10511 MA(MASK), 10512 Y(PU), 10513 Y>RAM, 10514 JUMP(GFP60); ----- ----- 541 00000A75 73761100 ----- 10515 .ORG GFP52, *LOCAL=2 10516 *PUT POINTER TO PT IN MASK 10517 MA(MASK), 10518 Y(PT), 10519 Y>RAM, 10520 JUMP(GFP60); ----- ----- 542 00000A75 73751100 ----- 10521 .ORG GFP53, *LOCAL=3 10522 *PUT POINTER TO PM IN MASK 10523 MA(MASK), 10524 Y(PM), 10525 Y>RAM, 10526 JUMP(GFP53A); ----- ----- 543 00000A76 73741100 ----- 10527 .ORG GFP53A, *CLEAR INVALID BIT IN MAG 10528 AR>A, B(>F7), AND, 10529 Y>AR, 10530 JUMP(GFP60); ----- ----- A76 00220A75 00F70810 ----- 10531 *NEED TO SWAP HI AND LO NIBBLES 10532 * A=DIGIT, MASK=POINTER TO Px IN SCRATCH RAM 10533 .ORG GFP60, *B=DIGIT POINTER, P LSN=FAVP DIGIT MSN 10534 PR>BR, 10535 ARHI>A, B(0), OR, 10536 Y>PR, 10537 JUMP(GFP61); ----- ----- A75 00410A77 80001020 ----- 10538 .ORG GFP61, *P=POINTER TO DIGIT 10539 *B LSN=FAVP MSN 10540 PR>BR, 10541 A(0), BR>B, OR, 10542 Y>PR, 10543 JUMP(GFP62); ----- ----- A77 00410A78 80001001 ----- 10544 .ORG GFP62, *A=FAVP DIGIT WITH SWAPPED NIBBLES 10545 *B=POINTER TO PU/PT/PM 10546 MA(MASK), RAM>BR, 10547 AR<<4>A, BR.0F>B, OR, 10548 Y>AR, 10549 JUMP(GFP63); ----- ----- A78 00230A79 73001032 ----- 10550 .ORG GFP63, *P=POINTER TO PU/PT/PM 10551 *B=POINTER TO NEXT DIGIT 10552 PR>BR, 10553 A(0), BR>B, OR, 10554 Y>PR, 10555 JUMP(GFP64); ----- ----- A79 00410A7A 80001001 ----- 10556 .ORG GFP64, *UPDATE PU/PT/PM 10557 PR>MA, 10558 AR>A, B(0), OR, 10559 Y>RAM, 10560 JUMP(GFP65); ----- ----- A7A 00100A7B 00001110 ----- 10561 .ORG GFP65, *POINT TO NEXT DIGIT 10562 *A=LOCAL 10563 MA(LOCAL), RAM>AR, 10564 A(1), BR>B, ADD, 10565 Y>PR, 10566 JUMP(GFP40); ----- ----- A7B 00020A72 F2010001 ----- 10567 *LOOP END 10568 * LAST Y WAS RETURN 10569 .ORG GFP70, *CASE RETURN=? 10570 *Y='DASH' AND 'SPACE' FLAGS 10571 *(IF NON-ZERO, PAGE NOT PROGRAMMED) 10572 *A=STOR0 10573 MA(STOR0), RAM>AR, 10574 A(>0C), BR>B, AND, 10575 JY(FPFS60Y); ----- ----- A74 0002C270 200C0801 ----- 10576 * 10577 *+++GET NORMAL PAGE 10578 * 10579 * This routine places the page pointed to by the store 10580 * number in A in PU, PT and PM. 10581 * 10582 * input pars are:- 10583 * A: indicates store (2 -> 5) 10584 * 10585 .ORG GNP0Y, *P=INDEX TO STORx 10586 AR>A, B(STOR0), ADD, 10587 Y>PR, 10588 JUMP(GNP1); ----- ----- 544 00000A7C 80200010 ----- 10589 .ORG GNP1, *B=LATCH FOR STORx 10590 PR>MA, RAM>BR, 10591 JUMP(GNP2); ----- ----- A7C 00110A7D 00000000 ----- 10592 .ORG GNP2, *P=INDEX TO LATCH MAGS 10593 A(M0), BRHI>B, ADD, 10594 Y>PR, 10595 JUMP(GNP3); ----- ----- A7D 00000A7E 8010000C ----- 10596 .ORG GNP3, *A=LATCH MAGS 10597 *P=INDEX TO LATCH TENS 10598 PR>MA, RAM>AR, 10599 A(T0), BRHI>B, ADD, 10600 Y>PR, 10601 JUMP(GNP4); ----- ----- A7E 00120A7F 8018000C ----- 10602 .ORG GNP4, *PM=LATCH MAGS 10603 MA(PM), 10604 AR<<4>A, B(0), OR, 10605 Y>RAM, 10606 JUMP(GNP5); ----- ----- A7F 00000A80 74001130 ----- 10607 .ORG GNP5, *A=LATCH TENS 10608 *P=INDEX TO LATCH UNITS 10609 PR>MA, RAM>AR, 10610 A(U0), BRHI>B, ADD, 10611 Y>PR, 10612 JUMP(GNP6); ----- ----- A80 00120A81 8020000C ----- 10613 .ORG GNP6, *PT=LATCH TENS 10614 MA(PT), 10615 AR<<4>A, B(0), OR, 10616 Y>RAM, 10617 JUMP(GNP7); ----- ----- A81 00000A82 75001130 ----- 10618 .ORG GNP7, *A=LATCH UNITS 10619 PR>MA, RAM>AR, 10620 JUMP(GNP8); ----- ----- A82 00120A83 00000000 ----- 10621 .ORG GNP8, *PU=LATCH UNITS 10622 *RETURN TO GAP ROUTINE 10623 MA(PU), 10624 AR<<4>A, B(0), OR, 10625 Y>RAM, 10626 JUMP(GAP60A); ----- ----- A83 00000A84 76001130 ----- 10627 ***GAP: GENERATE A PROMPT 10628 * BR=STOR0 10629 .ORG GAP0, *RWL=LATCH FOR STORE 0 10630 MA(RWL), 10631 A(0), BRHI>B, OR, 10632 Y>RAM, Y>IO, 10633 JUMP(GAP0A); ----- ----- 340 00000A85 0B00510C ----- 10634 .ORG GAP0A, *BR=SYS2 10635 MA(SYS2), RAM>BR, 10636 JUMP(GAP0B); ----- ----- A85 00010A86 09000000 ----- 10637 .ORG GAP0B, *AR=EXPREG 10638 *Y=APIN 10639 MA(EXPREG), RAM>AR, 10640 A(APIN), BR>B, AND, 10641 JUMP(GAP1); ----- ----- A86 00020A87 63010801 ----- 10642 .ORG GAP1, *Y=CPRF 10643 *AUTO PROMPTS ENABLED? 10644 AR>A, B(CPRF), AND, 10645 JZ(GAP2F,GAP2T); ----- ----- A87 000023F4 00040810 ----- 10646 *AUTO PROMPTS ENABLED, GENERATE A PROMPT 10647 .ORG GAP2T, *CLEAR PROMPTS FIRST? 10648 *CPRF=0, OLD CPRF? 10649 *AR=EXPREG FOR GAP3T 10650 MA(EXPREG), 10651 AR>A, B(>FF-CPRF), AND, 10652 Y>RAM, Y>AR, 10653 JZ(GAP3F,GAP3T); ----- ----- 3F5 002223F6 63FB0910 ----- 10654 *CLEAR ROW 24 FIRST 10655 .ORG GAP3F, *PR=-64 (POINT TO ROW 24 COL 0) 10656 Y(-64), 10657 Y>PR, 10658 JUMP(GAP7F); ----- ----- 3F6 000003F8 80C01000 ----- 10659 * 10660 .ORG GAP7F, *B=P, CLEAR LOC 10661 PR>BR, 10662 Y(>20), 10663 Y>DR, 10664 JUMP(GAP5); ----- ----- 3F8 00411A88 00201000 ----- 10665 .ORG GAP5, *Y=COL+25 10666 A(25), BR>B, ADD, 10667 JUMP(GAP6); ----- ----- A88 00000A89 00190001 ----- 10668 .ORG GAP6, *PR++ 10669 *LAST COL? 10670 A(1), BR>B, ADD, 10671 Y>PR, 10672 JZ(GAP7F,GAP7T); ----- ----- A89 000023F8 80010001 ----- 10673 .ORG GAP7T, *EXIT ROW 24 CLEAR 10674 *AR=EXPREG 10675 MA(EXPREG), RAM>AR, 10676 JUMP(GAP3T); ----- ----- 3F9 000203F7 63000000 ----- 10677 * AR=EXPREG 10678 .ORG GAP3T, *Y=USM 10679 AR>A, B(USM), AND, 10680 JUMP(GAP3A); ----- ----- 3F7 00000A8A 00020810 ----- 10681 .ORG GAP3A, *USM? 10682 *Y=SRTC 10683 *B=PEN 10684 MA(PEN), RAM>BR, 10685 AR>A, B(SRTC), AND, 10686 JZ(GAP4F,GAP4T); ----- ----- A8A 000123FA 1B010810 ----- 10687 *USER STATUS MODE, COPY STATUS TO 24 10688 * AR=EXPREG, LAST Y WAS SRTC 10689 *FIRST WRITE START AND END BOX CHARS 10690 .ORG GAP4F, *STATUS READY TO COPY? 10691 *SRTC=0 10692 MA(EXPREG), 10693 AR>A, B(>FF-SRTC), AND, 10694 Y>RAM, 10695 JZ(GAP11F,GAP11T); ----- ----- 3FA 000023FC 63FE0910 ----- 10696 .ORG GAP11T, *NO STATUS READY, EXIT 10697 JUMP(GAP2F); ----- ----- 3FD 000003F4 00000000 ----- 10698 .ORG GAP11F, *PR=-34 10699 Y(-34), 10700 Y>PR, 10701 JUMP(GAP12); ----- ----- 3FC 00000A8B 80DE1000 ----- 10702 .ORG GAP12, *END BOX 10703 Y(>0A), 10704 Y>DR, 10705 JUMP(GAP13); ----- ----- A8B 00001A8C 000A1000 ----- 10706 .ORG GAP13, *PR=-56 10707 10708 Y(-56), 10709 Y>PR, 10710 JUMP(GAP14); ----- ----- A8C 00000A8D 80C81000 ----- 10711 .ORG GAP14, *FIRST BOX 10712 Y(>0B), 10713 Y>DR, 10714 JUMP(GAP15); ----- ----- A8D 00001A8E 000B1000 ----- 10715 .ORG GAP15, *PR=-55 10716 Y(-55), 10717 Y>PR, 10718 JUMP(GAP16); ----- ----- A8E 00000A8F 80C91000 ----- 10719 .ORG GAP16, *SECOND BOX 10720 *AR=STOR0 10721 MA(STOR0), RAM>AR, 10722 Y(>0B), 10723 Y>DR, 10724 JUMP(GAP17); ----- ----- A8F 00021A90 200B1000 ----- 10725 *INITIALISE VARIABLES FOR COPY LOOP 10726 .ORG GAP17, *RWL=AR MSN=2 10727 MA(RWL), 10728 AR.F0>A, B(2), OR, 10729 Y>RAM, Y>AR, Y>IO, 10730 JUMP(GAP18); ----- ----- A90 00220A91 0B0251D0 ----- 10731 * AR MSN= LATCH FOR STORE 0 10732 * AR LSN= LATCH OF STORED STATUS FIELD 10733 .ORG GAP18, *PR=POINTER TO 1ST STATUS STORE CHAR 10734 *BR=POINTER TO START POSITION IN STOR0 10735 PR>BR, 10736 Y(-6), 10737 Y>PR, 10738 JUMP(GAP25F); ----- ----- A91 004103FE 80FA1000 ----- 10739 *START OF COPY LOOP 10740 .ORG GAP25F, *TPD=STATUS CHAR 10741 RVDP, 10742 JUMP(GAP20); ----- ----- 3FE 00000A92 00008000 ----- 10743 .ORG GAP20, *INCREMENT STORE0 POINTER 10744 *SWAP POINTERS 10745 PR>BR, 10746 A(1), BR>B, ADD, 10747 Y>PR, 10748 JUMP(GAP21); ----- ----- A92 00410A93 80010001 ----- 10749 .ORG GAP21, *RWL=STORE 0 LATCH 10750 MA(RWL), 10751 ARHI>A, B(0), OR, 10752 Y>RAM, Y>IO, 10753 JUMP(GAP22); ----- ----- A93 00000A94 0B005120 ----- 10754 .ORG GAP22, *WRITE STATUS CHAR TO STORE 0 10755 *BR=STATUS STORE POINTER 10756 TPD>A, B(0), OR, 10757 Y>DR, 10758 JUMP(GAP23); ----- ----- A94 00001A95 00001090 ----- 10759 .ORG GAP23, *INCREMENT STORE POINTER 10760 *SWAP POINTERS 10761 PR>BR, 10762 A(1), BR>B, ADD, 10763 Y>PR, 10764 JUMP(GAP24); ----- ----- A95 00410A96 80010001 ----- 10765 .ORG GAP24, *LAST STATUS CHARACTER IN THIS GROUP? 10766 *RWL=STATUS STORE LATCH 10767 MA(RWL), 10768 AR.0F>A, B(0), ADD, 10769 Y>RAM, Y>IO, 10770 JZ(GAP25F,GAP25T); ----- ----- A96 000023FE 0B0041C0 ----- 10771 *COMPLETED COPY OF THIS GROUP OF STATUS CHARS 10772 .ORG GAP25T, *Y=STATUS STORE LATCH-4 10773 AR.0F>A, B(-4), ADD, 10774 JUMP(GAP25A); ----- ----- 3FF 00000A97 00FC00C0 ----- 10775 .ORG GAP25A, *ANOTHER GROUP? 10776 *POINT TO NEXT GROUP 10777 MA(RWL), 10778 AR>A, B(1), ADD, 10779 Y>AR, Y>RAM, Y>IO, 10780 JZ(GAP26F,GAP26T); ----- ----- A97 00222400 0B014110 ----- 10781 .ORG GAP26F, *INIT STORE POINTER TO BEGINNING OF NEXT GROUP 10782 Y(-7), 10783 Y>PR, 10784 JUMP(GAP25F); ----- ----- 400 000003FE 80F91000 ----- 10785 *FINISHED COPY 10786 .ORG GAP26T, *EXIT USER STATUS MODE 10787 JUMP(GAP2F); ----- ----- 401 000003F4 00000000 ----- 10788 *GENERATE A ROW 24 DISPLAY FOR A PAGE CAPTURE MODE 10789 * AR=EXPREG, B=PEN 10790 .ORG GAP4T, *Y=PEN-4 10791 A(-4), BRHI>B, ADD, 10792 JUMP(GAP4A); ----- ----- 3FB 00000A98 00FC000C ----- 10793 .ORG GAP4A, *SUB-PAGE MODE? 10794 *P=POINTER TO START OF PROMPT ROW 10795 *B=SYS1 10796 MA(SYS1), RAM>BR, 10797 Y(-64), 10798 Y>PR, 10799 JN(GAP4BF,GAP4BT); ----- ----- A98 00014402 88C01000 ----- 10800 *MAIN PAGE MODE 10801 .ORG GAP4BT, *Y=PCM 10802 *B=MREG0 10803 MA(MREG0), RAM>BR, 10804 A(3), BRHI>B, AND, 10805 JUMP(GAP30); ----- ----- 403 00010A99 3903080C ----- 10806 .ORG GAP30, *CASE PCM=? 10807 *INIT THISRW FOR TOP MENU 10808 MA(THISRW), 10809 Y(27), 10810 Y>RAM, 10811 JY(GAP40Y); ----- ----- A99 0000C788 7D1B1100 ----- 10812 *CASE NORMAL 10813 .ORG GAP40Y, *Y=PMNM 10814 A(PMNM), BR>B, AND, 10815 JUMP(GAP50); ----- ----- 788 00000A9A 00040801 ----- 10816 *CASE TOP 10817 .ORG GAP41, *P=POINTER TO START OF PROMPT ROW 10818 *THISRW=27 ###1 10819 Y(-64), 10820 Y>PR, 10821 JUMP(GAP100); ----- ----- 789 00000A9B 80C01000 ----- 10822 *CASE FLOF 10823 .ORG GAP42, *A=FLFREG 10824 MA(FLFREG), RAM>AR, 10825 JUMP(GAP42A); ----- ----- 78A 00020A9C 12000000 ----- 10826 .ORG GAP42A, *Y=P27FLF 10827 AR>A, B(P27FLF), AND, 10828 JUMP(GAP42B); ----- ----- A9C 00000A9D 00400810 ----- 10829 .ORG GAP42B, *NEED TO GENERATE A ROW 24? 10830 *B=SYS2 10831 MA(SYS2), RAM>BR, 10832 JZ(GAP42CF,GAP42CT); ----- ----- A9D 00012404 09000000 ----- 10833 .ORG GAP42CF, *CALL PAGE NUMBER MENU ROUTINE 10834 *CALL PND50T 10835 *RETURN=1, RETURN TO GAP51 10836 MA(RETURN), 10837 Y(1), 10838 Y>RAM, 10839 JUMP(PND50T); ----- ----- 404 00000A9E 7C011100 ----- 10840 .ORG GAP42CT, *NO, COPY ROW24 FROM STORE 6 10841 *CPYR24=1 10842 MA(SYS2), 10843 A(CPYR24), BR>B, OR, 10844 Y>RAM, 10845 JUMP(GAP2F); ----- ----- 405 000003F4 09041101 ----- 10846 *CASE FAVP 10847 .ORG GAP43, *GET PAGE PREFIX 10848 *CALL PND50T 10849 *RETURN=1, RETURN TO GAP51 10850 MA(RETURN), 10851 Y(1), 10852 Y>RAM, 10853 JUMP(PND50T); ----- ----- 78B 00000A9E 7C011100 ----- 10854 *GENERATE A NORMAL MODE MENU 10855 * LAST Y WAS PMNM 10856 .ORG GAP50, *PMNM=1? IF NO GET PAGE PREFIX 10857 * 10858 * TCJ Jan 94, 10859 * *CALL PND50T 10860 * *RETURN=1, RETURN TO GAP51 10861 * MA(RETURN), 10862 * Y(1), 10863 * Y>RAM, 10864 * JZ(GAP50AF,PND50T); 10865 JZ(GAP50AF,TCJGAP00T); ----- ----- A9A 00002406 00000000 ----- 10866 * 10867 *MAKE PLUS/ MINUS MENU 10868 .ORG GAP50AF, *SET P TO START POINT 10869 *JUMP TO PLUS/ MINUS ROUTINE 10870 Y(-55), 10871 Y>PR, 10872 JUMP(GAP200); ----- ----- 406 00000A9F 80C91000 ----- 10873 * 10874 * TCJ Jan 94 10875 * If NMOFF in MREG2 is set, then check that inventory 10876 * is complete before generating normal prompt. 10877 * 10878 .ORG TCJGAP00T, * AR = NMOFF flag 10879 MA(MREG2), RAM>AR, 10880 JUMP(TCJGAP01); ----- ----- 407 00020AA0 6E000000 ----- 10881 * 10882 .ORG TCJGAP01, * AR = inventory complete flag 10883 * Y = NMOFF flag 10884 MA(INVCNT), RAM>AR, 10885 AR>A, B(NMOFF), AND, 10886 JUMP(TCJGAP02); ----- ----- AA0 00020AA1 38040810 ----- 10887 * 10888 .ORG TCJGAP02, * NMOFF == 0 ? 10889 * Y = inventory complete flag 10890 AR>A, B(1), AND, 10891 JZ(TCJGAP03F,TCJGAP03T); ----- ----- AA1 00002408 00010810 ----- 10892 * 10893 .ORG TCJGAP03F, * NMOFF is set, 10894 * Inventory complete ? 10895 JZ(TCJGAP04F,TCJGAP04T); ----- ----- 408 0000240A 00000000 ----- 10896 * 10897 .ORG TCJGAP04F, * Inventory complete, 10898 * CALL PND50T 10899 * RETURN=1, RETURN TO GAP51 10900 MA(RETURN), 10901 Y(1), 10902 Y>RAM, 10903 JUMP(PND50T); ----- ----- 40A 00000A9E 7C011100 ----- 10904 * 10905 .ORG TCJGAP04T, * Inventory not complete, 10906 * abort prompt generation 10907 JUMP(GAP2F); ----- ----- 40B 000003F4 00000000 ----- 10908 * 10909 .ORG TCJGAP03T, * NMOFF not set 10910 * CALL PND50T 10911 * RETURN=1, RETURN TO GAP51 10912 MA(RETURN), 10913 Y(1), 10914 Y>RAM, 10915 JUMP(PND50T); ----- ----- 409 00000A9E 7C011100 ----- 10916 * 10917 *+++GENERATE PAGE NUMBER MENU 10918 * 10919 * This routine generates the default NORMAL menu, a FLOF menu 10920 * for pages with nor row 24 and the favourite page menu. 10921 * 10922 * input pars are:- 10923 * A: page pre-fix letter 10924 * SYS1: indicates NORMAL, FLOF or FAVP 10925 * return pars are:- 10926 * local variables used are:- 10927 * 10928 .ORG GAP51, *STORE=PREFIX LETTER 10929 MA(STORE), 10930 AR>A, B(0), OR, 10931 Y>RAM, 10932 JUMP(GAP52); ----- ----- 051 00000AA2 77001110 ----- 10933 *WRITE FIRST THREE CHARS (BOX,BOX,RED) 10934 .ORG GAP52, *P=POINTER TO BEGINNING OF ROW 10935 Y(-64), 10936 Y>PR, 10937 JUMP(GAP53); ----- ----- AA2 00000AA3 80C01000 ----- 10938 .ORG GAP53, *D=BOX 10939 Y(>0B), 10940 Y>DR, 10941 JUMP(GAP54); ----- ----- AA3 00001AA4 000B1000 ----- 10942 .ORG GAP54, *P=-63 10943 Y(-63), 10944 Y>PR, 10945 JUMP(GAP55); ----- ----- AA4 00000AA5 80C11000 ----- 10946 .ORG GAP55, *D=BOX 10947 Y(>0B), 10948 Y>DR, 10949 JUMP(GAP56); ----- ----- AA5 00001AA6 000B1000 ----- 10950 .ORG GAP56, *P=-62 10951 Y(-62), 10952 Y>PR, 10953 JUMP(GAP57); ----- ----- AA6 00000AA7 80C21000 ----- 10954 .ORG GAP57, *D=ALPHA RED 10955 *B=SYS1 10956 MA(SYS1), RAM>BR, 10957 Y(>01), 10958 Y>DR, 10959 JUMP(GAP58); ----- ----- AA7 00011AA8 08011000 ----- 10960 *INIT PAGE NUMBER LOOP COUNT 10961 .ORG GAP58, *A=4 10962 MA(RET3), 10963 Y(4), 10964 Y>RAM, 10965 JUMP(GAP59F); ----- ----- AA8 0000042C 7A041100 ----- 10966 *LOOP START 10967 * B=SYS1 10968 .ORG GAP59F, *Y=PCM 10969 *A=RET3 10970 MA(RET3), RAM>AR, 10971 A(3), BRHI>B, AND, 10972 JUMP(GAP59A); ----- ----- 42C 00020AA9 7A03080C ----- 10973 .ORG GAP59A, *CASE PCM=? 10974 *IF NORMAL, JUMP TO GNP0Y 10975 *RETURN TO GAP60A, 10976 *A=STORE POINTER 10977 AR>A, B(1), ADD, 10978 Y>AR, 10979 JY(GNP0Y); ----- ----- AA9 0022C544 00010010 ----- 10980 .ORG GAP60A, *SET REVERSE VIDEO FOR ALL NORMAL DISPLAY 10981 MA(LOCAL), 10982 Y(>01), 10983 Y>RAM, 10984 JUMP(GAP66T); ----- ----- A84 0000040D 72011100 ----- 10985 *CASE FLOF 10986 .ORG GAP62, *A=LINK POINTER 10987 AR>A, B(-2), ADD, 10988 Y>AR, 10989 JUMP(GAP62A); ----- ----- 546 00220AAA 00FE0010 ----- 10990 .ORG GAP62A, *CALL GFL0 10991 *RETURN=3, RETURN TO GAP62B 10992 MA(RETURN), 10993 Y(3), 10994 Y>RAM, 10995 JUMP(GFL0); ----- ----- AAA 000009EE 7C031100 ----- 10996 .ORG GAP62B, *NULL LINK? 10997 *SET LOCAL FOR REVERSE VIDEO 10998 MA(LOCAL), 10999 Y(>01), 11000 Y>RAM, 11001 JZ(GAP62CF,GAP66T); ----- ----- 063 0000240C 72011100 ----- 11002 .ORG GAP62CF, *NULL PAGE, INHIBIT PAGE DISPLAY 11003 MA(LOCAL), 11004 Y(>02), 11005 Y>RAM, 11006 JUMP(GAP66T); ----- ----- 40C 0000040D 72021100 ----- 11007 *CASE FAVP 11008 .ORG GAP63, *CALL GFP0T 11009 *RETURN=1, RETURN TO GAP63B 11010 MA(RETURN), 11011 Y(1), 11012 Y>RAM, 11013 JUMP(GFP0T); ----- ----- 547 0000037F 7C011100 ----- 11014 * A=STOR0, B=PU, LAST Y WAS 'DASH' AND SPACE' FLAGS 11015 .ORG GAP63B, *FAVOURITE PAGE PROGRAMMED? 11016 *Y=REVERSE VIDEO FLAG 11017 A(>02), BR>B, AND, 11018 JZ(GAP63CF,GAP63CT); ----- ----- 271 0000240E 00020801 ----- 11019 *FAVOURITE PAGE HAS NOT BEEN PROGRAMMED 11020 .ORG GAP63CF, *NOT PROGRAMMED, FLAG SET TO ENABLE REVERSE DISPLAY? 11021 *RESTORE RWL TO DISPLAY PAGE 11022 MA(RWL), 11023 ARHI>A, B(0), OR, 11024 Y>RAM, Y>IO, 11025 JZ(GAP63DF,GAP63DT); ----- ----- 40E 0000241A 0B005120 ----- 11026 .ORG GAP63DF, *DISPLAY IN REVERSE VIDEO 11027 MA(LOCAL), 11028 Y(>01), 11029 Y>RAM, 11030 JUMP(GAP66T); ----- ----- 41A 0000040D 72011100 ----- 11031 .ORG GAP63DT, *DO NOT DISPLAY IN REVERSE VIDEO 11032 MA(LOCAL), 11033 Y(>00), 11034 Y>RAM, 11035 JUMP(GAP66T); ----- ----- 41B 0000040D 72001100 ----- 11036 *FAVOURITE PAGE HAS BEEN PROGRAMMED 11037 .ORG GAP63CT, *Y=INHIBIT REVERSE VIDEO FLAG 11038 *A=STOR0 11039 MA(STOR0), RAM>AR, 11040 A(>01), BR>B, AND, 11041 JUMP(GAP63CA); ----- ----- 40F 00020AAB 20010801 ----- 11042 .ORG GAP63CA, *REVERSE VIDEO DISPLAY INHIBITED? 11043 *RESTORE RWL TO DISPLAY PAGE 11044 MA(RWL), 11045 ARHI>A, B(0), OR, 11046 Y>RAM, Y>IO, 11047 JZ(GAP63CBF,GAP63CBT); ----- ----- AAB 0000241C 0B005120 ----- 11048 .ORG GAP63CBF, *DO NOT DISPLAY IN REVERSE VIDEO 11049 MA(LOCAL), 11050 Y(>00), 11051 Y>RAM, 11052 JUMP(GAP66T); ----- ----- 41C 0000040D 72001100 ----- 11053 .ORG GAP63CBT, *CALL PIL TO SEE IF FAVP IN A LATCH 11054 *RETURN=4, RETURN TO GAP63E 11055 MA(RETURN), 11056 Y(4), 11057 Y>RAM, 11058 JUMP(PIL0); ----- ----- 41D 00000936 7C041100 ----- 11059 .ORG GAP63E, *Y=STORE FIELD AND NOT IN LATCH FLAG 11060 *A=STOR0 11061 MA(STOR0), RAM>AR, 11062 AR>A, B(>78), AND, 11063 JUMP(GAP63G); ----- ----- 294 00020AAC 20780810 ----- 11064 .ORG GAP63G, *FAVP PAGE THE DISPLAYED PAGE? 11065 *RESTORE RWL TO DISPLAY PAGE 11066 MA(RWL), 11067 ARHI>A, B(0), OR, 11068 Y>RAM, Y>IO, 11069 JZ(GAP63HF,GAP63HT); ----- ----- AAC 0000241E 0B005120 ----- 11070 .ORG GAP63HT, *YES, DISPLAY IN REVERSE VIDEO 11071 MA(LOCAL), 11072 Y(>01), 11073 Y>RAM, 11074 JUMP(GAP66T); ----- ----- 41F 0000040D 72011100 ----- 11075 .ORG GAP63HF, *DO NOT DISPLAY IN REVERSE VIDEO 11076 MA(LOCAL), 11077 Y(>00), 11078 Y>RAM, 11079 JUMP(GAP66T); ----- ----- 41E 0000040D 72001100 ----- 11080 *DIFFERENT PAGE CAPTURE MODES MERGE HERE 11081 * PU,PT,PM IS PAGE NUMBER 11082 * LOCAL LSB ENABLES REVERSE VIDEO 11083 * LOCAL 2LSB INHIBITS DISPLAY OF NULL PAGE 11084 .ORG GAP66T, *A=LOOP COUNT 11085 MA(RET3), RAM>AR, 11086 JUMP(GAP67); ----- ----- 40D 00020AAD 7A000000 ----- 11087 .ORG GAP67, *DEC LOOP COUNT 11088 MA(RET3), 11089 AR>A, B(-1), ADD, 11090 Y>RAM, 11091 JUMP(GAP68); ----- ----- AAD 00000AAE 7AFF0110 ----- 11092 .ORG GAP68, *CASE LOOP COUNT? 11093 JY(GAP70Y); ----- ----- AAE 0000C5E8 00000000 ----- 11094 * 11095 .ORG GAP70Y, *CASE RED PAGE 11096 *POINT COLOUR FOR NEXT PAGE 11097 Y(-54), 11098 Y>PR, 11099 JUMP(GAP70A); ----- ----- 5E8 00000AAF 80CA1000 ----- 11100 .ORG GAP70A, *NEXT PAGE IS GREEN 11101 *B=POINTER 11102 PR>BR, 11103 Y(>02), 11104 Y>DR, 11105 JUMP(GAP75); ----- ----- AAF 00411AB0 00021000 ----- 11106 .ORG GAP71, *CASE GREEN PAGE 11107 *POINT COLOUR FOR NEXT PAGE 11108 Y(-45), 11109 Y>PR, 11110 JUMP(GAP71A); ----- ----- 5E9 00000AB1 80D31000 ----- 11111 .ORG GAP71A, *NEXT PAGE IS YELLOW 11112 *B=POINTER 11113 PR>BR, 11114 Y(>03), 11115 Y>DR, 11116 JUMP(GAP75); ----- ----- AB1 00411AB0 00031000 ----- 11117 .ORG GAP72, *CASE YELLOW PAGE 11118 *POINT COLOUR FOR NEXT PAGE 11119 Y(-36), 11120 Y>PR, 11121 JUMP(GAP72A); ----- ----- 5EA 00000AB2 80DC1000 ----- 11122 .ORG GAP72A, *NEXT PAGE IS CYAN 11123 *B=POINTER 11124 PR>BR, 11125 Y(>06), 11126 Y>DR, 11127 JUMP(GAP75); ----- ----- AB2 00411AB0 00061000 ----- 11128 .ORG GAP73, *CASE CYAN PAGE 11129 *POINT COLOUR FOR NEXT PAGE 11130 Y(-27), 11131 Y>PR, 11132 JUMP(GAP73A); ----- ----- 5EB 00000AB3 80E51000 ----- 11133 .ORG GAP73A, *NO NEXT PAGE 11134 *B=POINTER 11135 PR>BR, 11136 Y(>20), 11137 Y>DR, 11138 JUMP(GAP75); ----- ----- AB3 00411AB0 00201000 ----- 11139 *CLEAR FIRST CHARACTER AFTER DIGITS 11140 .ORG GAP75, *P=B-1 11141 A(-1), BR>B, ADD, 11142 Y>PR, 11143 JUMP(GAP76); ----- ----- AB0 00000AB4 80FF0001 ----- 11144 .ORG GAP76, *D=>20 11145 *B=POINTER 11146 PR>BR, 11147 Y(>20), 11148 Y>DR, 11149 JUMP(GAP77); ----- ----- AB4 00411AB5 00201000 ----- 11150 *WRITE PAGE PREFIX 11151 .ORG GAP77, *POINT TO PAGE PREFIX 11152 *A=PAGE PREFIX 11153 MA(STORE), RAM>AR, 11154 A(-4), BR>B, ADD, 11155 Y>PR, 11156 JUMP(GAP78); ----- ----- AB5 00020AB6 F7FC0001 ----- 11157 .ORG GAP78, *D=PAGE PREFIX 11158 *B=POINTER 11159 *A=LOCAL 11160 PR>BR, 11161 MA(LOCAL), RAM>AR, 11162 AR>A, B(0), OR, 11163 Y>DR, 11164 JUMP(GAP79); ----- ----- AB6 00431AB7 72001010 ----- 11165 .ORG GAP79, *Y=NULL PAGE FLAG 11166 AR>A, B(>02), AND, 11167 JUMP(GAP79A); ----- ----- AB7 00000AB8 00020810 ----- 11168 .ORG GAP79A, *Y=REVERSE FLAG 11169 *NULL PAGE? 11170 AR>A, B(>01), AND, 11171 JZ(GAP79BF,GAP79BT); ----- ----- AB8 00002420 00010810 ----- 11172 *INHIBIT DISPLAY OF A NULL PAGE 11173 .ORG GAP79BF, *POINT TO BEGINNING OF PAGE FIELD 11174 A(-2), BR>B, ADD, 11175 Y>PR, 11176 JUMP(GAP79C); ----- ----- 420 00000AB9 80FE0001 ----- 11177 .ORG GAP79C, *D=ALPHA BLACK 11178 *B=POINTER 11179 PR>BR, 11180 Y(>00), 11181 Y>DR, 11182 JUMP(GAP81A); ----- ----- AB9 00411ABA 00001000 ----- 11183 *NOT A NULL PAGE 11184 .ORG GAP79BT, *POINT TO BEGINNING OF PAGE FIELD 11185 *DISPLAY PAGE IN REVERSE VIDEO? 11186 A(-2), BR>B, ADD, 11187 Y>PR, 11188 JZ(GAP80F,GAP80T); ----- ----- 421 00002422 80FE0001 ----- 11189 *DISPLAY PAGE IN REVERSE VIDEO 11190 .ORG GAP80F, *D=NEW BACKGROUND 11191 *B=POINTER 11192 PR>BR, 11193 Y(>1D), 11194 Y>DR, 11195 JUMP(GAP81A); ----- ----- 422 00411ABA 001D1000 ----- 11196 *ENTRY POINT FOR NULL PAGES 11197 .ORG GAP81A, *POINTER++ 11198 A(1), BR>B, ADD, 11199 Y>PR, 11200 JUMP(GAP81B); ----- ----- ABA 00000ABB 80010001 ----- 11201 .ORG GAP81B, *D=ALPHA BLACK 11202 *B=POINTER 11203 PR>BR, 11204 Y(>00), 11205 Y>DR, 11206 JUMP(GAP81C); ----- ----- ABB 00411ABC 00001000 ----- 11207 .ORG GAP81C, *UPDATE POINTER 11208 A(7), BR>B, ADD, 11209 Y>PR, 11210 JUMP(GAP81D); ----- ----- ABC 00000ABD 80070001 ----- 11211 .ORG GAP81D, *D=BLACK BACKGROUND 11212 *A=PM 11213 MA(PM), RAM>AR, 11214 Y(>1C), 11215 Y>DR, 11216 JUMP(GAP82); ----- ----- ABD 00021ABE 741C1000 ----- 11217 *DO NOT DISPLAY PAGE IN REVERSE VIDEO 11218 * B=POINTER TO PAGE PRE-FIX 11219 .ORG GAP80T, *POINT TO LAST CHARACTER IN FIELD 11220 *A=PM 11221 MA(PM), RAM>AR, 11222 A(6), BR>B, ADD, 11223 Y>PR, 11224 JUMP(GAP82); ----- ----- 423 00020ABE F4060001 ----- 11225 *WRITE DIGITS 11226 * P=POINTER TO LAST CHARACTER IN FIELD 11227 * A=PM 11228 .ORG GAP82, *Y=PAGE MAGS 11229 ARHI>A, B(7), AND, 11230 JUMP(GAP83); ----- ----- ABE 00000ABF 00070820 ----- 11231 .ORG GAP83, *MAGAZINE 8? 11232 MA(PM), 11233 AR>A, B(>7F), AND, 11234 Y>RAM, 11235 JZ(GAP84F,GAP84T); ----- ----- ABF 00002424 747F0910 ----- 11236 .ORG GAP84T, *MAG 8 11237 MA(PM), 11238 AR.0F>A, B(>80), OR, 11239 Y>RAM, 11240 JUMP(GAP84F); ----- ----- 425 00000424 748011C0 ----- 11241 * 11242 .ORG GAP84F, *INIT DIGIT LOOP COUNT 11243 *A=4 11244 Y(4), 11245 Y>AR, 11246 JUMP(GAP86); ----- ----- 424 00220AC0 00041000 ----- 11247 *LOOP START 11248 * A=LOOP 11249 .ORG GAP86, *DEC LOOP 11250 MA(LOCAL), 11251 AR>A, B(-1), ADD, 11252 Y>RAM, 11253 JUMP(GAP87); ----- ----- AC0 00000AC1 72FF0110 ----- 11254 .ORG GAP87, *CASE LOOP=? 11255 *B=POINTER 11256 *A=LOOP COUNT 11257 PR>BR, 11258 MA(RET3), RAM>AR, 11259 JY(GAP90Y); ----- ----- AC1 0043C5E0 7A000000 ----- 11260 .ORG GAP90Y, *EXIT 11261 *Y=LOOP COUNT 11262 AR>A, B(0), OR, 11263 JUMP(GAP96); ----- ----- 5E0 00000AC2 00001010 ----- 11264 .ORG GAP91, *UNITS DIGIT 11265 *POINT TO UNITS 11266 *A=PU 11267 MA(PU), RAM>AR, 11268 A(1), BR>B, ADD, 11269 Y>PR, 11270 JUMP(GAP94); ----- ----- 5E1 00020AC3 F6010001 ----- 11271 .ORG GAP92, *TENS DIGIT 11272 *POINT TO TENS 11273 *A=PT 11274 MA(PT), RAM>AR, 11275 A(1), BR>B, ADD, 11276 Y>PR, 11277 JUMP(GAP94); ----- ----- 5E2 00020AC3 F5010001 ----- 11278 .ORG GAP93, *MAG DIGIT 11279 *POINT TO MAG 11280 *A=PM 11281 MA(PM), RAM>AR, 11282 A(-5), BR>B, ADD, 11283 Y>PR, 11284 JUMP(GAP94); ----- ----- 5E3 00020AC3 F4FB0001 ----- 11285 * P=DIGIT POINTER, A=DIGIT 11286 .ORG GAP94, *Y=DIGIT DASH FLAG 11287 AR>A, B(>08), AND, 11288 JUMP(GAP95); ----- ----- AC3 00000AC4 00080810 ----- 11289 .ORG GAP95, *Y=DIGIT SPACE FLAG 11290 *DISPLAY A DASH? 11291 AR>A, B(>04), AND, 11292 JZ(GAP95AF,GAP95AT); ----- ----- AC4 00002426 00040810 ----- 11293 .ORG GAP95AF, *DISPLAY A DASH 11294 *A=LOCAL 11295 MA(LOCAL), RAM>AR, 11296 Y(>2D), 11297 Y>DR, 11298 JUMP(GAP86); ----- ----- 426 00021AC0 722D1000 ----- 11299 .ORG GAP95AT, *DISPLAY A SPACE? 11300 *Y-DIGIT MSN-10 11301 ARHI>A, B(-10), ADD, 11302 JZ(GAP95BF,GAP95BT); ----- ----- 427 00002428 00F60020 ----- 11303 .ORG GAP95BF, *DISPLAY A SPACE 11304 *A=LOCAL 11305 MA(LOCAL), RAM>AR, 11306 Y(>20), 11307 Y>DR, 11308 JUMP(GAP86); ----- ----- 428 00021AC0 72201000 ----- 11309 .ORG GAP95BT, *DISPLAY A DIGIT 11310 *HEX DIGIT? 11311 JN(GAP95CF,GAP95CT); ----- ----- 429 0000442A 00000000 ----- 11312 .ORG GAP95CF, *HEX DIGIT 11313 *A=LOCAL 11314 MA(LOCAL), RAM>AR, 11315 ARHI>A, B(>37), ADD, 11316 Y>DR, 11317 JUMP(GAP86); ----- ----- 42A 00021AC0 72370020 ----- 11318 .ORG GAP95CT, *DECIMAL DIGIT 11319 *A=LOCAL 11320 MA(LOCAL), RAM>AR, 11321 ARHI>A, B(>30), OR, 11322 Y>DR, 11323 JUMP(GAP86); ----- ----- 42B 00021AC0 72301020 ----- 11324 *THREE DIGITS COMPLETED 11325 * LAST Y WAS LOOP COUNT 11326 .ORG GAP96, *B=SYS1, MORE PAGE NUMBERS TO WRITE? 11327 MA(SYS1), RAM>BR, 11328 JZ(GAP59F,GAP97T); ----- ----- AC2 0001242C 08000000 ----- 11329 .ORG GAP97T, *NO, EXIT 11330 JUMP(GAP2F); ----- ----- 42D 000003F4 00000000 ----- 11331 *GENERATE A TOP PROMPT 11332 * P=POINTER TO COL 0 OF PROMPT, THISRW=27 11333 *FIRST WRITE FIXED CHARACTERS 11334 .ORG GAP100, *B=PROMPT POINTER 11335 *COL 0= ALPHA RED 11336 PR>BR, 11337 Y(>01), 11338 Y>DR, 11339 JUMP(GAP101); ----- ----- A9B 00411AC5 00011000 ----- 11340 .ORG GAP101, *P=COL 1 OF PROMPT 11341 A(1), BR>B, ADD, 11342 Y>PR, 11343 JUMP(GAP102); ----- ----- AC5 00000AC6 80010001 ----- 11344 .ORG GAP102, *B=PROMPT POINTER 11345 *COL 1= NEW BACKGROUND 11346 PR>BR, 11347 Y(>1D), 11348 Y>DR, 11349 JUMP(GAP103); ----- ----- AC6 00411AC7 001D1000 ----- 11350 .ORG GAP103, *P=COL 2 OF PROMPT 11351 A(1), BR>B, ADD, 11352 Y>PR, 11353 JUMP(GAP104); ----- ----- AC7 00000AC8 80010001 ----- 11354 .ORG GAP104, *B=PROMPT POINTER 11355 *COL 2= ALPHA BLACK 11356 PR>BR, 11357 Y(>00), 11358 Y>DR, 11359 JUMP(GAP105); ----- ----- AC8 00411AC9 00001000 ----- 11360 .ORG GAP105, *P=COL 3 OF PROMPT 11361 A(1), BR>B, ADD, 11362 Y>PR, 11363 JUMP(GAP106); ----- ----- AC9 00000ACA 80010001 ----- 11364 .ORG GAP106, *B=PROMPT POINTER 11365 *COL 3= '-' 11366 PR>BR, 11367 Y(>2D), 11368 Y>DR, 11369 JUMP(GAP107); ----- ----- ACA 00411ACB 002D1000 ----- 11370 .ORG GAP107, *P=COL 4 OF PROMPT 11371 A(1), BR>B, ADD, 11372 Y>PR, 11373 JUMP(GAP108); ----- ----- ACB 00000ACC 80010001 ----- 11374 .ORG GAP108, *B=PROMPT POINTER 11375 *COL 4= ' ' 11376 PR>BR, 11377 Y(>20), 11378 Y>DR, 11379 JUMP(GAP109); ----- ----- ACC 00411ACD 00201000 ----- 11380 .ORG GAP109, *P=COL 5 OF PROMPT 11381 A(1), BR>B, ADD, 11382 Y>PR, 11383 JUMP(GAP110); ----- ----- ACD 00000ACE 80010001 ----- 11384 .ORG GAP110, *B=PROMPT POINTER 11385 *COL 5= ALPHA GREEN 11386 PR>BR, 11387 Y(>02), 11388 Y>DR, 11389 JUMP(GAP111); ----- ----- ACE 00411ACF 00021000 ----- 11390 .ORG GAP111, *P=COL 6 OF PROMPT 11391 A(1), BR>B, ADD, 11392 Y>PR, 11393 JUMP(GAP112); ----- ----- ACF 00000AD0 80010001 ----- 11394 .ORG GAP112, *B=PROMPT POINTER 11395 *COL 6= NEW BACKGROUND 11396 PR>BR, 11397 Y(>1D), 11398 Y>DR, 11399 JUMP(GAP113); ----- ----- AD0 00411AD1 001D1000 ----- 11400 .ORG GAP113, *P=COL 7 OF PROMPT 11401 A(1), BR>B, ADD, 11402 Y>PR, 11403 JUMP(GAP114); ----- ----- AD1 00000AD2 80010001 ----- 11404 .ORG GAP114, *B=PROMPT POINTER 11405 *COL 7= ALPHA BLACK 11406 PR>BR, 11407 Y(>00), 11408 Y>DR, 11409 JUMP(GAP115); ----- ----- AD2 00411AD3 00001000 ----- 11410 .ORG GAP115, *P=COL 8 OF PROMPT 11411 A(1), BR>B, ADD, 11412 Y>PR, 11413 JUMP(GAP116); ----- ----- AD3 00000AD4 80010001 ----- 11414 .ORG GAP116, *B=PROMPT POINTER 11415 *COL 8= '+' 11416 PR>BR, 11417 Y(>2B), 11418 Y>DR, 11419 JUMP(GAP117); ----- ----- AD4 00411AD5 002B1000 ----- 11420 .ORG GAP117, *P=COL 9 OF PROMPT 11421 A(1), BR>B, ADD, 11422 Y>PR, 11423 JUMP(GAP118); ----- ----- AD5 00000AD6 80010001 ----- 11424 .ORG GAP118, *B=PROMPT POINTER 11425 *COL 9= ' ' 11426 PR>BR, 11427 Y(>20), 11428 Y>DR, 11429 JUMP(GAP119); ----- ----- AD6 00411AD7 00201000 ----- 11430 .ORG GAP119, *P=COL 10 OF PROMPT 11431 A(1), BR>B, ADD, 11432 Y>PR, 11433 JUMP(GAP120); ----- ----- AD7 00000AD8 80010001 ----- 11434 .ORG GAP120, *B=PROMPT POINTER 11435 *COL 10= ALPHA YELLOW 11436 PR>BR, 11437 Y(>03), 11438 Y>DR, 11439 JUMP(GAP121); ----- ----- AD8 00411AD9 00031000 ----- 11440 .ORG GAP121, *P=COL 11 OF PROMPT 11441 A(1), BR>B, ADD, 11442 Y>PR, 11443 JUMP(GAP122); ----- ----- AD9 00000795 80010001 ----- 11444 .ORG GAP122, *B=PROMPT POINTER 11445 *COL 11= NEW BACKGROUND 11446 PR>BR, 11447 Y(>1D), 11448 Y>DR, 11449 JUMP(GAP123); ----- ----- 795 00411ADA 001D1000 ----- 11450 .ORG GAP123, *P=COL 12 OF PROMPT 11451 A(1), BR>B, ADD, 11452 Y>PR, 11453 JUMP(GAP124); ----- ----- ADA 00000ADB 80010001 ----- 11454 .ORG GAP124, *B=PROMPT POINTER 11455 *COL 12= ALPHA BLACK 11456 PR>BR, 11457 Y(>00), 11458 Y>DR, 11459 JUMP(GAP130); ----- ----- ADB 00411ADC 00001000 ----- 11460 *WRITE NEXT GROUP 11461 .ORG GAP130, *POINT TO DISPLAY PAGE 11462 Y(DPM), 11463 Y>AR, 11464 JUMP(GAP131); ----- ----- ADC 00220ADD 00681000 ----- 11465 .ORG GAP131, *CONVERT PAGE NUMBER TO POINTER 11466 *RETURN=4, RETURN TO GAP132 11467 MA(RETURN), 11468 Y(4), 11469 Y>RAM, 11470 JUMP(PNTIN0); ----- ----- ADD 0000086F 7C041100 ----- 11471 .ORG GAP132, *SET MASK TO LOOK FOR NEXT BLOCK OR GROUP 11472 MA(MASK), 11473 Y(6), 11474 Y>RAM, 11475 JUMP(GAP133); ----- ----- 794 00000ADE 73061100 ----- 11476 *ENTRY POINT FROM ROTATE IN BLOCK CODE 11477 .ORG GAP133, *SEARCH FOR MASK 11478 *CALL SBT0A 11479 *RETURN=2, RETURN TO GAP133A 11480 MA(RETURN), 11481 Y(2), 11482 Y>RAM, 11483 JUMP(SBT0A); ----- ----- ADE 000004DA 7C021100 ----- 11484 *CHECK IF BLOCK FOUND, IF YES AND RIB=1 GO BACK FOR ROTATE 11485 .ORG GAP133A, *Y=BLOCK FLAG, B=MREG1 11486 MA(MREG1), RAM>BR, 11487 AR>A, B(>04), AND, 11488 JUMP(GAP133B); ----- ----- 7A2 00010ADF 65040810 ----- 11489 .ORG GAP133B, *FOUND A BLOCK? 11490 *Y=RIB 11491 A(RIB), BR>B, AND, 11492 JZ(GAP133CF,GAP133CT); ----- ----- ADF 0000242E 00010801 ----- 11493 *BLOCK FOUND 11494 .ORG GAP133CF, *BLOCK FOUND, RIB? 11495 *RETURN=5 11496 MA(RETURN), 11497 Y(5), 11498 Y>RAM, 11499 JZ(GAP133DF,GAP133DT); ----- ----- 42E 00002434 7C051100 ----- 11500 .ORG GAP133DT, *ROTATE DISABLED 11501 JUMP(GAP133CAF); ----- ----- 435 00000436 00000000 ----- 11502 .ORG GAP133DF, *NEED TO ROTATE 11503 *SEARCH BACKWARDS FOR LAST BLOCK 11504 *CALL SBT0B 11505 *RETURN=5, RETURN TO GAP133E 11506 *MASK=4 11507 MA(MASK), 11508 Y(>04), 11509 Y>RAM, 11510 JUMP(SBT0B); ----- ----- 434 000004DB 73041100 ----- 11511 .ORG GAP133E, *JUMP BACK TO GAP133 11512 *SET MASK TO LOOK FOR FIRST GROUP IN THE BLOCK 11513 *MASK=2 11514 MA(MASK), 11515 Y(>02), 11516 Y>RAM, 11517 JUMP(GAP133); ----- ----- 7A5 00000ADE 73021100 ----- 11518 * 11519 .ORG GAP133CT, *Y=GROUP FLAG 11520 AR>A, B(>02), AND, 11521 JUMP(GAP133CA); ----- ----- 42F 00000AE0 00020810 ----- 11522 .ORG GAP133CA, *GROUP FOUND? 11523 *IF NO, TEST=0 11524 *(DISABLE AIT LABEL TO BE COPIED IN COP ROUTINE) 11525 MA(TEST), 11526 Y(0), 11527 Y>RAM, 11528 JZ(GAP133CAF,GAP133CAT); ----- ----- AE0 00002436 70001100 ----- 11529 *BLOCK OR GROUP PAGE FOUND 11530 .ORG GAP133CAF, *TEST=1 (ENABLE AIT LABEL TO BE COPIED IN COP ROUTINE) 11531 MA(TEST), 11532 Y(1), 11533 Y>RAM, 11534 JUMP(GAP133CAT); ----- ----- 436 00000437 70011100 ----- 11535 *YELLOW PAGE FOUND 11536 .ORG GAP133CAT, *CONVERT POINTER TO PAGE NUMBER 11537 *CALL INTPN0 11538 *RETURN=2, RETURN TO GAP133G 11539 MA(RETURN), 11540 Y(2), 11541 Y>RAM, 11542 JUMP(INTPN0); ----- ----- 437 000007A3 7C021100 ----- 11543 *SEARCH AITS FOR NEXT BLOCK OR GROUP LABEL 11544 .ORG GAP133G, *CALL SAT0, 11545 *RETURN=0, RETURN TO GAP134Y 11546 MA(RETURN), 11547 Y(0), 11548 Y>RAM, 11549 JUMP(SAT0); ----- ----- 732 00000AE1 7C001100 ----- 11550 * P=AIT POINTER, STORE=AIT LATCH, A=LAST Y=FOUND FLAG 11551 *COPY AIT LABEL OR PAGE NUMBER TO PROMPT 11552 .ORG GAP134Y, *AIT LABEL FOUND? 11553 *IF FOUND, CALL COP0F TO COPY LABEL 11554 *ELSE, CALL COP0T TO COPY NUMBER 11555 *RETURN=0, RETURN TO GAP136Y 11556 MA(RETURN), 11557 Y(0), 11558 Y>RAM, 11559 JZ(COP0F,COP0T); ----- ----- 778 00002438 7C001100 ----- 11560 *FIND NEXT BLOCK 11561 .ORG GAP136Y, *POINT TO DISPLAY PAGE 11562 Y(DPM), 11563 Y>AR, 11564 JUMP(GAP137); ----- ----- 780 00220AE2 00681000 ----- 11565 .ORG GAP137, *CALL PNTIN0 11566 *RETURN=6, RETURN TO GAP138 11567 MA(RETURN), 11568 Y(6), 11569 Y>RAM, 11570 JUMP(PNTIN0); ----- ----- AE2 0000086F 7C061100 ----- 11571 .ORG GAP138, *SET MASK TO LOOK FOR NEXT BLOCK IN SBT0A 11572 MA(MASK), 11573 Y(>04), 11574 Y>RAM, 11575 JUMP(GAP139); ----- ----- 796 00000AE3 73041100 ----- 11576 .ORG GAP139, *CALL SBT0A, 11577 *RETURN=4, RETURN TO GAP140 11578 MA(RETURN), 11579 Y(4), 11580 Y>RAM, 11581 JUMP(SBT0A); ----- ----- AE3 000004DA 7C041100 ----- 11582 .ORG GAP140, *Y=BLOCK PAGE FLAG 11583 AR>A, B(>04), AND, 11584 JUMP(GAP141); ----- ----- 7A4 00000AE4 00040810 ----- 11585 .ORG GAP141, *FOUND A BLOCK PAGE? 11586 *RETURN=4, RETURN TO GAP160 11587 MA(RETURN), 11588 Y(4), 11589 Y>RAM, 11590 JZ(GAP142F,GAP142T); ----- ----- AE4 0000243A 7C041100 ----- 11591 .ORG GAP142F, *YES, TEST=1 11592 *(ENABLE AIT LABEL COPY IN COP ROUTINE) 11593 *FIND PAGE NUMBER OF NEXT BLOCK 11594 *CALL INTPN0 11595 *RETURN=4, RETURN TO GAP160 11596 MA(TEST), 11597 Y(1), 11598 Y>RAM, 11599 JUMP(INTPN0); ----- ----- 43A 000007A3 70011100 ----- 11600 .ORG GAP142T, *NO, TEST=0 11601 *(DISABLE AIT LABEL COPY IN COP ROUTINE) 11602 *FIND PAGE NUMBER OF NEXT BLOCK 11603 *CALL INTPN0 11604 *RETURN=4, RETURN TO GAP160 11605 MA(TEST), 11606 Y(0), 11607 Y>RAM, 11608 JUMP(INTPN0); ----- ----- 43B 000007A3 70001100 ----- 11609 *WRITE SPACES TO END OF NEXT GROUP 11610 .ORG GAP160, *A=STOR0 11611 MA(STOR0), RAM>AR, 11612 JUMP(GAP161); ----- ----- 734 00020AE5 20000000 ----- 11613 .ORG GAP161, *RWL= LATCH OF DISPLAY PAGE 11614 MA(RWL), 11615 ARHI>A, B(0), OR, 11616 Y>RAM, Y>IO, 11617 JUMP(GAP162); ----- ----- AE5 00000AE6 0B005120 ----- 11618 .ORG GAP162, *A= PROMPT INDEX 11619 MA(THISRW), RAM>AR, 11620 JUMP(GAP162A); ----- ----- AE6 00020AE7 7D000000 ----- 11621 * 11622 .ORG GAP162A, *DECREMENT PROMPT INDEX 11623 MA(THISRW), 11624 AR>A, B(-1), ADD, 11625 Y>RAM, Y>AR, 11626 JUMP(GAP163); ----- ----- AE7 00220AE8 7DFF0110 ----- 11627 .ORG GAP163, *Y=PROMPT INDEX-14 11628 AR>A, B(-14), ADD, 11629 JUMP(GAP164); ----- ----- AE8 00000AE9 00F20010 ----- 11630 .ORG GAP164, *REACHED START POINT FOR NEXT BLOCK? 11631 *P= POINTER TO PROMPT ROW 11632 NAR>A, B(-25), ADD, O>CIN, 11633 Y>PR, 11634 JZ(GAP165F,GAP165T); ----- ----- AE9 0000243C 80E70440 ----- 11635 .ORG GAP165F, *PROMPT INDEX >20 11636 *WRITE A SPACE 11637 Y(>20), 11638 Y>DR, 11639 JUMP(GAP162A); ----- ----- 43C 00001AE7 00201000 ----- 11640 *CHANGE COLOUR FOR NEXT BLOCK 11641 .ORG GAP165T, *B=PROMPT POINTER 11642 *D=ALPHA CYAN 11643 PR>BR, 11644 Y(>06), 11645 Y>DR, 11646 JUMP(GAP165A); ----- ----- 43D 00411AEA 00061000 ----- 11647 .ORG GAP165A, *P=POINTER TO NEXT PROMPT LOC 11648 A(1), BR>B, ADD, 11649 Y>PR, 11650 JUMP(GAP166); ----- ----- AEA 00000AEB 80010001 ----- 11651 .ORG GAP166, *B=PROMPT POINTER 11652 *D=NEW BACKGROUND 11653 PR>BR, 11654 Y(>1D), 11655 Y>DR, 11656 JUMP(GAP167); ----- ----- AEB 00411AEC 001D1000 ----- 11657 .ORG GAP167, *P=POINTER TO NEXT PROMPT LOC 11658 A(1), BR>B, ADD, 11659 Y>PR, 11660 JUMP(GAP168); ----- ----- AEC 00000AED 80010001 ----- 11661 .ORG GAP168, *D=ALPHA BLACK 11662 Y(>00), 11663 Y>DR, 11664 JUMP(GAP169); ----- ----- AED 00001AEE 00001000 ----- 11665 .ORG GAP169, *UPDATE THISRW TO SKIP OVER THESE CONTROL CHARS 11666 *THISRW=THISRW-2 11667 MA(THISRW), 11668 AR>A, B(-2), ADD, 11669 Y>RAM, 11670 JUMP(GAP170); ----- ----- AEE 00000AEF 7DFE0110 ----- 11671 *SEARCH AITS FOR NEXT BLOCK LABEL 11672 .ORG GAP170, *CALL SAT0, 11673 *RETURN=1, RETURN TO GAP171 11674 MA(RETURN), 11675 Y(1), 11676 Y>RAM, 11677 JUMP(SAT0); ----- ----- AEF 00000AE1 7C011100 ----- 11678 * P=AIT POINTER, STORE=AIT LATCH, A=LAST Y=FOUND FLAG 11679 *COPY AIT LABEL OR PAGE NUMBER TO PROMPT 11680 .ORG GAP171, *AIT LABEL FOUND? 11681 *IF FOUND, CALL COP0F TO COPY LABEL 11682 *ELSE, CALL COP0T TO COPY NUMBER 11683 *RETURN=1, RETURN TO GAP173 11684 MA(RETURN), 11685 Y(1), 11686 Y>RAM, 11687 JZ(COP0F,COP0T); ----- ----- 779 00002438 7C011100 ----- 11688 *COPIED LABELS, COMPLETE END OF MENU 11689 .ORG GAP173, *COMPLETED AIT LABEL COPIES, CLEAR TO END OF ROW 11690 *A=PROMPT INDEX 11691 MA(THISRW), RAM>AR, 11692 JUMP(GAP174); ----- ----- 781 00020AF0 7D000000 ----- 11693 * 11694 .ORG GAP174, *DEC THISRW 11695 AR>A, B(-1), ADD, 11696 Y>AR, 11697 JUMP(GAP175); ----- ----- AF0 00220AF1 00FF0010 ----- 11698 .ORG GAP175, *P= POINTER TO FIRST LOC AFTER LABEL 11699 *THISRW<0? 11700 NAR>A, B(-25), ADD, O>CIN, 11701 Y>PR, 11702 JN(GAP176F,GAP176T); ----- ----- AF1 0000443E 80E70440 ----- 11703 .ORG GAP176F, *CLEARING TO END OF ROW INCOMPLETE, 11704 *WRITE A SPACE 11705 Y(>20), 11706 Y>DR, 11707 JUMP(GAP174); ----- ----- 43E 00001AF0 00201000 ----- 11708 * 11709 .ORG GAP176T, *MENU COMPLETE, EXIT 11710 JUMP(GAP2F); ----- ----- 43F 000003F4 00000000 ----- 11711 *MAKE PLUS MINUS MENU 11712 * P=-55 11713 * This routine is used to make the NORMAL menu and part of the 11714 * sub-page menu. 11715 * 11716 .ORG GAP200, *D=END BOX 11717 Y(>0A), 11718 Y>DR, 11719 JUMP(GAP200A); ----- ----- A9F 00001AF2 000A1000 ----- 11720 .ORG GAP200A, *P=-27 11721 Y(-27), 11722 Y>PR, 11723 JUMP(GAP200B); ----- ----- AF2 00000AF3 80E51000 ----- 11724 .ORG GAP200B, *D=END BOX 11725 Y(>0A), 11726 Y>DR, 11727 JUMP(GAP200C); ----- ----- AF3 00001AF4 000A1000 ----- 11728 .ORG GAP200C, *P=-64 11729 Y(-64), 11730 Y>PR, 11731 JUMP(GAP201); ----- ----- AF4 00000AF5 80C01000 ----- 11732 *ENTRY POINT FROM SUB-PAGE MENU 11733 .ORG GAP201, *D=ALPHA RED 11734 PR>BR, 11735 Y(>01), 11736 Y>DR, 11737 JUMP(GAP202); ----- ----- AF5 00411AF6 00011000 ----- 11738 .ORG GAP202, *P=B+6 11739 A(6), BR>B, ADD, 11740 Y>PR, 11741 JUMP(GAP202A); ----- ----- AF6 00000AF7 80060001 ----- 11742 .ORG GAP202A, *D='-' 11743 Y(>2D), 11744 Y>DR, 11745 JUMP(GAP202B); ----- ----- AF7 00001AF8 002D1000 ----- 11746 .ORG GAP202B, *P=B+12 11747 A(12), BR>B, ADD, 11748 Y>PR, 11749 JUMP(GAP202C); ----- ----- AF8 00000AF9 800C0001 ----- 11750 .ORG GAP202C, *D=BLACK BACKGROUND 11751 Y(>1C), 11752 Y>DR, 11753 JUMP(GAP202D); ----- ----- AF9 00001AFA 001C1000 ----- 11754 .ORG GAP202D, *INIT LOOP 11755 MA(COUNT), 11756 Y(2), 11757 Y>RAM, 11758 JUMP(GAP202E); ----- ----- AFA 00000AFB 78021100 ----- 11759 .ORG GAP202E, *P=B+1 11760 A(1), BR>B, ADD, 11761 Y>PR, 11762 JUMP(GAP203); ----- ----- AFB 00000AFC 80010001 ----- 11763 *LOOP START 11764 .ORG GAP203, *D=NEW BACKGROUND 11765 PR>BR, 11766 Y(>1D), 11767 Y>DR, 11768 JUMP(GAP204); ----- ----- AFC 00411AFD 001D1000 ----- 11769 .ORG GAP204, *P++ 11770 A(1), BR>B, ADD, 11771 Y>PR, 11772 JUMP(GAP204A); ----- ----- AFD 00000AFE 80010001 ----- 11773 .ORG GAP204A, *D=START BOX 11774 PR>BR, 11775 Y(>0B), 11776 Y>DR, 11777 JUMP(GAP204B); ----- ----- AFE 00411AFF 000B1000 ----- 11778 .ORG GAP204B, *P++ 11779 A(1), BR>B, ADD, 11780 Y>PR, 11781 JUMP(GAP204C); ----- ----- AFF 00000B00 80010001 ----- 11782 .ORG GAP204C, *D=START BOX 11783 PR>BR, 11784 Y(>0B), 11785 Y>DR, 11786 JUMP(GAP204D); ----- ----- B00 00411B01 000B1000 ----- 11787 .ORG GAP204D, *P++ 11788 *A=COUNT 11789 MA(COUNT), RAM>AR, 11790 A(1), BR>B, ADD, 11791 Y>PR, 11792 JUMP(GAP204E); ----- ----- B01 00020B02 F8010001 ----- 11793 .ORG GAP204E, *COUNT-- 11794 MA(COUNT), 11795 AR>A, B(-1), ADD, 11796 Y>RAM, 11797 JUMP(GAP205); ----- ----- B02 00000B03 78FF0110 ----- 11798 .ORG GAP205, *D=ALPHA BLACK 11799 *REPEAT? 11800 PR>BR, 11801 Y(>00), 11802 Y>DR, 11803 JZ(GAP208F,GAP208T); ----- ----- B03 00413444 00001000 ----- 11804 *REPEAT (GO BACK AND DO + MENU) 11805 .ORG GAP208F, *P=-35 11806 Y(-35), 11807 Y>PR, 11808 JUMP(GAP203); ----- ----- 444 00000AFC 80DD1000 ----- 11809 *LOOP EXIT 11810 .ORG GAP208T, *P=-30 11811 Y(-30), 11812 Y>PR, 11813 JUMP(GAP209); ----- ----- 445 00000B04 80E21000 ----- 11814 .ORG GAP209, *D='+' 11815 Y(>2B), 11816 Y>DR, 11817 JUMP(GAP210); ----- ----- B04 00001B05 002B1000 ----- 11818 .ORG GAP210, *P=-36 11819 Y(-36), 11820 Y>PR, 11821 JUMP(GAP211); ----- ----- B05 00000B06 80DC1000 ----- 11822 .ORG GAP211, *D=ALPHA GREEN 11823 Y(>02), 11824 Y>DR, 11825 JUMP(GAP2F); ----- ----- B06 000013F4 00021000 ----- 11826 *SUB-PAGE MODE 11827 * P=-64 11828 .ORG GAP4BF, *D=START BOX 11829 Y(>0B), 11830 Y>DR, 11831 JUMP(GAP300); ----- ----- 402 00001B07 000B1000 ----- 11832 .ORG GAP300, *P=-63 11833 Y(-63), 11834 Y>PR, 11835 JUMP(GAP302); ----- ----- B07 00000B08 80C11000 ----- 11836 .ORG GAP302, *D=START BOX 11837 Y(>0B), 11838 Y>DR, 11839 JUMP(GAP303); ----- ----- B08 00001B09 000B1000 ----- 11840 .ORG GAP303, *POINT TO PREFIX OF MAIN PAGE NUMBER 11841 Y(-62), 11842 Y>PR, 11843 JUMP(GAP304); ----- ----- B09 00000B0A 80C21000 ----- 11844 .ORG GAP304, *CALL PND10 AND PND50T TO WRITE PAGE NUMBER 11845 *AND FIND PREFIX LETTER 11846 *RETURN=2, RETURN TO GAP310 11847 MA(RETURN), 11848 Y(2), 11849 Y>RAM, 11850 JUMP(PND10); ----- ----- B0A 00000B0B 7C021100 ----- 11851 * A=PREFIX LETTER 11852 .ORG GAP310, 11853 Y(-62), 11854 Y>PR, 11855 JUMP(GAP311); ----- ----- 052 00000B0C 80C21000 ----- 11856 .ORG GAP311, *WRITE PREFIX LETTER 11857 AR>A, B(0), OR, 11858 Y>DR, 11859 JUMP(GAP312); ----- ----- B0C 00001B0D 00001010 ----- 11860 .ORG GAP312, *POINT TO '/' POSITION 11861 *JUMP TO PND15 ROUTINE TO WRITE PAGE NUMBER 11862 *RETURN TO GAP340 11863 Y(-58), 11864 Y>PR, 11865 JUMP(PND15); ----- ----- B0D 00000B0E 80C61000 ----- 11866 * A=DHREG, P= START POINT FOR DASHES 11867 .ORG GAP340, *Y=ICP, A=PEN 11868 MA(PEN), RAM>AR, 11869 AR>A, B(ICP), AND, 11870 JUMP(GAP340A); ----- ----- D2D 00020B0F 1B400810 ----- 11871 .ORG GAP340A, *A= NUMBER OF DASHES IF 3 OR LESS 11872 *ICP? 11873 ARHI>A, B(3), AND, 11874 Y>AR, 11875 JZ(GAP341AF,GAP341AT); ----- ----- B0F 00222446 00030820 ----- 11876 .ORG GAP341AF, *ICP, PEN=4? 11877 JZ(GAP341BF,GAP341BT); ----- ----- 446 00002448 00000000 ----- 11878 .ORG GAP341BT, *PEN=4 AND ICP, NEED TO WRITE FOUR DASHES 11879 Y(4), 11880 Y>AR, 11881 JUMP(GAP341AT); ----- ----- 449 00220447 00041000 ----- 11882 .ORG GAP341BF, *A CONTAINS NUMBER OF DASHES 11883 JUMP(GAP341AT); ----- ----- 448 00000447 00000000 ----- 11884 * 11885 .ORG GAP341AT, *CALL PND72 TO WRITE DASHES IN A 11886 *RETURN=1, RETURN TO GAP342 11887 MA(RETURN), 11888 Y(1), 11889 Y>RAM, 11890 JUMP(PND72); ----- ----- 447 00000B10 7C011100 ----- 11891 .ORG GAP342, *SET START POINT OF PLUS/ MINUS MENU 11892 *JUMP TO PLUS/ MINUS ROUTINE 11893 Y(-52), 11894 Y>PR, 11895 JUMP(GAP201); ----- ----- 071 00000AF5 80CC1000 ----- 11896 *COMMON EXIT FROM GAP ROUTINE 11897 .ORG GAP2F, * 11898 JUMP(VPP450); ----- ----- 3F4 00000341 00000000 ----- 11899 * 11900 *+++SEARCH AITS FOR A PAGE NUMBER 11901 * 11902 * This routine will search through any captured AITs for the 11903 * the page in PU, PT and PM. If found, the last Y and A will 11904 * be set to one (otherwise zero). If found, P and RWL point 11905 * to the label of the page. 11906 * 11907 * input pars are:- 11908 * PU,PT: page units, page tens 11909 * RET2, page mag with mag 8= 8 (not zero) 11910 * RETURN: return pointer 11911 * return pars are:- 11912 * A: found/ not found 11913 * P: pointer to AIT label 11914 * STORE: pointer to AIT latch 11915 * RWL: set to display latch 11916 * local variables used are 11917 * COUNT, 11918 * 11919 .ORG SAT0, *INIT AIT LOOP COUNTER 11920 *A=COUNT=0 11921 MA(COUNT), 11922 Y(0), 11923 Y>RAM, Y>AR, 11924 JUMP(SAT20Y); ----- ----- AE1 002202E8 78001100 ----- 11925 * A=COUNT 11926 .ORG SAT10T, *INC AIT LOOP COUNTER 11927 *COUNT=A+1 11928 MA(COUNT), 11929 AR>A, B(1), ADD, 11930 Y>RAM, 11931 JUMP(SAT11); ----- ----- 457 00000B11 78010110 ----- 11932 .ORG SAT11, *B=STOR7 11933 *CASE AIT=? 11934 MA(STOR7), RAM>BR, 11935 JY(SAT20Y); ----- ----- B11 0001C2E8 27000000 ----- 11936 *CASE AIT LOOP 11937 .ORG SAT20Y, *CASE 1ST AIT 11938 *B=STOR2 11939 MA(STOR2), RAM>BR, 11940 JUMP(SAT22); ----- ----- 2E8 000102EA 22000000 ----- 11941 .ORG SAT21, *CASE 2ND AIT 11942 *B=STOR3 11943 MA(STOR3), RAM>BR, 11944 JUMP(SAT22); ----- ----- 2E9 000102EA 23000000 ----- 11945 * B=STORx FOR THIS AIT 11946 .ORG SAT22, *CASE 3RD AIT 11947 *P=INDEX TO LAFx 11948 A(LAF0), BRHI>B, ADD, 11949 Y>PR, 11950 JUMP(SAT30); ----- ----- 2EA 00000B12 8040000C ----- 11951 .ORG SAT23, *CASE EXIT 11952 *A=FOUND FLAG 11953 *B=STOR0 11954 MA(STOR0), RAM>BR, 11955 Y(0), 11956 Y>AR, 11957 JUMP(SAT90); ----- ----- 2EB 00230B13 20001000 ----- 11958 .ORG SAT30, *STORE=THIS LATCH 11959 MA(STORE), 11960 A(0), BRHI>B, OR, 11961 Y>RAM, 11962 JUMP(SAT31); ----- ----- B12 00000B14 7700110C ----- 11963 .ORG SAT31, *A=LATCH FLAGS FOR THIS AIT 11964 PR>MA, RAM>AR, 11965 JUMP(SAT32); ----- ----- B14 00120B15 00000000 ----- 11966 .ORG SAT32, *INVERT CAP AND AITL FLAGS 11967 AR>A, B(CAP+AITL), XOR, 11968 Y>AR, 11969 JUMP(SAT33); ----- ----- B15 00220B16 00811810 ----- 11970 .ORG SAT33, *Y=NOT CAP OR NOT AITL 11971 AR>A, B(CAP+AITL), AND, 11972 JUMP(SAT34); ----- ----- B16 00000B17 00810810 ----- 11973 .ORG SAT34, *DOES RWL CONTAIN A CAPTURED AIT? 11974 *RWL=LATCH FOR THIS STORE 11975 MA(RWL), 11976 A(0), BRHI>B, OR, 11977 Y>RAM, Y>IO, 11978 JZ(SAT35F,SAT35T); ----- ----- B17 0000244A 0B00510C ----- 11979 .ORG SAT35F, *NO, GO TO NEXT AIT 11980 *A=COUNT 11981 MA(COUNT), RAM>AR, 11982 JUMP(SAT10T); ----- ----- 44A 00020457 78000000 ----- 11983 *RWL CONTAINS AN AIT 11984 .ORG SAT35T, *P=POINTER TO BOTTOM OF TABLE 11985 Y(-124), 11986 Y>PR, 11987 JUMP(SAT40F); ----- ----- 44B 00000456 80841000 ----- 11988 *SEARCH LABEL FIELD LOOP 11989 * P=POINTER TO MAG OF AIT LABEL 11990 .ORG SAT40F, *B=RET2 11991 *TPD=LABEL MAG 11992 RVDP, 11993 MA(RET2), RAM>BR, 11994 JUMP(SAT41); ----- ----- 456 00010B18 7B008000 ----- 11995 .ORG SAT41, *COMPARE MAGS 11996 *B=LABEL MAG 11997 PR>BR, 11998 TPD.0F>A, BRHI>B, XOR, 11999 JUMP(SAT42); ----- ----- B18 00410B19 000018AC ----- 12000 .ORG SAT42, *P=TENS POINTER 12001 *SAME MAG? 12002 A(1), BR>B, ADD, 12003 Y>PR, 12004 JZ(SAT43F,SAT43T); ----- ----- B19 0000244C 80010001 ----- 12005 .ORG SAT43F, *DIFFERENT MAG 12006 *P=UNITS POINTER 12007 A(2), BR>B, ADD, 12008 Y>PR, 12009 JUMP(SAT43A); ----- ----- 44C 00000B1A 80020001 ----- 12010 .ORG SAT43A, *B=UNITS POINTER 12011 PR>BR, 12012 JUMP(SAT50F); ----- ----- B1A 0041044E 00000000 ----- 12013 .ORG SAT43T, *SAME MAG 12014 *TPD=LABEL TENS 12015 *B=PT 12016 *P=UNITS POINTER 12017 RVDP, 12018 MA(PT), RAM>BR, 12019 A(2), BR>B, ADD, 12020 Y>PR, 12021 JUMP(SAT44); ----- ----- 44D 00010B1B F5028001 ----- 12022 .ORG SAT44, *COMPARE TENS 12023 *TPD=LABEL UNITS 12024 *B=PU 12025 RVDP, 12026 MA(PU), RAM>BR, 12027 TPD.0F>A, BRHI>B, XOR, 12028 JUMP(SAT45); ----- ----- B1B 00010B1C 760098AC ----- 12029 .ORG SAT45, *SAME TENS? 12030 *COMPARE UNITS 12031 *B=UNITS POINTER 12032 PR>BR, 12033 TPD.0F>A, BRHI>B, XOR, 12034 JZ(SAT50F,SAT46T); ----- ----- B1C 0041244E 000018AC ----- 12035 .ORG SAT46T, *SAME TENS 12036 *SAME UNITS? 12037 *P=POINTER TO LABEL 12038 A(6), BR>B, ADD, 12039 Y>PR, 12040 JZ(SAT47F,SAT47T); ----- ----- 44F 00002454 80060001 ----- 12041 .ORG SAT47F, *DIFFERENT UNITS 12042 JUMP(SAT50F); ----- ----- 454 0000044E 00000000 ----- 12043 *FOUND LABEL 12044 * P=POINTER TO LABEL 12045 .ORG SAT47T, *A=1 (TO RETURN FOUND) 12046 *GO TO EXIT CODE 12047 *B=STOR0 12048 MA(STOR0), RAM>BR, 12049 Y(1), 12050 Y>AR, 12051 JUMP(SAT90); ----- ----- 455 00230B13 20011000 ----- 12052 12053 *NOT THIS LABEL 12054 * *B=UNITS POINTER 12055 .ORG SAT50F, *Y=UNITS POINTER - 42 12056 A(-42), BR>B, ADD, 12057 JUMP(SAT51); ----- ----- 44E 00000B1D 00D60001 ----- 12058 .ORG SAT51, *P= POINTER TO NEXT LABEL PAGE MAG 12059 *A=COUNT 12060 *LAST LABEL? 12061 MA(COUNT), RAM>AR, 12062 A(-22), BR>B, ADD, 12063 Y>PR, 12064 JZ(SAT40F,SAT10T); ----- ----- B1D 00022456 F8EA0001 ----- 12065 *EXIT 12066 * B=STOR0, A=FOUND FLAG 12067 .ORG SAT90, *RWL=LATCH OF DISPLAY PAGE 12068 MA(RWL), 12069 A(0), BRHI>B, OR, 12070 Y>RAM, Y>IO, 12071 JUMP(SAT91); ----- ----- B13 00000B1E 0B00510C ----- 12072 .ORG SAT91, *B=RETURN 12073 MA(RETURN), RAM>BR, 12074 JUMP(SAT92); ----- ----- B1E 00010B1F 7C000000 ----- 12075 .ORG SAT92, *Y=RETURN 12076 A(1), BR>B, AND, 12077 JUMP(SAT93); ----- ----- B1F 00000B20 00010801 ----- 12078 .ORG SAT93, *Y=FOUND FLAG 12079 *CASE RETURN=? 12080 AR>A, B(0), OR, 12081 JY(GAP134Y); ----- ----- B20 0000C778 00001010 ----- 12082 * 12083 *+++COPY AIT LABEL TO PROMPT ROW 12084 * 12085 * This routine copies the label pointed to by screen pointer, 12086 * P, and the latch in STORE to the next position in the prompt row 12087 * indicated by THISRW. Spaces and control characters at the 12088 * start of the label are ignored. THISRW returns a pointer to 12089 * the last character copied which is not a space or a control 12090 * character. If an AIT label has not been found, this routine 12091 * copies the page numbr in PU, PT and RET2 to the prompt display. 12092 * 12093 * This routine also copies the header language control bits of 12094 * the AIT to AITLAN. 12095 * 12096 * input pars are:- 12097 * PU, PT and RET2 page number to copy if no label 12098 * THISRW: pointer to position in prompt 12099 * P: pointer to AIT label 12100 * STORE: AIT latch 12101 * RETURN: return pointer 12102 * TEST: non-zero enables label copy 12103 * (a group or block page has been found) 12104 * return pars are:- 12105 * THISRW: pointer to last character of copy 12106 * RWL: set to display page 12107 * AITLAN: C14-C12 of this AIT 12108 * local variables used are 12109 * COUNT, 12110 * 12111 *ENTRY POINT IF LABEL FOUND 12112 .ORG COP0F, *A=TEST 12113 MA(TEST), RAM>AR, 12114 JUMP(COP1); ----- ----- 438 00020B21 70000000 ----- 12115 .ORG COP1, *Y=TEST 12116 *A=THISRW 12117 MA(THISRW), RAM>AR, 12118 AR>A, B(0), OR, 12119 JUMP(COP2); ----- ----- B21 00020B22 7D001010 ----- 12120 .ORG COP2, *INIT LABEL CHARACTER COUNT 12121 *COUNT=12 12122 *COPY ENABLED? 12123 *IF NO, JUMP TO PAGE NUMBER CODE 12124 MA(COUNT), 12125 Y(12), 12126 Y>RAM, 12127 JZ(COP3F,COP40T); ----- ----- B22 00002458 780C1100 ----- 12128 .ORG COP3F, *A=AIT LATCH 12129 *POINT TO CGB+CGA, STORE AIT POINTER IN B 12130 PR>BR, 12131 MA(STORE), RAM>AR, 12132 Y(-13), 12133 Y>PR, 12134 JUMP(COP4); ----- ----- 458 00430B23 F7F31000 ----- 12135 .ORG COP4, *RWL=AIT LATCH 12136 MA(RWL), 12137 AR>A, B(0), OR, 12138 Y>RAM, Y>IO, 12139 JUMP(COP5); ----- ----- B23 00000B24 0B005110 ----- 12140 .ORG COP5, *B=AITLAN 12141 *TPD=CGB+CGA OF THIS AIT 12142 *PUT AIT POINTER BACK IN P 12143 RVDP, 12144 MA(AITLAN), RAM>BR, 12145 A(0), BR>B, OR, 12146 Y>PR, 12147 JUMP(COP6); ----- ----- B24 00010B25 93009001 ----- 12148 .ORG COP6, *STORE C14-12 OF THIS AIT IN AITLAN 12149 MA(AITLAN), 12150 TPD.F0>A, BR.0F>B, OR, 12151 Y>RAM, 12152 JUMP(COP10F); ----- ----- B25 0000045C 130011B2 ----- 12153 *FIRST SKIP LEADING CONTROL AND SPACE CHARACTERS 12154 .ORG COP10F, *TPD=LABEL CHAR 12155 RVDP, 12156 JUMP(COP11); ----- ----- 45C 00000B26 00008000 ----- 12157 .ORG COP11, *Y=LABEL CHAR-33 12158 TPD>A, B(-33), ADD, 12159 JUMP(COP12); ----- ----- B26 00000B27 00DF0090 ----- 12160 .ORG COP12, *CONTROL OR SPACE CHARACTER? 12161 *B=LABEL POINTER 12162 *A=CHAR COUNT 12163 MA(COUNT), RAM>AR, 12164 PR>BR, 12165 JN(COP20F,COP13T); ----- ----- B27 0043445A 78000000 ----- 12166 .ORG COP13T, *YES, MISS IT 12167 *DEC CHAR COUNT 12168 MA(COUNT), 12169 AR>A, B(-1), ADD, 12170 Y>RAM, 12171 JUMP(COP14); ----- ----- 45B 00000B28 78FF0110 ----- 12172 .ORG COP14, *INC LABEL POINTER 12173 *LAST CHARACTER? 12174 A(1), BR>B, ADD, 12175 Y>PR, 12176 JZ(COP10F,COP15T); ----- ----- B28 0000245C 80010001 ----- 12177 *NO VALID CHARS IN LABEL, EXIT 12178 .ORG COP15T, *B=RETURN 12179 MA(RETURN), RAM>BR, 12180 JUMP(COP50F); ----- ----- 45D 00010462 7C000000 ----- 12181 * P=POINTER TO LABEL CHARACTER 12182 .ORG COP20F, *A=AIT LATCH 12183 MA(STORE), RAM>AR, 12184 JUMP(COP20A); ----- ----- 45A 00020B29 77000000 ----- 12185 .ORG COP20A, *RWL= AIT LATCH 12186 MA(RWL), 12187 AR>A, B(0), OR, 12188 Y>RAM, Y>IO, 12189 JUMP(COP20B); ----- ----- B29 00000B2A 0B005110 ----- 12190 .ORG COP20B, *A=MENU POINTER 12191 *TPD= LABEL CHARACTER 12192 RVDP, 12193 MA(THISRW), RAM>AR, 12194 JUMP(COP21); ----- ----- B2A 00020B2B 7D008000 ----- 12195 .ORG COP21, *DEC MENU POINTER 12196 MA(THISRW), 12197 AR>A, B(-1), ADD, 12198 Y>RAM, Y>AR, 12199 JUMP(COP22); ----- ----- B2B 00220B2C 7DFF0110 ----- 12200 .ORG COP22, *END OF MENU LINE? 12201 *P=MENU POINTER 12202 *A=STOR0 12203 *B=LABEL POINTER 12204 PR>BR, 12205 MA(STOR0), RAM>AR, 12206 NAR>A, B(-25), ADD, O>CIN, 12207 Y>PR, 12208 JN(COP23F,COP23T); ----- ----- B2C 0043445E A0E70440 ----- 12209 .ORG COP23F, *RWL=DISPLAY PAGE 12210 MA(RWL), 12211 ARHI>A, B(0), OR, 12212 Y>RAM, Y>IO, 12213 JUMP(COP24); ----- ----- 45E 00000B2D 0B005120 ----- 12214 .ORG COP24, *WRITE CHARACTER TO MENU 12215 *A=CHAR COUNT 12216 MA(COUNT), RAM>AR, 12217 TPD>A, B(0), OR, 12218 Y>DR, 12219 JUMP(COP25); ----- ----- B2D 00021B2E 78001090 ----- 12220 .ORG COP25, *DEC CHAR COUNT 12221 MA(COUNT), 12222 AR>A, B(-1), ADD, 12223 Y>RAM, 12224 JUMP(COP26); ----- ----- B2E 00000B2F 78FF0110 ----- 12225 .ORG COP26, *LAST CHARACTER? 12226 *A=THISRW 12227 MA(THISRW), RAM>AR, 12228 JZ(COP27F,COP27T); ----- ----- B2F 00022460 7D000000 ----- 12229 .ORG COP27F, *MORE CHARACTERS 12230 *POINT TO NEXT LABEL CHARACTER 12231 A(1), BR>B, ADD, 12232 Y>PR, 12233 JUMP(COP20F); ----- ----- 460 0000045A 80010001 ----- 12234 *END OF MENU LINE 12235 .ORG COP23T, *B=RETURN 12236 MA(RETURN), RAM>BR, 12237 JUMP(COP50F); ----- ----- 45F 00010462 7C000000 ----- 12238 *COPIED LAST CHARACTER, MOVE PROMPT POINTER BACK TO LAST VALID CHAR 12239 * A=THISRW, RWL=DISPLAY PAGE 12240 .ORG COP27T, *P=POINTER TO PROMPT 12241 NAR>A, B(-25), ADD, O>CIN, 12242 Y>PR, 12243 JUMP(COP28); ----- ----- 461 00000B30 80E70440 ----- 12244 .ORG COP28, *TPD=MENU CHARACTER 12245 RVDP, 12246 JUMP(COP29); ----- ----- B30 00000B31 00008000 ----- 12247 .ORG COP29, *Y= TPD-33 12248 TPD>A, B(-33), ADD, 12249 JUMP(COP30); ----- ----- B31 00000B32 00DF0090 ----- 12250 .ORG COP30, *CONTROL OR SPACE CHAR? IF NO, EXIT 12251 *B=RETURN 12252 MA(RETURN), RAM>BR, 12253 JN(COP50F,COP31T); ----- ----- B32 00014462 7C000000 ----- 12254 .ORG COP31T, *INC PROMPT POINTER 12255 MA(THISRW), 12256 AR>A, B(1), ADD, 12257 Y>RAM, Y>AR, 12258 JUMP(COP27T); ----- ----- 463 00220461 7D010110 ----- 12259 *ENTRY POINT IF NO LABEL FOUND 12260 .ORG COP0T, *A=THISRW 12261 MA(THISRW), RAM>AR, 12262 JUMP(COP40T); ----- ----- 439 00020459 7D000000 ----- 12263 *ENTRY POINT FROM COP2 12264 .ORG COP40T, *B=STOR0 12265 *P= POINTER TO LABEL START 12266 MA(STOR0), RAM>BR, 12267 NAR>A, B(-24), ADD, O>CIN, 12268 Y>PR, 12269 JUMP(COP40A); ----- ----- 459 00010B33 A0E80440 ----- 12270 .ORG COP40A, *MOVE PROMPT POINTER PAST PAGE NUMBER 12271 MA(THISRW), 12272 AR>A, B(-6), ADD, 12273 Y>RAM, 12274 JUMP(COP41); ----- ----- B33 00000B34 7DFA0110 ----- 12275 .ORG COP41, *RWL= LATCH OF DISPLAY PAGE 12276 MA(RWL), 12277 A(0), BRHI>B, OR, 12278 Y>RAM, Y>IO, 12279 JUMP(COP42); ----- ----- B34 00000B35 0B00510C ----- 12280 *CLEAR LABEL UP TO MAGS 12281 .ORG COP42, *WRITE A SPACE 12282 PR>BR, 12283 Y(>20), 12284 Y>DR, 12285 JUMP(COP42A); ----- ----- B35 00411B36 00201000 ----- 12286 .ORG COP42A, *P++ 12287 A(1), BR>B, ADD, 12288 Y>PR, 12289 JUMP(COP42B); ----- ----- B36 00000B37 80010001 ----- 12290 .ORG COP42B, *WRITE A SPACE 12291 PR>BR, 12292 Y(>20), 12293 Y>DR, 12294 JUMP(COP42C); ----- ----- B37 00411B38 00201000 ----- 12295 .ORG COP42C, *P++ 12296 A(1), BR>B, ADD, 12297 Y>PR, 12298 JUMP(COP42D); ----- ----- B38 00000B39 80010001 ----- 12299 .ORG COP42D, *WRITE A SPACE 12300 PR>BR, 12301 Y(>20), 12302 Y>DR, 12303 JUMP(COP43); ----- ----- B39 00411B3A 00201000 ----- 12304 .ORG COP43, *A= PAGE NUMBER MAGS 12305 *P++ 12306 MA(RET2), RAM>AR, 12307 A(1), BR>B, ADD, 12308 Y>PR, 12309 JUMP(COP44); ----- ----- B3A 00020B3B FB010001 ----- 12310 .ORG COP44, *B= PROMPT POINTER 12311 *D= PAGE NUMBER MAGS 12312 PR>BR, 12313 ARHI>A, B(>30), OR, 12314 Y>DR, 12315 JUMP(COP45); ----- ----- B3B 00411B3C 00301020 ----- 12316 .ORG COP45, *P= POINTER TO TENS 12317 *A= PAGE NUMBER TENS 12318 MA(PT), RAM>AR, 12319 A(1), BR>B, ADD, 12320 Y>PR, 12321 JUMP(COP46); ----- ----- B3C 00020B3D F5010001 ----- 12322 .ORG COP46, *B= PROMPT POINTER 12323 *D= PAGE NUMBER TENS 12324 PR>BR, 12325 ARHI>A, B(>30), OR, 12326 Y>DR, 12327 JUMP(COP47); ----- ----- B3D 00411B3E 00301020 ----- 12328 .ORG COP47, *P= POINTER TO UNITS 12329 *A= PAGE NUMBER UNITS 12330 MA(PU), RAM>AR, 12331 A(1), BR>B, ADD, 12332 Y>PR, 12333 JUMP(COP48); ----- ----- B3E 00020B3F F6010001 ----- 12334 .ORG COP48, *B= RETURN 12335 *D= PAGE NUMBER UNITS 12336 MA(RETURN), RAM>BR, 12337 ARHI>A, B(>30), OR, 12338 Y>DR, 12339 JUMP(COP50F); ----- ----- B3F 00011462 7C301020 ----- 12340 *EXIT 12341 * B=RETURN 12342 .ORG COP50F, *Y=RETURN 12343 *A=STOR0 12344 MA(STOR0), RAM>AR, 12345 A(1), BR>B, AND, 12346 JUMP(COP51); ----- ----- 462 00020B40 20010801 ----- 12347 .ORG COP51, *CASE RETURN=? 12348 *RWL= LATCH FOR DISPLAY PAGE 12349 MA(RWL), 12350 ARHI>A, B(0), OR, 12351 Y>RAM, Y>IO, 12352 JY(GAP136Y); ----- ----- B40 0000C780 0B005120 ----- 12353 * 12354 *+++COMPARE SUB-PAGE IN SUB-PAGE LATCH WITH USER SUB-PAGE 12355 * 12356 * input pars are:- 12357 * A: sub-page latch index-1 12358 * return pars are:- 12359 * A, last Y: 1 if compare is true, else 0 12360 * RETURN: return pointer 12361 * local variables used are:- 12362 * COUNT, LOCAL, MASK 12363 .ORG CSP0, *STORE LATCH POINTER IN MASK 12364 MA(MASK), 12365 AR>A, B(1), ADD, 12366 Y>RAM, 12367 JUMP(CSP1); ----- ----- 952 00000B41 73010110 ----- 12368 .ORG CSP1, *INIT LOOP 12369 *A=COUNT=0 12370 MA(COUNT), 12371 Y(0), 12372 Y>RAM, Y>AR, 12373 JUMP(CSP2F); ----- ----- B41 00220466 78001100 ----- 12374 *LOOP START 12375 * A=COUNT 12376 .ORG CSP2F, *P=INDEX TO USPx 12377 AR>A, B(USPI), ADD, 12378 Y>PR, 12379 JUMP(CSP3); ----- ----- 466 00000B42 80580010 ----- 12380 .ORG CSP3, *B=USPx 12381 PR>MA, RAM>BR, 12382 JUMP(CSP4); ----- ----- B42 00110B43 00000000 ----- 12383 .ORG CSP4, *KEEP IT IN LOCAL 12384 MA(LOCAL), 12385 A(0), BR>B, OR, 12386 Y>RAM, 12387 JUMP(CSP5); ----- ----- B43 00000B44 72001101 ----- 12388 .ORG CSP5, *B=INDEX TO LATCH 12389 MA(MASK), RAM>BR, 12390 JUMP(CSP6); ----- ----- B44 00010B45 73000000 ----- 12391 .ORG CSP6, *P=INDEX TO LATCH DIGIT 12392 *B=USP DIGIT 12393 MA(LOCAL), RAM>BR, 12394 AR>A, BR>B, ADD, 12395 Y>PR, 12396 JUMP(CSP7); ----- ----- B45 00010B46 F2000011 ----- 12397 .ORG CSP7, *A=LATCH DIGIT 12398 PR>MA, RAM>AR, 12399 JUMP(CSP8); ----- ----- B46 00120B47 00000000 ----- 12400 .ORG CSP8, *COMPARE DIGITS 12401 *A=COUNT 12402 MA(COUNT), RAM>AR, 12403 ARHI>A, BRHI>B, XOR, 12404 JUMP(CSP9); ----- ----- B47 00020B48 7800182C ----- 12405 .ORG CSP9, *DIGITS ARE THE SAME? 12406 *Y=COUNT-3 12407 *B=RETURN 12408 MA(RETURN), RAM>BR, 12409 AR>A, B(-3), ADD, 12410 JZ(CSP10F,CSP10T); ----- ----- B48 00012464 7CFD0010 ----- 12411 .ORG CSP10T, *DIGITS THE SAME 12412 *COUNT++ 12413 *COMPARED ALL THE DIGITS? 12414 MA(COUNT), 12415 AR>A, B(1), ADD, 12416 Y>RAM, Y>AR, 12417 JZ(CSP2F,CSP11T); ----- ----- 465 00222466 78010110 ----- 12418 * 12419 .ORG CSP10F, *DIGITS ARE NOT THE SAME 12420 *A=0 12421 *B=RETURN 12422 MA(RETURN), RAM>BR, 12423 Y(0), 12424 Y>AR, 12425 JUMP(CSP20); ----- ----- 464 00230B49 7C001000 ----- 12426 * 12427 .ORG CSP11T, *ALL THE DIGITS ARE THE SAME 12428 *A=1 12429 *B=RETURN 12430 MA(RETURN), RAM>BR, 12431 Y(1), 12432 Y>AR, 12433 JUMP(CSP20); ----- ----- 467 00230B49 7C011000 ----- 12434 *EXIT 12435 .ORG CSP20, *Y=RETURN 12436 A(1), BR>B, AND, 12437 JUMP(CSP21); ----- ----- B49 00000B4A 00010801 ----- 12438 .ORG CSP21, *Y=RESULT FLAG 12439 AR>A, B(0), OR, 12440 JY(SPLM22Y); ----- ----- B4A 0000C2C0 00001010 ----- 12441 * 12442 *+++FIND SUB-PAGE 12443 * 12444 * This routine finds RAM pointers to the sub-page latches which 12445 * are associated with STORE 0, STORE 4 and STORE 5 (it does this 12446 * by comparing the latch numbers in LFSP0-2 with the latch 12447 * numbers in STORE 0, STORE 4, and STORE 5). 12448 * 12449 * input pars are:- 12450 * RETURN: return pointer 12451 * 12452 * return pars are:- 12453 * PM: pointer to STOR0 sub-page latch units-1 12454 * PT: pointer to STOR4 sub-page latch units-1 12455 * PU: pointer to STOR5 sub-page latch units-1 12456 * local variables used are:- 12457 * COUNT 12458 * 12459 .ORG FSP0F, *INIT LOOP 12460 *COUNT=0 12461 MA(COUNT), 12462 Y(0), 12463 Y>RAM, 12464 JUMP(FSP20Y.0); ----- ----- 318 00000760 78001100 ----- 12465 * A=LOOP 12466 .ORG FSP10T, *INC LOOP 12467 MA(COUNT), 12468 AR>A, B(1), ADD, 12469 Y>RAM, 12470 JUMP(FSP11); ----- ----- 46B 00000B4B 78010110 ----- 12471 .ORG FSP11, *A=STOR5, P=PU 12472 *CASE COUNT? 12473 MA(STOR5), RAM>AR, 12474 Y(PU), 12475 Y>PR, 12476 JY(FSP20Y.0); ----- ----- B4B 0002C760 A5761000 ----- 12477 .ORG FSP20Y.0, *COUNT=0 12478 *A=STORE0, P=PM 12479 MA(STOR0), RAM>AR, 12480 Y(PM), 12481 Y>PR, 12482 JUMP(FSP20Y.2); ----- ----- 760 00020762 A0741000 ----- 12483 .ORG FSP20Y.1, *COUNT=1 12484 *A=STORE4, P=PT 12485 MA(STOR4), RAM>AR, 12486 Y(PT), 12487 Y>PR, 12488 JUMP(FSP20Y.2); ----- ----- 761 00020762 A4751000 ----- 12489 * A=STORE, P=POINTER TO STORE 12490 .ORG FSP20Y.2, *COUNT=2 12491 *B=LFSP0 12492 MA(LFSP0), RAM>BR, 12493 JUMP(FSP30); ----- ----- 762 00010B4C 48000000 ----- 12494 .ORG FSP30, *COMPARE LATCH FOR STORE WITH LATCH FOR SUB-PAGE 0 12495 MA(LFSP1), RAM>BR, 12496 ARHI>A, BR.0F>B, XOR, 12497 JUMP(FSP31); ----- ----- B4C 00010B4D 49001822 ----- 12498 .ORG FSP31, *COMPARE LATCH FOR STORE WITH LATCH FOR SUB-PAGE 1 12499 *LATCH FOR STORE IN SP 0? 12500 *A= LOOP 12501 MA(COUNT), RAM>AR, 12502 ARHI>A, BR.0F>B, XOR, 12503 JZ(FSP32F,FSP32T); ----- ----- B4D 00022468 78001822 ----- 12504 .ORG FSP32T, *LATCH FOR THIS STORE IS IN SUB-PAGE LATCH 0 12505 *Px=SP0I-1 12506 PR>MA, 12507 Y(SP0I-1), 12508 Y>RAM, 12509 JUMP(FSP10T); ----- ----- 469 0010046B 00471100 ----- 12510 .ORG FSP32F, *LATCH FOR STORE IN SP 1? 12511 *Px=SP1I-1 12512 PR>MA, 12513 Y(SP1I-1), 12514 Y>RAM, 12515 JZ(FSP33F,FSP10T); ----- ----- 468 0010246A 004B1100 ----- 12516 .ORG FSP33F, *LATCH FOR THIS STORE IS IN SUB-PAGE LATCH 2 12517 *Px=SP2I-1 12518 PR>MA, 12519 Y(SP2I-1), 12520 Y>RAM, 12521 JUMP(FSP10T); ----- ----- 46A 0010046B 004F1100 ----- 12522 * 12523 .ORG FSP20Y.3, *EXIT 12524 *A=RETURN 12525 MA(RETURN), RAM>AR, 12526 JUMP(FSP50); ----- ----- 763 00020B4E 7C000000 ----- 12527 .ORG FSP50, *Y=RETURN 12528 AR>A, B(3), AND, 12529 JUMP(FSP51); ----- ----- B4E 00000B4F 00030810 ----- 12530 .ORG FSP51, *RETURN=? 12531 *A= VPPRG1 12532 MA(VPPRG1), RAM>AR, 12533 JY(SPLM0.0); ----- ----- B4F 0002C430 61000000 ----- 12534 * 12535 ************************************************************************ 12536 * section 4: service interface * 12537 ************************************************************************ 12538 * 12539 ***RC0T: LOAD FLAG HAS BEEN DETECTED 12540 * 12541 * This routine does all the interface maintenance (eg RSTRXTX etc). 12542 * For instruction decode, it will call DI. 12543 * 12544 .ORG RC0T, *Y=SLAVERW 12545 A(%00001000), RCS>B, AND, 12546 JUMP(RC1); ----- ----- 01D 00000B50 0008080B ----- 12547 .ORG RC1, *Y=SELEDGE 12548 *HOST READ MODE? 12549 *A=RCSTAT 12550 MA(RCSTAT), RAM>AR, 12551 A(%00000010), RCS>B, AND, 12552 JZ(RC10F,RC10T); ----- ----- B50 0002246C 2F02080B ----- 12553 *+++HOST WRITE MODE, RECEIVE A BYTE 12554 .ORG RC10T, *FIRST BYTE? 12555 JZ(RC11F,RC11T); ----- ----- 46D 0000246E 00000000 ----- 12556 .ORG RC11F, *FIRST BYTE 12557 *SET COMMAND MODE, DO NOT LOOK FOR OPERANDS 12558 *OPCNT=0, CHRM=0 12559 MA(RCSTAT), 12560 AR>A, B(>FF-CHRM-OPCNT), AND, 12561 Y>RAM, Y>AR, 12562 JUMP(RC11T); ----- ----- 46E 0022046F 2F700910 ----- 12563 * 12564 .ORG RC11T, *Y=CHRM 12565 AR>A, B(CHRM), AND, 12566 JUMP(RC12); ----- ----- 46F 00000B51 00800810 ----- 12567 .ORG RC12, *CHARACTER MODE? 12568 *Y=OPCNT 12569 AR>A, B(OPCNT), AND, 12570 JZ(RC30F,RC30T); ----- ----- B51 00002470 000F0810 ----- 12571 *+++HOST READ MODE 12572 * A=RCSTAT, LAST Y WAS SELEDGE 12573 .ORG RC10F, *FIRST BYTE OF TRANSFER? 12574 *B=MREG1 12575 MA(MREG1), RAM>BR, 12576 JZ(RC20F,RC20T); ----- ----- 46C 00012472 65000000 ----- 12577 .ORG RC20F, *FIRST BYTE 12578 *Y=ADDSTS 12579 A(ADDSTS), BR>B, AND, 12580 JUMP(RC21); ----- ----- 472 00000B52 00400801 ----- 12581 .ORG RC21, *ADDITIONAL STATUS SELECTED? 12582 JZ(RC22F,RC22T); ----- ----- B52 00002474 00000000 ----- 12583 .ORG RC22F, *YES 12584 *RMODE=7, CHRM=0 12585 MA(RCSTAT), 12586 AR.0F>A, B(>70), OR, 12587 Y>RAM, Y>AR, 12588 JUMP(RC20T); ----- ----- 474 00220473 2F7011C0 ----- 12589 .ORG RC22T, *NO 12590 *RMODE=2, CHRM=0 12591 MA(RCSTAT), 12592 AR.0F>A, B(>20), OR, 12593 Y>RAM, Y>AR, 12594 JUMP(RC20T); ----- ----- 475 00220473 2F2011C0 ----- 12595 * 12596 * TCJ July 94, 12597 * It is possible to reach this instruction with the CHRM 12598 * flag set in RCSTAT. This causes an invalid jump of the 12599 * following JY. 12600 * 12601 *ORG RC20T, *Y=RMODE 12602 * *A=VDP2 12603 * MA(VDP2), RAM>AR, 12604 * ARHI>A, B(0), OR, 12605 * JUMP(RC23); 12606 * 12607 .ORG RC20T, *Y=RMODE 12608 *A=VDP2 12609 MA(VDP2), RAM>AR, 12610 ARHI>A, B(>07), AND, 12611 JUMP(RC23); ----- ----- 473 00020B53 02070820 ----- 12612 * 12613 .ORG RC23, *CASE RMODE=? 12614 *A=LANG DISPLAYED AT THE MOMENT 12615 *B=DHREG 12616 MA(DHREG), RAM>BR, 12617 AR>A, B(%00001110), AND, 12618 Y>AR, 12619 JY(RC60Y); ----- ----- B53 0023C0F0 320E0810 ----- 12620 * 12621 *+++RECEIVE A BYTE IN CHARACTER MODE 12622 * A=RCSTAT, LAST Y WAS OPCNT 12623 .ORG RC30F, *CHARACTER MODE 12624 *Y=RCS-ESCAPE 12625 *BR=ROWPTR FOR POINT0F 12626 MA(ROWPTR), RAM>BR, 12627 A(->1B), RCD>B, ADD, 12628 JUMP(RC31); ----- ----- 470 00010B54 30E5000A ----- 12629 .ORG RC31, *ESCAPE CHARACTER? 12630 *IF NOT, CALL POINT0F 12631 *RETURN=0, RETURN TO RC40Y 12632 MA(RETURN), 12633 A(0), B(0), AND, 12634 Y>RAM, 12635 JZ(POINT0F,RC32T); ----- ----- B54 00002476 7C000900 ----- 12636 * 12637 * TCJ July 95 12638 * ESC(>1B) reenabled for 206 12639 * 12640 .ORG RC32T, *ESCAPE 12641 *CHRM=0 12642 RSTRXTX, 12643 MA(RCSTAT), 12644 AR>A, B(>FF-CHRM), AND, 12645 Y>RAM, 12646 JUMP(ST0F); ----- ----- 477 00000001 2F7F0B10 ----- 12647 * 12648 *NEED TO WRITE TO PAGE OR SCRATCH RAM? 12649 * A=OLD ROW, B=OLD COL, TPD=TELETEXT PAGE DATA 12650 .ORG RC40Y, *A=OLD ROW-26 ###3/4 (some duplication with RC60A) 12651 * 12652 *### Inhibit the means of writing to scratch RAM this way because 12653 * of the possible chaos which could be caused by bit errors 12654 * in the row field of MPTR. Can do it with SETREG (this is 12655 * much safer as only one byte can be written at a time). 12656 * 12657 * AR>A, B(-26), ADD, 12658 * Y>AR, 12659 * JUMP(RC41); 12660 *ORG RC41, *A=40*(OLD ROW-26) 12661 * *PAGE OR SCRATCH DATA? 12662 * AR<<3>A, AR<<5>B, ADD, 12663 * Y>AR, 12664 * JN(RC42F,RC42T); 12665 *WRITE TO SCRATCH RAM 12666 *ORG RC42F, *P=SCRATCH POINTER 12667 * AR>A, BR>B, ADD, 12668 * Y>PR, 12669 * JUMP(RC43); 12670 *ORG RC43, *WRITE TO SCRATCH AND IO REG 12671 * PR>MA, 12672 * A(0), RCD>B, OR, 12673 * Y>RAM, Y>IO, 12674 * JUMP(RC44); 12675 *WRITE TO PAGE MEMORY 12676 *ORG RC42T, *WRITE CHARACTER TO PAGE MEMORY 12677 A(0), RCD>B, OR, 12678 Y>DR, 12679 JUMP(RC44); ----- ----- 0C0 00001B55 0000100A ----- 12680 *+++COMMON EXIT FROM READ A BYTE 12681 .ORG RC44, * 12682 RSTRXTX, 12683 JUMP(ST0F); ----- ----- B55 00000001 00000200 ----- 12684 * 12685 *+++RECEIVE A BYTE IN COMMAND MODE 12686 * A=RCSTAT, LAST Y WAS OPCNT 12687 .ORG RC30T, *COMMAND MODE 12688 *OPCNT=0? 12689 JZ(RC50F,RC50T); ----- ----- 471 00002478 00000000 ----- 12690 .ORG RC50T, *OPCNT==0 12691 *LSTINS=RCD 12692 MA(LSTINS), 12693 A(0), RCD>B, OR, 12694 Y>RAM, 12695 JUMP(RC56); ----- ----- 479 00000B56 2E00110A ----- 12696 *+++STORE OPERAND IN OP STORE 12697 .ORG RC50F, *OPCNT!=0 12698 *RWL=7 12699 MA(RWL), 12700 A(7), B(7), OR, 12701 Y>RAM, Y>IO, 12702 JUMP(RC51); ----- ----- 478 00000B57 0B075100 ----- 12703 .ORG RC51, *PR=-OPCNT 12704 NAR.0F>A, B(0), ADD, O>CIN, 12705 Y>PR, 12706 JUMP(RC52); ----- ----- B57 00000B58 80000460 ----- 12707 .ORG RC52, *DEC OPCNT 12708 MA(RCSTAT), 12709 AR>A, B(-1), ADD, 12710 Y>RAM, 12711 JUMP(RC53); ----- ----- B58 00000B59 2FFF0110 ----- 12712 .ORG RC53, *UPDATE PAGE MEMORY 12713 *STORE=RCD (ALSO STORE THIS OPERAND IN 'STORE') 12714 *OPCNT=0? 12715 MA(STORE), 12716 A(0), RCD>B, OR, 12717 Y>DR, Y>RAM, 12718 JZ(RC54F,RC54T); ----- ----- B59 0000347A 7700110A ----- 12719 .ORG RC54F, *NO, MORE OPERANDS 12720 RSTRXTX, 12721 JUMP(ST0F); ----- ----- 47A 00000001 00000200 ----- 12722 * 12723 .ORG RC54T, *YES, GO AND DO IT 12724 *OPCNT=>F 12725 MA(RCSTAT), 12726 AR.F0>A, B(>0F), OR, 12727 Y>RAM, 12728 JUMP(RC56); ----- ----- 47B 00000B56 2F0F11D0 ----- 12729 *+++ 12730 .ORG RC56, *CALL DECODE INSTRUCTION 12731 *B=INSTRUCTION 12732 RSTRXTX, 12733 MA(LSTINS), RAM>BR, 12734 JUMP(DI0); ----- ----- B56 000100A3 2E000200 ----- 12735 * 12736 *+++SEND A BYTE 12737 * 12738 * A=DISPLAYED LANG, B=DHREG 12739 .ORG RC60Y, *CASE RMODE==0 12740 *BR=ROWPTR FOR POINT0F 12741 MA(ROWPTR), RAM>BR, 12742 JUMP(RC60AA); ----- ----- 0F0 00010B5A 30000000 ----- 12743 .ORG RC60AA, *CALL POINT 12744 *RETURN=1, RETURN TO RC60A 12745 MA(RETURN), 12746 A(1), B(1), OR, 12747 Y>RAM, 12748 JUMP(POINT0F); ----- ----- B5A 00000476 7C011100 ----- 12749 *NEED TO OUTPUT PAGE OR SCRATCH RAM DATA? 12750 * A=OLD ROW, B=OLD COL, TPD=TELETEXT PAGE DATA 12751 .ORG RC60A, *A=OLD ROW-26 12752 AR>A, B(-26), ADD, 12753 Y>AR, 12754 JUMP(RC60B); ----- ----- 0C1 00220B5B 00E60010 ----- 12755 .ORG RC60B, *A=40*(OLD ROW-26) 12756 *PAGE OR SCRATCH DATA? 12757 AR<<3>A, AR<<5>B, ADD, 12758 Y>AR, 12759 JN(RC60CF,RC60CT); ----- ----- B5B 0022447C 00000059 ----- 12760 *OUTPUT SCRATCH DATA 12761 .ORG RC60CF, *P=SCRATCH POINTER 12762 AR>A, BR>B, ADD, 12763 Y>PR, 12764 JUMP(RC60D); ----- ----- 47C 00000B5C 80000011 ----- 12765 .ORG RC60D, *A=SCRATCH DATA 12766 PR>MA, RAM>AR, 12767 JUMP(RC60E); ----- ----- B5C 00120B5D 00000000 ----- 12768 .ORG RC60E, *OUTPUT BYTE 12769 *BR=RCSTAT 12770 MA(RCSTAT), RAM>BR, 12771 AR>A, B(0), OR, 12772 Y>RCI, 12773 JUMP(RC80); ----- ----- B5D 00050B5E 2F001210 ----- 12774 *OUTPUT PAGE DATA 12775 .ORG RC60CT, *OUTPUT BYTE 12776 *(RVDP IN POINT0F) 12777 *BR=RCSTAT 12778 MA(RCSTAT), RAM>BR, 12779 TPD>A, B(0), OR, 12780 Y>RCI, 12781 JUMP(RC80); ----- ----- 47D 00050B5E 2F001290 ----- 12782 .ORG RC61, *CASE RMODE=1 12783 *A=DEVICE ID 12784 Y(>16), 12785 Y>AR, 12786 JUMP(RC70F); ----- ----- 0F1 0022047E 00161000 ----- 12787 .ORG RC62, *CASE RMODE=2 12788 *Y=NRH 12789 *B=STSWD0 12790 MA(STSWD0), RAM>BR, 12791 A(NRH), BR>B, AND, 12792 JUMP(RC62A); ----- ----- 0F2 00010B5F 64100801 ----- 12793 .ORG RC62A, *OR IN MSN, CLEAR SEARCH BIT 12794 *HEADER ROLLING? 12795 AR.0F>A, BR.F0>B, OR, 12796 Y>AR, 12797 JZ(RC70F,RC62BT); ----- ----- B5F 0022247E 000010C3 ----- 12798 .ORG RC62BT, *HEADER ROLLING, SET SEARCH BIT 12799 AR>A, B(1), OR, 12800 Y>AR, 12801 JUMP(RC70F); ----- ----- 47F 0022047E 00011010 ----- 12802 .ORG RC63, *CASE RMODE=3 12803 *A=PDCRG2 12804 MA(PDCRG2), RAM>AR, 12805 JUMP(RC70F); ----- ----- 0F3 0002047E 6D000000 ----- 12806 .ORG RC64, *CASE RMODE=4 12807 *A=PDCRG1 12808 MA(PDCRG1), RAM>AR, 12809 JUMP(RC70F); ----- ----- 0F4 0002047E 6C000000 ----- 12810 .ORG RC65, *CASE RMODE=5 12811 *A=NO OF TELETEXT LINES 12812 MA(LINCNT), RAM>AR, 12813 JUMP(RC70F); ----- ----- 0F5 0002047E 66000000 ----- 12814 .ORG RC66, *CASE RMODE=6 12815 *A=TELETEXT ERROR COUNT 12816 MA(ERRCNT), RAM>AR, 12817 JUMP(RC70F); ----- ----- 0F6 0002047E 3A000000 ----- 12818 *MAKE UP STATUS BYTE 2 12819 .ORG RC67, *CASE RMODE=7 12820 *B=STOR4 12821 MA(STOR4), RAM>BR, 12822 JUMP(RC67A); ----- ----- 0F7 00010B60 24000000 ----- 12823 .ORG RC67A, *P=POINTER TO STOR4 LATCH FLAGS 12824 *B=STOR5 12825 MA(STOR5), RAM>BR, 12826 A(LAF0), BRHI>B, ADD, 12827 Y>PR, 12828 JUMP(RC67B); ----- ----- B60 00010B61 A540000C ----- 12829 .ORG RC67B, *A=LATCH FLAGS FOR STOR4 12830 *P=POINTER TO STOR5 LATCH FLAGS 12831 PR>MA, RAM>AR, 12832 A(LAF0), BRHI>B, ADD, 12833 Y>PR, 12834 JUMP(RC67C); ----- ----- B61 00120B62 8040000C ----- 12835 .ORG RC67C, *Y=CAP FOR STOR4 12836 *B=LATCH FLAGS FOR STOR5 12837 PR>MA, RAM>BR, 12838 AR>A, B(CAP), AND, 12839 JUMP(RC67D); ----- ----- B62 00110B63 00800810 ----- 12840 .ORG RC67D, *NEXT SUB-PAGE CAPTURED? 12841 *A=FLAG INPUTS 12842 A(3), GPIO>B, AND, 12843 Y>AR, 12844 JZ(RC67EF,RC67ET); ----- ----- B63 00222484 0003080F ----- 12845 .ORG RC67EF, *NEXT SUB-PAGE CAPTURED, SET NSP FLAG 12846 AR>A, B(>04), OR, 12847 Y>AR, 12848 JUMP(RC67ET); ----- ----- 484 00220485 00041010 ----- 12849 * 12850 .ORG RC67ET, *Y=CAP FOR STOR5 12851 A(CAP), BR>B, AND, 12852 JUMP(RC67G); ----- ----- 485 00000B64 00800801 ----- 12853 .ORG RC67G, *NEXT NEXT SUB-PAGE CAPTURED? 12854 *B=STSWD1 12855 MA(STSWD1), RAM>BR, 12856 JZ(RC67HF,RC67HT); ----- ----- B64 00012486 14000000 ----- 12857 .ORG RC67HF, *NEXT NEXT SUB-PAGE CAPTURED, SET NNSP FLAG 12858 AR>A, B(>08), OR, 12859 Y>AR, 12860 JUMP(RC67HT); ----- ----- 486 00220487 00081010 ----- 12861 * A=STATUS WORD LO NIB, B=STSWD1 (HI NIB) 12862 .ORG RC67HT, *COMBINE LO AND HI NIBS 12863 AR.0F>A, BR.F0>B, OR, 12864 Y>PR, 12865 JUMP(RC67J); ----- ----- 487 00000B65 800010C3 ----- 12866 .ORG RC67J, *A=LINE LOCK FLAG, B=P 12867 PR>BR, 12868 A(1), PLL>B, AND, 12869 Y>AR, 12870 JUMP(RC67K); ----- ----- B65 00630B66 0001080E ----- 12871 .ORG RC67K, *OR IN LINE LOCK, STORE IN P 12872 *B=STOR0 12873 MA(STOR0), RAM>BR, 12874 AR<<4>A, BR>B, OR, 12875 Y>PR, 12876 JUMP(RC67L); ----- ----- B66 00010B67 A0001031 ----- 12877 .ORG RC67L, *B=STATUS BYTE, P=POINTER TO DISPLAY PAGE LATCH FLAGS 12878 PR>BR, 12879 A(LAF0), BRHI>B, ADD, 12880 Y>PR, 12881 JUMP(RC67M); ----- ----- B67 00410B68 8040000C ----- 12882 .ORG RC67M, *A=DISPLAY PAGE LATCH FLAGS 12883 PR>MA, RAM>AR, 12884 JUMP(RC67N); ----- ----- B68 00120B69 00000000 ----- 12885 .ORG RC67N, *A=CAP+OPN 12886 AR>A, B(CAP+OPN), AND, 12887 Y>AR, 12888 JUMP(RC67P); ----- ----- B69 00220B6A 00900810 ----- 12889 .ORG RC67P, *Y=OPN OR !CAP 12890 AR>A, B(CAP), XOR, 12891 JUMP(RC67Q); ----- ----- B6A 00000B6B 00801810 ----- 12892 .ORG RC67Q, *PAGE CAPTURED AND NOT OPEN? 12893 JZ(RC67SF,RC67ST); ----- ----- B6B 00002488 00000000 ----- 12894 * 12895 .ORG RC67SF, *CLEAR DPCAP FLAG IN STATUS BYTE 12896 MA(SYS2), RAM>BR, 12897 A(>7F), BR>B, AND, 12898 Y>AR, 12899 JUMP(RC67U); ----- ----- 488 00230B6C 097F0801 ----- 12900 * 12901 .ORG RC67ST, *SET DPCAP FLAG IN STATUS BYTE 12902 MA(SYS2), RAM>BR, 12903 A(>80), BR>B, OR, 12904 Y>AR, 12905 JUMP(RC67U); ----- ----- 489 00230B6C 09801001 ----- 12906 * 12907 * TCJ march 94 12908 * Add VPS bit to status byte 2 12909 * 12910 .ORG RC67U, 12911 A(TVPS), BR>B, AND, 12912 JUMP(RC67V); ----- ----- B6C 00000B6D 00100801 ----- 12913 * 12914 .ORG RC67V, *TVPS set ? 12915 JZ(RC67WF,RC67WT); ----- ----- B6D 0000248A 00000000 ----- 12916 * 12917 .ORG RC67WF, *TVPS set, 12918 *set appropriate bit in status 2 12919 AR>A, B(TVPS), OR, 12920 Y>AR, 12921 JUMP(RC69A); ----- ----- 48A 00220B6E 00101010 ----- 12922 * 12923 .ORG RC67WT, *TVPS not set, 12924 *clear appropriate bit in status 2 12925 AR>A, B(>FF-TVPS), AND, 12926 Y>AR, 12927 JUMP(RC69A); ----- ----- 48B 00220B6E 00EF0810 ----- 12928 * 12929 * TCJ WSS 12930 * Add WSS bit to status byte 2 12931 * 12932 .ORG RC69A, 12933 MA(STSWD0), RAM>BR, 12934 JUMP(RC69B); ----- ----- B6E 00010B6F 64000000 ----- 12935 * 12936 .ORG RC69B, 12937 A(TWSS), BR>B, AND, 12938 JUMP(RC69C); ----- ----- B6F 00000B70 00010801 ----- 12939 * 12940 .ORG RC69C, 12941 JZ(RC69DF,RC69DT); ----- ----- B70 0000248C 00000000 ----- 12942 * 12943 .ORG RC69DF, *TWSS set, set bit in status 2 12944 AR>A, B(>20), OR, 12945 Y>AR, 12946 JUMP(RC70F); ----- ----- 48C 0022047E 00201010 ----- 12947 * 12948 .ORG RC69DT, *TWSS clear, clear bit in status 2 12949 AR>A, B(>DF), AND, 12950 Y>AR, 12951 JUMP(RC70F); ----- ----- 48D 0022047E 00DF0810 ----- 12952 * 12953 * A=BYTE TO SEND 12954 .ORG RC70F, *B=RCSTAT 12955 *OUTPUT BYTE 12956 MA(RCSTAT), RAM>BR, 12957 AR>A, B(0), OR, 12958 Y>RCI, 12959 JUMP(RC71); ----- ----- 47E 00050B71 2F001210 ----- 12960 .ORG RC71, *DEC RMODE 12961 MA(RCSTAT), 12962 A(->10), BR>B, ADD, 12963 Y>RAM, 12964 JUMP(RC80); ----- ----- B71 00000B5E 2FF00101 ----- 12965 *+++COMMON EXIT FROM SEND A BYTE 12966 * BR=RCSTAT 12967 .ORG RC80, * 12968 JUMP(ST0F); ----- ----- B5E 00000001 00000000 ----- 12969 * 12970 *+++DECODE INSTRUCTION 12971 * 12972 *ENTRY POINT FROM POLL CODE TO COMPLETE DELAYED INSTRUCTION 12973 * BR=INSTRUCTION 12974 .ORG DI0, *CALL DECODE INSTRUCTION 12975 *Y=INSTRUCTION HI NIB -8 12976 A(-8), BRHI>B, ADD, 12977 JUMP(DI0AA); ----- ----- 0A3 00000B72 00F8000C ----- 12978 .ORG DI0AA, *A=LAST INSTRUCTION, VALID INSTRUCTION? 12979 *Y=INSTRUCTION HIGH NIBBLE 12980 MA(LSTINS), RAM>AR, 12981 A(0), BRHI>B, OR, 12982 JN(DI1AAF,DI1AAT); ----- ----- B72 0002448E 2E00100C ----- 12983 .ORG DI1AAF, *INVALID INSTRUCTION 12984 JUMP(DI100); ----- ----- 48E 000000D1 00000000 ----- 12985 .ORG DI1AAT, *CASE INSTRUCTION HIGH NIBBLE 12986 *Y=INSTRUCTION LOW NIBBLE 12987 *BR=RCSTAT 12988 MA(RCSTAT), RAM>BR, 12989 AR.0F>A, B(>0F), AND, 12990 JY(DI0XY); ----- ----- 48F 0001C200 2F0F08C0 ----- 12991 *///0- 12992 * BR=RCSTAT, AR=INSTRUCTION 12993 .ORG DI0XY, *CASE INS HIGH NIB=>0 12994 *Y=OPCNT 12995 A(0), BR.0F>B, OR, 12996 JY(DI00Y); ----- ----- 200 0000C210 00001002 ----- 12997 .ORG DI00Y, *CASE INS >00 12998 JUMP(DI100); ----- ----- 210 000000D1 00000000 ----- 12999 .ORG DI01, *CASE INS >01 13000 *LGSEL 13001 *OPCNT? A=USRLAN 13002 * MA(USRLAN), RAM>AR, 13003 JZ(LGS0F,LGS0T); ----- ----- 211 00002490 00000000 ----- 13004 * 13005 .ORG DI02, *CASE INS >02 13006 *SRST 13007 JUMP(SRST0); ----- ----- 212 00000B73 00000000 ----- 13008 .ORG DI03, *CASE INS >03 13009 *INIT 13010 *DO THE SAME AS CHNGE 1 FOR NOW ### 13011 JUMP(CHNG0); ----- ----- 213 00000B74 00000000 ----- 13012 .ORG DI04, *CASE INS >04 13013 *CHNGE1 13014 JUMP(CHNG0); ----- ----- 214 00000B74 00000000 ----- 13015 .ORG DI05, *CASE INS >05 13016 *CHNGE2 13017 JUMP(CHNG3); ----- ----- 215 000000D4 00000000 ----- 13018 .ORG DI06, *CASE INS >06 13019 *CHNGE3 13020 JUMP(CHNG0); ----- ----- 216 00000B74 00000000 ----- 13021 .ORG DI07, *CASE INS >07 13022 *CHNGE4 13023 JUMP(CHNG3); ----- ----- 217 000000D4 00000000 ----- 13024 .ORG DI08, *CASE INS >08 13025 *SETREG 13026 *OPCNT=0? 13027 *RWL=7 13028 MA(RWL), 13029 A(7), B(7), OR, 13030 Y>RAM, Y>IO, 13031 JZ(POKE0F,POKE0T); ----- ----- 218 00002492 0B075100 ----- 13032 .ORG DI09, *CASE INS >09 13033 *TEST0 13034 *OPCNT=0? 13035 *A=LAST OPERAND 13036 MA(STORE), RAM>AR, 13037 JZ(TST0F,TST0T); ----- ----- 219 00022494 77000000 ----- 13038 .ORG DI0A, *CASE INS >0A 13039 *TEST1 13040 JUMP(DI120); ----- ----- 21A 000005BC 00000000 ----- 13041 .ORG DI0B, *CASE INS >0B 13042 JUMP(DI100); ----- ----- 21B 000000D1 00000000 ----- 13043 .ORG DI0C, *CASE INS >0C 13044 JUMP(DI100); ----- ----- 21C 000000D1 00000000 ----- 13045 .ORG DI0D, *CASE INS >0D 13046 *STOP 13047 *B=RCM 13048 MA(RCM), RAM>BR, 13049 JUMP(STXT0); ----- ----- 21D 00010B75 28000000 ----- 13050 .ORG DI0E, *CASE INS >0E 13051 *START 13052 *B=RCM 13053 MA(RCM), RAM>BR, 13054 JUMP(START0); ----- ----- 21E 00010B76 28000000 ----- 13055 .ORG DI0F, *CASE INS >0F 13056 JUMP(DI100); ----- ----- 21F 000000D1 00000000 ----- 13057 */// 13058 *+++LGSEL: LANGUAGE SELECT (INCLUDED FOR UNITEXT COMPATIBILITY) 13059 * AR=USRLAN, BR=RCSTAT, LAST Y WAS OPCNT 13060 * 13061 * TCJ july 95, re-enabled LGSEL command 13062 * 13063 *WAIT FOR OPERAND 13064 .ORG LGS0T, *OPCNT=1 13065 A(1), BR.F0>B, 13066 OR, 13067 MA(RCSTAT), Y>RAM, 13068 JUMP(ST0F); ----- ----- 491 00000001 2F011103 ----- 13069 * 13070 *GOT OPERAND 13071 * 13072 .ORG LGS0F, *CLEAR LANG FIELD IN AR COPY OF USRLAN 13073 *BR=LAST OPERAND 13074 MA(STORE), RAM>BR, 13075 AR>A, B(%11001111), AND, 13076 Y>AR, 13077 JUMP(LGS2); ----- ----- 490 00230B77 77CF0810 ----- 13078 .ORG LGS2, *Y=LG10 13079 A(%00010000), BR>B, AND, 13080 JUMP(LGS3); ----- ----- B77 00000B78 00100801 ----- 13081 .ORG LGS3, *Y=LG01 13082 *LG10? 13083 A(%00000001), BR>B, AND, 13084 JZ(LGS4F,LGS4T); ----- ----- B78 00002496 00010801 ----- 13085 .ORG LGS4F, *LG10 13086 *SET LANG FIELD TO 10 13087 MA(USRLAN), 13088 AR>A, B(%00100000), OR, 13089 Y>RAM, 13090 JUMP(DI120); ----- ----- 496 000005BC 2D201110 ----- 13091 .ORG LGS4T, *LG01? 13092 JZ(LGS5F,LGS5T); ----- ----- 497 0000249E 00000000 ----- 13093 .ORG LGS5F, *LG01 13094 *SET LANG FIELD TO 01 13095 MA(USRLAN), 13096 AR>A, B(%00010000), OR, 13097 Y>RAM, 13098 JUMP(DI120); ----- ----- 49E 000005BC 2D101110 ----- 13099 .ORG LGS5T, *NOT LG10 OR LG01 13100 *ELSE SET LANG FIELD TO 00 13101 MA(USRLAN), 13102 AR>A, B(0), OR, 13103 Y>RAM, 13104 JUMP(DI120); ----- ----- 49F 000005BC 2D001110 ----- 13105 * 13106 *+++STXT: STOP TELETEXT RECEPTION 13107 * B=RCM 13108 .ORG STXT0, *TOFF=1 13109 MA(RCM), 13110 A(TOFF), BR>B, OR, 13111 Y>RAM, 13112 JUMP(STXT1); ----- ----- B75 00000B79 28801101 ----- 13113 .ORG STXT1, *ERRCNT=0 13114 MA(ERRCNT), 13115 Y(0), 13116 Y>RAM, 13117 JUMP(STXT2); ----- ----- B79 00000B7A 3A001100 ----- 13118 .ORG STXT2, *CALL CDTXT0 TO CLOSE DOWN TELETEXT 13119 *RETURN=0, RETURN TO STXT10T 13120 MA(RETURN), 13121 Y(0), 13122 Y>RAM, 13123 JUMP(CDTXT0); ----- ----- B7A 000009BF 7C001100 ----- 13124 .ORG STXT10T, * 13125 JUMP(DI120); ----- ----- 66F 000005BC 00000000 ----- 13126 *+++START: SET ROLLING HEADER 13127 * B=RCM 13128 .ORG START0, *TOFF=0 13129 MA(RCM), 13130 A(>FF-TOFF), BR>B, AND, 13131 Y>RAM, 13132 JUMP(START1); ----- ----- B76 00000B7B 287F0901 ----- 13133 .ORG START1, *ERRCNT=0 13134 MA(ERRCNT), 13135 Y(0), 13136 Y>RAM, 13137 JUMP(DI120); ----- ----- B7B 000005BC 3A001100 ----- 13138 *+++POKE DATA TO SCRATCH RAM AND IO REGISTERS 13139 * RWL=7 13140 .ORG POKE0T, *OPCNT==0 13141 *OPCNT=2 13142 MA(RCSTAT), 13143 A(2), BR.F0>B, ADD, 13144 Y>RAM, 13145 JUMP(ST0F); ----- ----- 493 00000001 2F020103 ----- 13146 .ORG POKE0F, *OPCNT!=0 13147 *PR=-2 (INDEX TO 1ST OPERAND) 13148 Y(-2), 13149 Y>PR, 13150 JUMP(POKE1); ----- ----- 492 00000B7C 80FE1000 ----- 13151 .ORG POKE1, *READ 1ST OPERAND 13152 RVDP, 13153 JUMP(POKE2); ----- ----- B7C 00000B7D 00008000 ----- 13154 .ORG POKE2, *P= ADDRESS 13155 *A= DATA 13156 MA(STORE), RAM>AR, 13157 TPD>A, B(>7F), AND, 13158 Y>PR, 13159 JUMP(POKE3); ----- ----- B7D 00020B7E F77F0890 ----- 13160 .ORG POKE3, *WRITE DATA TO SCRATCH RAM AND IO SPACE 13161 PR>MA, 13162 AR>A, B(0), OR, 13163 Y>RAM, Y>IO, 13164 JUMP(DI100); ----- ----- B7E 001000D1 00005110 ----- 13165 *+++TEST0: DISPLAY A STORE FOR DEBUG 13166 * A=LAST OPERAND, B=RCSTAT 13167 .ORG TST0T, *OPCNT=1 13168 MA(RCSTAT), 13169 A(1), BR.F0>B, OR, 13170 Y>RAM, 13171 JUMP(ST0F); ----- ----- 495 00000001 2F011103 ----- 13172 .ORG TST0F, *POINT TO STORE INDICATED IN OPERAND 13173 AR.0F>A, B(STOR0), ADD, 13174 Y>PR, 13175 JUMP(TST1); ----- ----- 494 00000B7F 802000C0 ----- 13176 .ORG TST1, *A=LATCH FOR THIS STORE 13177 PR>MA, RAM>AR, 13178 JUMP(TST2); ----- ----- B7F 00120B80 00000000 ----- 13179 .ORG TST2, *DISPLAY STORE, ENABLE ALL ROWS 13180 MA(VDP0), 13181 ARHI>A, B(>70), OR, 13182 Y>IO, 13183 JUMP(DI100); ----- ----- B80 000000D1 00705020 ----- 13184 *///1- 13185 * BR=RCSTAT, AR=INSTRUCTION 13186 .ORG DI1X, *CASE INS HIGH NIB=>1 13187 *Y=VBI, B=SCREEN 13188 MA(SCREEN), RAM>BR, 13189 A(%01000000), RCS>B, AND, 13190 JY(DI10Y); ----- ----- 201 0001C220 6040080B ----- 13191 .ORG DI10Y, *CASE INS >10 13192 *UPDATE 13193 *AR=VDPTXT 13194 *Y=TDISP 13195 MA(VDPTXT), RAM>AR, 13196 A(TDISP), BR>B, AND, 13197 JZ(UPD0F,UPD0T); ----- ----- 220 000224A0 2B040801 ----- 13198 *ENTRY POINT FROM CLOCK 13199 * A=INSTRUCTION, B=SCREEN, LAST Y WAS VBI 13200 .ORG DI11, *CASE INS >11 13201 *SPAGE, IN VBI? 13202 *Y=TDISP 13203 A(TDISP), BR>B, AND, 13204 JZ(TPM0F,TPM0T); ----- ----- 221 000024A2 00040801 ----- 13205 .ORG DI12, *CASE INS >12 13206 *TIME, IN VBI? 13207 *Y=TDISP 13208 A(TDISP), BR>B, AND, 13209 JZ(TPM0F,TPM0T); ----- ----- 222 000024A2 00040801 ----- 13210 .ORG DI13, *CASE INS >13 13211 *EXPAND 13212 *AR=VDPTXT 13213 *Y=TDISP 13214 MA(VDPTXT), RAM>AR, 13215 A(TDISP), BR>B, AND, 13216 JUMP(EXP0); ----- ----- 223 00020B81 2B040801 ----- 13217 .ORG DI14, *CASE INS >14 13218 *PPAGE 13219 *Y=TDISP, BR=PEN 13220 MA(PEN), RAM>BR, 13221 A(TDISP), BR>B, AND, 13222 JUMP(PPAGE0); ----- ----- 224 00010B82 1B040801 ----- 13223 .ORG DI15, *CASE INS >15 13224 *DPAGE 13225 *VBI? 13226 *Y=TDISP 13227 *B=PEN 13228 MA(PEN), RAM>BR, 13229 A(TDISP), BR>B, AND, 13230 JZ(DIP0F,DIP0T); ----- ----- 225 000124A4 1B040801 ----- 13231 .ORG DI16, *CASE INS >16 13232 *IPAGE 13233 *VBI? 13234 *Y=TDISP 13235 *B=PEN 13236 MA(PEN), RAM>BR, 13237 A(TDISP), BR>B, AND, 13238 JZ(DIP0F,DIP0T); ----- ----- 226 000124A4 1B040801 ----- 13239 * 13240 * TCJ Dec 93 13241 * Adding of STBRW bit for subtitle browse, the normal 13242 * browse command must clear this bit. 13243 * 13244 .ORG DI17, *CASE INS >17 13245 *BROWSE 13246 *AR=VPPRG2 13247 MA(DHREG), RAM>AR, 13248 JUMP(TCJDI7A); ----- ----- 227 00020B83 32000000 ----- 13249 * 13250 .ORG TCJDI7A, *STBRW=0 13251 MA(DHREG), 13252 AR>A, B(>FF-STBRW), AND, 13253 Y>RAM, 13254 JUMP(TCJDI7B); ----- ----- B83 00000B84 32FD0910 ----- 13255 * 13256 .ORG TCJDI7B, *Y=VBI, B=SCREEN 13257 A(%01000000), RCS>B, AND, 13258 JUMP(TCJDI7C); ----- ----- B84 00000B85 0040080B ----- 13259 * 13260 .ORG TCJDI7C, *AR=VPPRG1 13261 *Y=TDISP, IN VBI? 13262 MA(VPPRG1), RAM>AR, 13263 A(TDISP), BR>B, AND, 13264 JZ(BROWSE0F,BROWSE0T); ----- ----- B85 000224A6 61040801 ----- 13265 * 13266 .ORG DI18, *CASE INS >18 13267 *THOLD 13268 *Y=TDISP 13269 *IN VBI? 13270 MA(VDPTXT), RAM>BR, 13271 A(TDISP), BR>B, AND, 13272 JZ(HOLD0F,HOLD0T); ----- ----- 228 000124A8 2B040801 ----- 13273 .ORG DI19, *CASE INS >19 13274 *CHOLD 13275 *Y=TDISP 13276 *IN VBI? 13277 MA(VDPTXT), RAM>BR, 13278 A(TDISP), BR>B, AND, 13279 JZ(HOLD0F,HOLD0T); ----- ----- 229 000124A8 2B040801 ----- 13280 .ORG DI1A, *CASE INS >1A 13281 *THOLD 13282 *Y=TDISP 13283 *IN VBI? 13284 MA(VDPTXT), RAM>BR, 13285 A(TDISP), BR>B, AND, 13286 JZ(HOLD0F,HOLD0T); ----- ----- 22A 000124A8 2B040801 ----- 13287 .ORG DI1B, *CASE INS >1B 13288 JUMP(DI100); ----- ----- 22B 000000D1 00000000 ----- 13289 .ORG DI1C, *CASE INS >1C 13290 *REVEAL 13291 *AR=VDPTXT 13292 MA(VDPTXT), RAM>AR, 13293 JUMP(REV0); ----- ----- 22C 00020B86 2B000000 ----- 13294 *ENTRY POINT FROM R24PIC 13295 .ORG DI1D, *CASE INS >1D 13296 *CSTAT 13297 *JUMP INTO STAT0 CODE 13298 *AR=EXPREG, 13299 MA(EXPREG), RAM>AR, 13300 JUMP(STAT2F); ----- ----- 22D 000204F8 63000000 ----- 13301 .ORG DI1E, *CASE INS >1E 13302 *SSTAT 13303 *SET Y=0 AND JUMP INTO STAT0 CODE 13304 *AR=EXPREG, 13305 MA(EXPREG), RAM>AR, 13306 Y(0), 13307 JUMP(STAT1); ----- ----- 22E 00020B87 63001000 ----- 13308 .ORG DI1F, *CASE INS >1F 13309 *TSTAT 13310 *AR=EXPREG, 13311 MA(EXPREG), RAM>AR, 13312 JUMP(STAT0); ----- ----- 22F 00020B88 63000000 ----- 13313 */// 13314 *+++UPDATE 13315 * LAST Y WAS TDISP, BR=SCREEN, AR=VDPTXT 13316 *INSIDE VBI, DELAY 13317 .ORG UPD0F, *A=POLREG 13318 MA(POLREG), RAM>AR, 13319 JUMP(DI110); ----- ----- 4A0 00020582 10000000 ----- 13320 *OUTSIDE VBI 13321 .ORG UPD0T, *TELETEXT DISPLAY? 13322 *Y=UPD 13323 *BR=PEN 13324 MA(PEN), RAM>BR, 13325 AR>A, B(UPD), AND, 13326 JZ(UPD1F,UPD1T); ----- ----- 4A1 000124AA 1B200810 ----- 13327 .ORG UPD1T, *NO TELETEXT DISPLAY, UPDATE IS INVALID 13328 JUMP(DI100); ----- ----- 4AB 000000D1 00000000 ----- 13329 .ORG UPD1F, *TELETEXT DISPLAY, UPD? 13330 JZ(UPD2F,UPD2T); ----- ----- 4AA 000024AC 00000000 ----- 13331 .ORG UPD2F, *ALREADY IN UPDATE, CLEAR IT 13332 *UPD=0 13333 MA(VDPTXT), 13334 AR>A, B(>FF-UPD), AND, 13335 Y>RAM, 13336 JUMP(DI120); ----- ----- 4AC 000005BC 2BDF0910 ----- 13337 *SET UPDATE, GRUNDIG REQUESTED THAT THIS SHOULD BE POSSIBLE EVEN IN 13338 *HOLD AND INCOMPLETE PAGE! 13339 .ORG UPD2T, *CLEAR C8YET, UEXT AND UEXB IN AR COPY OF VDPTXT 13340 AR>A, B(>FF-C8YET-UEXT-UEXB), AND, 13341 Y>AR, 13342 JUMP(UPD3); ----- ----- 4AD 00220B89 00EC0810 ----- 13343 .ORG UPD3, *UPD=1, C8YET=0 13344 MA(VDPTXT), 13345 AR>A, B(UPD), OR, 13346 Y>RAM, 13347 JUMP(UPD4); ----- ----- B89 00000B8A 2B201110 ----- 13348 .ORG UPD4, *Y=PEN-4 13349 A(-4), BRHI>B, ADD, 13350 JUMP(UPD5); ----- ----- B8A 00000B8B 00FC000C ----- 13351 .ORG UPD5, *SUB-PAGE MODE? 13352 *Y=PEN 13353 A(0), BRHI>B, OR, 13354 JN(UPD6F,UPD6T); ----- ----- B8B 000044AE 0000100C ----- 13355 .ORG UPD6F, *SUB-PAGE MODE 13356 *SET TIMOUT TO TERMINATE TIME OUT IN NEXT VPP 13357 MA(TIMOUT), 13358 Y(1), 13359 Y>RAM, 13360 JUMP(DI120); ----- ----- 4AE 000005BC 3B011100 ----- 13361 .ORG UPD6T, *MAIN PAGE MODE, IS IT COMPLETE? 13362 *SET TIMOUT TO TERMINATE TIME OUT IN NEXT VPP 13363 MA(TIMOUT), 13364 Y(1), 13365 Y>RAM, 13366 JZ(UPD7F,UPD7T); ----- ----- 4AF 000024B0 3B011100 ----- 13367 .ORG UPD7T, *COMPLETE MAIN PAGE 13368 JUMP(DI120); ----- ----- 4B1 000005BC 00000000 ----- 13369 .ORG UPD7F, *INCOMPLETE MAIN PAGE, NEED TO GO TO PREVIOUS PAGE 13370 *CALL PPDP0 13371 *P=0, RETURN TO PPAGE2Y 13372 MA(DPU), RAM>AR, RAM>BR, 13373 Y(0), 13374 Y>PR, 13375 JUMP(PPDP0); ----- ----- 4B0 000304D0 EA001000 ----- 13376 *+++TPM: TIME PAGE MODE (SPMODE, TIME, CLOCK) 13377 * LAST Y WAS TDISP, BR=SCREEN, AR=INSTRUCTION 13378 *INSIDE VBI, DELAY IT 13379 .ORG TPM0F, *A=POLREG 13380 MA(POLREG), RAM>AR, 13381 JUMP(DI110); ----- ----- 4A2 00020582 10000000 ----- 13382 .ORG TPM0T, *OUTSIDE VBI 13383 *Y=MNDP0+MNDP1 13384 *TELETEXT DISPLAY? 13385 *Y=SPAGE-INSTRUCTION 13386 NAR>A, B(>11), O>CIN, ADD, 13387 JZ(TPM1F,TPM1T); ----- ----- 4A3 000024B2 00110440 ----- 13388 .ORG TPM1F, *TELETEXT DISPLAY 13389 *Y=CLOCK-INSTRUCTION 13390 NAR>A, B(>4A), O>CIN, ADD, 13391 JUMP(TPM2); ----- ----- 4B2 00000B8C 004A0440 ----- 13392 .ORG TPM2, *CLOCK? 13393 *BR=PEN 13394 MA(PEN), RAM>BR, 13395 JZ(SPMOD0F,TPM3T); ----- ----- B8C 000124B4 1B000000 ----- 13396 .ORG TPM3T, *CLOCK COMMAND WITH TELETEXT DISPLAY 13397 *NO ACTION 13398 JUMP(DI100); ----- ----- 4B5 000000D1 00000000 ----- 13399 .ORG TPM1T, *NO TEXT DISPLAY 13400 *SPAGE? 13401 A(MNDP0+MNDP1), BR>B, AND, 13402 JZ(TPM4F,TPM4T); ----- ----- 4B3 000024B6 00030801 ----- 13403 .ORG TPM4T, *SPAGE COMMAND WITH NO TEXT DISPLAY 13404 *NO ACTION 13405 JUMP(DI100); ----- ----- 4B7 000000D1 00000000 ----- 13406 .ORG TPM4F, *MENU PAGE DISPLAYED? 13407 *Y=SCREEN MSN 13408 *AR=VDPTXT 13409 MA(VDPTXT), RAM>AR, 13410 A(0), BR.F0>B, OR, 13411 JZ(TPM5F,TPM5T); ----- ----- 4B6 000224B8 2B001003 ----- 13412 .ORG TPM5T, *NOT A MENU DISPLAY PAGE, GO TO CLOCK 13413 JUMP(CLOCK0T); ----- ----- 4B9 000004BB 00000000 ----- 13414 .ORG TPM5F, *YES, GO TO CLOCK IF IN TV MODE 13415 JZ(TPM6F,CLOCK0T); ----- ----- 4B8 000024BA 00000000 ----- 13416 .ORG TPM6F, *MENU PAGE VISIBLE, INHIBIT CLOCK 13417 JUMP(DI100); ----- ----- 4BA 000000D1 00000000 ----- 13418 *+++CLOCK 13419 * AR=VDPTXT 13420 .ORG CLOCK0T, *TOGGLE UCLK 13421 MA(VDPTXT), 13422 AR>A, B(UCLK), XOR, 13423 Y>RAM, 13424 JUMP(DI120); ----- ----- 4BB 000005BC 2B801910 ----- 13425 *+++SUB-PAGE MODE 13426 * BR=PEN, 13427 .ORG SPMOD0F, *Y=PEN-4 13428 *A=VDPTXT 13429 MA(VDPTXT), RAM>AR, 13430 A(-4), BRHI>B, ADD, 13431 JUMP(SPMOD1); ----- ----- 4B4 00020B8D 2BFC000C ----- 13432 .ORG SPMOD1, *PEN<4? 13433 *IF NO, SUB-PAGE MODE ALREADY, RETURN TO MAIN PAGE MODE 13434 *CLEAR UPDATE MODE 13435 MA(VDPTXT), 13436 AR>A, B(>FF-UPD), AND, 13437 Y>RAM, 13438 JN(SPMOD1AF,SPMOD1AT); ----- ----- B8D 000044BC 2BDF0910 ----- 13439 *CLEARING SUB-PAGE MODE 13440 .ORG SPMOD1AF, *B=EXPREG 13441 MA(EXPREG), RAM>BR, 13442 JUMP(SPMOD1B); ----- ----- 4BC 00010B8E 63000000 ----- 13443 .ORG SPMOD1B, *CGAP=CPRF=1 TO GENERATE MAIN PAGE MENU DISPLAY 13444 MA(EXPREG), 13445 A(CGAP+CPRF), BR>B, OR, 13446 Y>RAM, 13447 JUMP(CMPE0); ----- ----- B8E 000004F1 630C1101 ----- 13448 *SETTING SUB-PAGE MODE 13449 .ORG SPMOD1AT, *Y=PEN 13450 *A=DHREG 13451 MA(DHREG), RAM>AR, 13452 A(0), BR.F0>B, OR, 13453 JUMP(SPMOD2); ----- ----- 4BD 00020B8F 32001003 ----- 13454 *SET SUB-PAGE MODE 13455 .ORG SPMOD2, *COMPLETE PAGE ENTERED? 13456 *Y=NRH 13457 *A=VPPRG1 13458 MA(VPPRG1), RAM>AR, 13459 AR>A, B(NRH), AND, 13460 JZ(SPMOD3F,SPMOD3T); ----- ----- B8F 000224BE 61100810 ----- 13461 *INCOMPLETE MAIN-PAGE NUMBER ENTERED 13462 .ORG SPMOD3F, *COPY PREV PAGE TO DISPLAY PAGE 13463 *PMPN=1 13464 MA(VPPRG1), 13465 AR>A, B(PMPN), OR, 13466 Y>RAM, 13467 JUMP(SPMOD4); ----- ----- 4BE 00000B90 61201110 ----- 13468 .ORG SPMOD4, *COPY PREV PAGE TO DISPLAY PAGE 13469 *CALL PPDP0 13470 *P=2, RETURN TO SPMOD5 13471 *A=DPU, B=DPU 13472 MA(DPU), RAM>AR, RAM>BR, 13473 Y(2), 13474 Y>PR, 13475 JUMP(PPDP0); ----- ----- B90 000304D0 EA021000 ----- 13476 .ORG SPMOD5, * 13477 JUMP(SPMOD10T); ----- ----- 49A 000004C1 00000000 ----- 13478 *###? This routine sets up the sub-page background latches for the 13479 * next two sub-pages after the sub-page captured. If the main 13480 * page has not been captured, the backgound latches are set to 13481 * look for sub-page 1 and 2. Approx 15 instructions could be 13482 * saved if the code is altered to always capture sub-pages 1 13483 * and 2 until the user enters a sub-page. 13484 * 13485 .ORG SPMOD3T, *COMPLETE MAIN PAGE ENTERED, CAPTURED IT? 13486 *AR=STOR0 13487 *PR=INDEX TO SPX, SPI 13488 MA(STOR0), RAM>AR, 13489 Y(-15), 13490 Y>PR, 13491 JZ(SPMOD10F,SPMOD10T); ----- ----- 4BF 000224C0 A0F11000 ----- 13492 *MAIN PAGE HAS BEEN CAPTURED, GET SUB-PAGE FROM PAGE RAM 13493 * A=STOR0, P= INDEX TO SPX, SPI 13494 .ORG SPMOD10F, *RWL=DISPLAY LATCH 13495 MA(RWL), 13496 ARHI>A, B(7), AND, 13497 Y>RAM, Y>IO, 13498 JUMP(SPMOD11); ----- ----- 4C0 00000B91 0B074920 ----- 13499 .ORG SPMOD11, *BR=USPI 13500 *TPD=SPX, SPI 13501 RVDP, 13502 MA(USPI), RAM>BR, 13503 JUMP(SPMOD12); ----- ----- B91 00010B92 58008000 ----- 13504 .ORG SPMOD12, *AR=SPX, SPI (MASK C4) 13505 TPD>A, B(%01111111), AND, 13506 Y>AR, 13507 JUMP(SPMOD13); ----- ----- B92 00220B93 007F0890 ----- 13508 .ORG SPMOD13, *UPDATE USPI 13509 MA(USPI), 13510 AR<<4>A, BR.0F>B, OR, 13511 Y>RAM, 13512 JUMP(SPMOD14); ----- ----- B93 00000B94 58001132 ----- 13513 .ORG SPMOD14, *BR=USPX 13514 *PR=INDEX TO SPM, SPC 13515 MA(USPX), RAM>BR, 13516 Y(-14), 13517 Y>PR, 13518 JUMP(SPMOD15); ----- ----- B94 00010B95 D9F21000 ----- 13519 .ORG SPMOD15, *UPDATE USPX 13520 *TPD=SPM, SPC 13521 RVDP, 13522 MA(USPX), 13523 AR.F0>A, BR.0F>B, OR, 13524 Y>RAM, 13525 JUMP(SPMOD16); ----- ----- B95 00000B96 590091D2 ----- 13526 .ORG SPMOD16, *BR=USPC 13527 *AR=SPM, SPC (C5, C6 MASKED) 13528 MA(USPC), RAM>BR, 13529 TPD>A, B(%00111111), AND, 13530 Y>AR, 13531 JUMP(SPMOD17); ----- ----- B96 00230B97 5A3F0890 ----- 13532 .ORG SPMOD17, *UPDATE USPC 13533 MA(USPC), 13534 AR<<4>A, BR.0F>B, OR, 13535 Y>RAM, 13536 JUMP(SPMOD18); ----- ----- B97 00000B98 5A001132 ----- 13537 .ORG SPMOD18, *BR=USPM 13538 MA(USPM), RAM>BR, 13539 JUMP(SPMOD19); ----- ----- B98 00010B99 5B000000 ----- 13540 .ORG SPMOD19, *UPDATE USPM 13541 MA(USPM), 13542 AR.F0>A, BR.0F>B, OR, 13543 Y>RAM, 13544 JUMP(SPMOD20); ----- ----- B99 00000B9A 5B0011D2 ----- 13545 .ORG SPMOD20, *A=VPPRG1 13546 MA(VPPRG1), RAM>AR, 13547 JUMP(SPMOD30T); ----- ----- B9A 000204C5 61000000 ----- 13548 *MAIN PAGE HAS NOT BEEN CAPTURED, INIT USP TO ZEROS 13549 *ENTRY POINT FROM INCOMPLETE PAGE 13550 .ORG SPMOD10T, *CALL CUSP0 13551 *RETURN=0, RETURN TO SPMOD30T 13552 MA(RETURN), 13553 Y(0), 13554 Y>RAM, 13555 JUMP(CUSP0); ----- ----- 4C1 00000B9B 7C001100 ----- 13556 * 13557 *+++ CLEAR USER SUB-PAGE 13558 * RETURN=RETURN POINTER 13559 .ORG CUSP0, *P=USPI 13560 Y(USPI), 13561 Y>PR, 13562 JUMP(CUSP30); ----- ----- B9B 00000B9C 80581000 ----- 13563 *LOOP START 13564 .ORG CUSP30, *B=P 13565 *A=USPx 13566 PR>BR, 13567 PR>MA, RAM>AR, 13568 JUMP(CUSP31); ----- ----- B9C 00530B9D 00000000 ----- 13569 .ORG CUSP31, *Y=P-USPM 13570 A(-USPM), BR>B, ADD, 13571 JUMP(CUSP32); ----- ----- B9D 00000B9E 00A50001 ----- 13572 .ORG CUSP32, *CLEAR USPx 13573 *LAST CLEAR? 13574 PR>MA, 13575 AR.0F>A, B(0), OR, 13576 Y>RAM, 13577 JZ(CUSP33F,CUSP33T); ----- ----- B9E 001024C2 000011C0 ----- 13578 .ORG CUSP33F, *NO, INC P 13579 A(1), BR>B, ADD, 13580 Y>PR, 13581 JUMP(CUSP30); ----- ----- 4C2 00000B9C 80010001 ----- 13582 *LOOP END 13583 .ORG CUSP33T, *A=RETURN 13584 MA(RETURN), RAM>AR, 13585 JUMP(CUSP40); ----- ----- 4C3 00020B9F 7C000000 ----- 13586 .ORG CUSP40, *A=VPPRG1 FOR SPMOD30T CODE 13587 *Y=RETURN 13588 MA(VPPRG1), RAM>AR, 13589 AR>A, B(1), AND, 13590 JUMP(CUSP41); ----- ----- B9F 00020BA0 61010810 ----- 13591 .ORG CUSP41, *RETURN? 13592 JZ(DIP43F,SPMOD30T); ----- ----- BA0 000024C4 00000000 ----- 13593 *COMMON SET SUB-PAGE CODE 13594 * A=VPPRG1 13595 * 13596 * TCJ August 95 13597 * This will zap the 8/30 flag 13598 * 13599 *.ORG SPMOD30T, *SPIN=1, HOSP=0, PCSP=0 13600 * MA(VPPRG1), 13601 * AR.F0>A, B(SPIN), OR, 13602 * Y>RAM, 13603 * JUMP(SPMOD34); 13604 * 13605 .ORG SPMOD30T, *HOSP=0, PCSP=0 13606 AR>A, B(>FF-HOSP-PCSP), AND, 13607 Y>AR, 13608 JUMP(SPMOD30X); ----- ----- 4C5 00220BA1 00F90810 ----- 13609 * 13610 .ORG SPMOD30X, 13611 AR>A, B(SPIN), OR, 13612 MA(VPPRG1), Y>RAM, 13613 JUMP(SPMOD34); ----- ----- BA1 00000BA2 61011110 ----- 13614 * 13615 .ORG SPMOD34, *A=DHREG 13616 MA(DHREG), RAM>AR, 13617 JUMP(SPMOD35); ----- ----- BA2 00020BA3 32000000 ----- 13618 .ORG SPMOD35, *ICP=1 13619 MA(DHREG), 13620 AR>A, B(ICP), OR, 13621 Y>RAM, 13622 JUMP(SPMOD40); ----- ----- BA3 00000BA4 32401110 ----- 13623 .ORG SPMOD40, *B=PEN 13624 MA(PEN), RAM>BR, 13625 JUMP(SPMOD41); ----- ----- BA4 00010BA5 1B000000 ----- 13626 .ORG SPMOD41, *PEN=4 13627 MA(PEN), 13628 A(>40), BR.0F>B, OR, 13629 Y>RAM, 13630 JUMP(SPMOD42); ----- ----- BA5 00000BA6 1B401102 ----- 13631 *IF TOP AND NOT MENU MODE, SWAP STORES 4 AND 6 TO KEEP TOP1 13632 .ORG SPMOD42, *A=SYS1 13633 MA(SYS1), RAM>AR, 13634 JUMP(SPMOD43); ----- ----- BA6 00020BA7 08000000 ----- 13635 .ORG SPMOD43, *B=SCREEN 13636 *Y=PCM-1 13637 MA(SCREEN), RAM>BR, 13638 ARHI>A, B(-1), ADD, 13639 JUMP(SPMOD44); ----- ----- BA7 00010BA8 60FF0020 ----- 13640 .ORG SPMOD44, *Y=MENM, A=STOR4 13641 *TOP? 13642 MA(STOR4), RAM>AR, 13643 A(MENM), BR>B, AND, 13644 JZ(SPMOD45F,SPMOD45T); ----- ----- BA8 000224C6 24080801 ----- 13645 .ORG SPMOD45F, *NOT TOP MODE 13646 JUMP(SPMOD50F); ----- ----- 4C6 000004C8 00000000 ----- 13647 .ORG SPMOD45T, *TOP MODE, MENU MODE? 13648 *B=STOR6 13649 MA(STOR6), RAM>BR, 13650 JZ(SPMOD50F,SPMOD46T); ----- ----- 4C7 000124C8 26000000 ----- 13651 *OK TO SWAP STORES 13652 .ORG SPMOD46T, *STORE 4-> 6 13653 MA(STOR6), 13654 AR.F0>A, BR.0F>B, OR, 13655 Y>RAM, 13656 JUMP(SPMOD47); ----- ----- 4C9 00000BA9 260011D2 ----- 13657 .ORG SPMOD47, *STORE 6-> 4 13658 MA(STOR4), 13659 AR.0F>A, BR.F0>B, OR, 13660 Y>RAM, 13661 JUMP(SPMOD48); ----- ----- BA9 00000BAA 240011C3 ----- 13662 .ORG SPMOD48, *A=SYS2 13663 MA(SYS2), RAM>AR, 13664 JUMP(SPMOD49); ----- ----- BAA 00020BAB 09000000 ----- 13665 .ORG SPMOD49, *S6T1=1 13666 MA(SYS2), 13667 AR>A, B(S6T1), OR, 13668 Y>RAM, 13669 JUMP(SPMOD50F); ----- ----- BAB 000004C8 09201110 ----- 13670 * 13671 .ORG SPMOD50F, *A=STOR0 13672 MA(STOR0), RAM>AR, 13673 JUMP(SPMOD51); ----- ----- 4C8 00020BAC 20000000 ----- 13674 .ORG SPMOD51, *B=LFSP0 13675 MA(LFSP0), RAM>BR, 13676 JUMP(SPMOD52); ----- ----- BAC 00010BAD 48000000 ----- 13677 .ORG SPMOD52, *LFSP0= STORE 0 LATCH 13678 MA(LFSP0), 13679 ARHI>A, BR.F0>B, OR, 13680 Y>RAM, 13681 JUMP(SPMOD53); ----- ----- BAD 00000BAE 48001123 ----- 13682 .ORG SPMOD53, *LFPCL0= STORE 0 LATCH, MSP0=7 13683 MA(SPREG0), 13684 AR.F0>A, B(>07), OR, 13685 Y>RAM, 13686 JUMP(SPMOD54); ----- ----- BAE 00000BAF 540711D0 ----- 13687 .ORG SPMOD54, *LFPCL1= STORE 0 LATCH, MSP1=7 13688 MA(SPREG1), 13689 AR.F0>A, B(>07), OR, 13690 Y>RAM, 13691 JUMP(SPMOD55); ----- ----- BAF 00000BB0 550711D0 ----- 13692 .ORG SPMOD55, *LFPCL2= STORE 0 LATCH, MSP2=7 13693 MA(SPREG2), 13694 AR.F0>A, B(>07), OR, 13695 Y>RAM, 13696 JUMP(SPMOD60); ----- ----- BB0 00000BB1 560711D0 ----- 13697 *INIT STORE 4 13698 .ORG SPMOD60, *A=STOR4 13699 MA(STOR4), RAM>AR, 13700 JUMP(SPMOD61); ----- ----- BB1 00020BB2 24000000 ----- 13701 .ORG SPMOD61, *B=LFSP1 13702 *P= INDEX TO LATCH FLAGS FOR STORE 4 (LAFx) 13703 MA(LFSP1), RAM>BR, 13704 ARHI>A, B(LAF0), ADD, 13705 Y>PR, 13706 JUMP(SPMOD62); ----- ----- BB2 00010BB3 C9400020 ----- 13707 .ORG SPMOD62, *LAFx=0 (CLEAR LATCH FLAGS) 13708 PR>MA, 13709 Y(0), 13710 Y>RAM, 13711 JUMP(SPMOD63); ----- ----- BB3 00100BB4 00001100 ----- 13712 .ORG SPMOD63, *LFSP1= LATCH FOR STORE 4 13713 MA(LFSP1), 13714 ARHI>A, BR.F0>B, OR, 13715 Y>RAM, 13716 JUMP(SPMOD64); ----- ----- BB4 00000BB5 49001123 ----- 13717 .ORG SPMOD64, *P= INDEX TO STORE 4 MAGS 13718 ARHI>A, B(M0), ADD, 13719 Y>PR, 13720 JUMP(SPMOD65); ----- ----- BB5 00000BB6 80100020 ----- 13721 .ORG SPMOD65, *B= Mx 13722 PR>MA, RAM>BR, 13723 JUMP(SPMOD66); ----- ----- BB6 00110BB7 00000000 ----- 13724 .ORG SPMOD66, *PUT NULL VALUE IN MAG 13725 PR>MA, 13726 A(>0F), BR.F0>B, OR, 13727 Y>RAM, Y>IO, 13728 JUMP(SPMOD70); ----- ----- BB7 00100BB8 000F5103 ----- 13729 *INIT STORE 5 13730 .ORG SPMOD70, *A=STOR5 13731 MA(STOR5), RAM>AR, 13732 JUMP(SPMOD71); ----- ----- BB8 00020BB9 25000000 ----- 13733 .ORG SPMOD71, *B=LFSP2 13734 *P= INDEX TO LATCH FLAGS FOR STORE 5 (LAFx) 13735 MA(LFSP2), RAM>BR, 13736 ARHI>A, B(LAF0), ADD, 13737 Y>PR, 13738 JUMP(SPMOD72); ----- ----- BB9 00010BBA CA400020 ----- 13739 .ORG SPMOD72, *LAFx=0 (CLEAR LATCH FLAGS) 13740 PR>MA, 13741 Y(0), 13742 Y>RAM, 13743 JUMP(SPMOD73); ----- ----- BBA 00100BBB 00001100 ----- 13744 .ORG SPMOD73, *LFSP2= LATCH FOR STORE 5 13745 MA(LFSP2), 13746 ARHI>A, BR.F0>B, OR, 13747 Y>RAM, 13748 JUMP(SPMOD74); ----- ----- BBB 00000BBC 4A001123 ----- 13749 .ORG SPMOD74, *P= INDEX TO STORE 5 MAGS 13750 ARHI>A, B(M0), ADD, 13751 Y>PR, 13752 JUMP(SPMOD75); ----- ----- BBC 00000BBD 80100020 ----- 13753 .ORG SPMOD75, *B= Mx 13754 PR>MA, RAM>BR, 13755 JUMP(SPMOD76); ----- ----- BBD 00110BBE 00000000 ----- 13756 .ORG SPMOD76, *PUT NULL VALUE IN MAG 13757 PR>MA, 13758 A(>0F), BR.F0>B, OR, 13759 Y>RAM, Y>IO, 13760 JUMP(SPMOD77); ----- ----- BBE 00100BBF 000F5103 ----- 13761 .ORG SPMOD77, *DHREG 13762 MA(DHREG), RAM>AR, 13763 JUMP(SPMOD78); ----- ----- BBF 00020BC0 32000000 ----- 13764 .ORG SPMOD78, *NRH=1 13765 MA(DHREG), 13766 AR>A, B(NRH), OR, 13767 Y>RAM, 13768 JUMP(PAGEA); ----- ----- BC0 00000BC1 32101110 ----- 13769 *+++EXPAND 13770 * AR=VDPTXT, LAST Y WAS TDISP 13771 .ORG EXP0, *Y=UPD 13772 *TELETEXT DISPLAY? 13773 AR>A, B(UPD), AND, 13774 JZ(EXP1F,EXP1T); ----- ----- B81 000024CA 00200810 ----- 13775 .ORG EXP1T, *NO TELETEXT DISPLAY 13776 JUMP(DI100); ----- ----- 4CB 000000D1 00000000 ----- 13777 .ORG EXP1F, *UPDATE MODE? 13778 *Y=UEXT+UEXB? 13779 AR>A, B(UEXT+UEXB), AND, 13780 JZ(EXP2F,EXP2T); ----- ----- 4CA 000024CC 00030810 ----- 13781 .ORG EXP2F, *UPDATE MODE, EXPAND NOT ALLOWED 13782 JUMP(DI100); ----- ----- 4CC 000000D1 00000000 ----- 13783 .ORG EXP2T, *CASE UEXT=? 13784 JY(EXP10Y); ----- ----- 4CD 0000C348 00000000 ----- 13785 * 13786 .ORG EXP10Y, *CASE UEXT=0, UEXB=0, NOT IN EXPAND MODE 13787 *SET EXPAND TOP 13788 MA(VDPTXT), 13789 AR>A, B(UEXT), OR, 13790 Y>RAM, 13791 JUMP(DI120); ----- ----- 348 000005BC 2B021110 ----- 13792 .ORG EXP11, *CASE UEXT=0, UEXB=1, IN EXPAND BOTTOM 13793 *CLEAR EXPAND 13794 MA(VDPTXT), 13795 AR>A, B(UEXB), XOR, 13796 Y>RAM, 13797 JUMP(DI120); ----- ----- 349 000005BC 2B011910 ----- 13798 .ORG EXP12, *CASE UEXT=1, UEXB=0, IN EXPAND TOP 13799 *SET EXPAND BOTTOM 13800 MA(VDPTXT), 13801 AR>A, B(UEXT+UEXB), XOR, 13802 Y>RAM, 13803 JUMP(DI120); ----- ----- 34A 000005BC 2B031910 ----- 13804 .ORG EXP13, *CASE UEXT=1, UEXB=1, ###1 ERROR 13805 *SET EXPAND BOTTOM 13806 MA(VDPTXT), 13807 AR>A, B(UEXT), XOR, 13808 Y>RAM, 13809 JUMP(DI120); ----- ----- 34B 000005BC 2B021910 ----- 13810 13811 *+++PPAGE 13812 * BR=PEN, LAST Y WAS TDISP 13813 .ORG PPAGE0, *TDISP? 13814 *Y=PEN 13815 A(0), BR.F0>B, OR, 13816 JZ(PPAGE1F,PPAGE1T); ----- ----- B82 000024CE 00001003 ----- 13817 .ORG PPAGE1T, *NO TEXT DISPLAY, COMMAND INVALID 13818 JUMP(DI100); ----- ----- 4CF 000000D1 00000000 ----- 13819 .ORG PPAGE1F, *TEXT DISPLAY, COMPLETE MAIN PAGE? 13820 *IF NOT, CALL PPDP0 13821 *PR=0, RETURN TO PPAGE2Y 13822 *AR=UNITS, BR=UNITS 13823 MA(DPU), RAM>AR, RAM>BR, 13824 Y(0), 13825 Y>PR, 13826 JZ(PPDP0,PPAGE2T); ----- ----- 4CE 000324D0 EA001000 ----- 13827 *TV ON INCOMPLETE PAGE ALSO EXITS HERE 13828 *UPDATE ON INCOMPLETE MAIN PAGE ALSO EXITS HERE 13829 .ORG PPAGE2Y, * 13830 JUMP(CMPE0); ----- ----- 498 000004F1 00000000 ----- 13831 *+++PPDP: COPY PREV PAGE TO DISPLAY PAGE 13832 * PR=RETURN POINTER 13833 .ORG PPDP0, *AR=UNITS, BR=UNITS 13834 MA(DPU), RAM>AR, RAM>BR, 13835 JUMP(PPDP0A); ----- ----- 4D0 00030BC2 6A000000 ----- 13836 .ORG PPDP0A, *MOVE UNITS 13837 MA(DPU), 13838 AR<<4>A, BR.0F>B, OR, 13839 Y>RAM, 13840 JUMP(PPDP1); ----- ----- BC2 00000BC3 6A001132 ----- 13841 .ORG PPDP1, *AR=DPT, BR=DPT 13842 MA(DPT), RAM>AR, RAM>BR, 13843 JUMP(PPDP2); ----- ----- BC3 00030BC4 69000000 ----- 13844 .ORG PPDP2, *MOVE TENS 13845 *BR=RETURN POINTER 13846 MA(DPT), PR>BR, 13847 AR<<4>A, BR.0F>B, OR, 13848 Y>RAM, 13849 JUMP(PPDP3); ----- ----- BC4 00410BC5 69001132 ----- 13850 .ORG PPDP3, *AR=DPM, BR=DPM 13851 *Y=RETURN POINTER 13852 MA(DPM), RAM>AR, RAM>BR, 13853 A(7), BR>B, AND, 13854 JUMP(PPDP4); ----- ----- BC5 00030BC6 68070801 ----- 13855 .ORG PPDP4, *MOVE MAGAZINES 13856 *CASE RETURN 13857 MA(DPM), 13858 AR<<4>A, BR.0F>B, OR, 13859 Y>RAM, 13860 JY(PPAGE2Y); ----- ----- BC6 0000C498 68001132 ----- 13861 *COMPLETE MAIN PAGE, SWAP DISPLAY PAGE AND PREVIOUS PAGE 13862 .ORG PPAGE2T, *SWAP UNITS 13863 MA(DPU), 13864 AR<<4>A, BRHI>B, OR, 13865 Y>RAM, 13866 JUMP(PPAGE6); ----- ----- 4D1 00000BC7 6A00113C ----- 13867 .ORG PPAGE6, *AR=DPT, BR=DPT 13868 MA(DPT), RAM>AR, RAM>BR, 13869 JUMP(PPAGE7); ----- ----- BC7 00030BC8 69000000 ----- 13870 .ORG PPAGE7, *SWAP TENS 13871 MA(DPT), 13872 AR<<4>A, BRHI>B, OR, 13873 Y>RAM, 13874 JUMP(PPAGE8); ----- ----- BC8 00000BC9 6900113C ----- 13875 .ORG PPAGE8, *AR=DPM, BR=DPM 13876 MA(DPM), RAM>AR, RAM>BR, 13877 JUMP(PPAGE9); ----- ----- BC9 00030BCA 68000000 ----- 13878 .ORG PPAGE9, *SWAP MAGAZINES 13879 MA(DPM), 13880 AR<<4>A, BRHI>B, OR, 13881 Y>RAM, 13882 JUMP(CMPE0); ----- ----- BCA 000004F1 6800113C ----- 13883 *+++DECREMENT/ INCREMENT PAGE 13884 * AR=INSTRUCTION, B=PEN, LAST Y WAS TDISP 13885 * 13886 *INSIDE VBI, DELAY IT 13887 .ORG DIP0F, *A=POLREG 13888 MA(POLREG), RAM>AR, 13889 JUMP(DI110); ----- ----- 4A4 00020582 10000000 ----- 13890 *OUTSIDE VBI OK TO EXECUTE 13891 .ORG DIP0T, *Y=PEN-4 13892 *TELETEXT DISPLAY? 13893 A(-4), BRHI>B, ADD, 13894 JZ(DIP0AF,DIP0AT); ----- ----- 4A5 000024D2 00FC000C ----- 13895 .ORG DIP0AT, *NO TELETEXT DISPLAY 13896 JUMP(DI100); ----- ----- 4D3 000000D1 00000000 ----- 13897 .ORG DIP0AF, *TELETEXT DISPLAY 13898 *SUB-PAGE MODE? 13899 *Y=PEN 13900 A(0), BRHI>B, OR, 13901 JN(DIP1F,DIP1T); ----- ----- 4D2 000044D4 0000100C ----- 13902 *ENTRY POINT FROM CKR111T (GREEN OR RED KEY PRESSED WHEN PMNM=1) 13903 * LAST Y WAS PEN 13904 .ORG DIP1T, *COMPLETE MAIN PAGE? 13905 *IF YES, CALL PPB0 TO UPDATE PREV PAGE BUFFER 13906 *PR=2, RETURN TO DIP2 13907 *B=PEN 13908 MA(PEN), RAM>BR, 13909 Y(2), 13910 Y>PR, 13911 JZ(DIP1AF,PPB0); ----- ----- 4D5 000124D6 9B021000 ----- 13912 .ORG DIP1AF, *INCOMPLETE MAIN PAGE 13913 *CALL PPDP0 13914 *P=4, RETURN TO DIP1B 13915 MA(DPU), RAM>AR, RAM>BR, 13916 Y(4), 13917 Y>PR, 13918 JUMP(PPDP0); ----- ----- 4D6 000304D0 EA041000 ----- 13919 .ORG DIP1B, * 13920 JUMP(DIP2); ----- ----- 49C 000002DA 00000000 ----- 13921 * 13922 .ORG DIP2, *AR=INDEX TO DISPLAY PAGE MAG 13923 Y(DPM), 13924 Y>AR, 13925 JUMP(DIP3); ----- ----- 2DA 00220BCB 00681000 ----- 13926 .ORG DIP3, *CALL PNTIN0 13927 *RETURN=0, RETURN TO DIP4Y 13928 MA(RETURN), 13929 Y(0), 13930 Y>RAM, 13931 JUMP(PNTIN0); ----- ----- BCB 0000086F 7C001100 ----- 13932 * P=POINTER 13933 .ORG DIP4Y, *B=SYS1 13934 MA(SYS1), RAM>BR, 13935 JUMP(DIP5); ----- ----- 790 00010BCC 08000000 ----- 13936 .ORG DIP5, *Y=PCM 13937 A(3), BRHI>B, AND, 13938 JUMP(DIP6); ----- ----- BCC 00000BCD 0003080C ----- 13939 .ORG DIP6, *CASE PCM=? 13940 *B=LSTINS 13941 MA(LSTINS), RAM>BR, 13942 JY(DIP8Y.0); ----- ----- BCD 0001C2E0 2E000000 ----- 13943 .ORG DIP8Y.0, *CASE PCM=NORMAL 13944 *SET MASK TO LOOK FOR PAGE IN THE INVENTORY 13945 *MASK=>80 13946 MA(MASK), 13947 Y(>80), 13948 Y>RAM, 13949 JUMP(DIP10); ----- ----- 2E0 00000BCE 73801100 ----- 13950 .ORG DIP8Y.1, *CASE PCM=TOP 13951 *SET MASK TO SEARCH FOR 13952 *BLOCK, GROUP AND NORMAL PAGES 13953 *MASK=>07 13954 MA(MASK), 13955 Y(>07), 13956 Y>RAM, 13957 JUMP(DIP10); ----- ----- 2E1 00000BCE 73071100 ----- 13958 .ORG DIP8Y.2, *CASE PCM=FLOF 13959 *SET MASK TO INC OR DEC PAGE 13960 *MASK=>00 13961 MA(MASK), 13962 Y(>00), 13963 Y>RAM, 13964 JUMP(DIP10); ----- ----- 2E2 00000BCE 73001100 ----- 13965 .ORG DIP8Y.3, *CASE PCM=FAVP, DO THE SAME AS NORMAL 13966 *SET MASK TO LOOK FOR PAGE IN THE INVENTORY 13967 *MASK=>80 13968 MA(MASK), 13969 Y(>80), 13970 Y>RAM, 13971 JUMP(DIP10); ----- ----- 2E3 00000BCE 73801100 ----- 13972 * MASK SET TO DEFINE TYPE OF SEARCH IN SBT 13973 * B=LSTINS (CAN BE DPAGE, IPAGE, RED, GREEN 13974 .ORG DIP10, *Y=INSTRUCTION XOR >38 13975 A(>38), BR>B, XOR, 13976 JUMP(DIP11); ----- ----- BCE 00000BCF 00381801 ----- 13977 .ORG DIP11, *Y=INSTRUCTION XOR >15 13978 *RED? 13979 A(>15), BR>B, XOR, 13980 JZ(DIP12F,DIP12T); ----- ----- BCF 000024D8 00151801 ----- 13981 .ORG DIP12T, *RED, DECREMENT PAGE 13982 *GO AND SEARCH BTT 13983 *CALL SBT0 13984 *RETURN=0, RETURN TO DIP18Y, 13985 MA(RETURN), 13986 Y(0), 13987 Y>RAM, 13988 JUMP(SBT0B); ----- ----- 4D9 000004DB 7C001100 ----- 13989 .ORG DIP12F, *WAS INSTRUCTION DPAGE? (ELSE IPAGE OR GREEN) 13990 *GO AND SEARCH BTT 13991 *CALL SBT0 13992 *RETURN=0, RETURN TO DIP18Y, 13993 MA(RETURN), 13994 Y(0), 13995 Y>RAM, 13996 JZ(SBT0A,SBT0B); ----- ----- 4D8 000024DA 7C001100 ----- 13997 *ENTRY POINT FROM COLOURED KEY ROUTINE 13998 .ORG DIP18Y, *PUT NEW PAGE IN PU,PT, PM 13999 *CALL INTPN0 14000 *RETURN=0, RETURN TO DIP20Y 14001 MA(RETURN), 14002 Y(0), 14003 Y>RAM, 14004 JUMP(INTPN0); ----- ----- 7A0 000007A3 7C001100 ----- 14005 *ENTRY POINT FROM NON-NULL FLOF COLOURED KEY PRESSED (CKR210) 14006 *ENTRY POINT FROM NON-NULL FLOF INDEX KEY PRESSED (IKR21T) 14007 *ENTRY POINT FROM TV SEARCH AFTER TOP INDEX (IKR50) 14008 *COPY Px TO DPx 14009 .ORG DIP20Y, *A=PM 14010 MA(PM), RAM>AR, 14011 JUMP(DIP21); ----- ----- 730 00020BD0 74000000 ----- 14012 .ORG DIP21, *B=DPM 14013 MA(DPM), RAM>BR, 14014 JUMP(DIP22); ----- ----- BD0 00010BD1 68000000 ----- 14015 .ORG DIP22, *UPDATE DPM 14016 MA(DPM), 14017 AR.F0>A, BR.0F>B, ADD, 14018 Y>RAM, 14019 JUMP(DIP23); ----- ----- BD1 00000BD2 680001D2 ----- 14020 .ORG DIP23, *A=PT 14021 MA(PT), RAM>AR, 14022 JUMP(DIP24); ----- ----- BD2 00020BD3 75000000 ----- 14023 .ORG DIP24, *B=DPT 14024 MA(DPT), RAM>BR, 14025 JUMP(DIP25); ----- ----- BD3 00010BD4 69000000 ----- 14026 .ORG DIP25, *UPDATE DPT 14027 MA(DPT), 14028 AR.F0>A, BR.0F>B, ADD, 14029 Y>RAM, 14030 JUMP(DIP26); ----- ----- BD4 00000BD5 690001D2 ----- 14031 .ORG DIP26, *A=PU 14032 MA(PU), RAM>AR, 14033 JUMP(DIP27); ----- ----- BD5 00020BD6 76000000 ----- 14034 .ORG DIP27, *B=DPU 14035 MA(DPU), RAM>BR, 14036 JUMP(DIP28); ----- ----- BD6 00010BD7 6A000000 ----- 14037 .ORG DIP28, *UPDATE DPU 14038 MA(DPU), 14039 AR.F0>A, BR.0F>B, ADD, 14040 Y>RAM, 14041 JUMP(CMPE0); ----- ----- BD7 000004F1 6A0001D2 ----- 14042 *SUB-PAGE MODE 14043 *ENTRY POINT FROM GREEN AND RED KEYS IN SUB-PAGE MODE 14044 * First call FSP0F to return a scratch RAM pointer to the 14045 * sub-page latch for STOR0 in PM. 14046 * 14047 .ORG DIP1F, *CALL FSP0F 14048 *RETURN=1, RETURN TO DIP30.1 14049 MA(RETURN), 14050 Y(1), 14051 Y>RAM, 14052 JUMP(FSP0F); ----- ----- 4D4 00000318 7C011100 ----- 14053 * Call DISP0 to get the sub-page for STOR0, inc or dec it 14054 * placing the result in USP. 14055 .ORG DIP30.1, *A=LSTINS 14056 MA(LSTINS), RAM>AR, 14057 JUMP(DIP31); ----- ----- 431 00020BD8 2E000000 ----- 14058 .ORG DIP31, *Y=LSTINS->15 14059 *B=INDEX TO SUB-PAGE FOR STOR0 14060 MA(PM), RAM>BR, 14061 AR>A, B(->15), ADD, 14062 JUMP(DIP32); ----- ----- BD8 00010BD9 74EB0010 ----- 14063 .ORG DIP32, *RET2=SOURCE INDEX FOR DISP0 14064 *DECREMENTING? 14065 MA(RET2), 14066 A(0), BR>B, OR, 14067 Y>RAM, 14068 JZ(DIP33F,DIP33T); ----- ----- BD9 000024DC 7B001101 ----- 14069 .ORG DIP33F, *INCREMENTING 14070 *RET4=OFFSET FOR DISP0 14071 MA(RET4), 14072 Y(1), 14073 Y>RAM, 14074 JUMP(DIP34); ----- ----- 4DC 00000BDA 79011100 ----- 14075 .ORG DIP33T, *DECREMENTING 14076 *RET4=OFFSET FOR DISP0 14077 MA(RET4), 14078 Y(-1), 14079 Y>RAM, 14080 JUMP(DIP34); ----- ----- 4DD 00000BDA 79FF1100 ----- 14081 * 14082 .ORG DIP34, *RET3=DEST INDEX FOR DISP0 14083 MA(RET3), 14084 Y(USPI-1), 14085 Y>RAM, 14086 JUMP(DIP35); ----- ----- BDA 00000BDB 7A571100 ----- 14087 .ORG DIP35, *CALL DISP0 14088 *RETURN=0, RETURN TO DIP40Y 14089 MA(RETURN), 14090 Y(0), 14091 Y>RAM, 14092 JUMP(DISP0); ----- ----- BDB 00000971 7C001100 ----- 14093 * A=DHREG 14094 .ORG DIP40Y, *Y=ICP 14095 *A=PEN 14096 MA(PEN), RAM>AR, 14097 AR>A, B(ICP), AND, 14098 JUMP(DIP41); ----- ----- 440 00020BDC 1B400810 ----- 14099 .ORG DIP41, *PEN=4 14100 *COMPLETE PAGE ENTERED? 14101 *IF YES, JUMP TO STRAIGHT TO CSPE0 14102 *IF NO, CALL CUSP0 FIRST 14103 MA(PEN), 14104 AR.0F>A, B(>40), OR, 14105 Y>RAM, 14106 JZ(DIP42F,CSPE0); ----- ----- BDC 000024DE 1B4011C0 ----- 14107 .ORG DIP42F, *CALL CUSP0 14108 *RETURN=1, RETURN TO DIP43F 14109 MA(RETURN), 14110 Y(1), 14111 Y>RAM, 14112 JUMP(CUSP0); ----- ----- 4DE 00000B9B 7C011100 ----- 14113 .ORG DIP43F, * 14114 JUMP(CSPE0); ----- ----- 4C4 000004DF 00000000 ----- 14115 * 14116 *+++DECREMENT/ INCREMENT SUB-PAGE 14117 * 14118 * input pars are:- 14119 * RET2: source index-1 14120 * RET3: destination index-1 14121 * RET4: offset 14122 * RETURN: return pointer 14123 * local variables used are:- 14124 * COUNT, RET4 14125 .ORG DISP0, *INIT DIGIT COUNT 14126 MA(COUNT), 14127 Y(4), 14128 Y>RAM, 14129 JUMP(DISP1F); ----- ----- 971 000004E4 78041100 ----- 14130 * 14131 .ORG DISP1F, *B=SOURCE INDEX 14132 MA(RET2), RAM>BR, 14133 JUMP(DISP9); ----- ----- 4E4 00010BDD 7B000000 ----- 14134 .ORG DISP9, *INC SOURCE INDEX 14135 *P=SOURCE INDEX 14136 MA(RET2), 14137 A(1), BR>B, ADD, 14138 Y>PR, Y>RAM, 14139 JUMP(DISP10); ----- ----- BDD 00000BDE FB010101 ----- 14140 .ORG DISP10, *A=OFFSET 14141 MA(RET4), RAM>AR, 14142 JUMP(DISP11); ----- ----- BDE 00020BDF 79000000 ----- 14143 .ORG DISP11, *B=SOURCE DIGIT 14144 PR>MA, RAM>BR, 14145 JUMP(DISP12); ----- ----- BDF 00110BE0 00000000 ----- 14146 .ORG DISP12, *A=NEW SOURCE DIGIT 14147 *B=DEST INDEX 14148 MA(RET3), RAM>BR, 14149 AR<<4>A, BR>B, ADD, 14150 Y>AR, 14151 JUMP(DISP13); ----- ----- BE0 00230BE1 7A000031 ----- 14152 .ORG DISP13, *INC DEST INDEX 14153 *P=DEST INDEX 14154 *DIGIT UNDERFLOW? 14155 MA(RET3), 14156 A(1), BR>B, ADD, 14157 Y>PR, Y>RAM, 14158 JN(DISP14F,DISP14T); ----- ----- BE1 000044E0 FA010101 ----- 14159 *DIGIT UNDERFLOW 14160 .ORG DISP14T, *B=DEST 14161 PR>MA, RAM>BR, 14162 JUMP(DISP15); ----- ----- 4E1 00110BE2 00000000 ----- 14163 .ORG DISP15, *DIGIT=9 14164 PR>MA, 14165 A(>90), BR.0F>B, OR, 14166 Y>RAM, 14167 JUMP(DISP30); ----- ----- BE2 00100BE3 00901102 ----- 14168 * 14169 .ORG DISP14F, *Y=A-10 14170 *B=DEST 14171 PR>MA, RAM>BR, 14172 ARHI>A, B(-10), ADD, 14173 JUMP(DISP20); ----- ----- 4E0 00110BE4 00F60020 ----- 14174 .ORG DISP20, *DIGIT OVERFLOW? 14175 JN(DISP21F,DISP21T); ----- ----- BE4 000044E2 00000000 ----- 14176 *DIGIT OVERFLOW 14177 .ORG DISP21F, *DIGIT=0 14178 PR>MA, 14179 A(0), BR.0F>B, OR, 14180 Y>RAM, 14181 JUMP(DISP30); ----- ----- 4E2 00100BE3 00001102 ----- 14182 *NO CARRY, UPDATE DIGIT AND SET ZERO OFFSET TO COPY REMAINING DIGITS 14183 .ORG DISP21T, * 14184 PR>MA, 14185 AR.F0>A, BR.0F>B, OR, 14186 Y>RAM, 14187 JUMP(DISP22); ----- ----- 4E3 00100BE5 000011D2 ----- 14188 .ORG DISP22, *RET4=0 14189 MA(RET4), 14190 Y(0), 14191 Y>RAM, 14192 JUMP(DISP30); ----- ----- BE5 00000BE3 79001100 ----- 14193 *CARRY 14194 .ORG DISP30, *A=LOOP 14195 MA(COUNT), RAM>AR, 14196 JUMP(DISP31); ----- ----- BE3 00020BE6 78000000 ----- 14197 .ORG DISP31, *DEC LOOP 14198 MA(COUNT), 14199 AR>A, B(-1), ADD, 14200 Y>RAM, 14201 JUMP(DISP32); ----- ----- BE6 00000BE7 78FF0110 ----- 14202 .ORG DISP32, *LAST DIGIT? 14203 JZ(DISP1F,DISP33T); ----- ----- BE7 000024E4 00000000 ----- 14204 *EXIT 14205 .ORG DISP33T, *A=RETURN 14206 MA(RETURN), RAM>AR, 14207 JUMP(DISP34); ----- ----- 4E5 00020BE8 7C000000 ----- 14208 .ORG DISP34, *Y=RETURN 14209 *B=VPPRG1 FOR SPLM110 14210 MA(VPPRG1), RAM>BR, 14211 AR>A, B(3), AND, 14212 JUMP(DISP35); ----- ----- BE8 00010BE9 61030810 ----- 14213 .ORG DISP35, *CASE RETURN=? 14214 *A=DHREG FOR DIP40Y 14215 MA(DHREG), RAM>AR, 14216 JY(DIP40Y); ----- ----- BE9 0002C440 32000000 ----- 14217 *+++BROWSE 14218 * AR=VPPRG1, LAST Y WAS TDISP 14219 *INSIDE VBI, DELAY IT 14220 .ORG BROWSE0F, *A=POLREG 14221 MA(POLREG), RAM>AR, 14222 JUMP(DI110); ----- ----- 4A6 00020582 10000000 ----- 14223 *OUTSIDE VBI 14224 .ORG BROWSE0T, *TDISP? 14225 *COUNT=1 (CLEAR HOLD ONLY IN PAGE0 CODE) 14226 MA(COUNT), 14227 Y(1), 14228 Y>RAM, 14229 JZ(BROWSE1F,BROWSE1T); ----- ----- 4A7 000024E6 78011100 ----- 14230 .ORG BROWSE1T, *NO TEXT DISPLAY, INVALID COMMAND 14231 JUMP(DI100); ----- ----- 4E7 000000D1 00000000 ----- 14232 .ORG BROWSE1F, *SLFB=1 (SET LATCH FOR BROWSE) 14233 MA(VPPRG1), 14234 AR>A, B(SLFB), OR, 14235 Y>RAM, 14236 JUMP(CMPE1); ----- ----- 4E6 00000BEA 61401110 ----- 14237 *+++HOLD 14238 * A=INSTRUCTION, B=VDPTXT, LAST Y WAS TDISP 14239 *INSIDE VBI, DELAY IT 14240 .ORG HOLD0F, *A=POLREG 14241 MA(POLREG), RAM>AR, 14242 JUMP(DI110); ----- ----- 4A8 00020582 10000000 ----- 14243 *OUTSIDE VBI 14244 .ORG HOLD0T, *Y=STOP, TDISP? 14245 A(STOP), BR>B, AND, 14246 JZ(HOLD1F,HOLD1T); ----- ----- 4A9 000024E8 00040801 ----- 14247 .ORG HOLD1T, *NO TEXT DISPLAY, INVALID COMMAND 14248 JUMP(DI100); ----- ----- 4E9 000000D1 00000000 ----- 14249 .ORG HOLD1F, *ALREADY IN HOLD? 14250 *Y=INSTUCTION->18 14251 *B=PEN 14252 MA(PEN), RAM>BR, 14253 AR>A, B(->18), ADD, 14254 JZ(HOLD3F,HOLD3T); ----- ----- 4E8 000124EA 1BE80010 ----- 14255 *IN HOLD MODE 14256 .ORG HOLD3F, *IN HOLD, SHOLD? 14257 *Y=PEN-4 14258 A(-4), BRHI>B, ADD, 14259 JZ(HOLD4F,HOLD4T); ----- ----- 4EA 000024EC 00FC000C ----- 14260 .ORG HOLD4T, *SHOLD IN HOLD, EXIT 14261 JUMP(DI100); ----- ----- 4ED 000000D1 00000000 ----- 14262 .ORG HOLD4F, *CLEARING HOLD, PEN=4? 14263 *Y=PEN 14264 A(0), BRHI>B, OR, 14265 JZ(HOLD5F,HOLD5T); ----- ----- 4EC 000024EE 0000100C ----- 14266 .ORG HOLD5T, *COMPLETE SUB-PAGE ENTERED 14267 JUMP(CSPE0); ----- ----- 4EF 000004DF 00000000 ----- 14268 .ORG HOLD5F, *PEN=0? 14269 *IF YES, COMPLETE MAIN PAGE 14270 JZ(HOLD6F,CMPE0); ----- ----- 4EE 000024F0 00000000 ----- 14271 .ORG HOLD6F, *INCOMPLETE SUB-PAGE 14272 JUMP(PSPE0); ----- ----- 4F0 00000BEB 00000000 ----- 14273 *NOT IN HOLD MODE 14274 * A=INSTRUCTION, B=PEN 14275 .ORG HOLD3T, *Y=INSTRUCTION->19 14276 *A=VDPTXT 14277 MA(VDPTXT), RAM>AR, 14278 AR>A, B(->19), ADD, 14279 JUMP(HOLD10); ----- ----- 4EB 00020BEC 2BE70010 ----- 14280 .ORG HOLD10, *CHOLD? 14281 JZ(HOLD11F,HOLD11T); ----- ----- BEC 000024F2 00000000 ----- 14282 .ORG HOLD11T, *CHOLD IN NO HOLD, EXIT 14283 JUMP(DI100); ----- ----- 4F3 000000D1 00000000 ----- 14284 .ORG HOLD11F, *STOP=1 14285 MA(VDPTXT), 14286 AR>A, B(STOP), OR, 14287 Y>RAM, 14288 JUMP(HOLD12); ----- ----- 4F2 00000BED 2B041110 ----- 14289 .ORG HOLD12, *Y=PEN-4 14290 *A=DHREG 14291 MA(DHREG), RAM>AR, 14292 A(-4), BRHI>B, ADD, 14293 JUMP(HOLD13); ----- ----- BED 00020BEE 32FC000C ----- 14294 .ORG HOLD13, *SUB-PAGE MODE? 14295 *Y=PEN 14296 A(0), BRHI>B, OR, 14297 JN(HOLD14F,HOLD14T); ----- ----- BEE 000044F4 0000100C ----- 14298 .ORG HOLD14F, *SUB-PAGE MODE 14299 *NRH=1 14300 MA(DHREG), 14301 AR>A, B(NRH), OR, 14302 Y>RAM, 14303 JUMP(HOLD14A); ----- ----- 4F4 00000BEF 32101110 ----- 14304 .ORG HOLD14A, *A=VPPRG1 14305 MA(VPPRG1), RAM>AR, 14306 JUMP(HOLD14B); ----- ----- BEF 00020BF0 61000000 ----- 14307 .ORG HOLD14B, *HOSP=1 14308 *(SPLM HOLDS IT THINKING ITS AN INCOMPLETE SP) 14309 MA(VPPRG1), 14310 AR>A, B(HOSP), OR, 14311 Y>RAM, 14312 JUMP(PAGEB); ----- ----- BF0 00000BF1 61041110 ----- 14313 .ORG HOLD14T, *COMPLETE MAIN PAGE? 14314 *NRH=1 14315 MA(DHREG), 14316 AR>A, B(NRH), OR, 14317 Y>RAM, 14318 JZ(HOLD15F,HOLD15T); ----- ----- 4F5 000024F6 32101110 ----- 14319 .ORG HOLD15T, *COMPLETE MAIN PAGE 14320 JUMP(PMPE4); ----- ----- 4F7 00000499 00000000 ----- 14321 .ORG HOLD15F, *INCOMPLETE MAIN PAGE 14322 *PEN=0 14323 MA(PEN), 14324 A(0), BR.0F>B, OR, 14325 Y>RAM, 14326 JUMP(HOLD16); ----- ----- 4F6 00000BF2 1B001102 ----- 14327 .ORG HOLD16, *GO TO PREVIOUS PAGE 14328 *CALL PPDP0 14329 *PR=1, RETURN TO PMPE4 14330 Y(1), 14331 Y>PR, 14332 JUMP(PPDP0); ----- ----- BF2 000004D0 80011000 ----- 14333 *+++REVEAL 14334 * AR=VDPTXT 14335 .ORG REV0, *TOGGLE URVL 14336 MA(VDPTXT), 14337 AR>A, B(URVL), XOR, 14338 Y>RAM, 14339 JUMP(DI120); ----- ----- B86 000005BC 2B081910 ----- 14340 *+++STATUS: USER STATUS MODE 14341 * BR=SCREEN, AR=EXPREG 14342 .ORG STAT0, *Y=USM 14343 AR>A, B(USM), AND, 14344 JUMP(STAT1); ----- ----- B88 00000B87 00020810 ----- 14345 *ENTRY POINT FROM SSTAT, LAST Y=0 14346 .ORG STAT1, *Y=SCREEN 14347 *USM? 14348 A(0), BRHI>B, OR, 14349 JZ(STAT2F,STAT2T); ----- ----- B87 000024F8 0000100C ----- 14350 *ENTRY POINT FROM CSTAT 14351 .ORG STAT2F, *ALREADY SET, CLEAR IT 14352 *USM=0 14353 MA(EXPREG), 14354 AR>A, B(>FF-USM), AND, 14355 Y>RAM, Y>AR, 14356 JUMP(STAT4); ----- ----- 4F8 00220BF3 63FD0910 ----- 14357 .ORG STAT2T, *NOT SET YET 14358 *PICTURE MODE? 14359 JZ(STAT3F,STAT3T); ----- ----- 4F9 000024FA 00000000 ----- 14360 .ORG STAT3F, *NOT PICTURE MODE, IGNORE 14361 JUMP(DI100); ----- ----- 4FA 000000D1 00000000 ----- 14362 .ORG STAT3T, *SET USER STATUS MODE 14363 *USM=1 14364 MA(EXPREG), 14365 AR>A, B(USM), OR, 14366 Y>RAM, Y>AR, 14367 JUMP(STAT4); ----- ----- 4FB 00220BF3 63021110 ----- 14368 .ORG STAT4, *CPRF=1, CGAP=1 14369 MA(EXPREG), 14370 AR>A, B(CPRF+CGAP), OR, 14371 Y>RAM, 14372 JUMP(DI120); ----- ----- BF3 000005BC 630C1110 ----- 14373 *///2- 14374 * BR=RCSTAT, AR=INSTRUCTION 14375 .ORG DI2X, *CASE INS HIGH NIB=>2 14376 *DIGIT ENTRY 14377 *Y=VBI 14378 A(%01000000), RCS>B, AND, 14379 JUMP(DIG0); ----- ----- 202 00000BF4 0040080B ----- 14380 */// 14381 *+++ DIG: DIGIT ENTRY 14382 * AR=INSTRUCTION, LAST Y WAS VBI 14383 .ORG DIG0, *VBI? 14384 *BR=SCREEN 14385 *PR=0 14386 MA(SCREEN), RAM>BR, 14387 Y(0), 14388 Y>PR, 14389 JZ(DIG0F,DIG0T); ----- ----- BF4 000124FC E0001000 ----- 14390 .ORG DIG0F, *IN VBI, DELAY 14391 *A=POLREG 14392 MA(POLREG), RAM>AR, 14393 JUMP(DI110); ----- ----- 4FC 00020582 10000000 ----- 14394 .ORG DIG0T, *Y=TDISP 14395 *B=MREG1 14396 MA(MREG1), RAM>BR, 14397 A(TDISP), BR>B, AND, 14398 JUMP(DIG1); ----- ----- 4FD 00010BF5 65040801 ----- 14399 .ORG DIG1, *STORE=DIGIT 14400 *Y=DETV, TDISP? 14401 *B=LTK 14402 MA(LTK), RAM>BR, 14403 A(DETV), BR>B, AND, 14404 JZ(DIG2F,DIG2T); ----- ----- BF5 000124FE 11040801 ----- 14405 .ORG DIG2T, *NO TEXT DISPLAY, DETV? 14406 JZ(DIG2AF,DIG2AT); ----- ----- 4FF 00002500 00000000 ----- 14407 .ORG DIG2AT, *NO TEXT DISPLAY, DETV=0 14408 *INVALID DIGIT 14409 JUMP(DI100); ----- ----- 501 000000D1 00000000 ----- 14410 .ORG DIG2AF, *NO TEXT DISPLAY, DETV=1 14411 *DIGIT IS VALID 14412 JUMP(DIG2F); ----- ----- 500 000004FE 00000000 ----- 14413 *DIGIT IS VALID 14414 * A=DIGIT, B=LTK 14415 .ORG DIG2F, *LTK=0 14416 MA(LTK), 14417 A(0), BR.0F>B, OR, 14418 Y>RAM, 14419 JUMP(DIG2A); ----- ----- 4FE 00000BF6 11001102 ----- 14420 .ORG DIG2A, *B=MREG0 14421 MA(MREG0), RAM>BR, 14422 JUMP(DIG2B); ----- ----- BF6 00010BF7 39000000 ----- 14423 .ORG DIG2B, *STORE=DIGIT 14424 MA(STORE), 14425 AR.0F>A, B(0), ADD, 14426 Y>RAM, 14427 JUMP(DIG2C); ----- ----- BF7 00000BF8 770001C0 ----- 14428 .ORG DIG2C, *Y=DETO 14429 *B=VDP1 14430 MA(VDP1), RAM>BR, 14431 A(DETO), BR>B, AND, 14432 JUMP(DIG3); ----- ----- BF8 00010BF9 01800801 ----- 14433 .ORG DIG3, *Y=BOX 14434 *B=DHREG 14435 *DIGIT ENTRY TIME-OUTS? 14436 MA(DHREG), RAM>BR, 14437 A(BOX), BR>B, AND, 14438 JZ(DIG4F,DIG4T); ----- ----- BF9 00012502 32040801 ----- 14439 .ORG DIG4F, *Y=ENDIG 14440 *B=VDP0 14441 *BOX MODE? 14442 MA(VDP0), RAM>BR, 14443 A(ENDIG), BR>B, AND, 14444 JZ(DIG5F,DIG5T); ----- ----- 502 00012504 00040801 ----- 14445 .ORG DIG5F, *BOX MODE 14446 *Y=R0ON 14447 *HEADER VISIBLE? 14448 A(R0ON), BR>B, AND, 14449 JZ(DIG6F,DIG6T); ----- ----- 504 00002506 00100801 ----- 14450 .ORG DIG5T, *NOT BOX 14451 *Y=R0ON 14452 A(R0ON), BR>B, AND, 14453 JUMP(DIG6F); ----- ----- 505 00000506 00100801 ----- 14454 14455 .ORG DIG6T, *TIME OUT HEADER DISPLAY (DO NOT ACCEPT DIGIT) 14456 *A=DHREG 14457 MA(DHREG), RAM>AR, 14458 JUMP(STOD0); ----- ----- 507 00020BFA 32000000 ----- 14459 * 14460 .ORG DIG6F, *HEADER VISIBLE 14461 *R0ON? 14462 JZ(DIG7F,DIG7T); ----- ----- 506 00002508 00000000 ----- 14463 .ORG DIG7T, *TIME OUT HEADER DISPLAY (DO NOT ACCEPT DIGIT) 14464 *A=DHREG 14465 MA(DHREG), RAM>AR, 14466 JUMP(STOD0); ----- ----- 509 00020BFA 32000000 ----- 14467 .ORG DIG7F, *OK TO ACCEPT DIGIT 14468 JUMP(DIG4T); ----- ----- 508 00000503 00000000 ----- 14469 *OK TO ENTER DIGIT 14470 .ORG DIG4T, *B=VDPTXT 14471 MA(VDPTXT), RAM>BR, 14472 JUMP(DIG4A); ----- ----- 503 00010BFB 2B000000 ----- 14473 .ORG DIG4A, *C8YET=1 (FOR DIGIT ENTRY IN UPDATE MODE) 14474 MA(VDPTXT), 14475 A(C8YET), BR>B, OR, 14476 Y>RAM, 14477 JUMP(DIG4B); ----- ----- BFB 00000BFC 2B101101 ----- 14478 .ORG DIG4B, *BR=PAGE ENTRY STATE 14479 MA(PEN), RAM>BR, 14480 JUMP(DIG8); ----- ----- BFC 00010BFD 1B000000 ----- 14481 .ORG DIG8, *Y=PEN 14482 A(7), BR>>4>B, AND, 14483 JUMP(DIG9); ----- ----- BFD 00000BFE 00070804 ----- 14484 .ORG DIG9, *UPDATE PAGE ENTRY STATE 14485 *CASE PEN=? 14486 MA(PEN), 14487 A(->10), BR>B, ADD, 14488 Y>RAM, 14489 JY(DIG10Y); ----- ----- BFE 0000C238 1BF00101 ----- 14490 * 14491 .ORG DIG10Y, *CASE PEN=0 14492 *DIGIT IS MAIN PAGE MAG 14493 *CALL PPB0 TO LOAD PREV PAGE BUFFER 14494 *PR=0, RETURN TO DIG30Y 14495 *PEN=2, B=OLD PEN 14496 MA(PEN), 14497 A(>20), BR.0F>B, ADD, 14498 Y>RAM, 14499 JUMP(PPB0); ----- ----- 238 000004D7 1B200102 ----- 14500 * 14501 .ORG DIG11, *CASE PEN=1 14502 *DIGIT IS MAIN PAGE UNITS 14503 *BR=DPU 14504 MA(DPU), RAM>BR, 14505 JUMP(DIG11A); ----- ----- 239 00010BFF 6A000000 ----- 14506 .ORG DIG11A, *DPU=DIGIT 14507 *GO TO COMPLETE PAGE ENTERED 14508 MA(DPU), 14509 AR<<4>A, BR.0F>B, OR, 14510 Y>RAM, 14511 JUMP(CMPE0); ----- ----- BFF 000004F1 6A001132 ----- 14512 * 14513 .ORG DIG12, *CASE PEN=2 14514 *DIGIT IS MAIN PAGE TENS 14515 *BR=DPT 14516 MA(DPT), RAM>BR, 14517 JUMP(DIG12A); ----- ----- 23A 00010C00 69000000 ----- 14518 .ORG DIG12A, *DPT=DIGIT 14519 MA(DPT), 14520 AR<<4>A, BR.0F>B, OR, 14521 Y>RAM, 14522 JUMP(PMPE4); ----- ----- C00 00000499 69001132 ----- 14523 * 14524 *CASE PEN=3 IS AN ERROR 14525 * 14526 .ORG DIG14, *CASE PEN=4 14527 *DIGIT IS SP THOUSANDS 14528 *PEN=7 14529 MA(PEN), 14530 A(>70), BR.0F>B, ADD, 14531 Y>RAM, 14532 JUMP(DIG14A); ----- ----- 23C 00000C01 1B700102 ----- 14533 .ORG DIG14A, *BR=USPM 14534 MA(USPM), RAM>BR, 14535 JUMP(DIG14B); ----- ----- C01 00010C02 5B000000 ----- 14536 .ORG DIG14B, *USPM=DIGIT 14537 MA(USPM), 14538 AR<<4>A, BR.0F>B, OR, 14539 Y>RAM, 14540 JUMP(PSPE0); ----- ----- C02 00000BEB 5B001132 ----- 14541 .ORG DIG15, *CASE PEN=5 14542 *DIGIT IS SP UNITS 14543 *BR=USPI 14544 MA(USPI), RAM>BR, 14545 JUMP(DIG15A); ----- ----- 23D 00010C03 58000000 ----- 14546 .ORG DIG15A, *USPI=DIGIT 14547 MA(USPI), 14548 AR<<4>A, BR.0F>B, OR, 14549 Y>RAM, 14550 JUMP(CSPE0); ----- ----- C03 000004DF 58001132 ----- 14551 .ORG DIG16, *CASE PEN=6 14552 *DIGIT IS SP TENS 14553 *BR=USPX 14554 MA(USPX), RAM>BR, 14555 JUMP(DIG16A); ----- ----- 23E 00010C04 59000000 ----- 14556 .ORG DIG16A, *USPX=DIGIT 14557 MA(USPX), 14558 AR<<4>A, BR.0F>B, OR, 14559 Y>RAM, 14560 JUMP(PAGEC); ----- ----- C04 00000C05 59001132 ----- 14561 .ORG DIG17, *CASE PEN=7 14562 *DIGIT IS SP HUNDREDS 14563 *BR=USPC 14564 MA(USPC), RAM>BR, 14565 JUMP(DIG17A); ----- ----- 23F 00010C06 5A000000 ----- 14566 .ORG DIG17A, *USPC=DIGIT 14567 MA(USPC), 14568 AR<<4>A, BR.0F>B, OR, 14569 Y>RAM, 14570 JUMP(PAGEC); ----- ----- C06 00000C05 5A001132 ----- 14571 *RETURN FROM PPB, ENTERING DISPLAY PAGE MAG 14572 * AR=MAG DIGIT, LAST Y WAS MAG DIGIT-8 14573 .ORG DIG30Y, *MAG DIGIT=8? 14574 *BR=DPM 14575 *MASK 4TH BIT OF DIGIT 14576 MA(DPM), RAM>BR, 14577 AR>A, B(7), AND, 14578 Y>AR, 14579 JZ(DIG31F,DIG31T); ----- ----- 2D8 0023250A 68070810 ----- 14580 .ORG DIG31F, *MAG DIGIT NOT 8 14581 *DPM=MASKED DIGIT 14582 *GO TO PARTIAL PAGE ENTRY CODE 14583 MA(DPM), 14584 AR<<4>A, BR.0F>B, OR, 14585 Y>RAM, 14586 JUMP(PMPE0); ----- ----- 50A 00000C07 68001132 ----- 14587 .ORG DIG31T, *MAG DIGIT IS 8 14588 *DPM=0 14589 *GO TO PARTIAL PAGE ENTRY CODE 14590 MA(DPM), 14591 A(0), BR.0F>B, OR, 14592 Y>RAM, 14593 JUMP(PMPE0); ----- ----- 50B 00000C07 68001102 ----- 14594 *ENTRY POINT FROM CLEAR HOLD IF COMPLETE SUB-PAGE ENTERED 14595 *ENTRY POINT FROM DIP CODE 14596 *COMPLETE SUB-PAGE HAS BEEN ENTERED BY DIGITS, 14597 *CLEAR CAP AND VBICAP TO INDICATE THIS SUB-PAGE NOT CAPTURED YET 14598 .ORG CSPE0, *AR=VPPRG1 14599 MA(VPPRG1), RAM>AR, 14600 JUMP(CSPE2); ----- ----- 4DF 00020C08 61000000 ----- 14601 .ORG CSPE2, *PCSP=1 14602 MA(VPPRG1), 14603 AR>A, B(PCSP), OR, 14604 Y>RAM, 14605 JUMP(CSPE3); ----- ----- C08 00000C09 61021110 ----- 14606 .ORG CSPE3, *A=DHREG 14607 MA(DHREG), RAM>AR, 14608 JUMP(CSPE4); ----- ----- C09 00020C0A 32000000 ----- 14609 .ORG CSPE4, *NRH=0, ICP=0 14610 MA(DHREG), 14611 AR>A, B(>FF-NRH-ICP), AND, 14612 Y>RAM, 14613 JUMP(PAGEC); ----- ----- C0A 00000C05 32AF0910 ----- 14614 *+++ CMPE: COMPLETE MAIN PAGE ENTERED 14615 *ENTRY POINT FROM LPP59, SPMOD1, PPAGE2Y, PPAGE9, DIP28, HOLD3F 14616 *DIG11A, CKR129, SPCM1 14617 .ORG CMPE0, *COUNT=3 (CLEAR HOLD AND BROWSE IN PAGE0 CODE) 14618 MA(COUNT), 14619 Y(3), 14620 Y>RAM, 14621 JUMP(CMPE1); ----- ----- 4F1 00000BEA 78031100 ----- 14622 *ENTRY POINT FROM BROWSE1F, CHNG60T, CHNG62 14623 .ORG CMPE1, *BR=PEN 14624 MA(PEN), RAM>BR, 14625 JUMP(CMPE1A); ----- ----- BEA 00010C0B 1B000000 ----- 14626 .ORG CMPE1A, *Y=PEN-4 14627 A(-4), BRHI>B, ADD, 14628 JUMP(CMPE1B); ----- ----- C0B 00000C0C 00FC000C ----- 14629 .ORG CMPE1B, *RESET DIGIT ENTRY STATE 14630 *PEN=0 14631 *SUB-PAGE MODE? 14632 MA(PEN), 14633 A(0), BR.0F>B, OR, 14634 Y>RAM, 14635 JN(CMPE2F,CMPE2T); ----- ----- C0C 0000450C 1B001102 ----- 14636 *CLEARING SUB-PAGE MODE 14637 *CLEAR THE LATCH FLAGS OF THE MAIN PAGE NUMBER TO ROLL THE HEADER 14638 .ORG CMPE2F, *A=SPREG0 14639 MA(SPREG0), RAM>AR, 14640 JUMP(CMPE2A); ----- ----- 50C 00020C0D 54000000 ----- 14641 .ORG CMPE2A, *P= INDEX TO LAFx 14642 ARHI>A, B(LAF0), ADD, 14643 Y>PR, 14644 JUMP(CMPE2B); ----- ----- C0D 00000C0E 80400020 ----- 14645 .ORG CMPE2B, *LAFx=0 14646 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 14647 PR>MA, 14648 Y(0), 14649 Y>RAM, 14650 JUMP(CMPE2C); ----- ----- C0E 00100C0F 00001100 ----- 14651 .ORG CMPE2C, *A=SYS2 14652 MA(SYS2), RAM>AR, 14653 JUMP(CMPE2D); ----- ----- C0F 00020C10 09000000 ----- 14654 .ORG CMPE2D, *Y=S6T1 14655 *B=STOR6 14656 MA(STOR6), RAM>BR, 14657 AR>A, B(S6T1), AND, 14658 JUMP(CMPE2E); ----- ----- C10 00010C11 26200810 ----- 14659 .ORG CMPE2E, *IS TOP1 IN STORE 6? 14660 *IF NO, DO NOT SWAP BACK 14661 *S6T1=0 14662 MA(SYS2), 14663 AR>A, B(>FF-S6T1), AND, 14664 Y>RAM, 14665 JZ(CMPE2GF,CMPE2GT); ----- ----- C11 0000250E 09DF0910 ----- 14666 *SWAP STORES 4 AND 6 TO RESTORE TOP1 14667 * B=STOR6 14668 .ORG CMPE2GF, *A=STOR4 14669 MA(STOR4), RAM>AR, 14670 JUMP(CMPE2H); ----- ----- 50E 00020C12 24000000 ----- 14671 .ORG CMPE2H, *STORE 6-> STORE 4 14672 MA(STOR4), 14673 AR.0F>A, BR.F0>B, OR, 14674 Y>RAM, 14675 JUMP(CMPE2I); ----- ----- C12 00000C13 240011C3 ----- 14676 .ORG CMPE2I, *STORE 4-> STORE 6 14677 MA(STOR6), 14678 AR.F0>A, BR.0F>B, OR, 14679 Y>RAM, 14680 JUMP(CMPE2GT); ----- ----- C13 0000050F 260011D2 ----- 14681 *RE-INIT SUB-PAGE REGISTERS 14682 .ORG CMPE2GT, *CALL INSPRG0 14683 *A=2, RETURN TO CMPE5 14684 Y(2), 14685 Y>AR, 14686 JUMP(INSPRG0); ----- ----- 50F 002208D8 00021000 ----- 14687 *SUB-PAGE MODE NOT SET 14688 .ORG CMPE2T, * 14689 JUMP(CMPE5); ----- ----- 50D 000006B2 00000000 ----- 14690 .ORG CMPE5, *BR=VPPRG1 14691 MA(VPPRG1), RAM>BR, 14692 JUMP(CMPE6); ----- ----- 6B2 00010C14 61000000 ----- 14693 * 14694 * TCJ August 95 14695 * This zaps the 8/30 flag, do it cleanly 14696 * 14697 *.ORG CMPE6, *SET PROCESS NEW PAGE NUMBER FLAG 14698 * *CLEAR SUB-PAGE MODE, PCSP=0, HOSP=0, SPIN=0 14699 * MA(VPPRG1), 14700 * A(PMPN), BR.F0>B, OR, 14701 * Y>RAM, 14702 * JUMP(CMPE7); 14703 * 14704 .ORG CMPE6, *SET PROCESS NEW PAGE NUMBER FLAG 14705 A(PMPN), BR>B, OR, 14706 Y>AR, 14707 JUMP(CMPE6X); ----- ----- C14 00220C15 00201001 ----- 14708 * 14709 .ORG CMPE6X, *CLEAR SUB-PAGE MODE, PCSP=0, HOSP=0, SPIN=0 14710 AR>A, B(>FF-PCSP-HOSP-SPIN), AND, 14711 MA(VPPRG1), Y>RAM, 14712 JUMP(CMPE7); ----- ----- C15 00000C16 61F80910 ----- 14713 * 14714 .ORG CMPE7, *BR=STOR0 14715 MA(STOR0), RAM>BR, 14716 JUMP(CMPE8); ----- ----- C16 00010C17 20000000 ----- 14717 .ORG CMPE8, *PR=INDEX TO DISPLAY PAGE MAG 14718 A(M0), BRHI>B, ADD, 14719 Y>PR, 14720 JUMP(CMPE11); ----- ----- C17 00000C18 8010000C ----- 14721 .ORG CMPE11, *A=SYS1 14722 MA(SYS1), RAM>AR, 14723 JUMP(CMPE12); ----- ----- C18 00020C19 08000000 ----- 14724 .ORG CMPE12, *BR=DHREG 14725 *Y=PCM-2 14726 MA(DHREG), RAM>BR, 14727 ARHI>A, B(-2), ADD, 14728 JUMP(CMPE12A); ----- ----- C19 00010C1A 32FE0020 ----- 14729 .ORG CMPE12A, *ICP=0, NRH=0 14730 *FLOF MODE? 14731 MA(DHREG), 14732 A(>FF-ICP), BR>B, AND, 14733 Y>RAM, 14734 JZ(CMPE13F,CMPE13T); ----- ----- C1A 00002510 32BF0901 ----- 14735 *FLOF MODE, SKIP INVENTORY CHECK 14736 .ORG CMPE13T, *B=COUNT 14737 MA(COUNT), RAM>BR, 14738 JUMP(CMPE13A); ----- ----- 511 00010C1B 78000000 ----- 14739 .ORG CMPE13A, *SET 5TH LSB TO INHIBIT CGAP AND CPRF SET IN PAGE0 14740 *CODE 14741 MA(COUNT), 14742 A(>10), BR>B, OR, 14743 Y>RAM, 14744 JUMP(PAGE0); ----- ----- C1B 00000517 78101101 ----- 14745 *NOT FLOF, CHECK IF PAGE IS IN CYCLE 14746 .ORG CMPE13F, *B=MREG0 14747 *Y=PCM-1 14748 MA(MREG0), RAM>BR, 14749 ARHI>A, B(-1), ADD, 14750 JUMP(CMPE20); ----- ----- 510 00010C1C 39FF0020 ----- 14751 .ORG CMPE20, *A=INVCNT 14752 *Y=COOCD 14753 *NORMAL MODE? 14754 MA(INVCNT), RAM>AR, 14755 A(COOCD), BR>B, AND, 14756 JZ(CMPE21F,CMPE21T); ----- ----- C1C 00022512 38020801 ----- 14757 *NORMAL OR FAVP 14758 .ORG CMPE21F, *Y=INVENTORY COMPLETE FLAG 14759 *OUT OF CYCLE DISPLAY ENABLED? 14760 AR>A, B(1), AND, 14761 JZ(CMPE22F,CMPE22T); ----- ----- 512 00002514 00010810 ----- 14762 .ORG CMPE22F, *OOC DISPLAY DISABLED 14763 JUMP(PAGE0); ----- ----- 514 00000517 00000000 ----- 14764 .ORG CMPE22T, *OOC DISPLAY ENABLED 14765 *INVENTORY COMPLETE? 14766 *IF NO, GO STRAIGHT TO PAGE0 14767 *STORE= >80 (SET MASK FOR DBB DATA) 14768 MA(STORE), 14769 Y(>80), 14770 Y>RAM, 14771 JZ(CMPE23F,PAGE0); ----- ----- 515 00002516 77801100 ----- 14772 *TOP 14773 .ORG CMPE21T, *A=TOPRG1 14774 MA(TOPRG1), RAM>AR, 14775 JUMP(CMPE30); ----- ----- 513 00020C1D 37000000 ----- 14776 .ORG CMPE30, *Y=BTTCAP 14777 AR>A, B(BTTCAP), AND, 14778 JUMP(CMPE31); ----- ----- C1D 00000C1E 00400810 ----- 14779 .ORG CMPE31, *BTT TABLE IN MEMORY? 14780 JZ(CMPE32F,CMPE32T); ----- ----- C1E 00002518 00000000 ----- 14781 .ORG CMPE32T, *NO BTT YET 14782 *### HOW ABOUT PARALLEL TOP !!! 14783 JUMP(PAGE0); ----- ----- 519 00000517 00000000 ----- 14784 .ORG CMPE32F, *YES, 14785 *STORE= >07 (SET MASK FOR DBB RETURN DATA) 14786 MA(STORE), 14787 Y(>07), 14788 Y>RAM, 14789 JUMP(CMPE23F); ----- ----- 518 00000516 77071100 ----- 14790 * STORE= MASK FOR DBB DATA 14791 .ORG CMPE23F, *MAKE DISLAY 14792 *POINT TO DISPLAY PAGE FOR PNTIN0 14793 *A=DPM 14794 Y(DPM), 14795 Y>AR, 14796 JUMP(CMPE24); ----- ----- 516 00220C1F 00681000 ----- 14797 .ORG CMPE24, *CALL PNTIN0 TO SEE IF IN CYCLE 14798 *RETURN=9, RETURN TO CMPE40 14799 MA(RETURN), 14800 Y(9), 14801 Y>RAM, 14802 JUMP(PNTIN0); ----- ----- C1F 0000086F 7C091100 ----- 14803 * A=DBB DATA, COUNT=PAGE0 I/P PAR, STORE= MASK FOR DBB DATA 14804 .ORG CMPE40, *B= STORE 14805 MA(STORE), RAM>BR, 14806 JUMP(CMPE41); ----- ----- 799 00010C20 77000000 ----- 14807 .ORG CMPE41, *Y=DBB DATA AND MASK 14808 *A=STOR0 14809 MA(STOR0), RAM>AR, 14810 AR>A, BR>B, AND, 14811 JUMP(CMPE42); ----- ----- C20 00020C21 20000811 ----- 14812 .ORG CMPE42, *PAGE IN CYCLE? 14813 *P= END OF DISPLAY 14814 Y(31), 14815 Y>PR, 14816 JZ(CMPE43F,CMPE43T); ----- ----- C21 0000251A 801F1000 ----- 14817 .ORG CMPE43F, *PAGE IS IN CYCLE 14818 JUMP(PAGE0); ----- ----- 51A 00000517 00000000 ----- 14819 *GENERATE PAGE NOT IN CYCLE DISPLAY 14820 * A=STOR0 14821 .ORG CMPE43T, *RWL= LATCH FOR STORE 0 14822 MA(RWL), 14823 ARHI>A, B(0), OR, 14824 Y>RAM, Y>IO, 14825 JUMP(CMPE47F); ----- ----- 51B 0000051C 0B005120 ----- 14826 *START BY CLEARING HEADER 14827 .ORG CMPE47F, *B=P, WRITE A SPACE 14828 PR>BR, 14829 Y(>20), 14830 Y>DR, 14831 JUMP(CMPE45); ----- ----- 51C 00411C22 00201000 ----- 14832 .ORG CMPE45, *Y=B-8 14833 A(-8), BR>B, ADD, 14834 JUMP(CMPE46); ----- ----- C22 00000C23 00F80001 ----- 14835 .ORG CMPE46, *POINT TO NEXT COL, LAST COL? 14836 *A=DHREG 14837 MA(DHREG), RAM>AR, 14838 A(-1), BR>B, ADD, 14839 Y>PR, 14840 JZ(CMPE47F,CMPE47T); ----- ----- C23 0002251C B2FF0001 ----- 14841 * 14842 .ORG CMPE47T, *P=8 14843 Y(8), 14844 Y>PR, 14845 JUMP(CMPE48); ----- ----- 51D 00000C24 80081000 ----- 14846 .ORG CMPE48, *8TH CHAR= FLASH 14847 Y(>08), 14848 Y>DR, 14849 JUMP(CMPE49); ----- ----- C24 00001C25 00081000 ----- 14850 .ORG CMPE49, *P=9 14851 Y(9), 14852 Y>PR, 14853 JUMP(CMPE50); ----- ----- C25 00000C26 80091000 ----- 14854 .ORG CMPE50, *9TH CHAR= ALPHA RED 14855 Y(>01), 14856 Y>DR, 14857 JUMP(CMPE51); ----- ----- C26 00001C27 00011000 ----- 14858 .ORG CMPE51, *P=10 14859 Y(10), 14860 Y>PR, 14861 JUMP(CMPE52); ----- ----- C27 00000C28 800A1000 ----- 14862 .ORG CMPE52, *10TH CHAR='>' 14863 Y(>3E), 14864 Y>DR, 14865 JUMP(CMPE53); ----- ----- C28 00001C29 003E1000 ----- 14866 .ORG CMPE53, *SET P TO COL BEFORE PAGE NUMBER DISPLAY 14867 *P=11 14868 Y(11), 14869 Y>PR, 14870 JUMP(CMPE54); ----- ----- C29 00000C2A 800B1000 ----- 14871 .ORG CMPE54, *CALL PND10 TO WRITE PAGE NUMBER 14872 *RETURN=3, RETURN TO CMPE55T 14873 MA(RETURN), 14874 Y(3), 14875 Y>RAM, 14876 JUMP(PND10); ----- ----- C2A 00000B0B 7C031100 ----- 14877 .ORG CMPE55T, *P=16 14878 Y(16), 14879 Y>PR, 14880 JUMP(CMPE56); ----- ----- 637 00000C2B 80101000 ----- 14881 .ORG CMPE56, *16TH CHAR='<' 14882 Y(>3C), 14883 Y>DR, 14884 JUMP(CMPE57); ----- ----- C2B 00001C2C 003C1000 ----- 14885 .ORG CMPE57, *P=17 14886 Y(17), 14887 Y>PR, 14888 JUMP(CMPE58); ----- ----- C2C 00000C2D 80111000 ----- 14889 .ORG CMPE58, *17TH CHAR= STEADY 14890 Y(>09), 14891 Y>DR, 14892 JUMP(CMPE59); ----- ----- C2D 00001C2E 00091000 ----- 14893 .ORG CMPE59, *P=18 14894 *B=COUNT 14895 MA(COUNT), RAM>BR, 14896 Y(18), 14897 Y>PR, 14898 JUMP(CMPE60); ----- ----- C2E 00010C2F F8121000 ----- 14899 .ORG CMPE60, *18TH CHAR= ALPHA GREEN 14900 Y(>02), 14901 Y>DR, 14902 JUMP(CMPE68); ----- ----- C2F 00001C30 00021000 ----- 14903 .ORG CMPE68, *SET 4LSB TO START POOCD TIME OUT IN PAGE0 14904 MA(COUNT), 14905 A(>08), BR>B, OR, 14906 Y>RAM, 14907 JUMP(PAGE0); ----- ----- C30 00000517 78081101 ----- 14908 *+++ PSPE: PARTIAL SUB-PAGE ENTERED 14909 .ORG PSPE0, *AR=VPPRG1 14910 MA(VPPRG1), RAM>AR, 14911 JUMP(PSPE1); ----- ----- BEB 00020C31 61000000 ----- 14912 .ORG PSPE1, *HOSP=1 14913 MA(VPPRG1), 14914 AR>A, B(HOSP), OR, 14915 Y>RAM, 14916 JUMP(PSPE2); ----- ----- C31 00000C32 61041110 ----- 14917 .ORG PSPE2, *A=DHREG 14918 MA(DHREG), RAM>AR, 14919 JUMP(PSPE3); ----- ----- C32 00020C33 32000000 ----- 14920 .ORG PSPE3, *NRH=1, ICP=1 14921 MA(DHREG), 14922 AR>A, B(NRH+ICP), OR, 14923 Y>RAM, 14924 JUMP(PAGEA); ----- ----- C33 00000BC1 32501110 ----- 14925 *+++ PMPE: PARTIAL MAIN PAGE ENTERED 14926 .ORG PMPE0, *BR=VPPRG1 14927 MA(VPPRG1), RAM>BR, 14928 JUMP(PMPE1); ----- ----- C07 00010C34 61000000 ----- 14929 .ORG PMPE1, *CLR PROCESS NEW PAGE NUMBER FLAG 14930 MA(VPPRG1), 14931 A(>FF-PMPN), BR>B, AND, 14932 Y>RAM, 14933 JUMP(PMPE2); ----- ----- C34 00000C35 61DF0901 ----- 14934 .ORG PMPE2, *AR=DHREG 14935 MA(DHREG), RAM>AR, 14936 JUMP(PMPE3); ----- ----- C35 00020C36 32000000 ----- 14937 .ORG PMPE3, *STOP ROLLING HEADERS 14938 *NRH=1 14939 *ICP=1 14940 MA(DHREG), 14941 AR>A, B(ICP+NRH), OR, 14942 Y>RAM, 14943 JUMP(PMPE3A); ----- ----- C36 00000C37 32501110 ----- 14944 *CLEAR HOLD MODE, CAN'T DO THIS WITH PAGE ROUTINE BECAUSE 14945 *PMPN SHOULD BE 0 14946 .ORG PMPE3A, *AR=VDPTXT 14947 MA(VDPTXT), RAM>AR, 14948 JUMP(PMPE3B); ----- ----- C37 00020C38 2B000000 ----- 14949 .ORG PMPE3B, *STOP=0 14950 MA(VDPTXT), 14951 AR>A, B(>FF-STOP), AND, 14952 Y>RAM, 14953 JUMP(PMPE4); ----- ----- C38 00000499 2BFB0910 ----- 14954 *ENTRY POINT FOR SET HOLD ROUTINE 14955 *ENTRY POINT FROM TENS ENTERED (DIG12A) 14956 .ORG PMPE4, *COUNT=>12 14957 *CLEAR BROWSE AND INHIBIT MENU INIT IN PAGE0 CODE 14958 MA(COUNT), 14959 Y(>12), 14960 Y>RAM, 14961 JUMP(NDP0); ----- ----- 499 00000C39 78121100 ----- 14962 *+++ NDP: NULLIFY DISPLAY PAGE LATCH 14963 .ORG NDP0, *BR=STOR0 14964 MA(STOR0), RAM>BR, 14965 JUMP(NDP1); ----- ----- C39 00010C3A 20000000 ----- 14966 .ORG NDP1, *PR=INDEX TO DISPLAY PAGE MAG 14967 A(M0), BRHI>B, ADD, 14968 Y>PR, 14969 JUMP(NDP2); ----- ----- C3A 00000C3B 8010000C ----- 14970 .ORG NDP2, *BR=DISPLAY PAGE MAG 14971 PR>MA, RAM>BR, 14972 JUMP(NDP3); ----- ----- C3B 00110C3C 00000000 ----- 14973 .ORG NDP3, *INHIBIT DISPLAY PAGE 14974 *DISPLAY PAGE MAG=>F 14975 PR>MA, 14976 A(>0F), BR.F0>B, OR, 14977 Y>RAM, Y>IO, 14978 JUMP(PAGE0); ----- ----- C3C 00100517 000F5103 ----- 14979 *+++ PPB: UPDATE PREVIOUS PAGE BUFFER 14980 * P=RETURN POINTER, B=PEN ###COULD SHORTEN WITH A LOOP 14981 .ORG PPB0, *BR=DPM, AR=DPM 14982 *Y=PEN 14983 MA(DPM), RAM>BR, RAM>AR, 14984 A(0), BRHI>B, OR, 14985 JUMP(PPB1); ----- ----- 4D7 00030C3D 6800100C ----- 14986 .ORG PPB1, *COMPLETE MAIN PAGE? 14987 JZ(PPB1AF,PPB1AT); ----- ----- C3D 0000251E 00000000 ----- 14988 *INCOMPLETE MAIN PAGE, DO NOT OVERWRITE BUFFER 14989 .ORG PPB1AF, *BR=RETURN POINTER 14990 PR>BR, 14991 JUMP(PPB9); ----- ----- 51E 00410C3E 00000000 ----- 14992 *COMPLETE MAIN PAGE, OK TO UPDATE BUFFER 14993 .ORG PPB1AT, *LPM=DPM 14994 MA(DPM), 14995 AR.F0>A, BRHI>B, OR, 14996 Y>RAM, 14997 JUMP(PPB2); ----- ----- 51F 00000C3F 680011DC ----- 14998 .ORG PPB2, *BR=DPT, AR=DPT 14999 MA(DPT), RAM>BR, RAM>AR, 15000 JUMP(PPB3); ----- ----- C3F 00030C40 69000000 ----- 15001 .ORG PPB3, *LPT=DPT 15002 MA(DPT), 15003 AR.F0>A, BRHI>B, OR, 15004 Y>RAM, 15005 JUMP(PPB4); ----- ----- C40 00000C41 690011DC ----- 15006 .ORG PPB4, *BR=DPU, AR=DPU 15007 MA(DPU), RAM>BR, RAM>AR, 15008 JUMP(PPB5); ----- ----- C41 00030C42 6A000000 ----- 15009 .ORG PPB5, *LPU=DPU 15010 *BR=RETURN POINTER 15011 PR>BR, 15012 MA(DPU), 15013 AR.F0>A, BRHI>B, OR, 15014 Y>RAM, 15015 JUMP(PPB9); ----- ----- C42 00410C3E 6A0011DC ----- 15016 * 15017 .ORG PPB9, *Y=RETURN POINTER 15018 *AR=DIGIT FOR DIG30Y 15019 MA(STORE), RAM>AR, 15020 A(7), BR>B, AND, 15021 JUMP(PPB10); ----- ----- C3E 00020C43 77070801 ----- 15022 .ORG PPB10, *CASE RETURN POINTER=? 15023 *Y=DIGIT-8 FOR DIG30Y 15024 *B=SYS1 FOR IKR10 15025 MA(SYS1), RAM>BR, 15026 AR>A, B(-8), ADD, 15027 JY(DIG30Y); ----- ----- C43 0001C2D8 08F80010 ----- 15028 *+++ PAGE: COMMON EXIT CODE FOR PAGE ENTRY COMMANDS 15029 *ENTRY POINT WHEN SETTING SUB-PAGE MODE 15030 .ORG PAGEA, *PR=3 15031 *CLEAR HOLD AND BROWSE 15032 Y(3), 15033 Y>PR, 15034 JUMP(PAGE1); ----- ----- BC1 00000C44 80031000 ----- 15035 *ENTRY POINT WHEN SETTING HOLD IN SUB-PAGE MODE 15036 .ORG PAGEB, *PR=0 15037 Y(0), 15038 Y>PR, 15039 JUMP(PAGE1); ----- ----- BF1 00000C44 80001000 ----- 15040 .ORG PAGEC, *PR=1 15041 *CLEAR HOLD 15042 Y(1), 15043 Y>PR, 15044 JUMP(PAGE1); ----- ----- C05 00000C44 80011000 ----- 15045 * 15046 .ORG PAGE0, *BR=COUNT 15047 MA(COUNT), RAM>BR, 15048 JUMP(PAGE0A); ----- ----- 517 00010C45 78000000 ----- 15049 .ORG PAGE0A, *PR=BR 15050 A(0), BR>B, OR, 15051 Y>PR, 15052 JUMP(PAGE1); ----- ----- C45 00000C44 80001001 ----- 15053 * Flags in P have been set to have the following effects:- 15054 * 15055 * 1 lsb=1: clear HOLD 15056 * 2 lsb=1: clear BROWSE 15057 * 3 lsb=1: clear SINP (search for initial page) 15058 * 4 lsb=1: start POOCD 5s time out 15059 * (else terminate time outs) 15060 * 5 lsb=0: init MENU (CPRF=1, CGAP=1) 15061 * 15062 *1 lsb 15063 .ORG PAGE1, *BR=PR 15064 PR>BR, 15065 JUMP(PAGE1A); ----- ----- C44 00410C46 00000000 ----- 15066 .ORG PAGE1A, *AR=VDPTXT 15067 *Y=PR LSB 15068 MA(VDPTXT), RAM>AR, 15069 A(1), BR>B, AND, 15070 JUMP(PAGE2); ----- ----- C46 00020C47 2B010801 ----- 15071 .ORG PAGE2, *Y=STOP, PR LSB? 15072 *BR=VPPRG1 15073 MA(VPPRG1), RAM>BR, 15074 AR>A, B(STOP), AND, 15075 JZ(PAGE3F,PAGE3T); ----- ----- C47 00012520 61040810 ----- 15076 .ORG PAGE3T, *PR LSB NOT SET 15077 JUMP(PAGE4T); ----- ----- 521 00000523 00000000 ----- 15078 *PR LSB SET, CLEAR STOP 15079 .ORG PAGE3F, *STOP=0 15080 *WAS STOP=1? 15081 MA(VDPTXT), 15082 AR>A, B(>FF-STOP), AND, 15083 Y>RAM, 15084 JZ(PAGE4F,PAGE4T); ----- ----- 520 00002522 2BFB0910 ----- 15085 .ORG PAGE4F, *CLEARING STOP 15086 *PMPN=1 (RE-ENTER PAGE NUMBER) 15087 MA(VPPRG1), 15088 A(PMPN), BR>B, OR, 15089 Y>RAM, 15090 JUMP(PAGE4T); ----- ----- 522 00000523 61201101 ----- 15091 *2 lsb 15092 .ORG PAGE4T, *BR=PR, 15093 *AR=DHREG 15094 PR>BR, 15095 MA(DHREG), RAM>AR, 15096 JUMP(PAGE5); ----- ----- 523 00430C48 32000000 ----- 15097 .ORG PAGE5, *Y=PR 2ND LSB 15098 A(2), BR>B, AND, 15099 JUMP(PAGE6); ----- ----- C48 00000C49 00020801 ----- 15100 .ORG PAGE6, *CLEAR BROWSE? 15101 *BR=VPPRG1 15102 MA(VPPRG1), RAM>BR, 15103 JZ(PAGE7F,PAGE7T); ----- ----- C49 00012524 61000000 ----- 15104 *PR 2ND LSB SET, CLEAR BROWSE 15105 .ORG PAGE7F, *BWSE=0 15106 MA(DHREG), 15107 AR>A, B(>FF-BWSE), AND, 15108 Y>RAM, 15109 JUMP(PAGE8); ----- ----- 524 00000C4A 32FE0910 ----- 15110 .ORG PAGE8, *SLFB=0 15111 MA(VPPRG1), 15112 A(>FF-SLFB), BR>B, AND, 15113 Y>RAM, 15114 JUMP(PAGE7T); ----- ----- C4A 00000525 61BF0901 ----- 15115 *3 lsb 15116 .ORG PAGE7T, *BR=PR 15117 *AR=VDPTXT 15118 PR>BR, 15119 MA(VDPTXT), RAM>AR, 15120 JUMP(PAGE7A); ----- ----- 525 00430C4B 2B000000 ----- 15121 .ORG PAGE7A, *Y=PR 3RD LSB 15122 A(>04), BR>B, AND, 15123 JUMP(PAGE7B); ----- ----- C4B 00000C4C 00040801 ----- 15124 .ORG PAGE7B, *CHANNEL CHANGE INIT? 15125 *BR=EXPREG 15126 * MA(EXPREG), RAM>BR, *TCJ WSS 15127 MA(VPPRG1), RAM>BR, 15128 * 15129 JZ(PAGE9F,PAGE9T); ----- ----- C4C 00012526 61000000 ----- 15130 *PR 3RD LSB NOT SET, CLEAR STOP LOOKING FOR 8/30 PAGE 15131 .ORG PAGE9T, *NO, OK TO CLEAR SINP 15132 *SINP=0 15133 * MA(EXPREG), *TCJ WSS 15134 MA(VPPRG1), 15135 * 15136 A(>FF-SINP), BR>B, AND, 15137 Y>RAM, 15138 JUMP(PAGE9F); ----- ----- 527 00000526 61F70901 ----- 15139 .ORG PAGE9F, *Y=UEXB 15140 *B=MREG0 15141 MA(MREG0), RAM>BR, 15142 AR>A, B(UEXB), AND, 15143 JUMP(PAGE10); ----- ----- 526 00010C4D 39010810 ----- 15144 .ORG PAGE10, *UEXB? 15145 *Y=CAEXP 15146 A(CAEXP), BR>B, AND, 15147 JZ(PAGE10F,PAGE10T); ----- ----- C4D 00002528 00200801 ----- 15148 .ORG PAGE10T, *NOT EXPAND BOTTOM 15149 JUMP(PAGE11F); ----- ----- 529 0000052A 00000000 ----- 15150 .ORG PAGE10F, *EXPAND BOTTOM, CAEXP? 15151 JZ(PAGE11F,PAGE11T); ----- ----- 528 0000252A 00000000 ----- 15152 .ORG PAGE11T, *EXPAND BOTTOM, CAEXP=0, SET EXPAND TOP 15153 MA(VDPTXT), 15154 AR>A, B(UEXT+UEXB), XOR, 15155 Y>RAM, 15156 JUMP(PAGE11F); ----- ----- 52B 0000052A 2B031910 ----- 15157 *4 lsb 15158 .ORG PAGE11F, *A=DHREG 15159 MA(DHREG), RAM>AR, 15160 JUMP(PAGE12); ----- ----- 52A 00020C4E 32000000 ----- 15161 .ORG PAGE12, *POOCD=0, TOD=0 15162 *B=P 15163 PR>BR, 15164 MA(DHREG), 15165 AR>A, B(>FF-POOCD-TOD), AND, 15166 Y>AR, Y>RAM, 15167 JUMP(PAGE12A); ----- ----- C4E 00630C4F 32D70910 ----- 15168 .ORG PAGE12A, *Y=PR 4TH LSB 15169 A(>08), BR>B, AND, 15170 JUMP(PAGE12B); ----- ----- C4F 00000C50 00080801 ----- 15171 .ORG PAGE12B, *POOCD TIME OUT? 15172 *SET 5S TIME OUT 15173 MA(TIMOUT), 15174 Y(>FF), 15175 Y>RAM, 15176 JZ(PAGE12CF,PAGE12CT); ----- ----- C50 0000252C 3BFF1100 ----- 15177 .ORG PAGE12CF, *POOCD TIME OUT 15178 *POOCD=1 15179 MA(DHREG), 15180 AR>A, B(POOCD), OR, 15181 Y>RAM, 15182 JUMP(PAGE12CT); ----- ----- 52C 0000052D 32201110 ----- 15183 *5 lsb 15184 .ORG PAGE12CT, *Y=PR 5TH LSB 15185 A(>10), BR>B, AND, 15186 JUMP(PAGE13A); ----- ----- 52D 00000C51 00100801 ----- 15187 .ORG PAGE13A, *INIT MENU? 15188 *A=EXPREG 15189 MA(EXPREG), RAM>AR, 15190 JZ(PAGE14F,PAGE14T); ----- ----- C51 0002252E 63000000 ----- 15191 .ORG PAGE14T, *INIT MENU 15192 MA(EXPREG), 15193 AR>A, B(CGAP+CPRF), OR, 15194 Y>RAM, 15195 JUMP(PAGE14F); ----- ----- 52F 0000052E 630C1110 ----- 15196 *EXIT PAGE ENTRY CODE 15197 .ORG PAGE14F, 15198 JUMP(DI120); ----- ----- 52E 000005BC 00000000 ----- 15199 *///3- 15200 * BR=RCSTAT, AR=INSTRUCTION 15201 .ORG DI3X, *CASE INS HIGH NIB=>3 15202 *Y=VBI, B=SCREEN 15203 MA(SCREEN), RAM>BR, 15204 A(%01000000), RCS>B, AND, 15205 JY(DI30Y); ----- ----- 203 0001C3B0 6040080B ----- 15206 .ORG DI30Y, *CASE INS >30 15207 *TEXP 15208 *A=VDPTXT, P=UEXT 15209 MA(VDPTXT), RAM>AR, 15210 Y(UEXT), 15211 Y>PR, 15212 JUMP(GEXP0); ----- ----- 3B0 00020C52 AB021000 ----- 15213 .ORG DI31, *CASE INS >31 15214 *BEXP 15215 *A=VDPTXT, P=UEXB 15216 MA(VDPTXT), RAM>AR, 15217 Y(UEXB), 15218 Y>PR, 15219 JUMP(GEXP0); ----- ----- 3B1 00020C52 AB011000 ----- 15220 .ORG DI32, *CASE INS >32 15221 *NEXP 15222 *A=VDPTXT, P=0 15223 MA(VDPTXT), RAM>AR, 15224 Y(0), 15225 Y>PR, 15226 JUMP(GEXP0); ----- ----- 3B2 00020C52 AB001000 ----- 15227 .ORG DI33, *CASE INS >33 15228 JUMP(DI100); ----- ----- 3B3 000000D1 00000000 ----- 15229 .ORG DI34, *CASE INS >34 15230 JUMP(DI100); ----- ----- 3B4 000000D1 00000000 ----- 15231 .ORG DI35, *CASE INS >35 15232 JUMP(DI100); ----- ----- 3B5 000000D1 00000000 ----- 15233 .ORG DI36, *CASE INS >36 15234 JUMP(DI100); ----- ----- 3B6 000000D1 00000000 ----- 15235 .ORG DI37, *CASE INS >37 15236 JUMP(DI100); ----- ----- 3B7 000000D1 00000000 ----- 15237 .ORG DI38, *CASE INS >38 15238 *RED 15239 *VBI? 15240 *Y=TDISP 15241 *B=VDP0 15242 MA(VDP0), RAM>BR, 15243 A(TDISP), BR>B, AND, 15244 JZ(KEY0F,KEY0T); ----- ----- 3B8 00012530 00040801 ----- 15245 .ORG DI39, *CASE INS >39 15246 *GREEN 15247 *VBI? 15248 *Y=TDISP 15249 *B=VDP0 15250 MA(VDP0), RAM>BR, 15251 A(TDISP), BR>B, AND, 15252 JZ(KEY0F,KEY0T); ----- ----- 3B9 00012530 00040801 ----- 15253 .ORG DI3A, *CASE INS >3A 15254 *YELLOW 15255 *VBI? 15256 *Y=TDISP 15257 *B=VDP0 15258 MA(VDP0), RAM>BR, 15259 A(TDISP), BR>B, AND, 15260 JZ(KEY0F,KEY0T); ----- ----- 3BA 00012530 00040801 ----- 15261 .ORG DI3B, *CASE INS >3B 15262 *CYAN 15263 *VBI? 15264 *Y=TDISP 15265 *B=VDP0 15266 MA(VDP0), RAM>BR, 15267 A(TDISP), BR>B, AND, 15268 JZ(KEY0F,KEY0T); ----- ----- 3BB 00012530 00040801 ----- 15269 .ORG DI3C, *CASE INS >3C 15270 *INDEX 15271 *VBI? 15272 *Y=TDISP, A=PEN 15273 MA(PEN), RAM>AR, 15274 A(TDISP), BR>B, AND, 15275 JZ(IKR0F,IKR0T); ----- ----- 3BC 00022532 1B040801 ----- 15276 .ORG DI3D, *CASE INS >3D 15277 *R24PIC 15278 *THIS WAS USED IN UNITEXT TO CLEAR THE STATUS DISPLAY, 15279 *THEREFORE DO THE SAME AS CSTAT 15280 JUMP(DI1D); ----- ----- 3BD 0000022D 00000000 ----- 15281 .ORG DI3E, *CASE INS >3E 15282 JUMP(DI100); ----- ----- 3BE 000000D1 00000000 ----- 15283 .ORG DI3F, *CASE INS >3F 15284 JUMP(DI100); ----- ----- 3BF 000000D1 00000000 ----- 15285 */// 15286 ***KEY: COLOUR KEY PRESSED 15287 * B=VDP0, LAST Y WAS TDISP 15288 .ORG KEY0F, *IN VBI, DELAY 15289 *A=POLREG 15290 MA(POLREG), RAM>AR, 15291 JUMP(DI110); ----- ----- 530 00020582 10000000 ----- 15292 .ORG KEY0T, *TEXT DISPLAYED? 15293 *Y=R24ON 15294 *A=PEN 15295 MA(PEN), RAM>AR, 15296 A(R24ON), BR>B, AND, 15297 JZ(KEY1F,KEY1T); ----- ----- 531 00022534 1B400801 ----- 15298 .ORG KEY1T, *TEXT NOT DISPLAYED, EXIT 15299 JUMP(DI100); ----- ----- 535 000000D1 00000000 ----- 15300 .ORG KEY1F, *R24ON? 15301 *Y=PEN-4 15302 *B=SYS1 15303 MA(SYS1), RAM>BR, 15304 ARHI>A, B(-4), ADD, 15305 JZ(KEY1BF,KEY1BT); ----- ----- 534 00012536 08FC0020 ----- 15306 .ORG KEY1BT, *AUTO PROMPTS ENABLED AND USER CAN NOT SEE ROW 24 15307 *TIME OUT DISPLAY 15308 *A=DHREG 15309 MA(DHREG), RAM>AR, 15310 JUMP(STOD0); ----- ----- 537 00020BFA 32000000 ----- 15311 .ORG KEY1BF, *SUB-PAGE MODE? 15312 *ELSE, JUMP TO CKR ROUTINE 15313 *A=LSTINS 15314 MA(LSTINS), RAM>AR, 15315 JN(KEY2F,CKR0T); ----- ----- 536 00024538 2E000000 ----- 15316 *SUB-PAGE MODE 15317 .ORG KEY2F, *SUB-PAGE MODE 15318 *Y=INSRUCTION - >38 15319 AR>A, B(->38), ADD, 15320 JUMP(KEY3); ----- ----- 538 00000C53 00C80010 ----- 15321 .ORG KEY3, *RED? 15322 *Y=INSRUCTION - >39 15323 AR>A, B(->39), ADD, 15324 JZ(KEY4F,KEY4T); ----- ----- C53 0000253A 00C70010 ----- 15325 .ORG KEY4T, *RED, JUMP TO DIP SUB-PAGE ROUTINE 15326 *SET LSTINS TO INDICATE PAGE- TO DIP CODE 15327 MA(LSTINS), 15328 Y(>15), 15329 Y>RAM, 15330 JUMP(DIP1F); ----- ----- 53B 000004D4 2E151100 ----- 15331 .ORG KEY4F, *GREEN? 15332 JZ(KEY5F,KEY5T); ----- ----- 53A 0000253C 00000000 ----- 15333 .ORG KEY5T, *GREEN, JUMP TO DIP SUB-PAGE ROUTINE 15334 *SET LSTINS TO INDICATE PAGE+ TO DIP CODE 15335 MA(LSTINS), 15336 Y(>16), 15337 Y>RAM, 15338 JUMP(DIP1F); ----- ----- 53D 000004D4 2E161100 ----- 15339 .ORG KEY5F, *THIS KEY DOES NOTHING IN SUB-PAGE MODE 15340 JUMP(DI100); ----- ----- 53C 000000D1 00000000 ----- 15341 ***IKR: INDEX KEY ROUTINE 15342 * 15343 * A=PEN, LAST Y WAS TDISP 15344 .ORG IKR0F, *IN VBI, DELAY 15345 *A=POLREG 15346 MA(POLREG), RAM>AR, 15347 JUMP(DI110); ----- ----- 532 00020582 10000000 ----- 15348 .ORG IKR0T, *TEXT DISPLAYED? 15349 JZ(IKR1F,IKR1T); ----- ----- 533 0000253E 00000000 ----- 15350 .ORG IKR1T, *TEXT NOT DISPLAYED, EXIT 15351 JUMP(DI100); ----- ----- 53F 000000D1 00000000 ----- 15352 .ORG IKR1F, *TELETEXT DISPLAYED 15353 *CALL PPB0 TO UPDATE PREVIOUS PAGE BUFFER 15354 *P=6, RETURN TO IKR10 15355 *B=PEN 15356 MA(PEN), RAM>BR, 15357 Y(6), 15358 Y>PR, 15359 JUMP(PPB0); ----- ----- 53E 000104D7 9B061000 ----- 15360 * B=SYS2 15361 .ORG IKR10, *Y=PCM-1 15362 A(-1), BRHI>B, ADD, 15363 JUMP(IKR11); ----- ----- 2DE 00000C54 00FF000C ----- 15364 .ORG IKR11, *Y=PCM-2 15365 *TOP MODE? 15366 A(-2), BRHI>B, ADD, 15367 JZ(IKR12F,IKR12T); ----- ----- C54 00002550 00FE000C ----- 15368 .ORG IKR12F, *FLOF MODE? 15369 *A=INDEX POINTER FOR GFL0 15370 Y(4), 15371 Y>AR, 15372 JZ(IKR13F,IKR13T); ----- ----- 550 00222552 00041000 ----- 15373 *FLOF MODE 15374 * A=4 15375 .ORG IKR13T, *CALL GFL0 TO GET LINK 15376 *RETURN=1, RETURN TO IKR20 15377 MA(RETURN), 15378 Y(1), 15379 Y>RAM, 15380 JUMP(GFL0); ----- ----- 553 000009EE 7C011100 ----- 15381 .ORG IKR20, *NULL LINK? 15382 *A=EXPREG 15383 * MA(EXPREG), RAM>AR, *TCJ WSS 15384 MA(VPPRG1), RAM>AR, 15385 * 15386 JZ(IKR21F,IKR21T); ----- ----- 061 00022554 61000000 ----- 15387 .ORG IKR21F, *NULL LINK 15388 *SINP=1 TO LOOK FOR 8/30 INIT PAGE 15389 * MA(EXPREG), *TCJ WSS 15390 MA(VPPRG1), 15391 * 15392 AR>A, B(SINP), OR, 15393 Y>RAM, 15394 JUMP(IKR13F); ----- ----- 554 00000552 61081110 ----- 15395 .ORG IKR21T, *COPY Px TO Dx AND GO TO CMPE0 15396 JUMP(DIP20Y); ----- ----- 555 00000730 00000000 ----- 15397 *TOP MODE 15398 .ORG IKR12T, *A=POINTER TO DISPLAY PAGE 15399 Y(DPM), 15400 Y>AR, 15401 JUMP(IKR30); ----- ----- 551 00220C55 00681000 ----- 15402 .ORG IKR30, *CALL PNTIN0 TO GET BTT POINTER 15403 *RETURN=10, RETURN TO IKR40 15404 MA(RETURN), 15405 Y(10), 15406 Y>RAM, 15407 JUMP(PNTIN0); ----- ----- C55 0000086F 7C0A1100 ----- 15408 * B=BTT POINTER 15409 .ORG IKR40, *Y=B-40 15410 A(-40), BR>B, ADD, 15411 JUMP(IKR41); ----- ----- 79A 00000C56 00D80001 ----- 15412 .ORG IKR41, *IS DISPLAY PAGE PAGE 100? 15413 *SET MASK TO LOOK FOR TV PAGE 15414 MA(MASK), 15415 Y(>08), 15416 Y>RAM, 15417 JZ(IKR42F,IKR42T); ----- ----- C56 00002556 73081100 ----- 15418 .ORG IKR42F, *NOT ON PAGE 100, GO TO PAGE 100 15419 JUMP(IKR13F); ----- ----- 556 00000552 00000000 ----- 15420 .ORG IKR42T, *ON PAGE 100, SEARCH FOR TV PAGE 15421 *CALL SBT0A 15422 *RETURN=3, RETURN TO INTPN0 15423 *CALL INTPN0 15424 *RETURN=3, RETURN TO IKR50, 15425 MA(RETURN), 15426 Y(3), 15427 Y>RAM, 15428 JUMP(SBT0A); ----- ----- 557 000004DA 7C031100 ----- 15429 .ORG IKR50, *COPY Px TO Dx AND GO TO CMPE0 15430 JUMP(DIP20Y); ----- ----- 733 00000730 00000000 ----- 15431 *NORMAL OR FAVP, ENTER PAGE 100 15432 *NEED TO SET UP COUNT FOR PAGE 0 15433 .ORG IKR13F, *COUNT=>3 (CLEAR BROWSE AND HOLD) 15434 MA(COUNT), 15435 Y(3), 15436 Y>RAM, 15437 JUMP(CHNG60F); ----- ----- 552 0000068A 78031100 ----- 15438 */// 15439 ***CKR: COLOURED KEY ROUTINE 15440 * B=SYS1 15441 .ORG CKR0T, *Y=PCM-2 15442 *A=LSTINS 15443 MA(LSTINS), RAM>AR, 15444 A(-2), BRHI>B, ADD, 15445 JUMP(CKR1); ----- ----- 539 00020C57 2EFE000C ----- 15446 .ORG CKR1, *FLOF MODE? 15447 *Y=PCM-3 15448 A(-3), BRHI>B, ADD, 15449 JZ(CKR1AF,CKR1AT); ----- ----- C57 00002558 00FD000C ----- 15450 .ORG CKR1AF, *NOT FLOF, FAVP? 15451 *A=LSTINS->36 (STORE POINTER FOR GFP0T) 15452 AR>A, B(->36), ADD, 15453 Y>AR, 15454 JZ(CKR1BF,CKR1BT); ----- ----- 558 0022255A 00CA0010 ----- 15455 *TOP OR NORMAL 15456 .ORG CKR1BF, *TOP OR NORMAL 15457 *CALL PPB0 15458 *P=4, RETURN TO CKR2 15459 *B=PEN 15460 MA(PEN), RAM>BR, 15461 Y(4), 15462 Y>PR, 15463 JUMP(PPB0); ----- ----- 55A 000104D7 9B041000 ----- 15464 .ORG CKR2, *A=PAGE INDEX FOR PNTIN0 15465 Y(DPM), 15466 Y>AR, 15467 JUMP(CKR3); ----- ----- 2DC 00220C58 00681000 ----- 15468 .ORG CKR3, *CALL PNTIN0 15469 *RETURN=2, RETURN TO CKR4 15470 MA(RETURN), 15471 Y(2), 15472 Y>RAM, 15473 JUMP(PNTIN0); ----- ----- C58 0000086F 7C021100 ----- 15474 * A=DECODED BTT OF CURRENT DISPLAY PAGE 15475 .ORG CKR4, *B=SYS1 15476 MA(SYS1), RAM>BR, 15477 JUMP(CKR5); ----- ----- 792 00010C59 08000000 ----- 15478 .ORG CKR5, *Y=PCM 15479 A(3), BRHI>B, AND, 15480 JUMP(CKR6); ----- ----- C59 00000C5A 0003080C ----- 15481 .ORG CKR6, *NORMAL OR TOP? 15482 *BR=LSTINS 15483 MA(LSTINS), RAM>BR, 15484 JZ(CKR10F,CKR10T); ----- ----- C5A 0001255C 2E000000 ----- 15485 .ORG CKR10T, *NORMAL MODE 15486 *A=MODE 15487 MA(MREG0), RAM>AR, 15488 JUMP(CKR100); ----- ----- 55D 00020C5B 39000000 ----- 15489 .ORG CKR10F, *TOP MODE 15490 *Y=LSTINS LO NIB - 8 15491 *B=MREG1 15492 MA(MREG1), RAM>BR, 15493 A(-8), BR.0F>B, ADD, 15494 JUMP(CKR20); ----- ----- 55C 00010C5C 65F80002 ----- 15495 *COLOURED KEY IN TOP MODE 15496 * A=DECODED BTT BYTE, B=MREG1 15497 .ORG CKR20, *CASE COLOUR? 15498 *Y=RKM 15499 *B=LTK 15500 MA(LTK), RAM>BR, 15501 A(RKM), BR>B, AND, 15502 JY(CKR30Y); ----- ----- C5C 0001C230 11020801 ----- 15503 *RED KEY IN TOP MODE 15504 * A=DECODED BTT BYTE, LAST Y WAS RKM 15505 .ORG CKR30Y, *SIMPLE RED KEY MODE? 15506 *Y=BLOCK PAGE FLAG 15507 AR>A, B(>04), AND, 15508 JZ(CKR30AF,CKR30AT); ----- ----- 230 0000255E 00040810 ----- 15509 .ORG CKR30AF, *SIMPLE RED KEY MODE 15510 *SET MASK TO LOOK FOR ANY PAGE 15511 MA(MASK), 15512 Y(>07), 15513 Y>RAM, 15514 JUMP(CKR42T); ----- ----- 55E 00000563 73071100 ----- 15515 .ORG CKR30AT, *Y=GROUP PAGE FLAG 15516 *DISPLAY PAGE A BLOCK PAGE? 15517 AR>A, B(>02), AND, 15518 JZ(CKR40F,CKR40T); ----- ----- 55F 00002560 00020810 ----- 15519 .ORG CKR40F, *BLOCK PAGE 15520 *SET MASK TO LOOK FOR BLOCK 15521 MA(MASK), 15522 Y(>04), 15523 Y>RAM, 15524 JUMP(CKR42T); ----- ----- 560 00000563 73041100 ----- 15525 .ORG CKR40T, *GROUP PAGE? 15526 *SET MASK TO LOOK FOR ANY PAGE 15527 MA(MASK), 15528 Y(>07), 15529 Y>RAM, 15530 JZ(CKR42F,CKR42T); ----- ----- 561 00002562 73071100 ----- 15531 .ORG CKR42F, *GROUP PAGE 15532 *SET MASK TO LOOK FOR BLOCK OR GROUP 15533 MA(MASK), 15534 Y(>06), 15535 Y>RAM, 15536 JUMP(CKR42T); ----- ----- 562 00000563 73061100 ----- 15537 * 15538 .ORG CKR42T, *B=LTK 15539 MA(LTK), RAM>BR, 15540 JUMP(CKR45); ----- ----- 563 00010C5D 11000000 ----- 15541 .ORG CKR45, *RED KEY, SET LTK=0 15542 MA(LTK), 15543 A(0), BR.0F>B, OR, 15544 Y>RAM, 15545 JUMP(CKR46); ----- ----- C5D 00000C5E 11001102 ----- 15546 .ORG CKR46, *CALL SBT0B TO SEARCH BACK FOR PAGE 15547 *RETURN=0, RETURN TO DIP18Y 15548 MA(RETURN), 15549 Y(0), 15550 Y>RAM, 15551 JUMP(SBT0B); ----- ----- C5E 000004DB 7C001100 ----- 15552 *GREEN KEY IN TOP MODE 15553 * A=DECODED BTT BYTE, B=LTK 15554 .ORG CKR31, *LTK=1 15555 MA(LTK), 15556 A(>10), BR.0F>B, OR, 15557 Y>RAM, 15558 JUMP(CKR31A); ----- ----- 231 00000C5F 11101102 ----- 15559 .ORG CKR31A, *SET MASK TO LOOK FOR ANY PAGE 15560 MA(MASK), 15561 Y(>07), 15562 Y>RAM, 15563 JUMP(CKR80); ----- ----- C5F 00000C60 73071100 ----- 15564 *YELLOW KEY IN TOP MODE 15565 * A=DECODED BTT BYTE, B=LTK 15566 .ORG CKR32, *LTK=2 15567 MA(LTK), 15568 A(>20), BR.0F>B, OR, 15569 Y>RAM, 15570 JUMP(CKR60); ----- ----- 232 00000C61 11201102 ----- 15571 * 15572 * TCJ July 94 15573 * CKR32A not used? 15574 * 15575 *.ORG CKR32A, *SET MASK TO LOOK FOR GROUP OR BLOCK 15576 * MA(MASK), 15577 * Y(>06), 15578 * Y>RAM, 15579 * JUMP(CKR80); 15580 * 15581 *CYAN KEY IN TOP MODE 15582 * A=DECODED BTT BYTE, B=LTK 15583 .ORG CKR33, *LTK=3 15584 MA(LTK), 15585 A(>30), BR.0F>B, OR, 15586 Y>RAM, 15587 JUMP(CKR33A); ----- ----- 233 00000C62 11301102 ----- 15588 .ORG CKR33A, *SET MASK TO LOOK BLOCK 15589 MA(MASK), 15590 Y(>04), 15591 Y>RAM, 15592 JUMP(CKR80); ----- ----- C62 00000C60 73041100 ----- 15593 *ROTATE IN GROUP ROUTINE FOR THE YELLOW KEY 15594 .ORG CKR60, *FIRST SEARCH FOR GROUP OR BLOCK 15595 MA(MASK), 15596 Y(>06), 15597 Y>RAM, 15598 JUMP(CKR61); ----- ----- C61 00000C63 73061100 ----- 15599 .ORG CKR61, *CALL SBT0A 15600 *RETURN=6, RETURN TO CKR62 15601 MA(RETURN), 15602 Y(6), 15603 Y>RAM, 15604 JUMP(SBT0A); ----- ----- C63 000004DA 7C061100 ----- 15605 .ORG CKR62, *B=MREG1, Y=BLOCK FLAG 15606 MA(MREG1), RAM>BR, 15607 AR>A, B(>04), AND, 15608 JUMP(CKR63); ----- ----- 7A6 00010C64 65040810 ----- 15609 .ORG CKR63, *Y=RIB, BLOCK PAGE FOUND? 15610 A(RIB), BR>B, AND, 15611 JZ(CKR64F,CKR64T); ----- ----- C64 00002564 00010801 ----- 15612 .ORG CKR64T, *GROUP FOUND, NO ROTATE 15613 JUMP(CKR65T); ----- ----- 565 00000567 00000000 ----- 15614 .ORG CKR64F, *BLOCK FOUND, ROTATE IN BLOCK? 15615 *RETURN=7 15616 MA(RETURN), 15617 Y(7), 15618 Y>RAM, 15619 JZ(CKR65F,CKR65T); ----- ----- 564 00002566 7C071100 ----- 15620 *ROTATE IN BLOCK 15621 .ORG CKR65F, *SEARCH BACK FOR LAST BLOCK 15622 *CALL SBT0B 15623 *RETURN=7, RETURN TO CKR66 15624 *MASK=4 15625 MA(MASK), 15626 Y(>04), 15627 Y>RAM, 15628 JUMP(SBT0B); ----- ----- 566 000004DB 73041100 ----- 15629 .ORG CKR66, *SET MASK TO LOOK FOR NEXT GROUP 15630 *MASK=2 15631 MA(MASK), 15632 Y(>02), 15633 Y>RAM, 15634 JUMP(CKR80); ----- ----- 7A7 00000C60 73021100 ----- 15635 *NO ROTATE IN BLOCK 15636 .ORG CKR65T, * 15637 JUMP(DIP18Y); ----- ----- 567 000007A0 00000000 ----- 15638 *COMMON CODE FOR GREEN, YELLOW AND CYAN IN TOP MODE 15639 .ORG CKR80, *CALL SBT0A TO SEARCH FORWARD FOR PAGE 15640 *RETURN=0, RETURN TO DIP18Y 15641 MA(RETURN), 15642 Y(0), 15643 Y>RAM, 15644 JUMP(SBT0A); ----- ----- C60 000004DA 7C001100 ----- 15645 *COLOURED KEY IN NORMAL MODE 15646 * A=MODE, B=LSTINS 15647 .ORG CKR100, *Y=PMNM 15648 AR>A, B(PMNM), AND, 15649 JUMP(CKR101); ----- ----- C5B 00000C65 00040810 ----- 15650 .ORG CKR101, *PLUS MINUS NORMAL MENU? 15651 *A=LSTINS->38 15652 A(->38), BR>B, ADD, 15653 Y>AR, 15654 JZ(CKR102F,CKR102T); ----- ----- C65 00222568 00C80001 ----- 15655 *PLUS MINUS NORMAL MENU 15656 .ORG CKR102F, *Y=A-2 15657 AR>A, B(-2), ADD, 15658 JUMP(CKR110); ----- ----- 568 00000C66 00FE0010 ----- 15659 .ORG CKR110, *RED OR GREEN KEY? 15660 *A=PEN 15661 MA(PEN), RAM>AR, 15662 JN(CKR111F,CKR111T); ----- ----- C66 0002456A 1B000000 ----- 15663 .ORG CKR111T, *RED OR GREEN KEY 15664 *JUMP TO DIP CODE 15665 *Y=PEN 15666 ARHI>A, B(0), OR, 15667 JUMP(DIP1T); ----- ----- 56B 000004D5 00001020 ----- 15668 .ORG CKR111F, *YELLOW OR CYAN KEY 15669 *NO PROMPT FOR THIS KEY, DO NOTHING 15670 JUMP(DI100); ----- ----- 56A 000000D1 00000000 ----- 15671 *DEFAULT NORMAL MENU 15672 .ORG CKR102T, *DEFAULT NORMAL MENU 15673 *P=INDEX TO STORE FOR THIS KEY 15674 AR>A, B(STOR2), ADD, 15675 Y>PR, 15676 JUMP(CKR120); ----- ----- 569 00000C67 80220010 ----- 15677 .ORG CKR120, *B=STORE FOR THIS KEY 15678 PR>MA, RAM>BR, 15679 JUMP(CKR121); ----- ----- C67 00110C68 00000000 ----- 15680 .ORG CKR121, *P=INDEX TO MAGS IN THIS STORE 15681 *B=DPM 15682 MA(DPM), RAM>BR, 15683 A(M0), BRHI>B, ADD, 15684 Y>PR, 15685 JUMP(CKR122); ----- ----- C68 00010C69 E810000C ----- 15686 .ORG CKR122, *A=NEW MAGS 15687 PR>MA, RAM>AR, 15688 JUMP(CKR123); ----- ----- C69 00120C6A 00000000 ----- 15689 .ORG CKR123, *UPDATE DISPLAY PAGE MAG 15690 *B=INDEX TO MAGS 15691 PR>BR, 15692 MA(DPM), 15693 AR<<4>A, BR.0F>B, OR, 15694 Y>RAM, 15695 JUMP(CKR124); ----- ----- C6A 00410C6B 68001132 ----- 15696 .ORG CKR124, *P=INDEX TO TENS 15697 *B=DPT 15698 MA(DPT), RAM>BR, 15699 A(8), BR>B, ADD, 15700 Y>PR, 15701 JUMP(CKR125); ----- ----- C6B 00010C6C E9080001 ----- 15702 .ORG CKR125, *A=NEW TENS 15703 PR>MA, RAM>AR, 15704 JUMP(CKR126); ----- ----- C6C 00120C6D 00000000 ----- 15705 .ORG CKR126, *UPDATE DISPLAY PAGE TENS 15706 *B=INDEX TO TENS 15707 PR>BR, 15708 MA(DPT), 15709 AR<<4>A, BR.0F>B, OR, 15710 Y>RAM, 15711 JUMP(CKR127); ----- ----- C6D 00410C6E 69001132 ----- 15712 .ORG CKR127, *P=INDEX TO UNITS 15713 *B=DPU 15714 MA(DPU), RAM>BR, 15715 A(8), BR>B, ADD, 15716 Y>PR, 15717 JUMP(CKR128); ----- ----- C6E 00010C6F EA080001 ----- 15718 .ORG CKR128, *A=NEW TENS 15719 PR>MA, RAM>AR, 15720 JUMP(CKR129); ----- ----- C6F 00120C70 00000000 ----- 15721 .ORG CKR129, *UPDATE DISPLAY PAGE UNITS 15722 MA(DPU), 15723 AR<<4>A, BR.0F>B, OR, 15724 Y>RAM, 15725 JUMP(CMPE0); ----- ----- C70 000004F1 6A001132 ----- 15726 *FLOF MODE 15727 * A=LSTINS 15728 .ORG CKR1AT, *A=LSTINS->38 (LINK NUMBER) 15729 AR>A, B(->38), ADD, 15730 Y>AR, 15731 JUMP(CKR1AA); ----- ----- 559 00220C71 00C80010 ----- 15732 .ORG CKR1AA, *CALL GFL0 TO PUT FLOF LINK IN PU,PT,PM 15733 *RETURN=0, RETURN TO CKR200Y 15734 MA(RETURN), 15735 Y(0), 15736 Y>RAM, 15737 JUMP(GFL0); ----- ----- C71 000009EE 7C001100 ----- 15738 * LAST Y WAS NULL ILINK MARKER, TPD=FLOF FLAGS 15739 .ORG CKR200Y, *NULL LINK? 15740 JZ(CKR201F,CKR201T); ----- ----- 060 0000256C 00000000 ----- 15741 .ORG CKR201F, *NULL LINK 15742 JUMP(DI100); ----- ----- 56C 000000D1 00000000 ----- 15743 *ENTRY POINT FROM FAVP MODE 15744 .ORG CKR201T, *CALL PPB0 TO UPDATE PREVIOUS PAGE 15745 *P=5, RETURN TO CKR210 15746 *B=PEN 15747 MA(PEN), RAM>BR, 15748 Y(5), 15749 Y>PR, 15750 JUMP(PPB0); ----- ----- 56D 000104D7 9B051000 ----- 15751 .ORG CKR210, *JUMP TO GENERAL PURPOSE PAGE ENTRY 15752 JUMP(DIP20Y); ----- ----- 2DD 00000730 00000000 ----- 15753 *FAVP MODE 15754 * A=STORE POINTER FOR GFP0T 15755 .ORG CKR1BT, *CALL GFP0T 15756 *RETURN=2, RETURN TO CKR300 15757 MA(RETURN), 15758 Y(2), 15759 Y>RAM, 15760 JUMP(GFP0T); ----- ----- 55B 0000037F 7C021100 ----- 15761 * PU,PT,PM CONTAIN FAVP, LAST Y WAS PU LSN 15762 .ORG CKR300, *PAGE PROGRAMMED? 15763 JZ(CKR301F,CKR301T); ----- ----- 272 0000256E 00000000 ----- 15764 .ORG CKR301F, *NO PAGE, EXIT 15765 JUMP(DI100); ----- ----- 56E 000000D1 00000000 ----- 15766 .ORG CKR301T, *JUMP TO FLOF CODE 15767 JUMP(CKR201T); ----- ----- 56F 0000056D 00000000 ----- 15768 ***GEXP: GRUNDIG EXPAND COMMANDS 15769 * A=VDPTXT, P=NEW EXPAND BITS 15770 .ORG GEXP0, *CLEAR EXPAND BITS 15771 *B=NEW EXPAND BITS 15772 PR>BR, 15773 AR>A, B(>FF-UEXT-UEXB), AND, 15774 Y>AR, 15775 JUMP(GEXP1); ----- ----- C52 00630C72 00FC0810 ----- 15776 .ORG GEXP1, *UPDATE VDPTXT 15777 MA(VDPTXT), 15778 AR>A, BR>B, OR, 15779 Y>RAM, 15780 JUMP(DI120); ----- ----- C72 000005BC 2B001111 ----- 15781 *///4- 15782 * BR=RCSTAT, AR=INSTRUCTION 15783 .ORG DI4X, *CASE INS HIGH NIB=>4 15784 *Y=OPCNT 15785 A(0), BR.0F>B, ADD, 15786 JY(DI40Y); ----- ----- 204 0000C240 00000002 ----- 15787 .ORG DI40Y, *CASE INS >40 15788 *MODE0 15789 *AR=STORE (LAST OPERAND) 15790 MA(STORE), RAM>AR, 15791 JZ(MODE0F,MODE0T); ----- ----- 240 00022570 77000000 ----- 15792 .ORG DI41, *CASE INS >41 15793 *MODE1 15794 *OPCNT==0? 15795 *AR=STORE (LAST OPERAND) 15796 MA(STORE), RAM>AR, 15797 JZ(MODE10F,MODE10T); ----- ----- 241 00022572 77000000 ----- 15798 .ORG DI42, *CASE INS >42 15799 *LANG 15800 *OPCNT==0? 15801 *AR=STORE (LAST OPERAND) 15802 MA(STORE), RAM>AR, 15803 JZ(LANG0F,LANG0T); ----- ----- 242 00022574 77000000 ----- 15804 .ORG DI43, *CASE INS >43 15805 *CURSOR 15806 *PR=-2 (INDEX TO FIRST OPERAND) 15807 *OPCNT==0? 15808 *AR=STORE (LAST OPERAND) 15809 MA(STORE), RAM>AR, 15810 Y(-2), 15811 Y>PR, 15812 JZ(CURS0F,CURS0T); ----- ----- 243 00022576 F7FE1000 ----- 15813 * 15814 * TCJ Nov 92 15815 * Addition of command >44 to write to the new mode 15816 * register MODE2. 15817 * 15818 .ORG DI44, *CASE INS >44 15819 *MODE2 15820 *OPCNT == 0 ? 15821 *AR = STORE (Last Operand) 15822 MA(STORE), RAM>AR, 15823 JZ(MODE20F,MODE20T); ----- ----- 244 00022578 77000000 ----- 15824 * 15825 .ORG DI45, *CASE INS >45 15826 *ROW24 15827 *OPCNT==0? 15828 *AR=POLREG, Y=VBI 15829 MA(POLREG), RAM>AR, 15830 A(%01000000), RCS>B, AND, 15831 JZ(ROW0F,ROW0T); ----- ----- 245 0002257A 1040080B ----- 15832 .ORG DI46, *CASE INS >46 15833 *MPTR, BR=RCSTAT, OPCNT=0? 15834 *RWL=7 15835 MA(RWL), 15836 Y(7), 15837 Y>RAM, Y>IO, 15838 JZ(MPTR0F,MPTR0T); ----- ----- 246 0000257C 0B075100 ----- 15839 * 15840 * TCJ Dec 93 15841 * Addition of the subtitle browse command, this 15842 * command must set the STBRW bit. 15843 * 15844 .ORG DI47, *CASE INS >47 15845 *SUBTITLE BROWSE 15846 *AR=DHREG 15847 MA(DHREG), RAM>AR, 15848 JUMP(TCJD47A); ----- ----- 247 00020C73 32000000 ----- 15849 * 15850 .ORG TCJD47A, *STBRW=0 15851 MA(DHREG), 15852 AR>A, B(STBRW), OR, 15853 Y>RAM, 15854 JUMP(TCJD47B); ----- ----- C73 00000C74 32021110 ----- 15855 * 15856 .ORG TCJD47B, *Y=VBI, B=SCREEN 15857 MA(SCREEN), RAM>BR, 15858 A(%01000000), RCS>B, AND, 15859 JUMP(TCJD47C); ----- ----- C74 00010C75 6040080B ----- 15860 * 15861 .ORG TCJD47C, *AR=VPPRG1 15862 *Y=TDISP, IN VBI? 15863 MA(VPPRG1), RAM>AR, 15864 A(TDISP), BR>B, AND, 15865 JZ(BROWSE0F,BROWSE0T); ----- ----- C75 000224A6 61040801 ----- 15866 * 15867 .ORG DI48, *CASE INS >48 15868 *SCLOCK 15869 *A=VDPTXT 15870 MA(VDPTXT), RAM>AR, 15871 JUMP(DI48A); ----- ----- 248 00020C76 2B000000 ----- 15872 .ORG DI48A, *SET UCLK 15873 MA(VDPTXT), 15874 AR>A, B(UCLK), OR, 15875 Y>RAM, 15876 JUMP(DI120); ----- ----- C76 000005BC 2B801110 ----- 15877 .ORG DI49, *CASE INS >49 15878 *CCLOCK 15879 *A=VDPTXT 15880 MA(VDPTXT), RAM>AR, 15881 JUMP(DI49A); ----- ----- 249 00020C77 2B000000 ----- 15882 .ORG DI49A, *CLEAR UCLK 15883 MA(VDPTXT), 15884 AR>A, B(>FF-UCLK), AND, 15885 Y>RAM, 15886 JUMP(DI120); ----- ----- C77 000005BC 2B7F0910 ----- 15887 .ORG DI4A, *CASE INS >4A 15888 *TCLOCK, JUMP TO SUB-PAGE 15889 *Y=VBI, B=SCREEN 15890 MA(SCREEN), RAM>BR, 15891 A(%01000000), RCS>B, AND, 15892 JUMP(DI11); ----- ----- 24A 00010221 6040080B ----- 15893 .ORG DI4B, *CASE INS >4B 15894 *CLKCOL, BR=RCSTAT, OPCNT=0? 15895 *AR=VDP4 15896 MA(VDP4), RAM>AR, 15897 JZ(COL0F,COL0T); ----- ----- 24B 0002257E 04000000 ----- 15898 .ORG DI4C, *CASE INS >4C 15899 *PLLMOD, BR=RCSTAT, OPCNT=0? 15900 *AR=STORE (LAST OPERAND) 15901 MA(STORE), RAM>AR, 15902 JZ(PLLM0F,PLLM0T); ----- ----- 24C 00022580 77000000 ----- 15903 * 15904 * TCJ July 95 deleted LANG2 command 15905 * 15906 .ORG DI4D, *CASE INS >4D 15907 JUMP(DI100); ----- ----- 24D 000000D1 00000000 ----- 15908 * 15909 .ORG DI4E, *CASE INS >4E 15910 *NOP [SFLOF ON UNITEXT] 15911 JUMP(DI100); ----- ----- 24E 000000D1 00000000 ----- 15912 * 15913 .ORG DI4F, *CASE INS >4F 15914 JUMP(DI100); ----- ----- 24F 000000D1 00000000 ----- 15915 */// 15916 *+++MODE 0 15917 * AR=LAST OPERAND, BR=RCSTAT 15918 .ORG MODE0T, *OPCNT==0 15919 *OPCNT=1 15920 MA(RCSTAT), 15921 A(1), BR.F0>B, ADD, 15922 Y>RAM, 15923 JUMP(ST0F); ----- ----- 571 00000001 2F010103 ----- 15924 .ORG MODE0F, *OPCNT!=0 15925 *OPCNT=0 15926 MA(RCSTAT), 15927 A(0), BR.F0>B, ADD, 15928 Y>RAM, 15929 JUMP(MODE1); ----- ----- 570 00000C78 2F000103 ----- 15930 .ORG MODE1, *UPDATE MODE REGISTER 15931 MA(MREG0), 15932 AR>A, B(0), OR, 15933 Y>RAM, 15934 JUMP(MODE2); ----- ----- C78 00000C79 39001110 ----- 15935 .ORG MODE2, *A=EXPREG 15936 MA(EXPREG), RAM>AR, 15937 JUMP(MODE3); ----- ----- C79 00020C7A 63000000 ----- 15938 .ORG MODE3, *CGAP=1, CPRF=1 TO INIT MENU 15939 *CALL SET VDP REGISTERS AFTER VBI 15940 MA(EXPREG), 15941 AR>A, B(CGAP+CPRF), OR, 15942 Y>RAM, 15943 JUMP(DI120); ----- ----- C7A 000005BC 630C1110 ----- 15944 *+++MODE 1 15945 * AR=LAST OPERAND, BR=RCSTAT 15946 .ORG MODE10T, *OPCNT==0 15947 *OPCNT=1 15948 MA(RCSTAT), 15949 A(1), BR.F0>B, ADD, 15950 Y>RAM, 15951 JUMP(ST0F); ----- ----- 573 00000001 2F010103 ----- 15952 .ORG MODE10F, *UPDATE MREG1 15953 MA(MREG1), 15954 AR>A, B(0), OR, 15955 Y>RAM, 15956 JUMP(DI120); ----- ----- 572 000005BC 65001110 ----- 15957 * 15958 *+++MODE 2 15959 * 15960 * TCJ Nov 92 15961 * Addition of a MODE2 control register to add a control bit 15962 * for the NOKIA special subpage mode. 15963 * 15964 .ORG MODE20T, * AR = LAST OPERAND, BR = RCSTAT 15965 * OPCNT == 0 15966 * OPCNT = 1 15967 MA(RCSTAT), 15968 A(1), BR.F0>B, ADD, 15969 Y>RAM, 15970 JUMP(ST0F); ----- ----- 579 00000001 2F010103 ----- 15971 * 15972 .ORG MODE20F, * OPCNT != 0 15973 * UPDATE MREG2 15974 MA(MREG2), 15975 AR>A, B(0), OR, 15976 Y>RAM, 15977 JUMP(DI120); ----- ----- 578 000005BC 6E001110 ----- 15978 * 15979 *+++LANG 15980 * AR=LAST OPERAND, BR=RCSTAT 15981 .ORG LANG0T, *OPCNT==0 15982 *OPCNT=1 15983 MA(RCSTAT), 15984 A(1), BR.F0>B, ADD, 15985 Y>RAM, 15986 JUMP(ST0F); ----- ----- 575 00000001 2F010103 ----- 15987 .ORG LANG0F, *OPCNT!=0 15988 *OPCNT=0 15989 MA(RCSTAT), 15990 A(0), BR.F0>B, ADD, 15991 Y>RAM, 15992 JUMP(LANG1); ----- ----- 574 00000C7B 2F000103 ----- 15993 .ORG LANG1, *USRLAN=LAST OPERAND 15994 MA(USRLAN), 15995 AR>A, B(0), OR, 15996 Y>RAM, 15997 JUMP(DI120); ----- ----- C7B 000005BC 2D001110 ----- 15998 * 15999 *+++LANG2 16000 * 16001 * TCJ August 94, 211 Mods 16002 * Addtion of LANG2 command processing 16003 * 16004 * AR=LAST OPERAND, BR=RCSTAT 16005 *.ORG LANG20T, *OPCNT==0 16006 * *OPCNT=1 16007 * MA(RCSTAT), 16008 * A(1), BR.F0>B, ADD, 16009 * Y>RAM, 16010 * JUMP(ST0F); 16011 * 16012 *.ORG LANG20F, *OPCNT!=0 16013 * *OPCNT=0 16014 * MA(RCSTAT), 16015 * A(0), BR.F0>B, ADD, 16016 * Y>RAM, 16017 * JUMP(LANG21); 16018 * 16019 *.ORG LANG21, *USRLAN2=LAST OPERAND 16020 * MA(VDP3), 16021 * AR>A, B(0), OR, 16022 * Y>RAM, 16023 * JUMP(DI120); 16024 * 16025 *+++CURSOR: CURSOR CONTROL ROUTINE 16026 * AR=LAST OPERAND, BR=RCSTAT, PR= INDEX TO 1ST OPERAND 16027 .ORG CURS0T, *OPCNT=2 (2 OPERANDS) 16028 MA(RCSTAT), 16029 A(2), BR.F0>B, ADD, 16030 Y>RAM, 16031 JUMP(ST0F); ----- ----- 577 00000001 2F020103 ----- 16032 * 16033 .ORG CURS0F, *LOAD CURSOR COLUMN 16034 *TPD=1ST OPERAND 16035 RVDP, 16036 MA(VDP6), 16037 AR>A, B(>3F), AND, 16038 Y>RAM, Y>IO, 16039 JUMP(CURS1); ----- ----- 576 00000C7C 063FC910 ----- 16040 .ORG CURS1, *LOAD CURSOR ROW, STYLE AND CON 16041 MA(VDP5), 16042 TPD>A, B(>DF), AND, 16043 Y>RAM, Y>IO, 16044 JUMP(DI100); ----- ----- C7C 000000D1 05DF4990 ----- 16045 *+++ROW 24 MODE 16046 * AR=POLREG, BR=RCSTAT, LAST Y WAS VBI 16047 .ORG ROW0T, *OLD OPCNT==0 16048 *OPCNT=1 16049 MA(RCSTAT), 16050 A(1), BR.F0>B, ADD, 16051 Y>RAM, 16052 JUMP(ST0F); ----- ----- 57B 00000001 2F010103 ----- 16053 .ORG ROW0F, *IN VBI? 16054 JZ(DI110,ROW1T); ----- ----- 57A 00002582 00000000 ----- 16055 *IF IN VBI, NEED TO DELAY 16056 *(this is so that further commands are delayed until packet 24 16057 *reception has been disabled if APIN=1 and R24EN=0) 16058 .ORG ROW1T, *B=SYS2 16059 MA(SYS2), RAM>BR, 16060 JUMP(ROW2); ----- ----- 583 00010C7D 09000000 ----- 16061 .ORG ROW2, *A=LAST OPERAND 16062 *Y=OLD APIN 16063 MA(STORE), RAM>AR, 16064 A(APIN), BR>B, AND, 16065 JUMP(ROW3); ----- ----- C7D 00020C7E 77010801 ----- 16066 .ORG ROW3, *Y=NEW APIN 16067 *OLD APIN? 16068 *A=STOR0 16069 MA(STOR0), RAM>AR, 16070 AR>A, B(APIN), AND, 16071 JZ(ROW4F,ROW4T); ----- ----- C7E 00022584 20010810 ----- 16072 .ORG ROW4F, *NOT SETTING APIN 16073 JUMP(ROW10); ----- ----- 584 000000D3 00000000 ----- 16074 .ORG ROW4T, *SETTING APIN? 16075 *RWL=DISPLAY PAGE 16076 MA(RWL), 16077 ARHI>A, B(0), OR, 16078 Y>RAM, Y>IO, 16079 JZ(ROW5F,ROW5T); ----- ----- 585 00002586 0B005120 ----- 16080 .ORG ROW5T, *NOT SETTING APIN 16081 JUMP(ROW10); ----- ----- 587 000000D3 00000000 ----- 16082 *SETTING APIN, CLEAR ROW 24 16083 .ORG ROW5F, *CALL CSCNB 16084 *RET4=3, RETURN TO ROW10 16085 MA(RET4), 16086 Y(3), 16087 Y>RAM, 16088 JUMP(CSCNB); ----- ----- 586 00000C7F 79031100 ----- 16089 * B=SYS2 16090 .ORG ROW10, *CLEAR APIN, R24EN, R24OSD, READY FOR UPDATE 16091 MA(SYS2), 16092 A(>FF-APIN-R24EN-R24OSD), BR>B, AND, 16093 Y>RAM, 16094 JUMP(ROW11); ----- ----- 0D3 00000C80 093E0901 ----- 16095 .ORG ROW11, *A=LAST OPERAND 16096 MA(STORE), RAM>AR, 16097 * JUMP(ROW12); 16098 JUMP(ROW13); ----- ----- C80 00020C81 77000000 ----- 16099 * 16100 * TCJ April 94, 209 mods 16101 * 16102 *ORG ROW12, *UPDATE ROW 24 LANG REGISTER 16103 * MA(R24LAN), 16104 * AR>A, B(%00111110), AND, 16105 * Y>RAM, 16106 * JUMP(ROW13); 16107 * 16108 .ORG ROW13, *B=SYS2, EXTRACT APIN, R24EN, R24OSD, FROM OPERAND IN A 16109 MA(SYS2), RAM>BR, 16110 AR>A, B(APIN+R24EN+R24OSD), AND, 16111 Y>AR, 16112 JUMP(ROW14); ----- ----- C81 00230C82 09C10810 ----- 16113 .ORG ROW14, *UPDATE SYS2 16114 MA(SYS2), 16115 AR>A, BR>B, OR, 16116 Y>RAM, 16117 JUMP(ROW15); ----- ----- C82 00000C83 09001111 ----- 16118 .ORG ROW15, *A=EXPREG 16119 MA(EXPREG), RAM>AR, 16120 JUMP(ROW16); ----- ----- C83 00020C84 63000000 ----- 16121 .ORG ROW16, *CGAP=1, CPRF=1 16122 MA(EXPREG), 16123 AR>A, B(CGAP+CPRF), OR, 16124 Y>RAM, 16125 JUMP(DI120); ----- ----- C84 000005BC 630C1110 ----- 16126 *+++MPTR: MEMORY POINTER 16127 * RWL=7, BR=RCSTAT 16128 .ORG MPTR0T, *OPCNT==0 16129 *OPCNT=2 16130 MA(RCSTAT), 16131 A(2), BR.F0>B, ADD, 16132 Y>RAM, 16133 JUMP(ST0F); ----- ----- 57D 00000001 2F020103 ----- 16134 .ORG MPTR0F, *OPCNT!=0 16135 *CHRM=1 16136 MA(RCSTAT), 16137 A(CHRM), BR>B, OR, 16138 Y>RAM, 16139 JUMP(MPTR1); ----- ----- 57C 00000C85 2F801101 ----- 16140 .ORG MPTR1, *PR=-2 16141 *BR=LAST OPERAND 16142 MA(STORE), RAM>BR, 16143 Y(-2), 16144 Y>PR, 16145 JUMP(MPTR2); ----- ----- C85 00010C86 F7FE1000 ----- 16146 .ORG MPTR2, *TPD=1ST OPERAND 16147 *COLPTR=LAST OPERAND (MASK OUT LTC BIT) 16148 RVDP, 16149 MA(COLPTR), 16150 A(%00111111), BR>B, AND, 16151 Y>RAM, 16152 JUMP(MPTR3); ----- ----- C86 00000C87 313F8901 ----- 16153 .ORG MPTR3, *AR=1ST OPERAND 16154 TPD>A, B(0), OR, 16155 Y>AR, 16156 JUMP(MPTR4); ----- ----- C87 00220C88 00001090 ----- 16157 .ORG MPTR4, *Y=LTC BIT 16158 A(%10000000), BR>B, AND, 16159 JUMP(MPTR5); ----- ----- C88 00000C89 00800801 ----- 16160 .ORG MPTR5, *LTC? 16161 *CLEAR MASK FIELD IN ROWPTR 16162 MA(ROWPTR), 16163 TPD>A, B(%00011111), AND, 16164 Y>RAM, 16165 JZ(MPTR6F,MPTR6T); ----- ----- C89 0000258E 301F0990 ----- 16166 .ORG MPTR6F, *LTC=1, POINTING TO A LATCH 16167 *ROWPTR=1ST OPERAND 16168 MA(ROWPTR), 16169 TPD>A, B(0), ADD, 16170 Y>RAM, 16171 JUMP(DI100); ----- ----- 58E 000000D1 30000190 ----- 16172 * 16173 .ORG MPTR6T, *MPTR, COLPTR IS STORE, NEED TO GET LATCH 16174 *MOVE STORE FIELD DOWN TO NIBBLE BOUNDARY 16175 *AND MASK OUT IRRELEVANT BITS 16176 AR>>1>A, B(>70), AND, 16177 Y>AR, 16178 JUMP(MPTR7); ----- ----- 58F 00220C8A 007008E0 ----- 16179 .ORG MPTR7, *PR=INDEX TO STORE TABLE 16180 ARHI>A, B(STOR0), ADD, 16181 Y>PR, 16182 JUMP(MPTR8); ----- ----- C8A 00000C8B 80200020 ----- 16183 .ORG MPTR8, *AR=BR=LATCH FOR STORE 16184 PR>MA, RAM>AR, RAM>BR, 16185 JUMP(MPTR9); ----- ----- C8B 00130C8C 00000000 ----- 16186 .ORG MPTR9, *AR=LATCH<<1, BR=ROWPTR 16187 MA(ROWPTR), RAM>BR, 16188 AR.F0>A, BR.F0>B, ADD, 16189 Y>AR, 16190 JUMP(MPTR10); ----- ----- C8C 00230C8D 300000D3 ----- 16191 .ORG MPTR10, *PUT LATCH IN ROWPTR 16192 MA(ROWPTR), 16193 AR>A, BR>B, OR, 16194 Y>RAM, 16195 JUMP(DI100); ----- ----- C8D 000000D1 30001111 ----- 16196 *+++SET CLOCK COLOURS 16197 * AR=VDP4, BR=RCSTAT 16198 .ORG COL0T, *OPCNT==0 16199 *OPCNT=1 16200 MA(RCSTAT), 16201 A(1), BR.F0>B, ADD, 16202 Y>RAM, 16203 JUMP(ST0F); ----- ----- 57F 00000001 2F010103 ----- 16204 .ORG COL0F, *B=LAST OPERAND 16205 *Y=CLOCK 16206 MA(STORE), RAM>BR, 16207 AR>A, B(CLOCK), AND, 16208 JUMP(COL1); ----- ----- 57E 00010C8E 77800810 ----- 16209 .ORG COL1, *A=LAST OPERAND WITH CLOCK MASKED 16210 *IN CLOCK MODE? 16211 A(>FF-CLOCK), BR>B, AND, 16212 Y>AR, 16213 JZ(COL2F,COL2T); ----- ----- C8E 00222594 007F0801 ----- 16214 .ORG COL2F, *CLOCK MODE 16215 MA(VDP4), 16216 AR>A, B(CLOCK), OR, 16217 Y>RAM, Y>IO, 16218 JUMP(DI120); ----- ----- 594 000005BC 04805110 ----- 16219 .ORG COL2T, *NOT CLOCK MODE 16220 MA(VDP4), 16221 AR>A, B(0), OR, 16222 Y>RAM, Y>IO, 16223 JUMP(DI120); ----- ----- 595 000005BC 04005110 ----- 16224 *+++PLL MODE 16225 * AR=LAST OPERAND, BR=RCSTAT 16226 .ORG PLLM0T, *OPCNT==0 16227 *OPCNT=1 16228 MA(RCSTAT), 16229 A(1), BR.F0>B, ADD, 16230 Y>RAM, 16231 JUMP(ST0F); ----- ----- 581 00000001 2F010103 ----- 16232 .ORG PLLM0F, *UPDATE USER PLL REGISTER 16233 *CALL SVDP 16234 MA(UPLL), 16235 AR>A, B(0), OR, 16236 Y>RAM, 16237 JUMP(DI120); ----- ----- 580 000005BC 6F001110 ----- 16238 *///5- 16239 * BR=RCSTAT, AR=INSTRUCTION 16240 .ORG DI5X, *CASE INS HIGH NIB=>5 16241 *B=UPLL 16242 *Y=INSTRUCTION LO NIB 16243 MA(UPLL), RAM>BR, 16244 AR.0F>A, B(0), OR, 16245 JUMP(DI5X1); ----- ----- 205 00010C8F 6F0010C0 ----- 16246 .ORG DI5X1, *A=UPLL WITH HPOS, FSYNC, SIX24, ISYNC AND ILCE CLEARED 16247 *###8 CAN TEST BIT RATHER THAN DO CASE TO DECODE 16248 A(>FF-HPOS-FSYNC-SIX24-ISYNC-ILCE), BR>B, AND, 16249 Y>AR, 16250 JY(DI50Y); ----- ----- C8F 0022C6F0 00C80801 ----- 16251 .ORG DI50Y, *CASE INS >50 16252 *DRST 16253 MA(UPLL), 16254 AR>A, B(0), OR, 16255 Y>RAM, 16256 JUMP(DI120); ----- ----- 6F0 000005BC 6F001110 ----- 16257 .ORG DI51, *CASE INS >51 16258 *A 16259 MA(UPLL), 16260 AR>A, B(SIX24), OR, 16261 Y>RAM, 16262 JUMP(DI120); ----- ----- 6F1 000005BC 6F041110 ----- 16263 .ORG DI52, *CASE INS >52 16264 *I 16265 MA(UPLL), 16266 AR>A, B(ILCE), OR, 16267 Y>RAM, 16268 JUMP(DI120); ----- ----- 6F2 000005BC 6F011110 ----- 16269 .ORG DI53, *CASE INS >53 16270 JUMP(DI100); ----- ----- 6F3 000000D1 00000000 ----- 16271 .ORG DI54, *CASE INS >54 16272 *S 16273 MA(UPLL), 16274 AR>A, B(ISYNC), OR, 16275 Y>RAM, 16276 JUMP(DI120); ----- ----- 6F4 000005BC 6F021110 ----- 16277 .ORG DI55, *CASE INS >55 16278 *SA 16279 MA(UPLL), 16280 AR>A, B(ISYNC+SIX24), OR, 16281 Y>RAM, 16282 JUMP(DI120); ----- ----- 6F5 000005BC 6F061110 ----- 16283 .ORG DI56, *CASE INS >56 16284 *SI 16285 MA(UPLL), 16286 AR>A, B(ISYNC+ILCE), OR, 16287 Y>RAM, 16288 JUMP(DI120); ----- ----- 6F6 000005BC 6F031110 ----- 16289 .ORG DI57, *CASE INS >57 16290 JUMP(DI100); ----- ----- 6F7 000000D1 00000000 ----- 16291 .ORG DI58, *CASE INS >58 16292 *R 16293 MA(UPLL), 16294 AR>A, B(HPOS), OR, 16295 Y>RAM, 16296 JUMP(DI120); ----- ----- 6F8 000005BC 6F201110 ----- 16297 .ORG DI59, *CASE INS >59 16298 *RA 16299 MA(UPLL), 16300 AR>A, B(HPOS+SIX24), OR, 16301 Y>RAM, 16302 JUMP(DI120); ----- ----- 6F9 000005BC 6F241110 ----- 16303 .ORG DI5A, *CASE INS >5A 16304 *RI 16305 MA(UPLL), 16306 AR>A, B(HPOS+ILCE), OR, 16307 Y>RAM, 16308 JUMP(DI120); ----- ----- 6FA 000005BC 6F211110 ----- 16309 .ORG DI5B, *CASE INS >5B 16310 JUMP(DI100); ----- ----- 6FB 000000D1 00000000 ----- 16311 .ORG DI5C, *CASE INS >5C 16312 *RS 16313 MA(UPLL), 16314 AR>A, B(HPOS+ISYNC), OR, 16315 Y>RAM, 16316 JUMP(DI120); ----- ----- 6FC 000005BC 6F221110 ----- 16317 .ORG DI5D, *CASE INS >5D 16318 *RSA 16319 MA(UPLL), 16320 AR>A, B(HPOS+ISYNC+SIX24), OR, 16321 Y>RAM, 16322 JUMP(DI120); ----- ----- 6FD 000005BC 6F261110 ----- 16323 .ORG DI5E, *CASE INS >5E 16324 *RSI 16325 MA(UPLL), 16326 AR>A, B(HPOS+ISYNC+ILCE), OR, 16327 Y>RAM, 16328 JUMP(DI120); ----- ----- 6FE 000005BC 6F231110 ----- 16329 .ORG DI5F, *CASE INS >5F 16330 JUMP(DI100); ----- ----- 6FF 000000D1 00000000 ----- 16331 */// 16332 *///6- 16333 * BR=RCSTAT, AR=INSTRUCTION 16334 .ORG DI6X, *CASE INS HIGH NIB=>6 16335 *Y=INS LO NIB-8 16336 AR.0F>A, B(-8), ADD, 16337 JUMP(DI6X1); ----- ----- 206 00000C90 00F800C0 ----- 16338 .ORG DI6X1, *CASE INS LO NIB 3LSBS 16339 *INSTRUCTION IN TOP HALF? 16340 AR>A, B(7), AND, 16341 JN(DI6X2F,DI6X2T); ----- ----- C90 00004596 00070810 ----- 16342 .ORG DI6X2F, *IN TOP HALF, EXIT 16343 JUMP(DI100); ----- ----- 596 000000D1 00000000 ----- 16344 .ORG DI6X2T, *AR=SCREEN 16345 *Y=OPCNT 16346 MA(SCREEN), RAM>AR, 16347 A(0), BR.0F>B, ADD, 16348 JY(DI60Y); ----- ----- 597 0002C260 60000002 ----- 16349 .ORG DI60Y, *CASE INS >60 16350 *SMENM 16351 *OPCNT==0? 16352 *AR=POLREG, Y=VBI 16353 MA(POLREG), RAM>AR, 16354 A(%01000000), RCS>B, AND, 16355 JZ(SMENM0F,SMENM0T); ----- ----- 260 00022598 1040080B ----- 16356 .ORG DI61, *CASE INS >61 16357 *CMENM 16358 *BR=VPPRG1, Y=MENM 16359 MA(VPPRG1), RAM>BR, 16360 AR>A, B(MENM), AND, 16361 JUMP(CMENM0); ----- ----- 261 00010C91 61080810 ----- 16362 .ORG DI62, *CASE INS >62 16363 *DMEN0 16364 *AR=MNDP0+MENM 16365 *BR=SCREEN 16366 MA(SCREEN), RAM>BR, 16367 Y(MNDP0+MENM), 16368 Y>AR, 16369 JUMP(DMN0); ----- ----- 262 00230C92 60091000 ----- 16370 .ORG DI63, *CASE INS >63 16371 *DMEN1 16372 *AR=MNDP1+MENM 16373 *BR=SCREEN 16374 MA(SCREEN), RAM>BR, 16375 Y(MNDP1+MENM), 16376 Y>AR, 16377 JUMP(DMN0); ----- ----- 263 00230C92 600A1000 ----- 16378 *ENTRY POINT FROM CMENM CODE 16379 .ORG DI64, *CASE INS >64 16380 *DTPGE 16381 *MNDP0=0, MNDP1=0, TDISP=0 16382 MA(SCREEN), 16383 AR>A, B(%11111000), AND, 16384 Y>RAM, Y>AR, 16385 JUMP(DTPGE0); ----- ----- 264 00220C93 60F80910 ----- 16386 .ORG DI65, *CASE INS >65 16387 JUMP(DI100); ----- ----- 265 000000D1 00000000 ----- 16388 .ORG DI66, *CASE INS >66 16389 *CMEN0 16390 *PR=INDEX TO STORE 6 16391 *AR=POLREG 16392 MA(POLREG), RAM>AR, 16393 Y(STOR0+6), 16394 Y>PR, 16395 JUMP(CMEN0); ----- ----- 266 00020C94 90261000 ----- 16396 .ORG DI67, *CASE INS >67 16397 *CMEN1 16398 *PR=INDEX TO STORE 7 16399 *AR=POLREG 16400 MA(POLREG), RAM>AR, 16401 Y(STOR0+7), 16402 Y>PR, 16403 JUMP(CMEN0); ----- ----- 267 00020C94 90271000 ----- 16404 */// 16405 *+++SET MENU MODE 16406 * AR=POLREG, BR=RCSTAT, LAST Y WAS VBI 16407 .ORG SMENM0T, *OLD OPCNT==0 16408 *OPCNT=1 16409 MA(RCSTAT), 16410 A(1), BR.F0>B, ADD, 16411 Y>RAM, 16412 JUMP(ST0F); ----- ----- 599 00000001 2F010103 ----- 16413 .ORG SMENM0F, *IN VBI? 16414 *PR=INDEX TO STORE 6 16415 Y(STOR6), 16416 Y>PR, 16417 JZ(SMENM1F,SMENM1T); ----- ----- 598 0000259A 80261000 ----- 16418 *IN VBI, NEED TO DELAY 16419 .ORG SMENM1F, *EXIT TO SET WAIT 16420 JUMP(DI110); ----- ----- 59A 00000582 00000000 ----- 16421 *OUT OF VBI 16422 .ORG SMENM1T, *OPCNT=0 16423 MA(RCSTAT), 16424 A(0), BR.F0>B, ADD, 16425 Y>RAM, 16426 JUMP(SMENM2); ----- ----- 59B 00000C95 2F000103 ----- 16427 .ORG SMENM2, *BR=SCREEN 16428 MA(SCREEN), RAM>BR, 16429 JUMP(SMENM2A); ----- ----- C95 00010C96 60000000 ----- 16430 .ORG SMENM2A, *Y=MENM 16431 *A=SYS2 16432 MA(SYS2), RAM>AR, 16433 A(MENM), BR>B, AND, 16434 JUMP(SMENM2B); ----- ----- C96 00020C97 09080801 ----- 16435 .ORG SMENM2B, *MENM=1 16436 *MENU MODE ALREADY SET? 16437 MA(SCREEN), 16438 A(MENM), BR>B, OR, 16439 Y>RAM, 16440 JZ(SMENM3F,SMENM3T); ----- ----- C97 0000259C 60081101 ----- 16441 *MENU MODE ALREADY SET, SKIP INIT LOOP 16442 .ORG SMENM3F, *A= OPERAND 16443 MA(STORE), RAM>AR, 16444 JUMP(SMENM10T); ----- ----- 59C 0002059F 77000000 ----- 16445 *MENU MODE NOT SET, INITIALISE LATCHES 16446 * A=SYS2 16447 .ORG SMENM3T, *S6T1=0 16448 MA(SYS2), 16449 AR>A, B(>FF-S6T1), AND, 16450 Y>RAM, 16451 JUMP(SMENM3A); ----- ----- 59D 00000C98 09DF0910 ----- 16452 .ORG SMENM3A, *INIT LOOP COUNT, COUNT=2 16453 MA(COUNT), 16454 Y(2), 16455 Y>RAM, 16456 JUMP(SMENM10F); ----- ----- C98 0000059E 78021100 ----- 16457 *LOOP TO PUT NULL VALUES IN LATCHES OF STORES 6 AND 7 AND CLEAR THEM 16458 * PR=INDEX TO STORE 16459 .ORG SMENM10F, *A=LATCH IN STORE 16460 PR>MA, RAM>AR, 16461 JUMP(SMENM4); ----- ----- 59E 00120C99 00000000 ----- 16462 .ORG SMENM4, *PR=INDEX TO MAG LATCH OF STORE 16463 ARHI>A, B(M0), ADD, 16464 Y>PR, 16465 JUMP(SMENM4A); ----- ----- C99 00000C9A 80100020 ----- 16466 .ORG SMENM4A, *BR=Mx 16467 PR>MA, RAM>BR, 16468 JUMP(SMENM4B); ----- ----- C9A 00110C9B 00000000 ----- 16469 .ORG SMENM4B, *SET Mx TO NULL MAGAZINE 16470 PR>MA, 16471 A(>0F), BR>B, OR, 16472 Y>RAM, Y>IO, 16473 JUMP(SMENM4C); ----- ----- C9B 00100C9C 000F5101 ----- 16474 .ORG SMENM4C, *PR=INDEX TO LATCH LAFx 16475 ARHI>A, B(LAF0), ADD, 16476 Y>PR, 16477 JUMP(SMENM4D); ----- ----- C9C 00000C9D 80400020 ----- 16478 .ORG SMENM4D, *LAFx=MPG 16479 *CAP=VBICAP=CLR=OPN=BTTL=AITL=0 16480 PR>MA, 16481 Y(MPG), 16482 Y>RAM, 16483 JUMP(SMENM5); ----- ----- C9D 00100C9E 00041100 ----- 16484 *SET UP I/P PARS FOR CSCNA 16485 .ORG SMENM5, *RWL=AR 16486 MA(RWL), 16487 ARHI>A, B(0), OR, 16488 Y>RAM, Y>IO, 16489 JUMP(SMENM6); ----- ----- C9E 00000C9F 0B005120 ----- 16490 .ORG SMENM6, *RET4=3 16491 *CALL CSCNA TO CLEAR STORE 16492 *RET4=0, RETURN TO SMENM7Y 16493 MA(RET4), 16494 Y(0), 16495 Y>RAM, 16496 JUMP(CSCNA); ----- ----- C9F 00000CA0 79001100 ----- 16497 .ORG SMENM7Y, *BR=COUNT, PR=INDEX TO STORE 7 16498 MA(COUNT), RAM>BR, 16499 Y(STOR7), 16500 Y>PR, 16501 JUMP(SMENM8); ----- ----- 0D0 00010CA1 F8271000 ----- 16502 .ORG SMENM8, *COUNT-- 16503 MA(COUNT), 16504 A(-1), BR>B, ADD, 16505 Y>RAM, 16506 JUMP(SMENM9); ----- ----- CA1 00000CA2 78FF0101 ----- 16507 .ORG SMENM9, *GO BACK FOR STORE 7? 16508 *A= OPERAND 16509 MA(STORE), RAM>AR, 16510 JZ(SMENM10F,SMENM10T); ----- ----- CA2 0002259E 77000000 ----- 16511 *LOOP END 16512 * A=OPERAND 16513 .ORG SMENM10T, *UPDATE RVL, CFU, EXPT, EXPB 16514 *P830F2? 16515 MA(VDPOSD), 16516 AR>A, B(%00001111), AND, 16517 Y>RAM, 16518 JUMP(SMENM13); ----- ----- 59F 00000CA3 2C0F0910 ----- 16519 .ORG SMENM13, *BR=EXPREG 16520 *ONLY WANT P830F2, PDC AND VPS IN OPERAND COPY 16521 MA(EXPREG), RAM>BR, 16522 AR>A, B(P830F2+PDC+VPS+WSS), AND, * TCJ WSS 16523 Y>AR, 16524 JUMP(SMENM14); ----- ----- CA3 00230CA4 63F00810 ----- 16525 .ORG SMENM14, *CLEAR OLD P830F2 AND PDC 16526 MA(EXPREG), 16527 A(>FF-P830F2-PDC-VPS-WSS), BR>B, AND, * TCJ WSS 16528 Y>RAM, 16529 JUMP(SMENM15); ----- ----- CA4 00000CA5 630F0901 ----- 16530 .ORG SMENM15, *B=EXPREG 16531 MA(EXPREG), RAM>BR, 16532 JUMP(SMENM16); ----- ----- CA5 00010CA6 63000000 ----- 16533 .ORG SMENM16, *UPDATE P830F2 AND PDC 16534 MA(EXPREG), 16535 AR>A, BR>B, OR, 16536 Y>RAM, 16537 JUMP(DI120); ----- ----- CA6 000005BC 63001111 ----- 16538 *+++CLEAR MENU MODE 16539 * AR=SCREEN, BR=VPPRG1, LAST Y WAS MENM 16540 .ORG CMENM0, *ACTUALLY IN MENM? 16541 *MENM=0 16542 MA(SCREEN), 16543 AR>A, B(>FF-MENM), AND, 16544 Y>RAM, Y>AR, 16545 JZ(CMENM2F,CMENM2T); ----- ----- C91 002225A8 60F70910 ----- 16546 .ORG CMENM2T, *NO, EXIT 16547 JUMP(DI100); ----- ----- 5A9 000000D1 00000000 ----- 16548 .ORG CMENM2F, *SORT BACKROUND LATCHES TO RELEASE STORES 6 AND 7 16549 *SBL=1 16550 MA(VPPRG1), 16551 A(SBL), BR>B, OR, 16552 Y>RAM, 16553 JUMP(CMENM3); ----- ----- 5A8 00000CA7 61801101 ----- 16554 .ORG CMENM3, *BR=EXPREG 16555 MA(EXPREG), RAM>BR, 16556 JUMP(CMENM4); ----- ----- CA7 00010CA8 63000000 ----- 16557 .ORG CMENM4, *P830F2=0, VPS=0, STOP RECEIVING EXTENSION PACKETS 16558 *A MUST BE SCREEN FOR DI64 16559 MA(EXPREG), 16560 A(>FF-P830F2-VPS-WSS), BR>B, AND, * TCJ WSS 16561 Y>RAM, 16562 JUMP(DI64); ----- ----- CA8 00000264 634F0901 ----- 16563 *+++DISPLAY MENU PAGE 16564 * BR=SCREEN, AR=COPY OF MNDP0 OR MNDP1 AND MENM 16565 .ORG DMN0, *Y=MENM 16566 A(MENM), BR>B, AND, 16567 JUMP(DMN1); ----- ----- C92 00000CA9 00080801 ----- 16568 .ORG DMN1, *MENM? 16569 *BR=SCREEN 16570 MA(SCREEN), RAM>BR, 16571 JZ(DMN2F,DMN2T); ----- ----- CA9 000125AA 60000000 ----- 16572 .ORG DMN2T, *NOT IN MENU MODE, INVALID COMMAND 16573 JUMP(DI100); ----- ----- 5AB 000000D1 00000000 ----- 16574 .ORG DMN2F, *SET MNDP0 OR MNDP1 AS APPROPRIATE (TDISP=0) 16575 MA(SCREEN), 16576 AR.0F>A, BR.F0>B, OR, 16577 Y>RAM, 16578 JUMP(DI120); ----- ----- 5AA 000005BC 600011C3 ----- 16579 *+++DISPLAY TELETEXT PAGE 16580 * AR=SCREEN WITH MENDP1=MENDP0=TDISP=0 16581 .ORG DTPGE0, *SCREEN MSN=0? 16582 JZ(DTPGE1F,DTPGE1T); ----- ----- C93 000025AC 00000000 ----- 16583 .ORG DTPGE1T, *NO TELETEXT DISPLAY 16584 JUMP(DI120); ----- ----- 5AD 000005BC 00000000 ----- 16585 .ORG DTPGE1F, *TELETEXT DISPLAY 16586 *TDISP=1 16587 MA(SCREEN), 16588 AR>A, B(TDISP), OR, 16589 Y>RAM, 16590 JUMP(DI120); ----- ----- 5AC 000005BC 60041110 ----- 16591 *+++CLEAR MENU PAGE 16592 * AR=POLREG, PR=INDEX TO STORE FOR THIS MENU PAGE 16593 .ORG CMEN0, *BR=STORx 16594 *Y=VBI 16595 PR>MA, RAM>BR, 16596 A(%01000000), RCS>B, AND, 16597 JUMP(CMEN1); ----- ----- C94 00110CAA 0040080B ----- 16598 .ORG CMEN1, *RWL=STORE LATCH, VBI? 16599 MA(RWL), 16600 A(0), BRHI>B, OR, 16601 Y>RAM, Y>IO, 16602 JZ(CMEN2F,CMEN2T); ----- ----- CAA 000025AE 0B00510C ----- 16603 *IN VBI, NEED TO DELAY 16604 .ORG CMEN2F, *WAIT=1 16605 MA(POLREG), 16606 AR>A, B(WAIT), OR, 16607 Y>RAM, 16608 JUMP(DI100); ----- ----- 5AE 000000D1 10401110 ----- 16609 *OUT OF VBI 16610 .ORG CMEN2T, *CALL CSCNA 16611 *RET4=1, RETURN TO DI100 16612 MA(RET4), 16613 Y(1), 16614 Y>RAM, 16615 JUMP(CSCNA); ----- ----- 5AF 00000CA0 79011100 ----- 16616 *///7- 16617 * BR=RCSTAT, AR=INSTRUCTION 16618 .ORG DI7X, *CASE INS HIGH NIB=>7 16619 *BR=SCREEN 16620 *Y=VBI 16621 MA(SCREEN), RAM>BR, 16622 A(%01000000), RCS>B, AND, 16623 JUMP(DI7X1); ----- ----- 207 00010CAB 6040080B ----- 16624 .ORG DI7X1, *IN VBI? 16625 *Y=INS LO NIB 16626 AR.0F>A, B(0), OR, 16627 JZ(DI7X2F,DI7X2T); ----- ----- CAB 000025B8 000010C0 ----- 16628 .ORG DI7X2F, *IN VBI, DELAY IT 16629 *A=POLREG 16630 MA(POLREG), RAM>AR, 16631 JUMP(DI110); ----- ----- 5B8 00020582 10000000 ----- 16632 .ORG DI7X2T, *CASE INS LO NIB=? 16633 JY(DI70Y); ----- ----- 5B9 0000C250 00000000 ----- 16634 .ORG DI70Y, *CASE INS >70 16635 *TV 16636 *SCREEN MSN=0, TDISP=0 16637 *GO AND CLEAR UPDATE 16638 MA(SCREEN), 16639 A(>FF-TDISP), BR.0F>B, AND, 16640 Y>RAM, 16641 JUMP(TEXT10F); ----- ----- 250 000005BA 60FB0902 ----- 16642 .ORG DI71, *CASE INS >71 16643 *TEXT 16644 *SCREEN=1 16645 MA(SCREEN), 16646 A(>10), BR.0F>B, ADD, 16647 Y>RAM, 16648 JUMP(TEXT0); ----- ----- 251 00000CAC 60100102 ----- 16649 .ORG DI72, *CASE INS >72 16650 JUMP(DI100); ----- ----- 252 000000D1 00000000 ----- 16651 .ORG DI73, *CASE INS >73 16652 *MIX 16653 *SCREEN=2 16654 MA(SCREEN), 16655 A(>20), BR.0F>B, ADD, 16656 Y>RAM, 16657 JUMP(TEXT0); ----- ----- 253 00000CAC 60200102 ----- 16658 .ORG DI74, *CASE INS >74 16659 JUMP(DI100); ----- ----- 254 000000D1 00000000 ----- 16660 .ORG DI75, *CASE INS >75 16661 *BOX 16662 *SCREEN=3 16663 MA(SCREEN), 16664 A(>30), BR.0F>B, ADD, 16665 Y>RAM, 16666 JUMP(TEXT0); ----- ----- 255 00000CAC 60300102 ----- 16667 .ORG DI76, *CASE INS >76 16668 JUMP(DI100); ----- ----- 256 000000D1 00000000 ----- 16669 .ORG DI77, *CASE INS >77 16670 JUMP(DI100); ----- ----- 257 000000D1 00000000 ----- 16671 .ORG DI78, *CASE INS >78 16672 *AUTO 16673 *SET A FOR NEW SYS1 16674 *PCM=0, FIND=1, FNRM=0, FTOP=0, FFLF=0 16675 Y(FIND), 16676 Y>AR, 16677 JUMP(SPCM0); ----- ----- 258 00220CAD 00081000 ----- 16678 .ORG DI79, *CASE INS >79 16679 *NORMAL 16680 *SET A FOR NEW SYS1 16681 *PCM=0, FIND=0, FNRM=1, FTOP=0, FFLF=0 16682 Y(FNRM), 16683 Y>AR, 16684 JUMP(SPCM0); ----- ----- 259 00220CAD 00041000 ----- 16685 .ORG DI7A, *CASE INS >7A 16686 *FLOF 16687 *SET A FOR NEW SYS1 16688 *PCM=0, FIND=0, FNRM=0, FTOP=0, FFLF=1 16689 Y(FFLF), 16690 Y>AR, 16691 JUMP(SPCM0); ----- ----- 25A 00220CAD 00011000 ----- 16692 .ORG DI7B, *CASE INS >7B 16693 *TOP 16694 *SET A FOR NEW SYS1 16695 *PCM=0, FIND=1, FNRM=0, FTOP=1, FFLF=0 16696 Y(FIND+FTOP), 16697 Y>AR, 16698 JUMP(SPCM0); ----- ----- 25B 00220CAD 000A1000 ----- 16699 .ORG DI7C, *CASE INS >7C 16700 *FAVP 16701 *A=SYS1 16702 MA(SYS1), RAM>AR, 16703 JUMP(FVP0); ----- ----- 25C 00020CAE 08000000 ----- 16704 .ORG DI7D, *CASE INS >7D 16705 JUMP(DI100); ----- ----- 25D 000000D1 00000000 ----- 16706 .ORG DI7E, *CASE INS >7E 16707 JUMP(DI100); ----- ----- 25E 000000D1 00000000 ----- 16708 .ORG DI7F, *CASE INS >7F 16709 JUMP(DI100); ----- ----- 25F 000000D1 00000000 ----- 16710 */// 16711 *+++TEXT, MIX OR BOX DISPLAY 16712 * 16713 .ORG TEXT0, *SCREEN MSN IS NON ZERO (TEXT, MIX OR BOX) 16714 *CHECK IF TELETEXT OR MENU DISPLAY 16715 *Y=MNDP0+MNDP1, BR=UPDATED SCREEN 16716 MA(SCREEN), RAM>BR, 16717 A(MNDP0+MNDP1), BR>B, AND, 16718 JUMP(TEXT1); ----- ----- CAC 00010CAF 60030801 ----- 16719 .ORG TEXT1, *MNDP0+MNDP1? 16720 JZ(TEXT10F,TEXT10T); ----- ----- CAF 000025BA 00000000 ----- 16721 .ORG TEXT10T, *TELETEXT DISPLAY, SET TDISP 16722 MA(SCREEN), 16723 A(TDISP), BR>B, OR, 16724 Y>RAM, 16725 JUMP(TEXT10F); ----- ----- 5BB 000005BA 60041101 ----- 16726 *ENTER HERE TO CLEAR UPDATE 16727 .ORG TEXT10F, *BR=VDPTXT 16728 MA(VDPTXT), RAM>BR, 16729 JUMP(TEXT11); ----- ----- 5BA 00010CB0 2B000000 ----- 16730 .ORG TEXT11, *UPD=C8YET=0 16731 MA(VDPTXT), 16732 A(>FF-UPD-C8YET), BR>B, AND, 16733 Y>RAM, 16734 JUMP(TEXT20); ----- ----- CB0 00000CB1 2BCF0901 ----- 16735 .ORG TEXT20, *A=EXPREG 16736 MA(EXPREG), RAM>AR, 16737 JUMP(TEXT21); ----- ----- CB1 00020CB2 63000000 ----- 16738 .ORG TEXT21, *CLEAR USER STATUS MODE 16739 *USM=0 16740 MA(EXPREG), 16741 AR>A, B(>FF-USM), AND, 16742 Y>AR, 16743 JUMP(TEXT22); ----- ----- CB2 00220CB3 63FD0810 ----- 16744 .ORG TEXT22, *CPRF=CGAP=1 16745 MA(EXPREG), 16746 AR>A, B(CPRF+CGAP), OR, 16747 Y>RAM, 16748 JUMP(TEXT30); ----- ----- CB3 00000CB4 630C1110 ----- 16749 *GOING INTO TV WITH INCOMPLETE MAIN PAGE? 16750 .ORG TEXT30, *B=LSTINS 16751 MA(LSTINS), RAM>BR, 16752 JUMP(TEXT31); ----- ----- CB4 00010CB5 2E000000 ----- 16753 .ORG TEXT31, *Y=LSTINS LO NIB 16754 *A=PEN 16755 MA(PEN), RAM>AR, 16756 A(0), BR.0F>B, OR, 16757 JUMP(TEXT32); ----- ----- CB5 00020CB6 1B001002 ----- 16758 .ORG TEXT32, *GOING TO TV? IF NOT, EXIT 16759 *Y=PEN-4 16760 ARHI>A, B(-4), ADD, 16761 JZ(DI120,TEXT33T); ----- ----- CB6 000025BC 00FC0020 ----- 16762 .ORG TEXT33T, *SUB-PAGE MODE? 16763 *Y=PEN 16764 *A=VDPTXT 16765 MA(VDPTXT), RAM>AR, 16766 ARHI>A, B(0), OR, 16767 JN(TEXT34F,TEXT34T); ----- ----- 5BD 000245BE 2B001020 ----- 16768 .ORG TEXT34F, *SUB-PAGE MODE, EXIT 16769 *CLEAR URVL 16770 MA(VDPTXT), 16771 AR>A, B(>FF-URVL), AND, 16772 Y>RAM, 16773 JUMP(DI120); ----- ----- 5BE 000005BC 2BF70910 ----- 16774 .ORG TEXT34T, *MAIN PAGE MODE 16775 *INCOMPLETE MAIN PAGE? 16776 *CLEAR URVL 16777 MA(VDPTXT), 16778 AR>A, B(>FF-URVL), AND, 16779 Y>RAM, 16780 JZ(TEXT35F,TEXT35T); ----- ----- 5BF 000025C8 2BF70910 ----- 16781 .ORG TEXT35T, *COMPLETE MAIN PAGE, NOTHING TO DO 16782 JUMP(DI120); ----- ----- 5C9 000005BC 00000000 ----- 16783 .ORG TEXT35F, *INCOMPLETE MAIN PAGE, CALL PPDP0 16784 *P=0, RETURN TO PPAGE2Y->CMPE0 16785 Y(0), 16786 Y>PR, 16787 JUMP(PPDP0); ----- ----- 5C8 000004D0 80001000 ----- 16788 *+++SET PAGE CAPTURE MODE 16789 * A=UPDATED SYS1 16790 .ORG SPCM0, *UPDATE SYS1 16791 MA(SYS1), 16792 AR>A, B(0), OR, 16793 Y>RAM, 16794 JUMP(SPCM0A); ----- ----- CAD 00000CB7 08001110 ----- 16795 *ENTRY POINT FROM FAVP 16796 .ORG SPCM0A, *CALL INPMC0F 16797 *RETURN=1, RETURN TO SPCM1 16798 MA(RETURN), 16799 Y(1), 16800 Y>RAM, 16801 JUMP(INPCM0); ----- ----- CB7 00000919 7C011100 ----- 16802 .ORG SPCM1, *B=PEN 16803 MA(PEN), RAM>BR, 16804 JUMP(SPCM2); ----- ----- 621 00010CB8 1B000000 ----- 16805 .ORG SPCM2, *Y=PEN-4 16806 A(-4), BRHI>B, ADD, 16807 JUMP(SPCM3); ----- ----- CB8 00000CB9 00FC000C ----- 16808 .ORG SPCM3, *SUB-PAGE MODE? 16809 *Y=PEN 16810 A(0), BRHI>B, OR, 16811 JN(SPCM4F,SPCM4T); ----- ----- CB9 000045CA 0000100C ----- 16812 .ORG SPCM4F, *SUB-PAGE MODE, GO TO CMPE0 TO CLEAR IT 16813 JUMP(CMPE0); ----- ----- 5CA 000004F1 00000000 ----- 16814 .ORG SPCM4T, *COMPLETE MAIN PAGE ENTERED? 16815 JZ(SPCM5F,SPCM5T); ----- ----- 5CB 000025CC 00000000 ----- 16816 .ORG SPCM5T, *YES 16817 JUMP(DI100); ----- ----- 5CD 000000D1 00000000 ----- 16818 .ORG SPCM5F, *NO, GO TO LAST PAGE 16819 *CALL PPDP0 16820 *P=3, RETURN TO SPCM6 16821 *A=DPU, B=DPU 16822 MA(DPU), RAM>AR, RAM>BR, 16823 Y(3), 16824 Y>PR, 16825 JUMP(PPDP0); ----- ----- 5CC 000304D0 EA031000 ----- 16826 .ORG SPCM6, 16827 JUMP(CMPE0); ----- ----- 49B 000004F1 00000000 ----- 16828 *+++SET FAVOURITE PAGE MODE 16829 * A=SYS1 16830 .ORG FVP0, *UPDATE SYS1 16831 *PCM=3 16832 MA(SYS1), 16833 AR>A, B(>30), OR, 16834 Y>RAM, 16835 JUMP(SPCM0A); ----- ----- CAE 00000CB7 08301110 ----- 16836 */// 16837 *+++STOD: START TIME OUT DISPLAY 16838 *ENTRY POINT FROM KEY1DT, DIG6T, DIG7T 16839 * A=DHREG 16840 .ORG STOD0, *TOD=1 16841 MA(DHREG), 16842 AR>A, B(TOD), OR, 16843 Y>AR, 16844 JUMP(STOD1); ----- ----- BFA 00220CBA 32081010 ----- 16845 .ORG STOD1, *POOCD=0 16846 MA(DHREG), 16847 AR>A, B(>FF-POOCD), AND, 16848 Y>RAM, 16849 JUMP(STOD2); ----- ----- CBA 00000CBB 32DF0910 ----- 16850 .ORG STOD2, *INIT 5S TIME OUT 16851 MA(TIMOUT), 16852 Y(>FF), 16853 Y>RAM, 16854 JUMP(DI120); ----- ----- CBB 000005BC 3BFF1100 ----- 16855 *///COMMON EXIT TO CLEAR OPCNT 16856 .ORG DI100, *AR=RCSTAT 16857 MA(RCSTAT), RAM>AR, 16858 JUMP(DI101); ----- ----- 0D1 00020CBC 2F000000 ----- 16859 .ORG DI101, *OPCNT=0 16860 MA(RCSTAT), 16861 AR.F0>A, B(0), OR, 16862 Y>RAM, 16863 JUMP(ST0F); ----- ----- CBC 00000001 2F0011D0 ----- 16864 *///COMMON EXIT TO SET WAIT 16865 * A=POLREG 16866 .ORG DI110, *WAIT=1, EXIT WITHOUT CLEARING OPCNT 16867 MA(POLREG), 16868 AR>A, B(WAIT), OR, 16869 Y>RAM, 16870 JUMP(ST0F); ----- ----- 582 00000001 10401110 ----- 16871 *///COMMON EXIT TO CLEAR OPCNT AND CALL SVDP ROUTINE IN NEXT VPP 16872 .ORG DI120, *AR=VPPRG1 16873 MA(VPPRG1), RAM>AR, 16874 JUMP(DI121); ----- ----- 5BC 00020CBD 61000000 ----- 16875 .ORG DI121, *CSVDP=1 16876 MA(VPPRG1), 16877 AR>A, B(CSVDP), OR, 16878 Y>RAM, 16879 JUMP(DI100); ----- ----- CBD 000000D1 61101110 ----- 16880 ************************************************************************ 16881 * section 5: sub-routines * 16882 ************************************************************************ 16883 * 16884 ***SVDP: SET VDP 16885 * 16886 * This routine updates the VDP registers according to VDPTXT or VDPOSD 16887 * according to whether the display page is teletext or a menu page. 16888 * This should be the main place where VDP registers are updated. COUNT 16889 * is used a temp store for VDP---. 16890 * 16891 .ORG SVDP0, *AR=SCREEN 16892 MA(SCREEN), RAM>AR, 16893 JUMP(UDPL0); ----- ----- 346 00020CBE 60000000 ----- 16894 *UPDATE DISPLAY LATCH 16895 * AR=SCREEN 16896 .ORG UDPL0, *Y=SCREEN MSN (PIC, MIX, BOX, TEXT) 16897 AR.F0>A, B(0), OR, 16898 JUMP(UDPL1); ----- ----- CBE 00000CBF 000010D0 ----- 16899 .ORG UDPL1, *Y=MNDP1+MNDP0 16900 *TV MODE? 16901 *BR=STOR0 16902 MA(STOR0), RAM>BR, 16903 AR>A, B(MNDP1+MNDP0), AND, 16904 JZ(UDPL2F,UDPL2T); ----- ----- CBF 000125CE 20030810 ----- 16905 .ORG UDPL2T, *TV MODE, SET DPL=STORE 0 TO ALLOW CLOCK DISPLAY 16906 *AR=VDP0 16907 MA(VDP0), RAM>AR, 16908 JUMP(UDPL3T); ----- ----- 5CF 000205D1 00000000 ----- 16909 .ORG UDPL2F, *DISPLAY A MENU PAGE? 16910 *Y=MNDP0 16911 *AR=VDP0 16912 MA(VDP0), RAM>AR, 16913 AR>A, B(MNDP0), AND, 16914 JZ(UDPL3F,UDPL3T); ----- ----- 5CE 000225D0 00010810 ----- 16915 .ORG UDPL3T, *DISPLAY TELETEXT PAGE 16916 *SET DPL TO LATCH IN STORE 0 16917 *AR=VDP0 16918 MA(VDP0), 16919 AR.F0>A, BRHI>B, OR, 16920 Y>RAM, Y>IO, Y>AR, 16921 JUMP(SVDP1); ----- ----- 5D1 00220CC0 000051DC ----- 16922 .ORG UDPL3F, *DISPLAY WHICH MENU PAGE? 16923 *BR=STOR7 (LATCH FOR MENU PAGE 1) 16924 MA(STOR7), RAM>BR, 16925 JZ(UDPL4F,UDPL4T); ----- ----- 5D0 000125D2 27000000 ----- 16926 .ORG UDPL4F, *DISPLAY MENU PAGE 0 16927 *BR=STOR6 (LATCH FOR MENU PAGE 0) 16928 MA(STOR6), RAM>BR, 16929 JUMP(UDPL4T); ----- ----- 5D2 000105D3 26000000 ----- 16930 .ORG UDPL4T, *SET DPL TO MENU PAGE LATCH 16931 *AR=VDP0 16932 MA(VDP0), 16933 AR.F0>A, BRHI>B, OR, 16934 Y>RAM, Y>IO, Y>AR, 16935 JUMP(SVDP1); ----- ----- 5D3 00220CC0 000051DC ----- 16936 * AR=VDP0 16937 .ORG SVDP1, *RWL=DPL 16938 MA(RWL), 16939 AR.0F>A, B(0), OR, 16940 Y>RAM, Y>IO, 16941 JUMP(SVDP1A); ----- ----- CC0 00000CC1 0B0051C0 ----- 16942 .ORG SVDP1A, *AR=VDP1 16943 MA(VDP1), RAM>AR, 16944 JUMP(SVDP1B); ----- ----- CC1 00020CC2 01000000 ----- 16945 .ORG SVDP1B, *CLEAR BR24, EXPT, EXPB, BOX, MIX AND TEXT IN RAM COPY 16946 MA(VDP1), 16947 AR>A, B(>FF-BR24-EXPT-EXPB-BOX-MIX-TEXT), AND, 16948 Y>RAM, 16949 JUMP(SVDP1C); ----- ----- CC2 00000CC3 01480910 ----- 16950 .ORG SVDP1C, *BR=SCREEN 16951 MA(SCREEN), RAM>BR, 16952 JUMP(SVDP2); ----- ----- CC3 00010CC4 60000000 ----- 16953 .ORG SVDP2, *AR=VDP4 16954 *Y=SCREEN MSN 16955 MA(VDP4), RAM>AR, 16956 A(0), BR.F0>B, OR, 16957 JUMP(SVDP2A); ----- ----- CC4 00020CC5 04001003 ----- 16958 .ORG SVDP2A, *CLOCK=0 16959 *IN TV MODE? 16960 MA(VDP4), 16961 AR>A, B(>FF-CLOCK), AND, 16962 Y>RAM, Y>IO, 16963 JZ(SVDP3F,PIC0T); ----- ----- CC5 000025D4 047F4910 ----- 16964 *TV MODE 16965 .ORG PIC0T, *BR=VDPTXT 16966 MA(VDPTXT), RAM>BR, 16967 JUMP(PIC10); ----- ----- 5D5 00010CC6 2B000000 ----- 16968 .ORG PIC10, *Y=UCLK 16969 *AR=VDP0 16970 MA(VDP0), RAM>AR, 16971 A(UCLK), BR>B, AND, 16972 JUMP(PIC11); ----- ----- CC6 00020CC7 00800801 ----- 16973 *WORK OUT VDP0 IN A 16974 .ORG PIC11, *UCLK? 16975 *R24ON=R1T23=R0ON=0 16976 AR>A, B(>FF-R24ON-R1T23-R0ON), AND, 16977 Y>AR, 16978 JZ(PIC12F,PIC12T); ----- ----- CC7 002225D6 008F0810 ----- 16979 *IN CLOCK MODE 16980 .ORG PIC12F, *R0ON=1, B=VDP4 16981 MA(VDP4), RAM>BR, 16982 AR>A, B(R0ON), OR, 16983 Y>AR, 16984 JUMP(PIC13); ----- ----- 5D6 00230CC8 04101010 ----- 16985 .ORG PIC13, *CLOCK=1 16986 MA(VDP4), 16987 A(CLOCK), BR>B, OR, 16988 Y>RAM, Y>IO, 16989 JUMP(PIC13A); ----- ----- CC8 00000CC9 04805101 ----- 16990 .ORG PIC13A, *B=VDP1 16991 MA(VDP1), RAM>BR, 16992 JUMP(PIC14); ----- ----- CC9 00010CCA 01000000 ----- 16993 .ORG PIC14, *SET BOX MODE 16994 MA(VDP1), 16995 A(TEXT+BOX), BR>B, OR, 16996 Y>RAM, Y>IO, 16997 JUMP(PIC12T); ----- ----- CCA 000005D7 01055101 ----- 16998 * 16999 .ORG PIC12T, *B=EXPREG 17000 MA(EXPREG), RAM>BR, 17001 JUMP(PIC15); ----- ----- 5D7 00010CCB 63000000 ----- 17002 .ORG PIC15, *Y=USM 17003 A(USM), BR>B, AND, 17004 JUMP(PIC16); ----- ----- CCB 00000CCC 00020801 ----- 17005 .ORG PIC16, *USER STATUS MODE? 17006 *B=VDP1 17007 MA(VDP1), RAM>BR, 17008 JZ(PIC17F,PIC17T); ----- ----- CCC 000125D8 01000000 ----- 17009 .ORG PIC17T, *UPDATE VDP1 17010 MA(VDP1), 17011 A(0), BR>B, OR, 17012 Y>RAM, Y>IO, 17013 JUMP(PIC19); ----- ----- 5D9 00000CCD 01005101 ----- 17014 *USER STATUS MODE 17015 .ORG PIC17F, *DISPLAY STATUS IN A BOX 17016 *SET BOX MODE 17017 MA(VDP1), 17018 A(TEXT+BOX), BR>B, OR, 17019 Y>RAM, Y>IO, 17020 JUMP(PIC18); ----- ----- 5D8 00000CCE 01055101 ----- 17021 .ORG PIC18, *ENABLE ROW 24 17022 AR>A, B(R24ON), OR, 17023 Y>AR, 17024 JUMP(PIC19); ----- ----- CCE 00220CCD 00401010 ----- 17025 * 17026 .ORG PIC19, *UPDATE VDP0 17027 MA(VDP0), 17028 AR>A, B(0), OR, 17029 Y>RAM, Y>IO, 17030 JUMP(SVDP200); ----- ----- CCD 00000CCF 00005110 ----- 17031 *TEXT, BOX OR MIX MODE 17032 .ORG SVDP3F, *BR=SCREEN, PR=SPM INDEX 17033 MA(SCREEN), RAM>BR, 17034 Y(-14), 17035 Y>PR, 17036 JUMP(SVDP4); ----- ----- 5D4 00010CD0 E0F21000 ----- 17037 .ORG SVDP4, *Y=MNDP0+MNDP1 17038 *TPD=SPM 17039 RVDP, 17040 A(MNDP0+MNDP1), BR>B, AND, 17041 JUMP(SVDP5); ----- ----- CD0 00000CD1 00038801 ----- 17042 .ORG SVDP5, *MENU DISPLAY PAGE? 17043 JZ(SVDP6F,SVDP6T); ----- ----- CD1 000025DA 00000000 ----- 17044 *MENU PAGE LATCH, SKIP UPDATE PROCESSING 17045 .ORG SVDP6F, *OSD LATCH, AR=VDPOSD 17046 MA(VDPOSD), RAM>AR, 17047 JUMP(SVDP6A); ----- ----- 5DA 00020CD2 2C000000 ----- 17048 .ORG SVDP6A, *COUNT=AR 17049 MA(COUNT), 17050 AR>A, B(0), OR, 17051 Y>RAM, 17052 JUMP(SVDP6B); ----- ----- CD2 00000CD3 78001110 ----- 17053 .ORG SVDP6B, *B=VDP1 17054 *A=NEW EXPT AND EXPB (SHIFT UP UEXT+UEXB) 17055 MA(VDP1), RAM>BR, 17056 AR<<4>A, B(EXPT+EXPB), AND, 17057 Y>AR, 17058 JUMP(SVDP6C); ----- ----- CD3 00230CD4 01300830 ----- 17059 .ORG SVDP6C, *OR UEXT+UEXB INTO VDP1 17060 *UPDATE R24ON, R1T23, R0ON LATER 17061 MA(VDP1), 17062 AR>A, BR>B, OR, 17063 Y>RAM, *Y>IO, TCJ Jan 93 17064 JUMP(SVDP6D); ----- ----- CD4 00000CD5 01001111 ----- 17065 .ORG SVDP6D, *BR=SCREEN 17066 MA(SCREEN), RAM>BR, 17067 JUMP(SVDP6E); ----- ----- CD5 00010CD6 60000000 ----- 17068 .ORG SVDP6E, *Y=SCREEN 17069 *AR=VDP1 17070 MA(VDP1), RAM>AR, 17071 A(3), BRHI>B, AND, 17072 JUMP(SVDP6G); ----- ----- CD6 00020CD7 0103080C ----- 17073 .ORG SVDP6G, *Y=0 17074 *BR=COUNT 17075 MA(COUNT), RAM>BR, 17076 Y(0), 17077 JY(SVDP20Y); ----- ----- CD7 0001C090 78001000 ----- 17078 *TELETEXT LATCH, DO UPDATE PROCESSING 17079 .ORG SVDP6T, *AR=VDPTXT 17080 MA(VDPTXT), RAM>AR, 17081 JUMP(SVDP7); ----- ----- 5DB 00020CD8 2B000000 ----- 17082 .ORG SVDP7, *COUNT=AR 17083 MA(COUNT), 17084 AR>A, B(0), OR, 17085 Y>RAM, 17086 JUMP(SVDP7A); ----- ----- CD8 00000CD9 78001110 ----- 17087 .ORG SVDP7A, *B=VDP1 17088 *A=NEW EXPT AND EXPB (SHIFT UP UEXT+UEXB) 17089 MA(VDP1), RAM>BR, 17090 AR<<4>A, B(EXPT+EXPB), AND, 17091 Y>AR, 17092 JUMP(SVDP8); ----- ----- CD9 00230CDA 01300830 ----- 17093 .ORG SVDP8, *OR UEXT+UEXB INTO VDP1 17094 *UPDATE R24ON, R1T23, R0ON LATER 17095 MA(VDP1), 17096 AR>A, BR>B, OR, 17097 Y>RAM, *Y>IO, TCJ Jan 93 17098 JUMP(SVDP8A); ----- ----- CDA 00000CDB 01001111 ----- 17099 .ORG SVDP8A, *BR=VDPTXT 17100 MA(VDPTXT), RAM>BR, 17101 JUMP(SVDP9); ----- ----- CDB 00010CDC 2B000000 ----- 17102 .ORG SVDP9, *Y=UPD+C8YET>>4 17103 *AR=SCREEN 17104 MA(SCREEN), RAM>AR, 17105 A(3), BRHI>B, AND, 17106 JUMP(SVDP9A); ----- ----- CDC 00020CDD 6003080C ----- 17107 .ORG SVDP9A, *CASE UPD+C8YET=? 17108 *Y=SCREEN 17109 *AR=VDP1 17110 MA(VDP1), RAM>AR, 17111 ARHI>A, B(3), AND, 17112 JY(SVDP10Y); ----- ----- CDD 0002C080 01030820 ----- 17113 *ENTRY POINT AFTER CLEARING UPDATE IF PAGE IS SUBT OR NWSF 17114 .ORG SVDP10Y, *CASE NO UPD OR C8YET 17115 *BR=SCREEN 17116 MA(SCREEN), RAM>BR, 17117 JUMP(SVDP14); ----- ----- 080 00010CDE 60000000 ----- 17118 .ORG SVDP11, *CASE C8YET 17119 *BR=SCREEN 17120 MA(SCREEN), RAM>BR, 17121 JUMP(SVDP14); ----- ----- 081 00010CDE 60000000 ----- 17122 .ORG SVDP12, *CASE UPD 17123 *UPDATE MODE BUT PAGE NOT UPDATED 17124 *A=VDP0 17125 MA(VDP0), RAM>AR, 17126 JUMP(SVDP12A); ----- ----- 082 00020CDF 00000000 ----- 17127 .ORG SVDP12A, *R0ON=1, R1T23=0, R24ON=0 17128 MA(VDP0), 17129 AR.0F>A, B(R0ON), OR, 17130 Y>RAM, Y>IO, 17131 JUMP(SVDP12B); ----- ----- CDF 00000CE0 001051C0 ----- 17132 .ORG SVDP12B, *A=DHREG 17133 MA(DHREG), RAM>AR, 17134 JUMP(SVDP13JT); ----- ----- CE0 000205DF 32000000 ----- 17135 * 17136 .ORG SVDP13, *CASE UPD AND C8YET 17137 *Y=NWSF+SUBT 17138 TPD>A, B(NWSF+SUBT), AND, 17139 JUMP(SVDP13A); ----- ----- 083 00000CE1 00C00890 ----- 17140 .ORG SVDP13A, *NWSF OR SUBT? 17141 *BR=VDPTXT 17142 MA(VDPTXT), RAM>BR, 17143 JZ(SVDP13BF,SVDP13BT); ----- ----- CE1 000125DC 2B000000 ----- 17144 *NWSF OR SUBT, DISPLAY PAGE STRAIGHT AWAY 17145 .ORG SVDP13BF, *UPD=0 17146 MA(VDPTXT), 17147 A(>FF-UPD), BR>B, AND, 17148 Y>RAM, 17149 JUMP(SVDP10Y); ----- ----- 5DC 00000080 2BDF0901 ----- 17150 *DISPLAY UPDATED PAGE NUMBER 17151 *FIRST SET R1T23 FOR NOKIA ALARM CLOCK 17152 .ORG SVDP13BT, *A=VDP0 17153 MA(VDP0), RAM>AR, 17154 JUMP(SVDP13BA); ----- ----- 5DD 00020CE2 00000000 ----- 17155 .ORG SVDP13BA, *R0ON=1, R1T23=1, R24ON=0 17156 MA(VDP0), 17157 AR.0F>A, B(R0ON+R1T23), OR, 17158 Y>RAM, Y>IO, 17159 JUMP(SVDP13BB); ----- ----- CE2 00000CE3 003051C0 ----- 17160 * 17161 .ORG SVDP13BB, *B=PEN 17162 MA(PEN), RAM>BR, 17163 JUMP(SVDP13G); ----- ----- CE3 00010CE4 1B000000 ----- 17164 .ORG SVDP13G, *A=DHREG, Y=PEN-4 17165 MA(DHREG), RAM>AR, 17166 A(-4), BRHI>B, ADD, 17167 JUMP(SVDP13H); ----- ----- CE4 00020CE5 32FC000C ----- 17168 .ORG SVDP13H, *SUB-PAGE MODE? 17169 *A=ICP+NRH+TOD 17170 AR>A, B(ICP+NRH+TOD), AND, 17171 Y>AR, 17172 JN(SVDP13JF,SVDP13JT); ----- ----- CE5 002245DE 00580810 ----- 17173 *SUB-PAGE MODE 17174 .ORG SVDP13JF, *SUB-PAGE MODE 17175 *Y=ICP+!NRH+TOD 17176 AR>A, B(NRH), XOR, 17177 JUMP(SVDP13M); ----- ----- 5DE 00000CE6 00101810 ----- 17178 *NOT SUB-PAGE MODE, DISPLAY ROW 24 IF TOD SET 17179 *ENTRY POINT FROM SVDP12 17180 .ORG SVDP13JT, *Y=TOD 17181 AR>A, B(TOD), AND, 17182 JUMP(SVDP13M); ----- ----- 5DF 00000CE6 00080810 ----- 17183 *UPDATE VDP0 17184 .ORG SVDP13M, *DISPLAY ROW 24? 17185 *A=VDP0 17186 MA(VDP0), RAM>AR, 17187 JZ(SVDP13PF,SVDP13PT); ----- ----- CE6 000225E4 00000000 ----- 17188 .ORG SVDP13PF, *ENABLE ROW24 17189 *R24ON=1 17190 MA(VDP0), 17191 AR>A, B(R24ON), OR, 17192 Y>RAM, Y>IO, 17193 JUMP(SVDP13PT); ----- ----- 5E4 000005E5 00405110 ----- 17194 * 17195 .ORG SVDP13PT, *A=VDP1 17196 MA(VDP1), RAM>AR, 17197 JUMP(SVDP13R); ----- ----- 5E5 00020CE7 01000000 ----- 17198 .ORG SVDP13R, *SET BOX MODE 17199 *GO AND UPDATE VDP2 AND VDP3 17200 MA(VDP1), 17201 AR>A, B(TEXT+BOX), OR, 17202 Y>RAM, Y>IO, 17203 JUMP(SVDP50T); ----- ----- CE7 00000607 01055110 ----- 17204 * 17205 .ORG SVDP14, *Y=SCREEN 17206 *AR=VDP1 17207 MA(VDP1), RAM>AR, 17208 A(3), BRHI>B, AND, 17209 JUMP(SVDP18); ----- ----- CDE 00020CE8 0103080C ----- 17210 .ORG SVDP18, *Y=SUBT+NWSF 17211 *BR=COUNT 17212 MA(COUNT), RAM>BR, 17213 TPD>A, B(SUBT+NWSF), AND, 17214 JY(SVDP20Y); ----- ----- CE8 0001C090 78C00890 ----- 17215 *MENU AND TELETEXT ROUTINES JOIN UP HERE 17216 * COUNT= VDPTXT OR VDPOSD 17217 .ORG SVDP20Y, *PICTURE, ERROR ###1 17218 *BASE FOR CASE ONLY! DO THE SAME AS TEXT! 17219 *NOT MENU DISPLAY PAGE AND (NWSF+SUBT)? 17220 *AR=TEXT, BR=VDP1 17221 *VDP1 HAS TEXT, MIX, BOX MASKED 17222 MA(VDP1), RAM>BR, 17223 A(TEXT), B(TEXT), OR, 17224 Y>AR, 17225 JZ(SVDP22AF,SVDP22AT); ----- ----- 090 002325E6 01011000 ----- 17226 .ORG SVDP21, *CASE SCREEN=1, TEXT 17227 *NOT MENU DISPLAY PAGE AND (NWSF+SUBT)? 17228 *AR=TEXT, BR=VDP1 17229 *VDP1 HAS TEXT, MIX, BOX MASKED 17230 MA(VDP1), RAM>BR, 17231 A(TEXT), B(TEXT), OR, 17232 Y>AR, 17233 JZ(SVDP22AF,SVDP22AT); ----- ----- 091 002325E6 01011000 ----- 17234 .ORG SVDP22, *CASE SCREEN=2, MIX 17235 *NOT MENU DISPLAY PAGE AND (NWSF+SUBT)? 17236 *AR=TEXT+MIX, BR=VDP1 17237 *VDP1 HAS TEXT, MIX, BOX MASKED 17238 MA(VDP1), RAM>BR, 17239 A(TEXT+MIX), B(TEXT+MIX), OR, 17240 Y>AR, 17241 JZ(SVDP22AF,SVDP22AT); ----- ----- 092 002325E6 01031000 ----- 17242 .ORG SVDP22AF, *NOT MENU PAGE AND SUBT OR NWSF 17243 *SET BOX MODE 17244 MA(VDP1), 17245 A(TEXT+BOX), BR>B, OR, 17246 Y>RAM, Y>IO, 17247 JUMP(SVDP24); ----- ----- 5E6 00000CE9 01055101 ----- 17248 .ORG SVDP22AT, *SET TEXT OR MIX 17249 MA(VDP1), 17250 AR>A, BR>B, OR, 17251 Y>RAM, Y>IO, 17252 JUMP(SVDP24); ----- ----- 5E7 00000CE9 01005111 ----- 17253 .ORG SVDP23, *SET BOX 17254 *VDP1 HAS TEXT, MIX, BOX MASKED 17255 MA(VDP1), 17256 AR>A, B(TEXT+BOX), OR, 17257 Y>RAM, Y>IO, 17258 JUMP(SVDP24); ----- ----- 093 00000CE9 01055110 ----- 17259 **COMPLETED UPDATE OF TEXT, BOX AND MIX BITS IN VDP1 17260 .ORG SVDP24, *B=COUNT 17261 MA(COUNT), RAM>BR, 17262 JUMP(SVDP25); ----- ----- CE9 00010CEA 78000000 ----- 17263 .ORG SVDP25, *Y=URVL 17264 *BR=SCREEN 17265 MA(SCREEN), RAM>BR, 17266 A(URVL), BR>B, AND, 17267 JUMP(SVDP26); ----- ----- CEA 00010CEB 60080801 ----- 17268 .ORG SVDP26, *URVL? 17269 *Y=MNDP0+MNDP1, AR=VDP1 17270 MA(VDP1), RAM>AR, 17271 A(MNDP0+MNDP1), BR>B, AND, 17272 JZ(SVDP27F,SVDP27T); ----- ----- CEB 000225EC 01030801 ----- 17273 .ORG SVDP27F, *URVL, SET RVL BIT 17274 *MENU DISPLAY PAGE? 17275 MA(VDP1), 17276 AR>A, B(RVL), OR, 17277 Y>RAM, Y>IO, 17278 JZ(SVDP28F,SVDP28T); ----- ----- 5EC 000025EE 01085110 ----- 17279 .ORG SVDP27T, *CLR RVL BIT 17280 *MENU DISPLAY PAGE? 17281 MA(VDP1), 17282 AR>A, B(>FF-RVL), AND, 17283 Y>RAM, Y>IO, 17284 JZ(SVDP28F,SVDP28T); ----- ----- 5ED 000025EE 01F74910 ----- 17285 *+++THIS LATCH IS IN OSD MODE 17286 .ORG SVDP28F, *MENU DISPLAY PAGE 17287 *Y=MNDP1 17288 *AR=VDP0 17289 MA(VDP0), RAM>AR, 17290 A(MNDP1), BR>B, AND, 17291 JUMP(SVDP30); ----- ----- 5EE 00020CEC 00020801 ----- 17292 .ORG SVDP30, *ENABLE ALL ROWS, MNDP1? 17293 MA(VDP0), 17294 AR.0F>A, B(R24ON+R1T23+R0ON), OR, 17295 Y>RAM, Y>IO, 17296 JZ(SVDP31F,SVDP31T); ----- ----- CEC 000025F0 007051C0 ----- 17297 .ORG SVDP31F, *MNDP1, DISPLAY PAGE ROW 24 IS STORED IN ROW 24 17298 *INHIBIT ROW 24 DISPLAY 17299 MA(VDP0), 17300 AR.0F>A, B(R1T23+R0ON), OR, 17301 Y>RAM, Y>IO, 17302 JUMP(SVDP31T); ----- ----- 5F0 000005F1 003051C0 ----- 17303 * 17304 .ORG SVDP31T, *AR=USRLAN 17305 MA(USRLAN), RAM>AR, 17306 JUMP(SVDP32); ----- ----- 5F1 00020CED 2D000000 ----- 17307 .ORG SVDP32, *VDP2=USRLAN 17308 MA(VDP2), 17309 AR>A, B(0), OR, 17310 Y>RAM, 17311 * Y>IO, *<---- !TCJ! VDP2 write 17312 * JUMP(SVDP33); 17313 JUMP(SVDP200); ----- ----- CED 00000CCF 02001110 ----- 17314 * 17315 *.ORG SVDP33, *VDP3=USRLAN 17316 * MA(VDP3), 17317 * AR>A, B(0), OR, Y>AR, 17318 * Y>IO, *<---- !TCJ! VDP3 write 17319 * JUMP(SVDP200); 17320 *+++THIS LATCH IS IN TELETEXT MODE 17321 *+++WORK OUT VDP0 IN AR, DISPLAY ROW 0 AND ROWS 1 TO 23? 17322 .ORG SVDP28T, *NOT A MENU DISPLAY PAGE 17323 *PR=-13 (POINT TO CG) 17324 A(-13), B(-13), OR, 17325 Y>PR, 17326 JUMP(SVDP40); ----- ----- 5EF 00000CEE 80F31000 ----- 17327 .ORG SVDP40, *TPD=CG 17328 RVDP, 17329 JUMP(SVDP40A); ----- ----- CEE 00000CEF 00008000 ----- 17330 .ORG SVDP40A, *Y=IHD 17331 *A=VDP0 17332 MA(VDP0), RAM>AR, 17333 TPD>A, B(%1000), AND, 17334 JUMP(SVDP41); ----- ----- CEF 00020CF0 00080890 ----- 17335 .ORG SVDP41, *Y=SPH, IHD? 17336 *BR=VDPTXT 17337 MA(VDPTXT), RAM>BR, 17338 TPD>A, B(%0001), AND, 17339 JZ(SVDP42F,SVDP42T); ----- ----- CF0 000125F2 2B010890 ----- 17340 .ORG SVDP42F, *IHD, R0ON=1, R1T23=0, R24ON=0 17341 *B=SYS2 17342 MA(SYS2), RAM>BR, 17343 AR.0F>A, B(R0ON), OR, 17344 Y>AR, 17345 JUMP(SVDP44); ----- ----- 5F2 00230CF1 091010C0 ----- 17346 .ORG SVDP42T, *NOT IHD, SPH? 17347 *Y=STOP 17348 *B=DHREG 17349 MA(DHREG), RAM>BR, 17350 A(STOP), BR>B, AND, 17351 JZ(SVDP43F,SVDP43T); ----- ----- 5F3 000125F4 32040801 ----- 17352 .ORG SVDP43T, *NO SPH, NO IHD R0ON=1, RIT23=1, R24ON=0 17353 *B=SYS2 17354 MA(SYS2), RAM>BR, 17355 AR.0F>A, B(R0ON+R1T23), OR, 17356 Y>AR, 17357 JUMP(SVDP44); ----- ----- 5F5 00230CF1 093010C0 ----- 17358 *SPH BIT SET, OK TO SUPPRESS IT? 17359 .ORG SVDP43F, *SPH 17360 *PAGE HELD? 17361 *Y=NRH 17362 A(NRH), BR>B, AND, 17363 JZ(SVDP43AF,SVDP43AT); ----- ----- 5F4 000025F6 00100801 ----- 17364 .ORG SVDP43AF, *HELD PAGE, DO NOT SUPRESS HEADER 17365 *NO SPH, NO IHD R0ON=1, RIT23=1, R24ON=0 17366 *B=SYS2 17367 MA(SYS2), RAM>BR, 17368 AR.0F>A, B(R0ON+R1T23), OR, 17369 Y>AR, 17370 JUMP(SVDP44); ----- ----- 5F6 00230CF1 093010C0 ----- 17371 .ORG SVDP43AT, *PAGE NOT HELD 17372 *ROLLING HEADER? 17373 *Y=ICP+TOD 17374 A(ICP+TOD), BR>B, AND, 17375 JZ(SVDP43BF,SVDP43BT); ----- ----- 5F7 000025F8 00480801 ----- 17376 .ORG SVDP43BT, *ROLLING HEADER, DO NOT SUPRESS HEADER 17377 *NO SPH, NO IHD R0ON=1, RIT23=1, R24ON=0 17378 *B=SYS2 17379 MA(SYS2), RAM>BR, 17380 AR.0F>A, B(R0ON+R1T23), OR, 17381 Y>AR, 17382 JUMP(SVDP44); ----- ----- 5F9 00230CF1 093010C0 ----- 17383 .ORG SVDP43BF, *PAGE NOT HELD AND HEADER NOT ROLLING 17384 *INCOMPLETE PAGE OR TOD? 17385 JZ(SVDP43CF,SVDP43CT); ----- ----- 5F8 000025FA 00000000 ----- 17386 .ORG SVDP43CF, *INCOMPLETE PAGE 17387 *NO SPH, NO IHD R0ON=1, RIT23=1, R24ON=0 17388 *B=SYS2 17389 MA(SYS2), RAM>BR, 17390 AR.0F>A, B(R0ON+R1T23), OR, 17391 Y>AR, 17392 JUMP(SVDP44); ----- ----- 5FA 00230CF1 093010C0 ----- 17393 *IHD=0, NRH=1, ICP=0, STOP=0: OK TO SUPRESS HEADER 17394 .ORG SVDP43CT, *R0ON=0, R1T23=1, R24ON=0 17395 *B=SYS2 17396 MA(SYS2), RAM>BR, 17397 AR.0F>A, B(R1T23), OR, 17398 Y>AR, 17399 JUMP(SVDP44); ----- ----- 5FB 00230CF1 092010C0 ----- 17400 *+++WORKING OUT VDP0 IN AR, DISPLAY ROW 24? 17401 * B=SYS2 17402 .ORG SVDP44, *Y=APIN 17403 *B=DHREG 17404 MA(DHREG), RAM>BR, 17405 A(APIN), BR>B, AND, 17406 JUMP(SVDP45); ----- ----- CF1 00010CF2 32010801 ----- 17407 .ORG SVDP45, *AUTO PROMPT GENERATION OFF? 17408 *Y=TOD+ICP 17409 A(TOD+ICP), BR>B, AND, 17410 JZ(SVDP45AF,SVDP45AT); ----- ----- CF2 000025FC 00480801 ----- 17411 *AUTO PROMPT OFF 17412 .ORG SVDP45AF, *APIN==1 17413 *R24ON=1 17414 MA(VDP0), 17415 AR>A, B(R24ON), OR, 17416 Y>RAM, Y>IO, 17417 JUMP(SVDP50T); ----- ----- 5FC 00000607 00405110 ----- 17418 *AUTO PROMPT ON 17419 .ORG SVDP45AT, *TOD OR ICP? 17420 *Y=NRH 17421 *B=VPPRG2 17422 MA(VPPRG2), RAM>BR, 17423 A(NRH), BR>B, AND, 17424 JZ(SVDP46AF,SVDP46AT); ----- ----- 5FD 000125FE 62100801 ----- 17425 .ORG SVDP46AT, *NOT TOD OR ICP, ROLLING THE HEADER? 17426 *Y=SUBT 17427 A(SUBT), BR>B, AND, 17428 JZ(SVDP47F,SVDP47T); ----- ----- 5FF 00002600 00800801 ----- 17429 .ORG SVDP46AF, *TOD OR ICP 17430 *R24ON=1 17431 MA(VDP0), 17432 AR>A, B(R24ON), OR, 17433 Y>RAM, Y>IO, 17434 JUMP(SVDP50T); ----- ----- 5FE 00000607 00405110 ----- 17435 .ORG SVDP47T, *HEADER IS ROLLING 17436 *R24ON=1 17437 MA(VDP0), 17438 AR>A, B(R24ON), OR, 17439 Y>RAM, Y>IO, 17440 JUMP(SVDP50T); ----- ----- 601 00000607 00405110 ----- 17441 .ORG SVDP47F, *SUBTITLE PAGE? 17442 *Y=NWSF, B=MREG0 17443 MA(MREG0), RAM>BR, 17444 A(NWSF), BR>B, AND, 17445 JZ(SVDP49BF,SVDP49BT); ----- ----- 600 00012602 39400801 ----- 17446 .ORG SVDP49BF, *SUBT, R24ON=0 17447 *R24ON=0 17448 MA(VDP0), 17449 AR>A, B(0), OR, 17450 Y>RAM, Y>IO, 17451 JUMP(SVDP50T); ----- ----- 602 00000607 00005110 ----- 17452 .ORG SVDP49BT, *NOT SUBT, NWSF? 17453 *Y=CNR24D 17454 A(CNR24D), BR>B, AND, 17455 JZ(SVDP49CF,SVDP49CT); ----- ----- 603 00002604 00400801 ----- 17456 .ORG SVDP49CT, *NOT SUBT OR NWSF 17457 *R24ON=1 17458 MA(VDP0), 17459 AR>A, B(R24ON), OR, 17460 Y>RAM, Y>IO, 17461 JUMP(SVDP50T); ----- ----- 605 00000607 00405110 ----- 17462 .ORG SVDP49CF, *NWSF, CNR24D? 17463 *R24ON=1 17464 MA(VDP0), 17465 AR>A, B(R24ON), OR, 17466 Y>RAM, Y>IO, 17467 JZ(SVDP49DF,SVDP50T); ----- ----- 604 00002606 00405110 ----- 17468 .ORG SVDP49DF, *CNR24D AND NWSF 17469 *R24ON=0 17470 MA(VDP0), 17471 AR>A, B(0), OR, 17472 Y>RAM, Y>IO, 17473 JUMP(SVDP50T); ----- ----- 606 00000607 00005110 ----- 17474 *CHECK IF R24ON, R1T23, R0ON ARE OVERIDDEN BY R24OSD=1 17475 .ORG SVDP50T, *B=SYS2 17476 MA(SYS2), RAM>BR, 17477 JUMP(SVDP51); ----- ----- 607 00010CF3 09000000 ----- 17478 .ORG SVDP51, *Y=R24OSD 17479 *A=VDP0 17480 MA(VDP0), RAM>AR, 17481 A(R24OSD), BR>B, AND, 17482 JUMP(SVDP52); ----- ----- CF3 00020CF4 00400801 ----- 17483 .ORG SVDP52, *R24OSD? 17484 *PR=CG POINTER 17485 *BR=USRLAN 17486 MA(USRLAN), RAM>BR, 17487 Y(-13), 17488 Y>PR, 17489 JZ(SVDP53F,SVDP53T); ----- ----- CF4 00012608 ADF31000 ----- 17490 .ORG SVDP53F, *ROW 24 OSDS ENABLED 17491 *R24ON=1, R1T23=0, R0ON=0 17492 MA(VDP0), 17493 AR.0F>A, B(R24ON), OR, 17494 Y>RAM, Y>IO, 17495 JUMP(SVDP53T); ----- ----- 608 00000609 004051C0 ----- 17496 *+++COMPLETED VDP0 UPDATE 17497 *+++VDP2 UPDATE 17498 .ORG SVDP53T, *Y=FLM 17499 RVDP, 17500 A(FLM), BR>B, AND, 17501 JUMP(SVDP54); ----- ----- 609 00000CF5 00808801 ----- 17502 .ORG SVDP54, *FLM? 17503 *AR=CGB 17504 TPD.F0>A, B(0), ADD, 17505 Y>AR, 17506 JZ(SVDP55F,SVDP55T); ----- ----- CF5 0022260A 000000B0 ----- 17507 .ORG SVDP55F, *FORCED LANG MODE 17508 *VDP2=USRLAN 17509 MA(VDP2), 17510 A(0), BR>B, OR, 17511 Y>RAM, 17512 * Y>IO, *<---- !TCJ! VDP2 write 17513 * JUMP(SVDP60); 17514 * 17515 JUMP(SVDP200); * TCJ April 94, 209 mods ----- ----- 60A 00000CCF 02001101 ----- 17516 * 17517 .ORG SVDP55T, *NOT FORCED LANG MODE 17518 *UPDATE WITH CBITS FROM CGB 17519 MA(VDP2), 17520 ARHI>A, BR.F0>B, OR, 17521 Y>RAM, 17522 JUMP(SVDP200); ----- ----- 60B 00000CCF 02001123 ----- 17523 * 17524 * TCJ August 95, 206 mods 17525 * 17526 * JUMP(SVDP56); 17527 * 17528 *.ORG SVDP56, *Update VDP2 17529 * *Removing SWITCH and ILANG bits from USRLAN 17530 * MA(VDP2), 17531 * AR>A, B(>BE), AND, 17532 * Y>RAM, 17533 * JUMP(SVDP200); 17534 * 17535 * TCJ April 94, 209 mods 17536 * Special processing for R24LAN removed 17537 * 17538 *ORG SVDP60, *B=SYS2 17539 * MA(SYS2), RAM>BR, 17540 * JUMP(SVDP60A); 17541 *ORG SVDP60A, *B=SYS1 17542 * *Y=APIN 17543 * MA(SYS1), RAM>BR, 17544 * A(APIN), BR>B, AND, 17545 * JUMP(SVDP61); 17546 *ORG SVDP61, *Y=PCM-1, AUTO PROMPTS INHIBITED? 17547 * *B=PEN 17548 * MA(PEN), RAM>BR, 17549 * A(-1), BRHI>B, ADD, 17550 * JZ(SVDP62F,SVDP62T); 17551 *AUTO PROMPTS INHIBITED 17552 *ORG SVDP62F, *APIN=1 17553 * *A=R24LAN 17554 * MA(R24LAN), RAM>AR, 17555 * JUMP(SVDP62A); 17556 *ORG SVDP62A, *VDP3=R24LAN 17557 * MA(VDP3), 17558 * AR>A, B(0), OR, Y>AR, 17559 * Y>IO, *<---- !TCJ! VDP3 write 17560 * JUMP(SVDP200); 17561 *ORG SVDP62, *Y=PEN-4 17562 * *TOP MODE? 17563 * *B=VDP2 17564 * MA(VDP2), RAM>BR, 17565 * A(-4), BRHI>B, ADD, 17566 * JZ(SVDP63F,SVDP63T); 17567 *ORG SVDP63F, *NOT TOP 17568 * *VDP3=VDP2 17569 * MA(VDP3), 17570 * A(0), BR>B, OR, Y>AR, 17571 * Y>IO, *<---- !TCJ! VDP3 write 17572 * JUMP(SVDP200); 17573 * 17574 *ORG SVDP63T, *TOP MODE 17575 * *SUB-PAGE MODE? 17576 * *A=AITLAN 17577 * MA(AITLAN), RAM>AR, 17578 * JN(SVDP64F,SVDP64T); 17579 *ORG SVDP64F, *TOP MENU NOT DISPLAYED 17580 * *VDP3=VDP2 17581 * MA(VDP3), 17582 * A(0), BR>B, OR, Y>AR, 17583 * Y>IO, *<---- !TCJ! VDP3 write 17584 * JUMP(SVDP200); 17585 *ORG SVDP64T, *TOP MENU DISPLAYED 17586 * *USE LANGUAGE FROM THE AIT TABLE 17587 * *VDP3 HI NIB= VDP2 HI NIB 17588 * *VDP3 LO NIB= AITLAN 17589 * MA(VDP3), 17590 * ARHI>A, BR.F0>B, OR, 17591 * Y>AR, 17592 * Y>IO, *<---- !TCJ! VDP3 write 17593 * JUMP(SVDP65); 17594 *ORG SVDP65, *A=VDP1 17595 * MA(VDP1), RAM>BR, 17596 * JUMP(SVDP66); 17597 *ORG SVDP66, *BR24=1 (CAN'T FIT BOX CHARS IN TOP MENU) 17598 * MA(VDP1), 17599 * A(BR24), BR>B, OR, 17600 * Y>RAM, Y>IO, 17601 * JUMP(SVDP200); 17602 * 17603 * TCJ Sep 94, 17604 * Translate Language for VDP2 17605 * 17606 .ORG SVDP200, * fetch current display language 17607 MA(VDP2), RAM>AR, 17608 JUMP(SVDP201); ----- ----- CCF 00020CF6 02000000 ----- 17609 * 17610 .ORG SVDP201, * Y = LGn 17611 ARHI>A, B(>03), AND, 17612 JUMP(SVDP202); ----- ----- CF6 00000CF7 00030820 ----- 17613 * 17614 .ORG SVDP202, * Y = Cn 17615 AR>>1>A, B(>07), AND, 17616 JY(SVDP203.0); ----- ----- CF7 0000C590 000708E0 ----- 17617 * 17618 .ORG SVDP203.0, * LG == 0, Language group %00 17619 JY(SVDP204.0); ----- ----- 590 0000C5A0 00000000 ----- 17620 * 17621 .ORG SVDP204.0, * LG == 0, C == 0, ENGLISH 17622 Y(2), Y>AR, 17623 JUMP(SVDP205); ----- ----- 5A0 00220CF8 00021000 ----- 17624 * 17625 .ORG SVDP204.1, * LG == 0, C == 1, FRENCH 17626 Y(10), Y>AR, 17627 JUMP(SVDP205); ----- ----- 5A1 00220CF8 000A1000 ----- 17628 * 17629 .ORG SVDP204.2, * LG == 0, C == 2, SWEDISH 17630 Y(4), Y>AR, 17631 JUMP(SVDP205); ----- ----- 5A2 00220CF8 00041000 ----- 17632 * 17633 .ORG SVDP204.3, * LG == 0, C == 3, CZECH / SLOVAKIAN 17634 Y(16), Y>AR, 17635 JUMP(SVDP205); ----- ----- 5A3 00220CF8 00101000 ----- 17636 * 17637 .ORG SVDP204.4, * LG == 0, C == 4, GERMAN 17638 Y(6), Y>AR, 17639 JUMP(SVDP205); ----- ----- 5A4 00220CF8 00061000 ----- 17640 * 17641 .ORG SVDP204.5, * LG == 0, C == 5, SPANISH 17642 Y(12), Y>AR, 17643 JUMP(SVDP205); ----- ----- 5A5 00220CF8 000C1000 ----- 17644 * 17645 .ORG SVDP204.6, * LG == 0, C == 6, ITALIAN 17646 Y(8), Y>AR, 17647 JUMP(SVDP205); ----- ----- 5A6 00220CF8 00081000 ----- 17648 * 17649 .ORG SVDP204.7, * LG == 0, C == 7, ENGLISH 17650 Y(2), Y>AR, 17651 JUMP(SVDP205); ----- ----- 5A7 00220CF8 00021000 ----- 17652 * 17653 .ORG SVDP203.1, * LG == 1, Language group %01 17654 JY(SVDP206.0); ----- ----- 591 0000C5B0 00000000 ----- 17655 * 17656 .ORG SVDP206.0, * LG == 1, C == 0, POLISH 17657 Y(18), Y>AR, 17658 JUMP(SVDP205); ----- ----- 5B0 00220CF8 00121000 ----- 17659 * 17660 .ORG SVDP206.1, * LG == 1, C == 1, FRENCH 17661 Y(10), Y>AR, 17662 JUMP(SVDP205); ----- ----- 5B1 00220CF8 000A1000 ----- 17663 * 17664 .ORG SVDP206.2, * LG == 1, C == 2, SWEDISH 17665 Y(4), Y>AR, 17666 JUMP(SVDP205); ----- ----- 5B2 00220CF8 00041000 ----- 17667 * 17668 .ORG SVDP206.3, * LG == 1, C == 3, CZECH / SLOVAKIAN 17669 Y(16), Y>AR, 17670 JUMP(SVDP205); ----- ----- 5B3 00220CF8 00101000 ----- 17671 * 17672 .ORG SVDP206.4, * LG == 1, C == 4, GERMAN 17673 Y(6), Y>AR, 17674 JUMP(SVDP205); ----- ----- 5B4 00220CF8 00061000 ----- 17675 * 17676 .ORG SVDP206.5, * LG == 1, C == 5, SERBO / CROAT 17677 Y(20), Y>AR, 17678 JUMP(SVDP205); ----- ----- 5B5 00220CF8 00141000 ----- 17679 * 17680 .ORG SVDP206.6, * LG == 1, C == 6, ITALIAN 17681 Y(8), Y>AR, 17682 JUMP(SVDP205); ----- ----- 5B6 00220CF8 00081000 ----- 17683 * 17684 .ORG SVDP206.7, * LG == 1, C == 7, RUMANIAN 17685 Y(22), Y>AR, 17686 JUMP(SVDP205); ----- ----- 5B7 00220CF8 00161000 ----- 17687 * 17688 .ORG SVDP203.2, * LG == 2, Language group %10 17689 JY(SVDP207.0); ----- ----- 592 0000C5C0 00000000 ----- 17690 * 17691 .ORG SVDP207.0, * LG == 2, C == 0, ENGLISH 17692 Y(2), Y>AR, 17693 JUMP(SVDP205); ----- ----- 5C0 00220CF8 00021000 ----- 17694 * 17695 .ORG SVDP207.1, * LG == 2, C == 1, FRENCH 17696 Y(10), Y>AR, 17697 JUMP(SVDP205); ----- ----- 5C1 00220CF8 000A1000 ----- 17698 * 17699 .ORG SVDP207.2, * LG == 2, C == 2, SWEDISH 17700 Y(4), Y>AR, 17701 JUMP(SVDP205); ----- ----- 5C2 00220CF8 00041000 ----- 17702 * 17703 .ORG SVDP207.3, * LG == 2, C == 3, TURKISH 17704 Y(14), Y>AR, 17705 JUMP(SVDP205); ----- ----- 5C3 00220CF8 000E1000 ----- 17706 * 17707 .ORG SVDP207.4, * LG == 2, C == 4, GERMAN 17708 Y(6), Y>AR, 17709 JUMP(SVDP205); ----- ----- 5C4 00220CF8 00061000 ----- 17710 * 17711 .ORG SVDP207.5, * LG == 2, C == 5, SPANISH 17712 Y(12), Y>AR, 17713 JUMP(SVDP205); ----- ----- 5C5 00220CF8 000C1000 ----- 17714 * 17715 .ORG SVDP207.6, * LG == 2, C == 6, ITALIAN 17716 Y(8), Y>AR, 17717 JUMP(SVDP205); ----- ----- 5C6 00220CF8 00081000 ----- 17718 * 17719 .ORG SVDP207.7, * LG == 2, C == 7, ENGLISH 17720 Y(2), Y>AR, 17721 JUMP(SVDP205); ----- ----- 5C7 00220CF8 00021000 ----- 17722 * 17723 .ORG SVDP203.3, * LG == 3, Language group %11, OSD 17724 Y(00), Y>AR, 17725 JUMP(SVDP205); ----- ----- 593 00220CF8 00001000 ----- 17726 * 17727 *.ORG SVDP208.0, * LG == 3 OSD 17728 * AR>A, B(>3E), OR, 17729 * MA(VDP2), Y>IO, 17730 * JUMP(SVDP205); 17731 * 17732 *.ORG SVDP208.1, * LG == 3, C == 1, RUSSIAN 17733 * Y(>7E), 17734 * MA(VDP3), Y>IO, 17735 * JUMP(SVDP209); 17736 * 17737 *.ORG SVDP209, 17738 * Y(>7F), 17739 * MA(VDP2), Y>IO, 17740 * JUMP(SVDP212); 17741 * 17742 *.ORG SVDP208.2, * LG == 3, C == 2, ESTONIAN 17743 * AR>A, B(>22), OR, 17744 * MA(VDP2), Y>IO, 17745 * JUMP(SVDP205); 17746 * 17747 *.ORG SVDP208.3, * LG == 3, C == 3, CZECH / SLOVAKIAN 17748 * AR>A, B(>12), OR, 17749 * MA(VDP2), Y>IO, 17750 * JUMP(SVDP205); 17751 * 17752 *.ORG SVDP208.4, * LG == 3, C == 4, GERMAN 17753 * AR>A, B(>00), OR, 17754 * MA(VDP2), Y>IO, 17755 * JUMP(SVDP205); 17756 * 17757 *.ORG SVDP208.5, * LG == 3, C == 5, UKRANIAN 17758 * Y(>66), 17759 * MA(VDP3), Y>IO, 17760 * JUMP(SVDP209); 17761 * 17762 *.ORG SVDP208.6, * LG == 3, C == 6, LETTISH / LITHUANIAN 17763 * AR>A, B(>24), OR, 17764 * MA(VDP2), Y>IO, 17765 * JUMP(SVDP205); 17766 * 17767 *.ORG SVDP208.7, * LG == 3, C == 7, ENGLISH 17768 * AR>A, B(>3E), OR, 17769 * MA(VDP2), Y>IO, 17770 * JUMP(SVDP205); 17771 * 17772 * Set up VDP3 value 17773 * 17774 .ORG SVDP205, 17775 AR>A, B(0), OR, 17776 MA(VDP2), Y>IO, 17777 JUMP(SVDP205A); ----- ----- CF8 00000CF9 02005010 ----- 17778 * 17779 .ORG SVDP205A, 17780 AR>A, B(0), OR, 17781 MA(VDP3), Y>IO, 17782 JUMP(SVDP212); ----- ----- CF9 00000CFA 03005010 ----- 17783 * 17784 .ORG SVDP212, *B=VPPRG2 17785 MA(VPPRG2), RAM>BR, 17786 JUMP(SVDP213); ----- ----- CFA 00010CFB 62000000 ----- 17787 * 17788 .ORG SVDP213, *CSPLL=1 17789 MA(VPPRG2), 17790 A(CSPLL), BR>B, OR, 17791 Y>RAM, 17792 JUMP(WPN0); ----- ----- CFB 00000CFC 62041101 ----- 17793 * 17794 *+++ WPN: WRITE PAGE NUMBER IN TOP LEFT HAND CORNER 17795 * 17796 * This routine generates the display in the top left hand eight 17797 * bytes of store 0. If a page number is required, this 17798 * routine calls PND to for the page number characters. All 17799 * other characters (eg green for rolling headers) are calculated 17800 * in this routine. 17801 * 17802 .ORG WPN0, *B=SCREEN 17803 *P=0, POINT TO FIRST LOC 17804 MA(SCREEN), RAM>BR, 17805 Y(0), 17806 Y>PR, 17807 JUMP(WPN1); ----- ----- CFC 00010CFD E0001000 ----- 17808 .ORG WPN1, *Y=TDISP 17809 *A=STOR0 17810 MA(STOR0), RAM>AR, 17811 A(TDISP), BR>B, AND, 17812 JUMP(WPN2); ----- ----- CFD 00020CFE 20040801 ----- 17813 .ORG WPN2, *TELETEXT DISPLAY? 17814 *RWL=STOR0 17815 MA(RWL), 17816 ARHI>A, B(0), OR, 17817 Y>RAM, Y>IO, 17818 JZ(WPN3F,WPN3T); ----- ----- CFE 0000260C 0B005120 ----- 17819 .ORG WPN3T, *NO TELETEXT DISPLAY, JUST NEED TO INHIBIT PAGE NO 17820 *BOX FOR CLOCK DISPLAYS 17821 Y(>20), 17822 Y>DR, 17823 JUMP(PND80Y); ----- ----- 60D 00001070 00201000 ----- 17824 *TELETEXT DISPLAY 17825 *UPDATE COLS 0 AND 7 17826 .ORG WPN3F, *0TH COL='BOX' 17827 Y(>0B), 17828 Y>DR, 17829 JUMP(WPN10); ----- ----- 60C 00001CFF 000B1000 ----- 17830 .ORG WPN10, *P=7 17831 Y(7), 17832 Y>PR, 17833 JUMP(WPN11); ----- ----- CFF 00000D01 80071000 ----- 17834 .ORG WPN11, *7TH COL=' ' 17835 Y(>20), 17836 Y>DR, 17837 JUMP(WPN12); ----- ----- D01 00001D04 00201000 ----- 17838 *UPDATE COL 6 17839 .ORG WPN12, *P=6 17840 *B=DHREG 17841 MA(DHREG), RAM>BR, 17842 Y(6), 17843 Y>PR, 17844 JUMP(WPN12A); ----- ----- D04 00010D05 B2061000 ----- 17845 .ORG WPN12A, *Y=NRH 17846 *A=VDPTXT 17847 MA(VDPTXT), RAM>AR, 17848 A(NRH), BR>B, AND, 17849 JUMP(WPN14); ----- ----- D05 00020D06 2B100801 ----- 17850 .ORG WPN14, *ROLLING HEADERS? 17851 *A=UPD+C8YET 17852 AR>A, B(UPD+C8YET), AND, 17853 Y>AR, 17854 JZ(WPN15F,WPN15T); ----- ----- D06 0022260E 00300810 ----- 17855 *HEADER ROLLING 17856 .ORG WPN15T, *6TH COL=ALPHA GREEN 17857 Y(>02), 17858 Y>DR, 17859 JUMP(WPN17F); ----- ----- 60F 00001610 00021000 ----- 17860 *HEADER NOT ROLLING 17861 .ORG WPN15F, *Y=UPD INVERTED +C8YET INVERTED 17862 AR>A, B(UPD+C8YET), XOR, 17863 JUMP(WPN16); ----- ----- 60E 00000D07 00301810 ----- 17864 .ORG WPN16, *UPD=1, C8YET=1? 17865 *6TH COL=' ' 17866 Y(>20), 17867 Y>DR, 17868 JZ(WPN17F,WPN17T); ----- ----- D07 00003610 00201000 ----- 17869 .ORG WPN17T, *PAGE UPDATED IN UPDATE 17870 *Y=TOD 17871 A(TOD), BR>B, AND, 17872 JUMP(WPN19T); ----- ----- 611 00000613 00080801 ----- 17873 * 17874 .ORG WPN17F, *Y=UPD INVERTED +C8YET 17875 AR>A, B(UPD), XOR, 17876 JUMP(WPN18); ----- ----- 610 00000D08 00201810 ----- 17877 .ORG WPN18, *Y=TOD 17878 *UPD=1, C8YET=0? 17879 A(TOD), BR>B, AND, 17880 JZ(WPN19F,WPN19T); ----- ----- D08 00002612 00080801 ----- 17881 .ORG WPN19F, *A=DHREG 17882 MA(DHREG), RAM>AR, 17883 JUMP(WPN20F); ----- ----- 612 00020614 32000000 ----- 17884 * 17885 .ORG WPN19T, *PAGE NOT YET UPDATED IN UPDATE 17886 *TOD? 17887 *A=DHREG 17888 MA(DHREG), RAM>AR, 17889 JZ(WPN20F,WPN20T); ----- ----- 613 00022614 32000000 ----- 17890 .ORG WPN20T, *NO TIME OUT DISPLAY 17891 *6TH COL=END BOX 17892 *A=DHREG 17893 MA(DHREG), RAM>AR, 17894 Y(>0A), 17895 Y>DR, 17896 JUMP(WPN20F); ----- ----- 615 00021614 320A1000 ----- 17897 *UPDATE ENDIG 17898 * A=DHREG 17899 .ORG WPN20F, *Y=TOD+ICP 17900 *B=VDPTXT 17901 MA(VDPTXT), RAM>BR, 17902 AR>A, B(TOD+ICP), AND, 17903 JUMP(WPN21); ----- ----- 614 00010D09 2B480810 ----- 17904 .ORG WPN21, *TOD+ICP? 17905 *Y=UPD 17906 *B=PEN 17907 MA(PEN), RAM>BR, 17908 A(UPD), BR>B, AND, 17909 JZ(WPN22F,WPN22T); ----- ----- D09 00012616 1B200801 ----- 17910 .ORG WPN22F, *TOD+ICP 17911 *ENDIG=1 17912 MA(DHREG), 17913 AR>A, B(ENDIG), OR, 17914 Y>RAM, 17915 JUMP(WPN25T); ----- ----- 616 0000061D 32041110 ----- 17916 .ORG WPN22T, *Y=PEN-4, UPDATE MODE? 17917 *B=VDP0 17918 MA(VDP0), RAM>BR, 17919 A(-4), BRHI>B, ADD, 17920 JZ(WPN22AF,WPN22AT); ----- ----- 617 00012618 00FC000C ----- 17921 .ORG WPN22AF, *UPDATE MODE 17922 *ENDIG=1 17923 MA(DHREG), 17924 AR>A, B(ENDIG), OR, 17925 Y>RAM, 17926 JUMP(WPN25T); ----- ----- 618 0000061D 32041110 ----- 17927 .ORG WPN22AT, *Y=R24ON 17928 *SUB-PAGE MODE? 17929 A(R24ON), BR>B, AND, 17930 JN(WPN23F,WPN23T); ----- ----- 619 0000461A 00400801 ----- 17931 .ORG WPN23T, *MAIN PAGE MODE 17932 *ENDIG=0 17933 MA(DHREG), 17934 AR>A, B(>FF-ENDIG), AND, 17935 Y>RAM, 17936 JUMP(WPN25T); ----- ----- 61B 0000061D 32FB0910 ----- 17937 .ORG WPN23F, *SUB-PAGE MODE 17938 *ROW 24 ENABLED? 17939 *ELSE ENDIG=0 17940 MA(DHREG), 17941 AR>A, B(>FF-ENDIG), AND, 17942 Y>RAM, 17943 JZ(WPN25F,WPN25T); ----- ----- 61A 0000261C 32FB0910 ----- 17944 .ORG WPN25F, *ROW 24 ENABLED 17945 *ENDIG=1 17946 MA(DHREG), 17947 AR>A, B(ENDIG), OR, 17948 Y>RAM, 17949 JUMP(WPN25T); ----- ----- 61C 0000061D 32041110 ----- 17950 *UPDATE COLS 2,3,4,5 17951 .ORG WPN25T, *B=MREG0 17952 MA(MREG0), RAM>BR, 17953 JUMP(WPN26); ----- ----- 61D 00010D0A 39000000 ----- 17954 .ORG WPN26, *P=3 17955 *A=VDPTXT 17956 MA(VDPTXT), RAM>AR, 17957 Y(3), 17958 Y>PR, 17959 JUMP(WPN30); ----- ----- D0A 00020D0B AB031000 ----- 17960 .ORG WPN30, *Y=DISERR 17961 A(DISERR), BR>B, AND, 17962 JUMP(WPN31); ----- ----- D0B 00000D0C 00080801 ----- 17963 .ORG WPN31, *Y=STOP 17964 *DISPLAYING ERROR COUNT? 17965 AR>A, B(STOP), AND, 17966 JZ(WPN32F,WPN32T); ----- ----- D0C 0000261E 00040810 ----- 17967 *DISPLAYING ERROR COUNT 17968 .ORG WPN32F, *A=ERRCNT 17969 MA(ERRCNT), RAM>AR, 17970 JUMP(WPN33); ----- ----- 61E 00020D0D 3A000000 ----- 17971 .ORG WPN33, *3RD COL= ERRCNT HI NIB 17972 ARHI>A, B(>30), OR, 17973 Y>DR, 17974 JUMP(WPN34); ----- ----- D0D 00001D0E 00301020 ----- 17975 .ORG WPN34, *P=4 17976 Y(4), 17977 Y>PR, 17978 JUMP(WPN35); ----- ----- D0E 00000D0F 80041000 ----- 17979 .ORG WPN35, *4TH COL= ERRCNT LO NIB 17980 *EXIT TO 'STOP' CODE 17981 AR.0F>A, B(>30), OR, 17982 Y>DR, 17983 JUMP(WPN110); ----- ----- D0F 00001D12 003010C0 ----- 17984 *END OF ERROR COUNT 17985 .ORG WPN32T, *Y=STP 17986 *PAGE HELD? 17987 A(STP), BR>B, AND, 17988 JZ(WPN40F,WPN40T); ----- ----- 61F 00002624 00010801 ----- 17989 .ORG WPN40T, *PAGE NOT HELD 17990 *A=UPD+C8YET 17991 AR>A, B(UPD+C8YET), AND, 17992 Y>AR, 17993 JUMP(WPN50); ----- ----- 625 00220D13 00300810 ----- 17994 .ORG WPN40F, *PAGE HELD 17995 *'STOP' DISPLAY ENABLED? 17996 JZ(WPN41F,WPN41T); ----- ----- 624 00002626 00000000 ----- 17997 *WRITE 'STOP' 17998 .ORG WPN41F, *PR=2 17999 Y(2), 18000 Y>PR, 18001 JUMP(WPN72); ----- ----- 626 00000D14 80021000 ----- 18002 .ORG WPN72, *2ND COL='S' 18003 Y(>53), 18004 Y>DR, 18005 JUMP(WPN73); ----- ----- D14 00001D15 00531000 ----- 18006 .ORG WPN73, *PR=3 18007 Y(3), 18008 Y>PR, 18009 JUMP(WPN74); ----- ----- D15 00000D16 80031000 ----- 18010 .ORG WPN74, *3RD COL='T' 18011 Y(>54), 18012 Y>DR, 18013 JUMP(WPN75); ----- ----- D16 00001D17 00541000 ----- 18014 .ORG WPN75, *PR=4 18015 Y(4), 18016 Y>PR, 18017 JUMP(WPN76); ----- ----- D17 00000D18 80041000 ----- 18018 .ORG WPN76, *4TH COL='O' 18019 Y(>4F), 18020 Y>DR, 18021 JUMP(WPN77); ----- ----- D18 00001D19 004F1000 ----- 18022 .ORG WPN77, *PR=5 18023 Y(5), 18024 Y>PR, 18025 JUMP(WPN78); ----- ----- D19 00000D1A 80051000 ----- 18026 .ORG WPN78, *5TH COL='P' 18027 Y(>50), 18028 Y>DR, 18029 JUMP(WPN100); ----- ----- D1A 00001D1B 00501000 ----- 18030 *END OF 'STOP' 18031 *WRITE HOLD SYMBOL 18032 .ORG WPN41T, *3RD COL=LHS HOLD SYMBOL 18033 Y(>89), 18034 Y>DR, 18035 JUMP(WPN42); ----- ----- 627 00001D1C 00891000 ----- 18036 .ORG WPN42, *PR=4 18037 Y(4), 18038 Y>PR, 18039 JUMP(WPN43); ----- ----- D1C 00000D1D 80041000 ----- 18040 .ORG WPN43, *4TH COL=RHS HOLD SYMBOL 18041 Y(>87), 18042 Y>DR, 18043 JUMP(WPN110); ----- ----- D1D 00001D12 00871000 ----- 18044 *END OF HOLD SYMBOL 18045 * A=UPD+C8YET 18046 .ORG WPN50, *Y=C8YET+!UPD 18047 AR>A, B(UPD), XOR, 18048 JUMP(WPN50A); ----- ----- D13 00000D1E 00201810 ----- 18049 .ORG WPN50A, *UPDATE BUT PAGE NOT UPDATED? 18050 *Y=!C8YET+!UPD 18051 *A=DHREG 18052 MA(DHREG), RAM>AR, 18053 AR>A, B(UPD+C8YET), XOR, 18054 JZ(WPN51F,WPN51T); ----- ----- D1E 00022628 32301810 ----- 18055 *WRITE UPDATE SYMBOL 18056 .ORG WPN51T, *3RD COL=LHS UPDATE SYMBOL 18057 *B=MREG1 18058 MA(MREG1), RAM>BR, 18059 Y(>89), 18060 Y>DR, 18061 JUMP(WPN52); ----- ----- 629 00011D1F 65891000 ----- 18062 .ORG WPN52, *Y=UPSYM 18063 A(UPSYM), BR>B, AND, 18064 JUMP(WPN52A); ----- ----- D1F 00000D20 00200801 ----- 18065 .ORG WPN52A, *PR=4 18066 *UPDATE SYMBOL MODE? 18067 Y(4), 18068 Y>PR, 18069 JZ(WPN53F,WPN53T); ----- ----- D20 0000262A 80041000 ----- 18070 .ORG WPN53T, *4TH COL=RHS TEXT SYMBOL (GRUNDIG MODE) 18071 Y(>88), 18072 Y>DR, 18073 JUMP(WPN110); ----- ----- 62B 00001D12 00881000 ----- 18074 .ORG WPN53F, *4TH COL=RHS UPDATE SYMBOL (NOKIA MODE) 18075 Y(>C2), *TCJ July 95, 206 mods 18076 Y>DR, 18077 JUMP(WPN110); ----- ----- 62A 00001D12 00C21000 ----- 18078 * 18079 * TCJ April 94, 209 mods 18080 * We no longer need to go into OSD mode 18081 * to display the OSD characters. 18082 * 18083 * 18084 *.ORG WPN53A, *SET OSD NATIONAL OPTION 18085 * MA(VDP2), 18086 * Y(>30), Y>RAM, * TODO: do I need to change this ? 18087 * JUMP(TCJWPN00); 18088 * 18089 *.ORG TCJWPN00, 18090 * MA(VDP2), 18091 * Y(>00), Y>IO, * TODO: do I need to change this ? 18092 * JUMP(WPN110); 18093 * 18094 *END OF UPDATE SYMBOL 18095 * A=DHREG 18096 * 18097 .ORG WPN51F, *UPDATE AND PAGE UPDATED? 18098 *A=NRH+ICP+TOD 18099 AR>A, B(NRH+ICP+TOD), AND, 18100 Y>AR, 18101 JZ(WPN60F,WPN60T); ----- ----- 628 0022262C 00580810 ----- 18102 *WRITE UPDATED PAGE 18103 *ORG WPN60T, *SEE BELOW 18104 *UPDATE COL 1 18105 *WRITE PAGE NUMBER WITH BOXED HEADER 18106 .ORG WPN60T, *P=1 18107 Y(1), 18108 Y>PR, 18109 JUMP(WPN81F); ----- ----- 62D 0000062E 80011000 ----- 18110 *WRITE PAGE NUMBER WITHOUT A BOXED HEADER 18111 * A=NRH+ICP+TOD 18112 .ORG WPN60F, *Y=!NRH+ICP+TOD 18113 AR>A, B(NRH), XOR, 18114 JUMP(WPN80); ----- ----- 62C 00000D21 00101810 ----- 18115 .ORG WPN80, *ROLLING HEADER, TIMED OUT DISPLAY OR INCOMPLETE PAGE? 18116 *P=1 18117 Y(1), 18118 Y>PR, 18119 JZ(WPN81F,WPN81T); ----- ----- D21 0000262E 80011000 ----- 18120 * 18121 .ORG WPN81F, *1ST COL=BOX 18122 Y(>0B), 18123 Y>DR, 18124 JUMP(PND0); ----- ----- 62E 00001D22 000B1000 ----- 18125 .ORG WPN81T, *1ST COL=' ' 18126 Y(>20), 18127 Y>DR, 18128 JUMP(PND0); ----- ----- 62F 00001D22 00201000 ----- 18129 *BOX NON PAGE DISPLAY (EG HOLD SYMBOL) 18130 .ORG WPN100, *P=1 18131 Y(1), 18132 Y>PR, 18133 JUMP(WPN101); ----- ----- D1B 00000D23 80011000 ----- 18134 .ORG WPN101, *1ST COL=BOX 18135 Y(>0B), 18136 Y>DR, 18137 JUMP(PND80Y); ----- ----- D23 00001070 000B1000 ----- 18138 *WRITE SPACES TO COLS 2 AND 5 18139 .ORG WPN110, *P=2 18140 Y(2), 18141 Y>PR, 18142 JUMP(WPN111); ----- ----- D12 00000D24 80021000 ----- 18143 .ORG WPN111, *2ND COL=' ' 18144 Y(>20), 18145 Y>DR, 18146 JUMP(WPN112); ----- ----- D24 00001D25 00201000 ----- 18147 .ORG WPN112, *P=5 18148 Y(5), 18149 Y>PR, 18150 JUMP(WPN113); ----- ----- D25 00000D26 80051000 ----- 18151 .ORG WPN113, *2ND COL=' ' 18152 Y(>20), 18153 Y>DR, 18154 JUMP(WPN100); ----- ----- D26 00001D1B 00201000 ----- 18155 * 18156 .ORG PND0, *POINT TO PAGE NUMBER MAGS 18157 Y(2), 18158 Y>PR, 18159 JUMP(PND1); ----- ----- D22 00000D27 80021000 ----- 18160 .ORG PND1, *CALL PND10, AND PND50T TO WRITE MAIN PAGE NUMBER 18161 *WITH PRE-FIX 18162 *RETURN=0, RETURN TO PND70 18163 MA(RETURN), 18164 Y(0), 18165 Y>RAM, 18166 JUMP(PND10); ----- ----- D27 00000B0B 7C001100 ----- 18167 * 18168 *+++WRITE MAIN PAGE NUMBER WITH PRE-FIX OR SUB-PAGE NUMBER WITH '/' 18169 * (skip pre-fix if called by out-of-cycle display, ie if RETURN=3) 18170 * 18171 * input pars are:- 18172 * P, RWL address of page number prefix or '/' 18173 * RETURN: return pointer 18174 * 18175 *ENTRY POINT FOR MAIN PAGE NUMBER 18176 *ENTRY POINT FROM PAGE OUT OF CYCLE DISPLAY (CMPE54) 18177 .ORG PND10, *A=STORE=0 (INIT DIGIT LOOP COUNT) 18178 MA(STORE), 18179 Y(0), 18180 Y>AR, Y>RAM, 18181 JUMP(PND20); ----- ----- B0B 00220D28 77001100 ----- 18182 *ENTRY POINT FOR SUB-PAGE NUMBER 18183 .ORG PND15, *A=STORE=4 18184 MA(STORE), 18185 Y(4), 18186 Y>AR, Y>RAM, 18187 JUMP(PND20); ----- ----- B0E 00220D28 77041100 ----- 18188 *WRITE NEXT DIGIT 18189 * P= POINTER TO DIGIT 18190 .ORG PND20, *Y=STORE 18191 *BR=DPM 18192 MA(DPM), RAM>BR, 18193 AR>A, B(>F), AND, 18194 JUMP(PND22); ----- ----- D28 00010D29 680F0810 ----- 18195 .ORG PND22, *CASE STORE=? 18196 *STORE++ 18197 MA(STORE), 18198 AR>A, B(1), ADD, 18199 Y>RAM, 18200 JY(PND30Y); ----- ----- D29 0000C410 77010110 ----- 18201 *WRITE MAIN PAGE NUMBER 18202 .ORG PND30Y, *CASE OLD STORE=0 18203 *WRITE MAG 18204 *AR=DPM, Y=DPM 18205 MA(DPM), RAM>AR, 18206 A(0), BR.F0>B, OR, 18207 JUMP(PND30A); ----- ----- 410 00020D2A 68001003 ----- 18208 .ORG PND30A, *DPM=0? 18209 JZ(PND40F,PND30BT); ----- ----- D2A 00002634 00000000 ----- 18210 .ORG PND30BT, *DPM=0, DISPLAY '8' 18211 *AR=>80 18212 Y(>80), 18213 Y>AR, 18214 JUMP(PND40F); ----- ----- 635 00220634 00801000 ----- 18215 .ORG PND31, *CASE OLD STORE=1 18216 *WRITE TENS 18217 *AR=DPT 18218 MA(DPT), RAM>AR, 18219 JUMP(PND40F); ----- ----- 411 00020634 69000000 ----- 18220 .ORG PND32, *CASE OLD STORE=2 18221 *WRITE UNITS 18222 *AR=DPU 18223 MA(DPU), RAM>AR, 18224 JUMP(PND40F); ----- ----- 412 00020634 6A000000 ----- 18225 .ORG PND33, *CASE OLD STORE=3 18226 *COMPLETED DISPLAYING A MAIN-PAGE NUMBER 18227 *A=RETURN 18228 MA(RETURN), RAM>AR, 18229 JUMP(PND33A); ----- ----- 413 00020D2B 7C000000 ----- 18230 .ORG PND33A, *Y=RETURN-3 18231 AR>A, B(-3), ADD, 18232 JUMP(PND33B); ----- ----- D2B 00000D2C 00FD0010 ----- 18233 .ORG PND33B, *CALLED BY OUT-OF-CYCLE DISPLAY? 18234 *IF YES, RETURN TO CMPE55T (DON'T WANT PREFIX) 18235 JZ(PND33CF,CMPE55T); ----- ----- D2C 00002636 00000000 ----- 18236 .ORG PND33CF, *NO, CALL PND50T TO FIND PREFIX 18237 JUMP(PND50T); ----- ----- 636 00000A9E 00000000 ----- 18238 *WRITE SUB-PAGE NUMBER 18239 .ORG PND34, *CASE OLD STORE=4 18240 *WRITE '/' AND THEN SUB-PAGE THOUS 18241 *A=USPM 18242 MA(USPM), RAM>AR, 18243 Y(>2F), 18244 Y>DR, 18245 JUMP(PND40F); ----- ----- 414 00021634 5B2F1000 ----- 18246 .ORG PND35, *CASE OLD STORE=5 18247 *WRITE SUB-PAGE HUNDREDS 18248 *A=USPC 18249 MA(USPC), RAM>AR, 18250 JUMP(PND40F); ----- ----- 415 00020634 5A000000 ----- 18251 .ORG PND36, *CASE OLD STORE=6 18252 *WRITE SUB-PAGE TENS 18253 *A=USPX 18254 MA(USPX), RAM>AR, 18255 JUMP(PND40F); ----- ----- 416 00020634 59000000 ----- 18256 .ORG PND37, *CASE OLD STORE=7 18257 *WRITE SUB-PAGE UNITS 18258 *A=USPI 18259 MA(USPI), RAM>AR, 18260 JUMP(PND40F); ----- ----- 417 00020634 58000000 ----- 18261 .ORG PND38, *CASE OLD STORE=8 18262 *SUB-PAGE COMPLETED 18263 *POINT TO START POINT FOR DASHES 18264 *A=DHREG 18265 MA(DHREG), RAM>AR, 18266 Y(-53), 18267 Y>PR, 18268 JUMP(GAP340); ----- ----- 418 00020D2D B2CB1000 ----- 18269 *COMMON DIGIT WRITE CODE 18270 .ORG PND40F, *PUT DPx OR USPx IN A LOW NIB 18271 ARHI>A, B(0), OR, 18272 Y>AR, 18273 JUMP(PND40A); ----- ----- 634 00220D2E 00001020 ----- 18274 .ORG PND40A, *Y=AR-10 18275 PR>BR, 18276 AR.0F>A, B(-10), ADD, 18277 JUMP(PND41); ----- ----- D2E 00410D2F 00F600C0 ----- 18278 .ORG PND41, *HEX PAGE NUMBER? 18279 *INCREMENT POINTER 18280 A(1), BR>B, ADD, 18281 Y>PR, 18282 JN(PND42F,PND42T); ----- ----- D2F 00004638 80010001 ----- 18283 .ORG PND42T, *WRITE DECIMAL PAGE NUMBER 18284 *AR=STORE 18285 MA(STORE), RAM>AR, 18286 AR.0F>A, B(>30), ADD, 18287 Y>DR, 18288 JUMP(PND20); ----- ----- 639 00021D28 773000C0 ----- 18289 .ORG PND42F, *WRITE HEX PAGE NUMBER 18290 *FINISHED SUB-PAGE? 18291 *AR=STORE 18292 MA(STORE), RAM>AR, 18293 AR.0F>A, B(>37), ADD, 18294 Y>DR, 18295 JUMP(PND20); ----- ----- 638 00021D28 773700C0 ----- 18296 * 18297 *+++CALCULATE AND DISPLAY PREFIX LETTER 18298 * This routine works out the page prefix character according to 18299 * to the langugue bits 18300 * 18301 * input pars are:- 18302 * RETURN:- return pointer 18303 * return pars are:- 18304 * A: the page prefix letter 18305 * 18306 * TCJ July 95, 206 mods. 18307 * 18308 * JUMP(PND50A); 18309 *.ORG PND50A, *MASK FLM AND SERIAL FLAG IN VDP2 COPY IN AR 18310 * AR>A, B(%00111110), AND, 18311 * Y>AR, 18312 * JUMP(PND51); 18313 *.ORG PND51, *Y=CBITS XOR GERMAN 18314 * AR.0F>A, B(>08), XOR, 18315 * JUMP(PND52); 18316 *.ORG PND52, *Y=CBITS XOR CZECH/TURKISH 18317 * *GERMAN? 18318 * *BR=MREG1 18319 * MA(MREG1), RAM>BR, 18320 * AR.0F>A, B(>06), XOR, 18321 * JZ(PND53F,PND53T); 18322 *.ORG PND53T, *GERMAN, PREFIX IS 'S' 18323 * *AR='S' 18324 * Y(>53), 18325 * Y>AR, 18326 * JUMP(PND56F); 18327 *.ORG PND53F, *Y=CBITS XOR SWE/FIN/HUNG 18328 * *CZECH/TURKISH? 18329 * AR.0F>A, B(>04), XOR, 18330 * JZ(PND54F,PND54T); 18331 *.ORG PND54T, *CZECH/TURKISH, PREFIX IS 'S' 18332 * *AR='S' 18333 * Y(>53), 18334 * Y>AR, 18335 * JUMP(PND56F); 18336 *.ORG PND54F, *Y=VDP2 XOR POLISH 18337 * *SWE/FIN/HUNG? 18338 * AR>A, B(>10), XOR, 18339 * JZ(PND55F,PND55T); 18340 *.ORG PND55T, *SWE/FIN/HUNG, PREFIX IS 'S' 18341 * *AR='S' 18342 * Y(>53), 18343 * Y>AR, 18344 * JUMP(PND56F); 18345 *.ORG PND55F, *Y=VDP2 XOR SERBO-CROAT 18346 * *POLISH? 18347 * AR>A, B(>1A), XOR, 18348 * JZ(PND55AF,PND55AT); 18349 *.ORG PND55AT, *POLISH, PREFIX IS 'S' 18350 * *AR='S' 18351 * Y(>53), 18352 * Y>AR, 18353 * JUMP(PND56F); 18354 *.ORG PND55AF, *SERBO-CROAT? 18355 * *ELSE PREFIX IS 'P' 18356 * Y(>50), 18357 * Y>AR, 18358 * JZ(PND56F,PND56T); 18359 *.ORG PND56T, *SERBO-CROAT, PREFIX IS 'S' 18360 * *AR='S' 18361 * Y(>53), 18362 * Y>AR, 18363 * JUMP(PND56F); 18364 * 18365 * TCJ August 94, 211 Mods 18366 * Prefix generation changed for the 211 18367 * 18368 * TCJ August 95, 206 Mods 18369 * Update for correct 206 operation 18370 * 18371 .ORG PND50T, *AR=VDP2 18372 MA(VDP2), RAM>AR, 18373 JUMP(PND51A); ----- ----- A9E 00020D30 02000000 ----- 18374 * 18375 .ORG PND51A, 18376 ARHI>A, B(>03), AND, 18377 JUMP(PND52); ----- ----- D30 00000D31 00030820 ----- 18378 * 18379 .ORG PND52, 18380 AR>>1>A, B(>07), AND, 18381 JY(PND53.0); ----- ----- D31 0000C100 000708E0 ----- 18382 * 18383 .ORG PND53.0, * Language group %00 18384 JY(PND54A.0); ----- ----- 100 0000C110 00000000 ----- 18385 * 18386 .ORG PND54A.0, * LG == 0, C == 0, ENGLISH 18387 Y(>50), Y>AR, 18388 JUMP(PND56F); ----- ----- 110 00220D32 00501000 ----- 18389 * 18390 .ORG PND54A.1, * LG == 0, C == 1, FRENCH 18391 Y(>50), Y>AR, 18392 JUMP(PND56F); ----- ----- 111 00220D32 00501000 ----- 18393 * 18394 .ORG PND54A.2, * LG == 0, C == 2, SWEDISH 18395 Y(>53), Y>AR, 18396 JUMP(PND56F); ----- ----- 112 00220D32 00531000 ----- 18397 * 18398 .ORG PND54A.3, * LG == 0, C == 3, CZECH / SLOVAKIAN 18399 Y(>53), Y>AR, 18400 JUMP(PND56F); ----- ----- 113 00220D32 00531000 ----- 18401 * 18402 .ORG PND54A.4, * LG == 0, C == 4, GERMAN 18403 Y(>53), Y>AR, 18404 JUMP(PND56F); ----- ----- 114 00220D32 00531000 ----- 18405 * 18406 .ORG PND54A.5, * LG == 0, C == 5, SPANISH 18407 Y(>50), Y>AR, 18408 JUMP(PND56F); ----- ----- 115 00220D32 00501000 ----- 18409 * 18410 .ORG PND54A.6, * LG == 0, C == 6, ITALIAN 18411 Y(>50), Y>AR, 18412 JUMP(PND56F); ----- ----- 116 00220D32 00501000 ----- 18413 * 18414 .ORG PND54A.7, * LG == 0, C == 7, EMGLISH 18415 Y(>50), Y>AR, 18416 JUMP(PND56F); ----- ----- 117 00220D32 00501000 ----- 18417 * 18418 .ORG PND53.1, * Language group %01 18419 JY(PND54B.0); ----- ----- 101 0000C120 00000000 ----- 18420 * 18421 .ORG PND54B.0, * LG == 1, C == 0, POLISH 18422 Y(>53), Y>AR, 18423 JUMP(PND56F); ----- ----- 120 00220D32 00531000 ----- 18424 * 18425 .ORG PND54B.1, * LG == 1, C == 1, FRENCH 18426 Y(>50), Y>AR, 18427 JUMP(PND56F); ----- ----- 121 00220D32 00501000 ----- 18428 * 18429 .ORG PND54B.2, * LG == 1, C == 2, SWEDISH 18430 Y(>53), Y>AR, 18431 JUMP(PND56F); ----- ----- 122 00220D32 00531000 ----- 18432 * 18433 .ORG PND54B.3, * LG == 1, C == 3, CZECH / SLOVAKIAN 18434 Y(>53), Y>AR, 18435 JUMP(PND56F); ----- ----- 123 00220D32 00531000 ----- 18436 * 18437 .ORG PND54B.4, * LG == 1, C == 4, GERMAN 18438 Y(>53), Y>AR, 18439 JUMP(PND56F); ----- ----- 124 00220D32 00531000 ----- 18440 * 18441 .ORG PND54B.5, * LG == 1, C == 5, SERBO-CROAT 18442 Y(>53), Y>AR, 18443 JUMP(PND56F); ----- ----- 125 00220D32 00531000 ----- 18444 * 18445 .ORG PND54B.6, * LG == 1, C == 6, ITALIAN 18446 Y(>50), Y>AR, 18447 JUMP(PND56F); ----- ----- 126 00220D32 00501000 ----- 18448 * 18449 .ORG PND54B.7, * LG == 1, C == 7, ENGLISH 18450 Y(>50), Y>AR, 18451 JUMP(PND56F); ----- ----- 127 00220D32 00501000 ----- 18452 * 18453 .ORG PND53.2, * Language group %10 18454 JY(PND54C.0); ----- ----- 102 0000C130 00000000 ----- 18455 * 18456 .ORG PND54C.0, * LG == 2, C == 0, ENGLISH 18457 Y(>50), Y>AR, 18458 JUMP(PND56F); ----- ----- 130 00220D32 00501000 ----- 18459 * 18460 .ORG PND54C.1, * LG == 2, C == 1, FRENCH 18461 Y(>50), Y>AR, 18462 JUMP(PND56F); ----- ----- 131 00220D32 00501000 ----- 18463 * 18464 .ORG PND54C.2, * LG == 2, C == 2, SWEDISH 18465 Y(>53), Y>AR, 18466 JUMP(PND56F); ----- ----- 132 00220D32 00531000 ----- 18467 * 18468 .ORG PND54C.3, * LG == 2, C == 3, TURKISH 18469 Y(>53), Y>AR, 18470 JUMP(PND56F); ----- ----- 133 00220D32 00531000 ----- 18471 * 18472 .ORG PND54C.4, * LG == 2, C == 4, GERMAN 18473 Y(>53), Y>AR, 18474 JUMP(PND56F); ----- ----- 134 00220D32 00531000 ----- 18475 * 18476 .ORG PND54C.5, * LG == 2, C == 5, SPANISH 18477 Y(>50), Y>AR, 18478 JUMP(PND56F); ----- ----- 135 00220D32 00501000 ----- 18479 * 18480 .ORG PND54C.6, * LG == 2, C == 6, ITALIAN 18481 Y(>50), Y>AR, 18482 JUMP(PND56F); ----- ----- 136 00220D32 00501000 ----- 18483 * 18484 .ORG PND54C.7, * LG == 2, C == 7, ENGLISH 18485 Y(>50), Y>AR, 18486 JUMP(PND56F); ----- ----- 137 00220D32 00501000 ----- 18487 * 18488 .ORG PND53.3, * Language group %11 18489 JY(PND54D.0); ----- ----- 103 0000C140 00000000 ----- 18490 * 18491 .ORG PND54D.0, * LG == 3, C == 0, OSD 18492 Y(>50), Y>AR, 18493 JUMP(PND56F); ----- ----- 140 00220D32 00501000 ----- 18494 * 18495 .ORG PND54D.1, * LG == 3, C == 1, OSD 18496 Y(>50), Y>AR, 18497 JUMP(PND56F); ----- ----- 141 00220D32 00501000 ----- 18498 * 18499 .ORG PND54D.2, * LG == 3, C == 2, OSD 18500 Y(>50), Y>AR, 18501 JUMP(PND56F); ----- ----- 142 00220D32 00501000 ----- 18502 * 18503 .ORG PND54D.3, * LG == 3, C == 3, OSD 18504 Y(>50), Y>AR, 18505 JUMP(PND56F); ----- ----- 143 00220D32 00501000 ----- 18506 * 18507 .ORG PND54D.4, * LG == 3, C == 4, OSD 18508 Y(>50), Y>AR, 18509 JUMP(PND56F); ----- ----- 144 00220D32 00501000 ----- 18510 * 18511 .ORG PND54D.5, * LG == 3, C == 5, OSD 18512 Y(>50), Y>AR, 18513 JUMP(PND56F); ----- ----- 145 00220D32 00501000 ----- 18514 * 18515 .ORG PND54D.6, * LG == 3, C == 6, OSD 18516 Y(>50), Y>AR, 18517 JUMP(PND56F); ----- ----- 146 00220D32 00501000 ----- 18518 * 18519 .ORG PND54D.7, * LG == 3, C == 7, OSD 18520 Y(>50), Y>AR, 18521 JUMP(PND56F); ----- ----- 147 00220D32 00501000 ----- 18522 * 18523 *AR=PREFIX CHARACTER, BR=MREG1 18524 .ORG PND56F, *Y=FPPP, B=RETURN 18525 MA(MREG1), RAM>BR, 18526 JUMP(PND56X); ----- ----- D32 00010D33 65000000 ----- 18527 * 18528 .ORG PND56X, 18529 MA(RETURN), RAM>BR, 18530 A(FPPP), BR>B, AND, 18531 JUMP(PND61); ----- ----- D33 00010D34 7C080801 ----- 18532 * 18533 .ORG PND61, *Y=RETURN 18534 *PAGE PRE-FIX FORCED TO 'P' ? 18535 A(3), BR>B, AND, 18536 JZ(PND61AF,PND61AT); ----- ----- D34 0000263A 00030801 ----- 18537 .ORG PND61AF, *SET A TO 'P' CASE RETURN=? 18538 Y(>50), 18539 Y>AR, 18540 JY(PND62Y); ----- ----- 63A 0022C050 00501000 ----- 18541 .ORG PND61AT, *CASE RETURN=? 18542 JY(PND62Y); ----- ----- 63B 0000C050 00000000 ----- 18543 * 18544 .ORG PND62Y, *POINT TO PREFIX LETTER 18545 Y(2), 18546 Y>PR, 18547 JUMP(PND63); ----- ----- 050 00000D35 80021000 ----- 18548 .ORG PND63, *WRITE PAGE PREFIX CHARACTER 18549 *A=DHREG 18550 MA(DHREG), RAM>AR, 18551 AR>A, B(0), OR, 18552 Y>DR, 18553 JUMP(PND70); ----- ----- D35 00021D36 32001010 ----- 18554 *WRITE DASHES 18555 * A=DHREG 18556 .ORG PND70, *INVERT POOCD 18557 AR>A, B(POOCD), XOR, 18558 Y>AR, 18559 JUMP(PND70A); ----- ----- D36 00220D37 00201810 ----- 18560 .ORG PND70A, *Y=!POOCD+NRH 18561 *A=PEN 18562 MA(PEN), RAM>AR, 18563 AR>A, B(POOCD+NRH), AND, 18564 JUMP(PND70B); ----- ----- D37 00020D38 1B300810 ----- 18565 .ORG PND70B, *IS THERE A OOC DISPLAY? 18566 *Y=PEN-4 18567 ARHI>A, B(-4), ADD, 18568 JZ(PND71F,PND71T); ----- ----- D38 0000263C 00FC0020 ----- 18569 .ORG PND71F, *SUB-PAGE MODE? 18570 *MASK OFF TWO LSBS OF PEN TO GIVE NUMBER OF DASHES 18571 ARHI>A, B(3), AND, 18572 Y>AR, 18573 JN(PND71AF,PND71AT); ----- ----- 63C 0022463E 00030820 ----- 18574 .ORG PND71T, *OOC DISPLAY, NEED THREE DASHES 18575 *A=3 18576 Y(3), 18577 Y>AR, 18578 JUMP(PND71AT); ----- ----- 63D 0022063F 00031000 ----- 18579 .ORG PND71AF, *SUB-PAGE MODE, NO DASHES 18580 Y(0), 18581 Y>AR, 18582 JUMP(PND71AT); ----- ----- 63E 0022063F 00001000 ----- 18583 * A=NUMBER OF DASHES, RETURN=0 18584 .ORG PND71AT, *PR=6, POINT TO LOCATION AFTER LAST DASH 18585 *CALL PND72 TO WRITE DASHES 18586 *RETURN=0, RETURN TO PND80Y 18587 Y(6), 18588 Y>PR, 18589 JUMP(PND72); ----- ----- 63F 00000B10 80061000 ----- 18590 * 18591 *+++WRITE DASHES ROUTINE 18592 * 18593 * input pars are:- 18594 * P: location after last dash 18595 * A: number of dashes 18596 * RETURN: return pointer 18597 * 18598 .ORG PND72, *DEC DASH COUNT 18599 *BR=PR 18600 *AR=AR-1 18601 PR>BR, 18602 AR>A, B(-1), ADD, 18603 Y>AR, 18604 JUMP(PND73); ----- ----- B10 00630D39 00FF0010 ----- 18605 .ORG PND73, *POINT TO NEXT DASH, MORE DASHES? 18606 *PR=BR-1 18607 *BR=RETURN 18608 MA(RETURN), RAM>BR, 18609 A(-1), BR>B, ADD, 18610 Y>PR, 18611 JN(PND74F,PND74T); ----- ----- D39 00014640 FCFF0001 ----- 18612 .ORG PND74F, *WRITE A DASH 18613 Y(>2D), 18614 Y>DR, 18615 JUMP(PND72); ----- ----- 640 00001B10 002D1000 ----- 18616 * 18617 .ORG PND74T, *Y=RETURN 18618 A(1), BR>B, AND, 18619 JUMP(PND76); ----- ----- 641 00000D3A 00010801 ----- 18620 .ORG PND76, *CASE RETURN 18621 JY(PND80Y); ----- ----- D3A 0000C070 00000000 ----- 18622 * 18623 .ORG PND80Y, *COMMON EXIT FROM PND 18624 JUMP(VPP600T); ----- ----- 070 00000347 00000000 ----- 18625 * 18626 *+++SET PLL REGISTERS 18627 * 18628 * This routine updates PLLRG1-3 according to UPLL, whether the 18629 * decoder is in picture, mix/box or text (as indicated by VDP1) 18630 * and whether the quality algorithm is indicating a good or bad 18631 * signal. The new PLLRG1 is worked out in A, PLLRG1 is updated 18632 * at the end of the routine 18633 * 18634 * B=UPLL 18635 .ORG SPLL0, *PUT NEW R24T, HPOS, UEL, SIX24, ILCE IN A 18636 *CLEAR MUTE, INSYNC, LOCK 18637 *B=VDP1 18638 MA(VDP1), RAM>BR, 18639 A(R24T+HPOS+UEL+SIX24+ILCE), BR>B, AND, 18640 Y>AR, 18641 JUMP(SPLL1); ----- ----- 35C 00230D3B 016D0801 ----- 18642 .ORG SPLL1, *Y=TEXT 18643 A(TEXT), BR>B, AND, 18644 JUMP(SPLL2); ----- ----- D3B 00000D3C 00010801 ----- 18645 .ORG SPLL2, *Y=MIX+BOX 18646 *TEXT=0? 18647 A(MIX+BOX), BR>B, AND, 18648 JZ(SPLL3F,SPLL3T); ----- ----- D3C 00002642 00060801 ----- 18649 .ORG SPLL3F, *TEXT=1, MIX OR BOX? 18650 JZ(SPLL4F,SPLL4T); ----- ----- 642 00002644 00000000 ----- 18651 .ORG SPLL3T, *PICTURE MODE 18652 JUMP(SPLL4F); ----- ----- 643 00000644 00000000 ----- 18653 .ORG SPLL4T, *TEXT MODE 18654 *INSYNC=1 18655 *B=STSWD0 18656 MA(STSWD0), RAM>BR, 18657 AR>A, B(INSYNC), OR, 18658 Y>AR, 18659 JUMP(SPLL10); ----- ----- 645 00230D3D 64101010 ----- 18660 .ORG SPLL4F, *NOT TEXT MODE 18661 *SET INTERLACE MODE 18662 AR>A, B(ILCE), OR, 18663 Y>AR, 18664 JUMP(SPLL5); ----- ----- 644 00220D3E 00011010 ----- 18665 .ORG SPLL5, *SIX24=0 18666 *B=STSWD0 18667 MA(STSWD0), RAM>BR, 18668 AR>A, B(>FF-SIX24), AND, 18669 Y>AR, 18670 JUMP(SPLL10); ----- ----- D3E 00230D3D 64FB0810 ----- 18671 * 18672 .ORG SPLL10, *Y=BADFLG 18673 A(BADFLG), BR>B, AND, 18674 JUMP(SPLL11); ----- ----- D3D 00000D3F 00100801 ----- 18675 .ORG SPLL11, *QUALITY? 18676 *B=VDP1 18677 MA(VDP1), RAM>BR, 18678 JZ(SPLL20F,SPLL20T); ----- ----- D3F 00012646 01000000 ----- 18679 *BAD QUALITY 18680 .ORG SPLL20F, *Y=BOX+MIX 18681 *B=UPLL 18682 MA(UPLL), RAM>BR, 18683 A(BOX+MIX), BR>B, AND, 18684 JUMP(SPLL21); ----- ----- 646 00010D40 6F060801 ----- 18685 .ORG SPLL21, *Y=ISYNC 18686 *IN BOX OR MIX MODE? 18687 A(ISYNC), BR>B, AND, 18688 JZ(SPLL22F,SPLL22T); ----- ----- D40 0000264C 00020801 ----- 18689 .ORG SPLL22F, *IN BOX OR MIX 18690 *ISYNC? 18691 JZ(SPLL22AF,SPLL22AT); ----- ----- 64C 0000264E 00000000 ----- 18692 .ORG SPLL22AF, *BOX/MIX, BAD AND ISYNC 18693 *INSYNC=1 18694 AR>A, B(INSYNC), OR, 18695 Y>AR, 18696 JUMP(SPLL22T); ----- ----- 64E 0022064D 00101010 ----- 18697 .ORG SPLL22AT, *NOT BOX/MIX, BAD AND ISYNC 18698 JUMP(SPLL22T); ----- ----- 64F 0000064D 00000000 ----- 18699 * 18700 .ORG SPLL22T, *B=MREG1 18701 MA(MREG1), RAM>BR, 18702 JUMP(SPLL22A); ----- ----- 64D 00010D41 65000000 ----- 18703 .ORG SPLL22A, *Y=IFRUN 18704 A(IFRUN), BR>B, AND, 18705 JUMP(SPLL22B); ----- ----- D41 00000D42 00800801 ----- 18706 .ORG SPLL22B, *Y=SIX24 18707 *INHIBIT FREE-RUN? 18708 AR>A, B(SIX24), AND, 18709 JZ(SPLL22CF,SPLL22CT); ----- ----- D42 00002650 00040810 ----- 18710 .ORG SPLL22CF, *SIX24? 18711 *MUTE=1 18712 *JUMP TO GOOD CODE TO SET LOCK AND UPDATE PLL COEFFS 18713 *B=PLLRG2 18714 MA(PLLRG2), RAM>BR, 18715 AR>A, B(MUTE), OR, 18716 Y>AR, 18717 JZ(SPLL31F,SPLL31T); ----- ----- 650 00232652 0D801010 ----- 18718 *GO TO FREE RUN 18719 .ORG SPLL22CT, *MUTE=1 18720 AR>A, B(MUTE), OR, 18721 Y>AR, 18722 JUMP(SPLL23); ----- ----- 651 00220D43 00801010 ----- 18723 .ORG SPLL23, *SET FINE COEFFS FOR FREE-RUN 18724 MA(PLLRG2), 18725 Y(>2D), 18726 Y>IO, 18727 JUMP(SPLL24); ----- ----- D43 00000D44 0D2D5000 ----- 18728 .ORG SPLL24, *SET COURSE COEFFS FOR FREE-RUN 18729 MA(PLLRG3), 18730 Y(>2D), 18731 Y>IO, 18732 JUMP(SPLL40); ----- ----- D44 00000D45 0E2D5000 ----- 18733 *GOOD QUALITY 18734 .ORG SPLL20T, *Y=SIX24 18735 AR>A, B(SIX24), AND, 18736 JUMP(SPLL30); ----- ----- 647 00000D46 00040810 ----- 18737 .ORG SPLL30, *MUTE=0 18738 *IN SIX24 MODE? 18739 *B=PLLRG2 18740 MA(PLLRG2), RAM>BR, 18741 AR>A, B(>FF-MUTE), AND, 18742 Y>AR, 18743 JZ(SPLL31F,SPLL31T); ----- ----- D46 00232652 0D7F0810 ----- 18744 *ENTRY FROM BAD CODE IF FREE-RUN INHIBITED AND SIX24=0 18745 .ORG SPLL31T, *NOT SIX24 MODE, TRY TO LOCK 18746 AR>A, B(LOCK), OR, 18747 Y>AR, 18748 JUMP(SPLL31F); ----- ----- 653 00220652 00021010 ----- 18749 *ENTRY FROM BAD CODE IF FREE-RUN INHIBITED AND SIX24=1 18750 .ORG SPLL31F, *LOAD FINE COEFFS 18751 MA(PLLRG2), 18752 A(0), BR>B, OR, 18753 Y>IO, 18754 JUMP(SPLL32); ----- ----- 652 00000D47 0D005001 ----- 18755 .ORG SPLL32, *B=PLLRG3 18756 MA(PLLRG3), RAM>BR, 18757 JUMP(SPLL33); ----- ----- D47 00010D48 0E000000 ----- 18758 .ORG SPLL33, *LOAD COURSE COEFFS 18759 MA(PLLRG3), 18760 A(0), BR>B, OR, 18761 Y>IO, 18762 JUMP(SPLL40); ----- ----- D48 00000D45 0E005001 ----- 18763 * 18764 .ORG SPLL40, *B=UPLL 18765 MA(UPLL), RAM>BR, 18766 JUMP(SPLL50); ----- ----- D45 00010D49 6F000000 ----- 18767 .ORG SPLL50, *Y=FSYNC 18768 A(FSYNC), BR>B, AND, 18769 JUMP(SPLL51); ----- ----- D49 00000D4A 00100801 ----- 18770 .ORG SPLL51, *Y=ISYNC, FSYNC? 18771 A(ISYNC), BR>B, AND, 18772 JZ(SPLL52F,SPLL52T); ----- ----- D4A 00002654 00020801 ----- 18773 .ORG SPLL52F, *FSYNC, ISYNC? 18774 JZ(SPLL53F,SPLL53T); ----- ----- 654 00002656 00000000 ----- 18775 .ORG SPLL53F, *FSYNC=1, ISYNC=1 18776 *INSYNC=1 18777 AR>A, B(INSYNC), OR, 18778 Y>AR, 18779 JUMP(SPLL52T); ----- ----- 656 00220655 00101010 ----- 18780 .ORG SPLL53T, *FSYNC=1, ISYNC=0 18781 *INSYNC=0 18782 AR>A, B(>FF-INSYNC), AND, 18783 Y>AR, 18784 JUMP(SPLL52T); ----- ----- 657 00220655 00EF0810 ----- 18785 * WORKING OUT NEW PLLRG1 IN A, B=UPLL 18786 .ORG SPLL52T, *Y=INSYNC 18787 AR>A, B(INSYNC), AND, 18788 JUMP(SPLL54); ----- ----- 655 00000D4B 00100810 ----- 18789 .ORG SPLL54, *Y=MUTEM, INSYNC? 18790 *B=STSWD0 18791 MA(STSWD0), RAM>BR, 18792 A(MUTEM), BR>B, AND, 18793 JZ(SPLL55F,SPLL55T); ----- ----- D4B 00012658 64800801 ----- 18794 *INSYNC=0 18795 .ORG SPLL55T, *EXTERNAL SYNC, POFF=0 18796 *MUTEM? 18797 MA(STSWD0), 18798 A(>FF-POFF), BR>B, AND, 18799 Y>RAM, 18800 JZ(SPLL56F,SPLL56T); ----- ----- 659 0000265A 64BF0901 ----- 18801 .ORG SPLL56F, *MUTEM=1 18802 JUMP(SPLL60); ----- ----- 65A 00000D4C 00000000 ----- 18803 .ORG SPLL56T, *MUTEM=0, ONLY SET MUTE IF INTERNAL SYNC 18804 *MUTE=0 18805 AR>A, B(>FF-MUTE), AND, 18806 Y>AR, 18807 JUMP(SPLL60); ----- ----- 65B 00220D4C 007F0810 ----- 18808 *INSYNC=1 18809 .ORG SPLL55F, *INTERNAL SYNC, POFF=1 18810 MA(STSWD0), 18811 A(POFF), BR>B, OR, 18812 Y>RAM, 18813 JUMP(SPLL60); ----- ----- 658 00000D4C 64401101 ----- 18814 * 18815 * TCJ June 93 18816 * Option in MODE2 added to invert MUTE signal 18817 * 18818 .ORG SPLL60, *R24B=!R24T 18819 MA(MREG2), RAM>AR, 18820 AR>A, B(R24T), XOR, 18821 Y>PR, 18822 JUMP(TCJSPLL61); ----- ----- D4C 00020D4D EE401810 ----- 18823 * 18824 .ORG TCJSPLL61, *BR=new PLLRG1 value 18825 *AR=MREG2 & XMUTE 18826 AR>A, B(XMUTE), AND, 18827 Y>AR, PR>BR, 18828 JUMP(TCJSPLL62); ----- ----- D4D 00630D4E 00800810 ----- 18829 * 18830 .ORG TCJSPLL62, *UPDATE PLLRG1 18831 MA(PLLRG1), 18832 AR>A, BR>B, XOR, 18833 Y>IO, Y>RAM, 18834 JUMP(VPP703F); ----- ----- D4E 0000035D 0C005911 ----- 18835 * 18836 ***WAIT: WAIT FOR BYTES 18837 * AR= number of bytes, RETURN= pointer to return address 18838 .ORG WAIT0F, *BYTE READY? 18839 MA(RETURN), RAM>BR, 18840 JBYTE(WAIT1F,WAIT1T); ----- ----- 65E 0001865C 7C000000 ----- 18841 .ORG WAIT1F, *LINE READY? 18842 JLINE(WAIT0F,WAIT0T); ----- ----- 65C 0000665E 00000000 ----- 18843 .ORG WAIT0T, *LINE READY, ERROR 18844 CBRDY, 18845 JUMP(PL0); ----- ----- 65F 0000080F 00002000 ----- 18846 .ORG WAIT1T, *AR=AR-1 2ND 18847 CBRDY, 18848 AR>A, B(-1), ADD, 18849 Y>AR, 18850 JUMP(WAIT2); ----- ----- 65D 00220D4F 00FF2010 ----- 18851 .ORG WAIT2, *Y=RETURN, LAST BYTE? 3RD 18852 A(0), BR>B, OR, 18853 JZ(WAIT3F,WAIT3T); ----- ----- D4F 00002660 00001001 ----- 18854 .ORG WAIT3F, *ANOTHER BYTE 18855 JBYTE(WAIT1F,WAIT1T); ----- ----- 660 0000865C 00000000 ----- 18856 .ORG WAIT3T, *LAST BYTE, CASE RETURN 4TH 18857 *Y=HAM 18858 A(0), HAM>B, OR, 18859 JY(CGB5Y); ----- ----- 661 0008C030 00001007 ----- 18860 * 18861 *+++POINT TO TELETEXT PAGE MEMORY 18862 * This routine updates the RWL and PR according to page memory 18863 * address stored in ROWPTR and COLPTR and increments the address. 18864 * 18865 * input pars are:- 18866 * B: ROWPTR (row and latch) 18867 * COLPTR: column pointer 18868 * return pars are:- 18869 * TPD: page data pointed to by ROWPTR and 18870 * COLPTR 18871 * ROWPTR,COLPTR: new pointer after increment 18872 * A: old row 18873 * B: old col 18874 * local variables used are:- 18875 * TEST, RET2 18876 * 18877 .ORG POINT0F, *AR=ROW 18878 *TEST=OLD ROW 18879 MA(TEST), 18880 A(%00011111), BR>B, AND, 18881 Y>AR, Y>RAM, 18882 JUMP(POINT1); ----- ----- 476 00220D50 701F0901 ----- 18883 .ORG POINT1, *PR=ROW*40 18884 *A=COLPTR 18885 MA(COLPTR), RAM>AR, 18886 AR<<3>A, AR<<5>B, ADD, 18887 Y>PR, 18888 JUMP(POINT2); ----- ----- D50 00020D51 B1000059 ----- 18889 .ORG POINT2, *BR=PR 18890 *RET2=OLD COLPTR 18891 PR>BR, 18892 MA(RET2), 18893 AR>A, B(0), OR, 18894 Y>RAM, 18895 JUMP(POINT3); ----- ----- D51 00410D52 7B001110 ----- 18896 .ORG POINT3, *PR=AR+BR 18897 *AR=ROWPTR 18898 MA(ROWPTR), RAM>AR, 18899 AR>A, BR>B, ADD, 18900 Y>PR, 18901 JUMP(POINT4); ----- ----- D52 00020D53 B0000011 ----- 18902 .ORG POINT4, *AR=LCH*2 18903 *BR=COLPTR 18904 MA(COLPTR), RAM>BR, 18905 ARHI>A, B(0), ADD, 18906 Y>AR, 18907 JUMP(POINT5); ----- ----- D53 00230D54 31000020 ----- 18908 .ORG POINT5, *RWL=LCH 18909 MA(RWL), 18910 AR>>1>A, B(7), AND, 18911 Y>RAM, Y>IO, 18912 JUMP(POINT6); ----- ----- D54 00000D55 0B0749E0 ----- 18913 .ORG POINT6, *Y=COLPTR-39 18914 *AR=ROWPTR 18915 MA(ROWPTR), RAM>AR, 18916 A(-39), BR>B, ADD, 18917 JUMP(POINT7); ----- ----- D55 00020D56 30D90001 ----- 18918 .ORG POINT7, *COLPTR=0 18919 MA(COLPTR), 18920 A(0), B(0), AND, 18921 Y>RAM, 18922 JZ(POINT8F,POINT8T); ----- ----- D56 00002662 31000900 ----- 18923 .ORG POINT8F, *INC COLPTR 18924 MA(COLPTR), 18925 A(1), BR>B, ADD, 18926 Y>RAM, 18927 JUMP(POINT9); ----- ----- 662 00000D57 31010101 ----- 18928 .ORG POINT8T, *INC ROW 18929 MA(ROWPTR), 18930 AR>A, B(1), ADD, 18931 Y>RAM, 18932 JUMP(POINT9); ----- ----- 663 00000D57 30010110 ----- 18933 .ORG POINT9, *AR=RETURN 18934 MA(RETURN), RAM>AR, 18935 JUMP(POINT10); ----- ----- D57 00020D58 7C000000 ----- 18936 .ORG POINT10, *Y=RETURN 18937 *B=OLD COL 18938 MA(RET2), RAM>BR, 18939 AR>A, B(1), AND, 18940 JUMP(POINT11); ----- ----- D58 00010D59 7B010810 ----- 18941 .ORG POINT11, *CASE RETURN=? 18942 *RVDP IS FOR RC60A 18943 *A=OLD ROW 18944 RVDP, 18945 MA(TEST), RAM>AR, 18946 JY(RC40Y); ----- ----- D59 0002C0C0 70008000 ----- 18947 * 18948 *+++CLEAR SCREEN ROUTINES 18949 * RET4=RETURN POINTER 18950 *+++CLEAR ROWS 1-24 AND PAGE RELATED DATA IN RWL 18951 .ORG CSCNA, *P=-8 18952 Y(-8), 18953 Y>PR, 18954 JUMP(CSCNA1); ----- ----- CA0 00000D5A 80F81000 ----- 18955 *ENTRY FROM CSCNC 18956 .ORG CSCNA1, *A=0 18957 Y(0), 18958 Y>AR, 18959 JUMP(CSCN3F); ----- ----- D5A 00220664 00001000 ----- 18960 *+++CLEAR ROW24 OF RWL 18961 .ORG CSCNB, *P=-25 18962 Y(-25), 18963 Y>PR, 18964 JUMP(CSCNB1); ----- ----- C7F 00000D5B 80E71000 ----- 18965 .ORG CSCNB1, *A=-64 18966 Y(-64), 18967 Y>AR, 18968 JUMP(CSCN3F); ----- ----- D5B 00220664 00C01000 ----- 18969 *+++CLEAR ROWS 1-23 OF RWL 18970 .ORG CSCNC, *P=-65 18971 Y(-65), 18972 Y>PR, 18973 JUMP(CSCNA1); ----- ----- D7C 00000D5A 80BF1000 ----- 18974 *+++CLEAR PAGE RELATED DATA IN RWL 18975 .ORG CSCND, *P=-8 18976 Y(-8), 18977 Y>PR, 18978 JUMP(CSCND1); ----- ----- D7D 00000D5C 80F81000 ----- 18979 .ORG CSCND1, *A=-24 18980 Y(-24), 18981 Y>AR, 18982 JUMP(CSCN3F); ----- ----- D5C 00220664 00E81000 ----- 18983 *+++CLEAR MEM FROM PR TO AR INCLUSIVE IN RWL 18984 .ORG CSCN3F, *PR>BR, DR=>20, 18985 PR>BR, 18986 A(>20), B(>20), OR, 18987 Y>DR, 18988 JUMP(CSCN1); ----- ----- 664 00411D5D 00201000 ----- 18989 .ORG CSCN1, *Y=BR-AR 18990 NAR>A, BR>B, ADD, O>CIN, 18991 JUMP(CSCN2); ----- ----- D5D 00000D5E 00000441 ----- 18992 .ORG CSCN2, *LAST BYTE? 18993 *DEC P 18994 *BR=RET4 18995 MA(RET4), RAM>BR, 18996 A(-1), BR>B, ADD, 18997 Y>PR, 18998 JZ(CSCN3F,CSCN3T); ----- ----- D5E 00012664 F9FF0001 ----- 18999 *+++CLEARED LAST BYTE 19000 .ORG CSCN3T, *Y=RET4 19001 *B=SYS2 FOR ROW10 19002 MA(SYS2), RAM>BR, 19003 A(7), BR>B, AND, 19004 JUMP(CSCN4); ----- ----- 665 00010D5F 09070801 ----- 19005 .ORG CSCN4, * 19006 *AR=STOR1 (FOR INPCM41) 19007 MA(STOR1), RAM>AR, 19008 JY(SMENM7Y); ----- ----- D5F 0002C0D0 21000000 ----- 19009 * 19010 *+++MASK ROUTINE 19011 * 19012 * AR=THISRW=current row, RETURN is return pointer 19013 * This routine takes the current row and updates PR to point 19014 * to the clear row byte and places a mask for the bit for this 19015 * row in AR. It also places the row marker byte in TPD, B and RET2. 19016 * 19017 * This routine is also called by PDC triplet post-processing to 19018 * find the bit which should be set to indicate a particular DC 19019 * has been received. 19020 * 19021 * STORE is used as a temp store 19022 * 19023 *LOAD PR WITH POINTER TO CLEAR ROW MARKER BYTE 19024 *LOAD STORE WITH NUMBER FROM 0-7 INDICATING MARKER BIT 19025 .ORG MASK0, *Y=THISRW-17 19026 AR>A, B(-17), ADD, 19027 JUMP(MASK5); ----- ----- 811 00000D60 00EF0010 ----- 19028 .ORG MASK5, *THISRW<17? 19029 *Y=THISRW-9 19030 AR>A, B(-9), ADD, 19031 JN(MASK6F,MASK6T); ----- ----- D60 00004666 00F70010 ----- 19032 .ORG MASK6T, *THISRW<17 19033 *THISRW<9? 19034 *SPAREBY08 19035 *PR=-8 19036 Y(-8), 19037 Y>PR, 19038 JN(MASK7F,MASK7T); ----- ----- 667 00004668 80F81000 ----- 19039 *ROWS 17 TO 24 19040 .ORG MASK6F, *THISRW>=17 19041 *SPAREBY10 19042 *PR=-10 19043 Y(-10), 19044 Y>PR, 19045 JUMP(MASK8); ----- ----- 666 00000D61 80F61000 ----- 19046 .ORG MASK8, *STORE=THISRW-17 19047 MA(STORE), 19048 AR>A, B(-17), ADD, 19049 Y>RAM, Y>AR, 19050 JUMP(MASK10); ----- ----- D61 00220D62 77EF0110 ----- 19051 *ROWS 9 TO 16 19052 .ORG MASK7F, *PR=-9 19053 *SPAREBY09 19054 Y(-9), 19055 Y>PR, 19056 JUMP(MASK9); ----- ----- 668 00000D63 80F71000 ----- 19057 .ORG MASK9, *STORE=THISRW-9 19058 MA(STORE), 19059 AR>A, B(-9), ADD, 19060 Y>RAM, Y>AR, 19061 JUMP(MASK10); ----- ----- D63 00220D62 77F70110 ----- 19062 *ROWS 1 TO 8 19063 * PR=-8 19064 .ORG MASK7T, *STORE=THISRW-1 19065 MA(STORE), 19066 AR>A, B(-1), ADD, 19067 Y>RAM, Y>AR, 19068 JUMP(MASK10); ----- ----- 669 00220D62 77FF0110 ----- 19069 *CONVERT STORE INTO MASK FOR ROW MARKER BYTE 19070 .ORG MASK10, *STORE=7-STORE 19071 RVDP, 19072 MA(STORE), 19073 NAR>A, B(>07), ADD, O>CIN, 19074 Y>RAM, 19075 JUMP(MASK11); ----- ----- D62 00000D64 77078540 ----- 19076 .ORG MASK11, *AR=>80, MASK BIT START POINT (AVOID SIGN EXTEND) 19077 *BR=STORE 19078 MA(STORE), RAM>BR, 19079 A(>40), B(>40), ADD, 19080 Y>AR, 19081 JUMP(MASK12); ----- ----- D64 00230D65 77400000 ----- 19082 * 19083 .ORG MASK12, *STORE=STORE-1 19084 MA(STORE), 19085 A(-1), BR>B, ADD, 19086 Y>RAM, 19087 JUMP(MASK13); ----- ----- D65 00000D66 77FF0101 ----- 19088 .ORG MASK13, *STORE<0? 19089 *Y=MARKER BYTE AND MASK 19090 *USE RET2 AS TEMP STORE FOR MARKER BYTE 19091 MA(RET2), 19092 TPD>A, B(0), ADD, 19093 Y>RAM, 19094 JN(MASK14F,MASK14T); ----- ----- D66 0000466A 7B000190 ----- 19095 .ORG MASK14F, *SHIFT MASK BIT TO THE RIGHT 19096 *BR=STORE 19097 MA(STORE), RAM>BR, 19098 AR>>1>A, B(0), ADD, 19099 Y>AR, 19100 JUMP(MASK12); ----- ----- 66A 00230D65 770000E0 ----- 19101 *EXIT FROM MASK ROUTINE 19102 .ORG MASK14T, *BR=RETURN 19103 MA(RETURN), RAM>BR, 19104 JUMP(MASK14A); ----- ----- 66B 00010D67 7C000000 ----- 19105 .ORG MASK14A, *Y=RETURN 19106 A(3), BR>B, AND, 19107 JUMP(MASK14B); ----- ----- D67 00000D68 00030801 ----- 19108 .ORG MASK14B, *BR=MARKER BYTE 19109 MA(RET2), RAM>BR, 19110 JY(VPP215Y); ----- ----- D68 0001C0E0 7B000000 ----- 19111 * 19112 *+++CLOSE DOWN TELETEXT 19113 * 19114 * This routine closes any open mags and clears VBICAP and CAP 19115 * in all the latch flags. This is necessary when switching off 19116 * teletext due to a bad signal. 19117 * 19118 * input pars are:- 19119 * RETURN: return pointer 19120 * 19121 .ORG CDTXT0, *INIT LOOP 19122 Y(7), 19123 Y>AR, 19124 JUMP(CDTXT10F); ----- ----- 9BF 0022066C 00071000 ----- 19125 *LOOP START 19126 .ORG CDTXT10F, *P=MFx POINTER 19127 AR>A, B(MF0), ADD, 19128 Y>PR, 19129 JUMP(CDTXT11); ----- ----- 66C 00000D69 80580010 ----- 19130 .ORG CDTXT11, *B=MFx 19131 PR>MA, RAM>BR, 19132 JUMP(CDTXT12); ----- ----- D69 00110D6A 00000000 ----- 19133 .ORG CDTXT12, *CLOSE IT (MLP=0, MO=0) 19134 PR>MA, 19135 A(0), BR.F0>B, OR, 19136 Y>RAM, 19137 JUMP(CDTXT13); ----- ----- D6A 00100D6B 00001103 ----- 19138 .ORG CDTXT13, *P=LAFx POINTER 19139 AR>A, B(LAF0), ADD, 19140 Y>PR, 19141 JUMP(CDTXT14); ----- ----- D6B 00000D6C 80400010 ----- 19142 .ORG CDTXT14, *B=LAFx 19143 *DEC LOOP 19144 PR>MA, RAM>BR, 19145 AR>A, B(-1), ADD, 19146 Y>AR, 19147 JUMP(CDTXT15); ----- ----- D6C 00330D6D 00FF0010 ----- 19148 .ORG CDTXT15, *CLEAR VBICAP, CAP AND OPN 19149 *LOOP END? 19150 PR>MA, 19151 A(>FF-VBICAP-CAP-OPN), BR>B, AND, 19152 Y>RAM, 19153 JN(CDTXT10F,CDTXT10T); ----- ----- D6D 0010466C 002F0901 ----- 19154 *LOOP END 19155 .ORG CDTXT10T, *A=RETURN 19156 MA(RETURN), RAM>AR, 19157 JUMP(CDTXT20); ----- ----- 66D 00020D6E 7C000000 ----- 19158 .ORG CDTXT20, *Y=RETURN 19159 AR>A, B(1), AND, 19160 JUMP(CDTXT21); ----- ----- D6E 00000D6F 00010810 ----- 19161 .ORG CDTXT21, *RETURN=? 19162 JZ(VPP665F,STXT10T); ----- ----- D6F 0000266E 00000000 ----- 19163 ************************************************************************ 19164 * section 6: initialisation * 19165 ************************************************************************ 19166 .ORG HRST0, *H/W RESET ENTRY POINT 19167 *CLEAR HFLGS 19168 RSTRXTX, 19169 MA(HFLGS), 19170 A(0), B(0), ADD, 19171 Y>RAM, 19172 JUMP(SRST0); ----- ----- 000 00000B73 7F000300 ----- 19173 *+++ENTRY FROM SRST 19174 .ORG SRST0, *CLEAR REST OF SCRATCH RAM 19175 *PR=>7F 19176 CBRDY, 19177 A(>7F), B(>7F), OR, 19178 Y>PR, 19179 JUMP(SRST1); ----- ----- B73 00000D70 807F3000 ----- 19180 .ORG SRST1, *BR=>7F 19181 PR>BR, 19182 JUMP(SRST3F); ----- ----- D70 00410670 00000000 ----- 19183 * 19184 .ORG SRST3F, *PR=BR-1 19185 A(-1), BR>B, ADD, 19186 Y>PR, 19187 JUMP(SRST2); ----- ----- 670 00000D71 80FF0001 ----- 19188 .ORG SRST2, *CLEAR LOC 19189 *PR==0? 19190 PR>MA, PR>BR, 19191 A(0), B(0), AND, 19192 Y>RAM, Y>IO, 19193 JZ(SRST3F,SRST3T); ----- ----- D71 00512670 00004900 ----- 19194 *+++CLEAR PAGE MEMORY 19195 .ORG SRST3T, *INIT PAGE LOOP 19196 Y(8), 19197 Y>AR, 19198 JUMP(SRST7T); ----- ----- 671 00220675 00081000 ----- 19199 * 19200 .ORG SRST7T, *AR=AR-1 19201 *DEC LOOP VARIABLE AND SET READ/WRITE LATCH 19202 MA(RWL), 19203 AR>A, B(-1), ADD, 19204 Y>AR, Y>IO, 19205 JUMP(SRST4); ----- ----- 675 00220D72 0BFF4010 ----- 19206 .ORG SRST4, *PR=0 19207 *AR<0? (LAST PAGE?) 19208 Y(0), 19209 Y>PR, 19210 JN(SRST5F,SRST5T); ----- ----- D72 00004672 80001000 ----- 19211 .ORG SRST5F, *BR=0 19212 *CLEAR PAGE LOC 19213 PR>BR, 19214 Y(>20), 19215 Y>DR, 19216 JUMP(SRST7F); ----- ----- 672 00411674 00201000 ----- 19217 *CLEAR A PAGE 19218 .ORG SRST7F, *DEC SCREEN POINTER 19219 A(-1), BR>B, ADD, 19220 Y>PR, 19221 JUMP(SRST6); ----- ----- 674 00000D73 80FF0001 ----- 19222 .ORG SRST6, *COMPLETED THE PAGE? 19223 *CLEAR PAGE LOC 19224 *BR=PR 19225 PR>BR, 19226 Y(>20), 19227 Y>DR, 19228 JZ(SRST7F,SRST7T); ----- ----- D73 00413674 00201000 ----- 19229 *+++INIT STORE TABLE 19230 .ORG SRST5T, *AR=7 19231 *Y MUST NOT BE -VE FOR SRST14 19232 Y(7), 19233 Y>AR, 19234 JUMP(SRST14); ----- ----- 673 00220D74 00071000 ----- 19235 .ORG SRST14, *PR=AR+STOR0 19236 *BR=EXPREG 19237 MA(EXPREG), RAM>BR, 19238 AR>A, B(STOR0), ADD, 19239 Y>PR, 19240 JN(SRST15F,SRST15T); ----- ----- D74 00014676 E3200010 ----- 19241 .ORG SRST15F, *BR=STORx 19242 PR>MA, RAM>BR, 19243 JUMP(SRST16); ----- ----- 676 00110D75 00000000 ----- 19244 .ORG SRST16, *INIT STORx 19245 PR>MA, 19246 AR<<4>A, BR.0F>B, ADD, 19247 Y>RAM, 19248 JUMP(SRST17); ----- ----- D75 00100D76 00000132 ----- 19249 .ORG SRST17, *DEC AR 19250 AR>A, B(-1), ADD, 19251 Y>AR, 19252 JUMP(SRST14); ----- ----- D76 00220D74 00FF0010 ----- 19253 *+++NON-ZERO INITIALISATIONS 19254 .ORG SRST15T, *SET CLOCK TO YELLOW ON BLUE 19255 MA(VDP4), 19256 Y(>43), 19257 Y>RAM, Y>IO, 19258 JUMP(SRST20); ----- ----- 677 00000D77 04435100 ----- 19259 .ORG SRST20, *SET HYSTERISIS END STOP TO 3 19260 MA(HYSREG), 19261 Y(>30), 19262 Y>RAM, 19263 JUMP(SRST21); ----- ----- D77 00000D78 67301100 ----- 19264 *SET DEFAULT PLL COEFFS TO VALUES IN VAS'S MSG01378767 13/8/92 19265 .ORG SRST21, *SET FINE COEFFS TO 00 19266 MA(PLLRG2), 19267 Y(>00), 19268 Y>RAM, 19269 JUMP(SRST22); ----- ----- D78 00000D79 0D001100 ----- 19270 .ORG SRST22, *SET COARSE COEFFS TO 24 19271 MA(PLLRG3), 19272 Y(>24), 19273 Y>RAM, 19274 JUMP(CHNG3); ----- ----- D79 000000D4 0E241100 ----- 19275 * 19276 * TCJ September 94, 19277 * 211 intialisation. 19278 * 19279 *.ORG SRST23, * Set inital LANG2 to RUSSIAN 19280 * Y(>32), 19281 * MA(VDP3), Y>RAM, 19282 * JUMP(SRST24); 19283 * 19284 *.ORG SRST24, * Set initial LANG to goup 3 19285 * Y(>30), 19286 * MA(USRLAN), Y>RAM, 19287 * JUMP(CHNG3); 19288 * 19289 *+++CHANGE CHANNEL INITIALISATION 19290 * 19291 *ENTRY POINT TO CLEAR DISPLAY PAGE 19292 .ORG CHNG0, *B=SYS2 19293 MA(SYS2), RAM>BR, 19294 JUMP(CHNG1); ----- ----- B74 00010D7A 09000000 ----- 19295 .ORG CHNG1, *A=STOR0 19296 *Y=APIN 19297 MA(STOR0), RAM>AR, 19298 A(APIN), BR>B, AND, 19299 JUMP(CHNG1A); ----- ----- D7A 00020D7B 20010801 ----- 19300 .ORG CHNG1A, *RWL= DISPLAY PAGE LATCH 19301 *AUTO MENUS DISABLED? 19302 MA(RWL), 19303 ARHI>A, B(0), OR, 19304 Y>RAM, Y>IO, 19305 JZ(CHNG2F,CHNG2T); ----- ----- D7B 0000267C 0B005120 ----- 19306 *CLEAR ROWS 1-24 AND PAGE RELATED DATA 19307 .ORG CHNG2T, *CALL CSCNA 19308 *RET4=4, RETURN TO CHNG3 19309 MA(RET4), 19310 Y(4), 19311 Y>RAM, 19312 JUMP(CSCNA); ----- ----- 67D 00000CA0 79041100 ----- 19313 *AUTO MENUS DISABLED, DO NOT CLEAR ROW 24 19314 .ORG CHNG2F, *CLEAR ROWS 1-23 19315 *CALL CSCNC 19316 *RET4=6, RETURN TO CHNG2A 19317 MA(RET4), 19318 Y(6), 19319 Y>RAM, 19320 JUMP(CSCNC); ----- ----- 67C 00000D7C 79061100 ----- 19321 .ORG CHNG2A, *CLEAR PAGE RELATED DATA 19322 *CALL CSCND 19323 *RET4=7, RETURN TO CHNG2B 19324 MA(RET4), 19325 Y(7), 19326 Y>RAM, 19327 JUMP(CSCND); ----- ----- 0D6 00000D7D 79071100 ----- 19328 .ORG CHNG2B, 19329 JUMP(CHNG3); ----- ----- 0D7 000000D4 00000000 ----- 19330 *CLEAR NON-DISPLAY TELETEXT PAGES AND INITIALISE LATCH FLAGS 19331 .ORG CHNG3, *INIT LOOP VARIABLE 19332 MA(LOCAL), 19333 Y(8), 19334 Y>RAM, 19335 JUMP(CHNG4); ----- ----- 0D4 000000D5 72081100 ----- 19336 * 19337 .ORG CHNG4, *A=LOOP 19338 MA(LOCAL), RAM>AR, 19339 JUMP(CHNG5); ----- ----- 0D5 00020D7E 72000000 ----- 19340 .ORG CHNG5, *DEC LOOP 19341 MA(LOCAL), 19342 AR>A, B(-1), ADD, 19343 Y>RAM, Y>AR, 19344 JUMP(CHNG6); ----- ----- D7E 00220D7F 72FF0110 ----- 19345 .ORG CHNG6, *MORE LATCHES? 19346 *B=STORE0 19347 *P=INDEX TO LATCH FLAGS 19348 MA(STOR0), RAM>BR, 19349 AR>A, B(LAF0), ADD, 19350 Y>PR, 19351 JN(CHNG7F,CHNG7T); ----- ----- D7F 0001467E A0400010 ----- 19352 .ORG CHNG7F, *COMPARE THIS LATCH WITH DISPLAY LATCH 19353 *B=LAFx 19354 PR>MA, RAM>BR, 19355 AR>A, BRHI>B, XOR, 19356 JUMP(CHNG8); ----- ----- 67E 00110D80 0000181C ----- 19357 .ORG CHNG8, *DISPLAY LATCH? 19358 *Y=MENU PAGE FLAG 19359 A(MPG), BR>B, AND, 19360 JZ(CHNG9F,CHNG9T); ----- ----- D80 00002680 00040801 ----- 19361 .ORG CHNG9T, *DISPLAY LATCH 19362 *CLEAR LAFx 19363 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 19364 PR>MA, 19365 Y(0), 19366 Y>RAM, 19367 JUMP(CHNG4); ----- ----- 681 001000D5 00001100 ----- 19368 .ORG CHNG9F, *MENU PAGE? 19369 *RET4=5 19370 MA(RET4), 19371 Y(5), 19372 Y>RAM, 19373 JZ(CHNG10F,CHNG10T); ----- ----- 680 00002682 79051100 ----- 19374 .ORG CHNG10F, *MENU PAGE, DO NOT CLEAR 19375 JUMP(CHNG4); ----- ----- 682 000000D5 00000000 ----- 19376 .ORG CHNG10T, *TELETEXT PAGE, CLEAR IT 19377 *RWL=THIS LATCH 19378 MA(RWL), 19379 AR>A, B(0), OR, 19380 Y>RAM, Y>IO, 19381 JUMP(CHNG11); ----- ----- 683 00000D81 0B005110 ----- 19382 .ORG CHNG11, *CLEAR LAFx 19383 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 19384 *CALL CSCNA 19385 *RET4=5, RETURN TO CHNG4 19386 PR>MA, 19387 Y(0), 19388 Y>RAM, 19389 JUMP(CSCNA); ----- ----- D81 00100CA0 00001100 ----- 19390 * 19391 .ORG CHNG7T, *INITIALISE TOP FLAGS 19392 *TOPRG1=0 19393 *(BTTERR=BTTCAP=BTTP=BTTUP=BTT UPDATE CODE=0) 19394 MA(TOPRG1), 19395 Y(0), 19396 Y>RAM, 19397 JUMP(CHNG12); ----- ----- 67F 00000D82 37001100 ----- 19398 .ORG CHNG12, *POINT TO LATCH CONTAINING FORMAT 1 PACKET COUNT 19399 MA(RWL), 19400 Y(0), 19401 Y>RAM, Y>IO, 19402 JUMP(CHNG12A); ----- ----- D82 00000D83 0B005100 ----- 19403 .ORG CHNG12A, *A=HYSREG 19404 *POINT TO FORMAT 1 PACKET COUNT 19405 MA(HYSREG), RAM>AR, 19406 Y(-7), 19407 Y>PR, 19408 JUMP(CHNG13); ----- ----- D83 00020D84 E7F91000 ----- 19409 .ORG CHNG13, *INIT HYSTERISIS COUNT 19410 MA(HYSREG), 19411 AR.F0>A, B(0), OR, 19412 Y>RAM, 19413 JUMP(CHNG14); ----- ----- D84 00000D85 670011D0 ----- 19414 .ORG CHNG14, *A=STSWD0 19415 MA(STSWD0), RAM>AR, 19416 JUMP(CHNG15); ----- ----- D85 00020D86 64000000 ----- 19417 .ORG CHNG15, *BADFLG=1 19418 MA(STSWD0), 19419 AR>A, B(BADFLG), OR, 19420 Y>AR, 19421 JUMP(CHNG16); ----- ----- D86 00220D87 64101010 ----- 19422 .ORG CHNG16, *TFLG=0, FFLG=0 19423 MA(STSWD0), 19424 AR>A, B(>FF-TFLG-FFLG), AND, 19425 Y>RAM, 19426 JUMP(CHNG18); ----- ----- D87 00000D88 645F0910 ----- 19427 .ORG CHNG18, *INITIALISE ERROR COUNT 19428 *INITIALISE FORMAT 1 PACKET COUNT 19429 MA(ERRCNT), 19430 Y(0), 19431 Y>RAM, Y>DR, 19432 JUMP(CHNG19); ----- ----- D88 00001D89 3A001100 ----- 19433 .ORG CHNG19, *INITIALISE INVENTORY COUNT 19434 MA(INVCNT), 19435 Y(0), 19436 Y>RAM, 19437 JUMP(CHNG20); ----- ----- D89 00000D8A 38001100 ----- 19438 .ORG CHNG20, *A=VDPTXT 19439 MA(VDPTXT), RAM>AR, 19440 JUMP(CHNG21); ----- ----- D8A 00020D8B 2B000000 ----- 19441 .ORG CHNG21, *CLEAR UPD, C8YET, URVL, UEXT, UEXB 19442 MA(VDPTXT), 19443 AR>A, B(>FF-UPD-C8YET-URVL-UEXT-UEXB), AND, 19444 Y>RAM, 19445 JUMP(CHNG21A); ----- ----- D8B 00000D8C 2BC40910 ----- 19446 * 19447 .ORG CHNG21A, *Fetch ststus byte containing TVPS flag 19448 MA(SYS2), RAM>AR, 19449 JUMP(CHNG21B); ----- ----- D8C 00020D8D 09000000 ----- 19450 * 19451 .ORG CHNG21B, *Clear the TVPS flag 19452 MA(SYS2), 19453 AR>A, B(>FF-TVPS), AND, 19454 Y>RAM, 19455 JUMP(CHNG21C); ----- ----- D8D 00000D8E 09EF0910 ----- 19456 * 19457 * TCJ WSS 19458 * 19459 .ORG CHNG21C, 19460 MA(STSWD0), RAM>AR, 19461 JUMP(CHNG21D); ----- ----- D8E 00020D8F 64000000 ----- 19462 * 19463 .ORG CHNG21D, 19464 MA(STSWD0), 19465 AR>A, B(>FF-TWSS), AND, 19466 Y>RAM, 19467 JUMP(CHNG22); ----- ----- D8F 00000D9A 64FE0910 ----- 19468 * 19469 *NULLIFY FAVOURITE PAGES 19470 .ORG CHNG22, *RWL=LATCH 5 19471 MA(RWL), 19472 Y(5), 19473 Y>RAM, Y>IO, 19474 JUMP(CHNG23); ----- ----- D9A 00000D9B 0B055100 ----- 19475 .ORG CHNG23, *INIT LATCH COUNT 19476 Y(2), 19477 Y>AR, 19478 JUMP(CHNG24F); ----- ----- D9B 00220686 00021000 ----- 19479 *LATCH LOOP START 19480 .ORG CHNG24F, *POINT TO FIRST FAVOURITE PAGE DIGIT IN LATCH 19481 Y(-7), 19482 Y>PR, 19483 JUMP(CHNG25F); ----- ----- 686 00000684 80F91000 ----- 19484 *BYTE LOOP START 19485 .ORG CHNG25F, *SET MSB TO NULLIFY DIGIT 19486 *B=POINTER 19487 PR>BR, 19488 Y(>80), 19489 Y>DR, 19490 JUMP(CHNG26); ----- ----- 684 00411D9C 00801000 ----- 19491 .ORG CHNG26, *Y=POINTER+2 19492 A(2), BR>B, ADD, 19493 JUMP(CHNG27); ----- ----- D9C 00000D9D 00020001 ----- 19494 .ORG CHNG27, *POINTER++, LAST BYTE? 19495 A(1), BR>B, ADD, 19496 Y>PR, 19497 JZ(CHNG25F,CHNG25T); ----- ----- D9D 00002684 80010001 ----- 19498 *END OF BYTE LOOP 19499 .ORG CHNG25T, *LATCH COUNT-- 19500 AR>A, B(-1), ADD, 19501 Y>AR, 19502 JUMP(CHNG28); ----- ----- 685 00220D9E 00FF0010 ----- 19503 .ORG CHNG28, *RWL=LATCH 6 19504 *LAST LATCH? 19505 MA(RWL), 19506 Y(6), 19507 Y>RAM, Y>IO, 19508 JZ(CHNG24F,CHNG24T); ----- ----- D9E 00002686 0B065100 ----- 19509 *END OF LATCH LOOP 19510 .ORG CHNG24T, *A=SYS1 19511 MA(SYS1), RAM>AR, 19512 JUMP(CHNG48); ----- ----- 687 00020D9F 08000000 ----- 19513 .ORG CHNG48, *ALWAYS START OFF IN NORMAL 19514 *PCM=0, FIND=1 19515 MA(SYS1), 19516 AR.0F>A, B(FIND), OR, 19517 Y>RAM, 19518 JUMP(CHNG49); ----- ----- D9F 00000DA0 080811C0 ----- 19519 .ORG CHNG49, *CALL INPCM TO INIT PAGE CAPTURE MODE 19520 *RETURN=0, RETURN TO CHNG50Y 19521 MA(RETURN), 19522 Y(0), 19523 Y>RAM, 19524 JUMP(INPCM0); ----- ----- DA0 00000919 7C001100 ----- 19525 .ORG CHNG50Y, *BR=EXPREG 19526 MA(EXPREG), RAM>BR, 19527 JUMP(CHNG51); ----- ----- 620 00010DA1 63000000 ----- 19528 .ORG CHNG51, *Y=USM 19529 A(USM), BR>B, AND, 19530 JUMP(CHNG52); ----- ----- DA1 00000DA2 00020801 ----- 19531 .ORG CHNG52, *USER STATUS MODE? 19532 JZ(CHNG55F,CHNG55T); ----- ----- DA2 00002688 00000000 ----- 19533 .ORG CHNG55F, *CPRF=1 (CLEAR ROW 24 BEFORE COPYING STATUS) 19534 *SINP=1 (SEARCH FOR PACKET 8/30 INIT PAGE) 19535 MA(EXPREG), 19536 * A(CPRF+SINP), BR>B, OR, *TCJ WSS 19537 A(CPRF), BR>B, OR, 19538 Y>RAM, 19539 JUMP(CHNG55T); ----- ----- 688 00000689 63041101 ----- 19540 * 19541 .ORG CHNG55T, *SINP=1 (SEARCH FOR PACKET 8/30 INIT PAGE) 19542 MA(VPPRG1), RAM>BR, 19543 JUMP(CHNG55X); ----- ----- 689 00010DA3 61000000 ----- 19544 * 19545 .ORG CHNG55X, 19546 MA(VPPRG1), 19547 A(SINP), BR>B, OR, 19548 Y>RAM, 19549 JUMP(CHNG56); ----- ----- DA3 00000DA4 61081101 ----- 19550 * 19551 * TCJ June 93 19552 * To correct use of old 8/30 status on channel change bug. 19553 * clear SRTC to force wait for new 8/30. Old version only 19554 * cleared this flag if USM was set. 19555 * 19556 .ORG CHNG56, *SRTC=0 (WAIT FOR NEW STATUS) 19557 MA(EXPREG), RAM>AR, 19558 JUMP(CHNG56X); ----- ----- DA4 00020DA5 63000000 ----- 19559 * 19560 .ORG CHNG56X, 19561 MA(EXPREG), 19562 AR>A, B(>FF-SRTC), AND, 19563 Y>RAM, 19564 JUMP(CHNG59); ----- ----- DA5 00000DA6 63FE0910 ----- 19565 * 19566 .ORG CHNG59, *INIT SUB-PAGE REGISTERS 19567 *(CMPE ONLY DOES THIS IF SUB-PAGE MODE SET) 19568 *A=1, RETURN TO CHNG59A, 19569 Y(1), 19570 Y>AR, 19571 JUMP(INSPRG0); ----- ----- DA6 002208D8 00011000 ----- 19572 * B=LSTINS 19573 .ORG CHNG59A, *Y=LSTINS XOR >06 19574 A(>06), BR>B, XOR, 19575 JUMP(CHNG59B); ----- ----- 6B1 00000DA7 00061801 ----- 19576 .ORG CHNG59B, *CHNGE3? 19577 *Y=LSTINS XOR >07 19578 A(>07), BR>B, XOR, 19579 JZ(CHNG60F,CHNG60T); ----- ----- DA7 0000268A 00071801 ----- 19580 .ORG CHNG60T, *CHNGE3, DO NOT INIT TO PAGE 100 19581 *COUNT=>7 (INHIBIT SINP CLEAR, CLEAR BROWSE AND HOLD) 19582 MA(COUNT), 19583 Y(7), 19584 Y>RAM, 19585 JUMP(CMPE1); ----- ----- 68B 00000BEA 78071100 ----- 19586 .ORG CHNG60F, *CHNGE4? 19587 *COUNT=>7 (INHIBIT SINP CLEAR, CLEAR BROWSE AND HOLD) 19588 MA(COUNT), 19589 Y(7), 19590 Y>RAM, 19591 JZ(CHNG60AF,CHNG60AT); ----- ----- 68A 0000268C 78071100 ----- 19592 .ORG CHNG60AT, *CHNGE4, DO NOT INIT TO PAGE 100 19593 JUMP(CMPE1); ----- ----- 68D 00000BEA 00000000 ----- 19594 *+++INIT TO DISPLAY AND PREVIOUS PAGE TO 100 19595 *ENTRY POINT FROM INDEX KEY ROUTINE (IKR13F) 19596 .ORG CHNG60AF, *DPM=>11 19597 MA(DPM), 19598 Y(>11), 19599 Y>RAM, 19600 JUMP(CHNG61); ----- ----- 68C 00000DA8 68111100 ----- 19601 .ORG CHNG61, *DPT=0 19602 MA(DPT), 19603 Y(0), 19604 Y>RAM, 19605 JUMP(CHNG62); ----- ----- DA8 00000DA9 69001100 ----- 19606 .ORG CHNG62, *DPU=0 19607 MA(DPU), 19608 Y(0), 19609 Y>RAM, 19610 JUMP(CMPE1); ----- ----- DA9 00000BEA 6A001100 ----- 19611 * 19612 *+++INPCM: INITIALISE PAGE CAPTURE MODE 19613 * This routine assumes that sub-page mode is not set or will 19614 * be cleared. 19615 * 19616 * RETURN=RETURN POINTER 19617 .ORG INPCM0, *B=SYS2 19618 MA(SYS2), RAM>BR, 19619 JUMP(INPCM0A); ----- ----- 919 00010DAA 09000000 ----- 19620 .ORG INPCM0A, *S6T1=0 19621 MA(SYS2), 19622 A(>FF-S6T1), BR>B, AND, 19623 Y>RAM, 19624 JUMP(INPCM1); ----- ----- DAA 00000DAB 09DF0901 ----- 19625 *LOOP TO CLEAR APPROPRIATE LATCH FLAGS 19626 .ORG INPCM1, *INIT LOOP VARIABLE 19627 *LOCAL=8 19628 MA(LOCAL), 19629 Y(8), 19630 Y>RAM, 19631 JUMP(INPCM2T); ----- ----- DAB 00000DAC 72081100 ----- 19632 *LOOP START 19633 .ORG INPCM2T, *A=LOOP 19634 MA(LOCAL), RAM>AR, 19635 JUMP(INPCM3); ----- ----- DAC 00020DAD 72000000 ----- 19636 .ORG INPCM3, *LOOP-- 19637 MA(LOCAL), 19638 AR>A, B(-1), ADD, 19639 Y>RAM, Y>AR, 19640 JUMP(INPCM10); ----- ----- DAD 00220DAE 72FF0110 ----- 19641 .ORG INPCM10, *P=INDEX TO LAFx 19642 *FINISHED? 19643 *B=STOR0 19644 MA(STOR0), RAM>BR, 19645 AR>A, B(LAF0), ADD, 19646 Y>PR, 19647 JN(INPCM11F,INPCM11T); ----- ----- DAE 0001468E A0400010 ----- 19648 .ORG INPCM11T, *YES, EXIT 19649 *B=SYS1 19650 MA(SYS1), RAM>BR, 19651 JUMP(INPCM15); ----- ----- 68F 00010DAF 08000000 ----- 19652 .ORG INPCM11F, *COMPARE LATCH WITH LATCH FOR DISPLAY PAGE 19653 AR>A, BRHI>B, XOR, 19654 JUMP(INPCM11A); ----- ----- 68E 00000DB0 0000181C ----- 19655 .ORG INPCM11A, *B=LAFx 19656 *IS THIS THE DISPLAY PAGE? 19657 PR>MA, RAM>BR, 19658 JZ(INPCM12F,INPCM12T); ----- ----- DB0 00112690 00000000 ----- 19659 *THIS IS THE DISPLAY LATCH, DO NOT INITIALISE IT 19660 .ORG INPCM12T, * 19661 JUMP(INPCM2T); ----- ----- 691 00000DAC 00000000 ----- 19662 *NOT THE DISPLAY LATCH 19663 .ORG INPCM12F, *Y=AITL 19664 *B=STOR1 19665 MA(STOR1), RAM>BR, 19666 A(AITL), BR>B, AND, 19667 JUMP(INPCM13); ----- ----- 690 00010DB1 21010801 ----- 19668 .ORG INPCM13, *Y= THIS LATCH XOR LATCH FOR STORE 1, AITL? 19669 *A=LAFx 19670 PR>MA, RAM>AR, 19671 AR>A, BRHI>B, XOR, 19672 JZ(INPCM14F,INPCM14T); ----- ----- DB1 00122692 0000181C ----- 19673 .ORG INPCM14F, *AIT TOP TABLE 19674 *CLEAR LAFx 19675 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 19676 PR>MA, 19677 Y(0), 19678 Y>RAM, 19679 JUMP(INPCM2T); ----- ----- 692 00100DAC 00001100 ----- 19680 .ORG INPCM14T, *IS THIS STORE 1 LATCH? 19681 *Y=BTTL, B=SYS1 19682 MA(SYS1), RAM>BR, 19683 AR>A, B(BTTL), AND, 19684 JZ(INPCM14AF,INPCM14AT); ----- ----- 693 00012698 08020810 ----- 19685 .ORG INPCM14AF, *NO, EXIT 19686 JUMP(INPCM2T); ----- ----- 698 00000DAC 00000000 ----- 19687 .ORG INPCM14AT, *STORE 1 LATCH, BTTL? 19688 *Y=PCM-2 19689 *A=STOR1 19690 MA(STOR1), RAM>AR, 19691 A(-2), BRHI>B, ADD, 19692 JZ(INPCM14BF,INPCM14BT); ----- ----- 699 0002269A 21FE000C ----- 19693 .ORG INPCM14BF, *BTT, GOING TO FLOF MODE? 19694 *RET4=2 19695 MA(RET4), 19696 Y(2), 19697 Y>RAM, 19698 JZ(INPCM14CF,INPCM14CT); ----- ----- 69A 0000269C 79021100 ----- 19699 .ORG INPCM14CF, *LATCH IS A BTT, 19700 *NEW MODE IS NOT FLOF SO LEAVE IT 19701 JUMP(INPCM2T); ----- ----- 69C 00000DAC 00000000 ----- 19702 .ORG INPCM14CT, *LATCH IS A BTT 19703 *NEW MODE IS FLOF SO CLEAR IT 19704 *CLEAR LAFx 19705 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 19706 PR>MA, 19707 Y(0), 19708 Y>RAM, 19709 JUMP(INPCM14DT); ----- ----- 69D 0010069F 00001100 ----- 19710 .ORG INPCM14BT, *NOT A BTT, FLOF MODE? 19711 *RET4=2 19712 MA(RET4), 19713 Y(2), 19714 Y>RAM, 19715 JZ(INPCM14DF,INPCM14DT); ----- ----- 69B 0000269E 79021100 ----- 19716 .ORG INPCM14DT, *LATCH NOT A BTT 19717 *NEW MODE IS FLOF SO LEAVE IT 19718 JUMP(INPCM2T); ----- ----- 69F 00000DAC 00000000 ----- 19719 *CLEAR STORE 1 19720 .ORG INPCM14DF, *LATCH NOT A BTT 19721 *NEW MODE IS NOT FLOF SO CLEAR IT 19722 *RWL= LATCH FOR STORE 1 19723 *CALL CSCNA TO CLEAR BTT 19724 *RET4=2, RETURN TO INPCM14E 19725 MA(RWL), 19726 ARHI>A, B(0), OR, 19727 Y>RAM, Y>IO, 19728 JUMP(CSCNA); ----- ----- 69E 00000CA0 0B005120 ----- 19729 .ORG INPCM14E, *CLEAR INVENTORY COUNT 19730 MA(INVCNT), 19731 Y(0), 19732 Y>RAM, 19733 JUMP(INPCM2T); ----- ----- 0D2 00000DAC 38001100 ----- 19734 *INIT LATCH FLAGS ACCORDING TO PAGE CAPTURE MODE 19735 * BR=SYS1 19736 .ORG INPCM15, *Y=PCM 19737 *A=LTK 19738 MA(LTK), RAM>AR, 19739 A(3), BRHI>B, AND, 19740 JUMP(INPCM20); ----- ----- DAF 00020DB2 1103080C ----- 19741 .ORG INPCM20, *CASE PAGE CAPTURE MODE 19742 *B=STOR3 19743 MA(STOR3), RAM>BR, 19744 JY(INPCM30Y); ----- ----- DB2 0001C630 23000000 ----- 19745 *ENTRY POINT FROM TOP AND FAVP INIT 19746 .ORG INPCM30Y, *NORMAL MODE 19747 *AR=STOR1 19748 MA(STOR1), RAM>AR, 19749 JUMP(INPCM40); ----- ----- 630 00020DB3 21000000 ----- 19750 .ORG INPCM31, *TOP MODE 19751 *INIT LAST TOP KEY (LTK=0) 19752 *GO TO NORMAL CODE 19753 *OTHER TOP INIT IS DONE IN BTTP AND BTTUP CODE 19754 MA(LTK), 19755 AR.0F>A, B(0), OR, 19756 Y>RAM, 19757 JUMP(INPCM30Y); ----- ----- 631 00000630 110011C0 ----- 19758 .ORG INPCM32, *FLOF MODE 19759 *CLEAR TOP FLAGS 19760 * 19761 * Do not set CGAP and CPRF like other modes because this will 19762 * erase row 24 when initialising FLOF after displaying a legal 19763 * FLOF page which has been captured in background memory. 19764 * 19765 MA(TOPRG1), 19766 Y(0), 19767 Y>RAM, 19768 JUMP(INPCM70); ----- ----- 632 00000DB4 37001100 ----- 19769 .ORG INPCM33, *FAVP MODE, DO THE SAME AS NORMAL 19770 JUMP(INPCM30Y); ----- ----- 633 00000630 00000000 ----- 19771 *INITIALISE NORMAL MODE AND TOP MODE 19772 * AR=STOR1 19773 .ORG INPCM40, *P=INDEX TO LAFx 19774 ARHI>A, B(LAF0), ADD, 19775 Y>PR, 19776 JUMP(INPCM41); ----- ----- DB3 00000DB5 80400020 ----- 19777 .ORG INPCM41, *B=LAFx 19778 PR>MA, RAM>BR, 19779 JUMP(INPCM42); ----- ----- DB5 00110DB6 00000000 ----- 19780 .ORG INPCM42, *BTTL=1 19781 PR>MA, 19782 A(BTTL), BR>B, OR, 19783 Y>RAM, 19784 JUMP(INPCM43); ----- ----- DB6 00100DB7 00021101 ----- 19785 .ORG INPCM43, *P=INDEX TO LATCH MAGS 19786 ARHI>A, B(M0), ADD, 19787 Y>PR, 19788 JUMP(INPCM44); ----- ----- DB7 00000DB8 80100020 ----- 19789 .ORG INPCM44, *B=Mx 19790 PR>MA, RAM>BR, 19791 JUMP(INPCM45); ----- ----- DB8 00110DB9 00000000 ----- 19792 .ORG INPCM45, *SET LATCH TO NULL VALUE 19793 PR>MA, 19794 A(>0F), BR.F0>B, OR, 19795 Y>RAM, Y>IO, 19796 JUMP(INPCM60); ----- ----- DB9 00100DBA 000F5103 ----- 19797 .ORG INPCM60, *B=EXPREG 19798 MA(EXPREG), RAM>BR, 19799 JUMP(INPCM61); ----- ----- DBA 00010DBB 63000000 ----- 19800 .ORG INPCM61, *GENERATE A PROMPT (CLEAR ROW FIRST) 19801 *CGAP=1, CPRF=1 19802 MA(EXPREG), 19803 A(CGAP+CPRF), BR>B, OR, 19804 Y>RAM, 19805 JUMP(INPCM70); ----- ----- DBB 00000DB4 630C1101 ----- 19806 *COMMON CODE FOR ALL PAGE CAPTURE MODES 19807 *CLEAR SUB-PAGE REGISTERS TO CLEAR AIT SET UPS 19808 .ORG INPCM70, *CALL INSPRG0 19809 *A=3, RETURN TO INPCM80 19810 Y(3), 19811 Y>AR, 19812 JUMP(INSPRG0); ----- ----- DB4 002208D8 00031000 ----- 19813 *EXIT 19814 .ORG INPCM80, *A=RETURN 19815 MA(RETURN), RAM>AR, 19816 JUMP(INPCM81); ----- ----- 6B3 00020DBC 7C000000 ----- 19817 .ORG INPCM81, *Y=RETURN 19818 *B=VPPRG1 19819 MA(VPPRG1), RAM>BR, 19820 AR>A, B(>F), AND, 19821 JUMP(INPCM82); ----- ----- DBC 00010DBD 610F0810 ----- 19822 .ORG INPCM82, *CASE RETURN=? 19823 *SORT BACK GROUND LATCHES 19824 MA(VPPRG1), 19825 A(SBL), BR>B, OR, 19826 Y>RAM, 19827 * 19828 * All INPCM calls should end up at CMPE0/1 to clear sub-page 19829 * mode unless the call can only occur when main page mode is set 19830 * (eg TPP calls). 19831 * 19832 JY(CHNG50Y); ----- ----- DBD 0000C620 61801101 ----- 19833 * 19834 *INSPRG: INITIALISE SUB-PAGE REGISTERS 19835 * A=RETURN POINTER 19836 .ORG INSPRG0, *LFPCL0=NULL 19837 MA(SPREG0), 19838 Y(>F0), 19839 Y>RAM, 19840 JUMP(INSPRG1); ----- ----- 8D8 00000DBE 54F01100 ----- 19841 .ORG INSPRG1, *LFPCL1=NULL 19842 MA(SPREG1), 19843 Y(>F0), 19844 Y>RAM, 19845 JUMP(INSPRG2); ----- ----- DBE 00000DBF 55F01100 ----- 19846 .ORG INSPRG2, *LFPCL2=NULL 19847 MA(SPREG2), 19848 Y(>F0), 19849 Y>RAM, 19850 JUMP(INSPRG3); ----- ----- DBF 00000DC0 56F01100 ----- 19851 .ORG INSPRG3, *LFSP0=NULL 19852 *(ALSO SP0I=0) 19853 MA(LFSP0), 19854 * MA(SP0I), 19855 Y(>0F), 19856 Y>RAM, 19857 JUMP(INSPRG4); ----- ----- DC0 00000DC1 480F1100 ----- 19858 .ORG INSPRG4, *LFSP1=NULL 19859 *(ALSO SP0X=0) 19860 MA(LFSP1), 19861 * MA(SP0X), 19862 Y(>0F), 19863 Y>RAM, 19864 JUMP(INSPRG5); ----- ----- DC1 00000DC2 490F1100 ----- 19865 .ORG INSPRG5, *Y=RETURN POINTER 19866 *BR=LSTINS 19867 MA(LSTINS), RAM>BR, 19868 AR>A, B(3), AND, 19869 JUMP(INSPRG6); ----- ----- DC2 00010DC3 2E030810 ----- 19870 .ORG INSPRG6, *LFSP2=NULL 19871 *(ALSO SP0C=0) 19872 MA(LFSP2), 19873 * MA(SP0C), 19874 Y(>0F), 19875 Y>RAM, 19876 JY(TPP50Y); ----- ----- DC3 0000C6B0 4A0F1100 ----- 19877 ************************************************************************ 19878 * * 19879 * EUROTEXT: TEST Microcode SHC * 19880 * * 19881 * CONCATANATED ON 19/01/93 BY SHC * 19882 * * 19883 ************************************************************************ 19884 *IDT 'EUROTEST' * 8 character label for .OBJ file * 19885 *SIZ >E00; * 19886 *TITL 'EUROTEXT Test Microcode' * 19887 *ETFO * EUROTEXT format, 64 bit object and no variable bit reverse * 19888 *OUT 56; * 19889 * * 19890 *Design rules:- -RVDP before TPD * 19891 * -one instruction between JBYTE and CBRDY * 19892 * -if RVDP and Y>DR in the same instruction, TPD will * 19893 * be updated in the next instruction and the write will * 19894 * occur in the next instruction * 19895 * -can't do a RVDP in the instruction after a Y>DR * 19896 * * 19897 *----------------------------------------------------------------------* 19898 ************************************************************************ 19899 * TEST MICROCODE DEFINITIONS ONLY * 19900 ************************************************************************ 19901 * C 19902 * P AB JJJD P RVB AAAABBBB 19903 * CERFFLL MMML< ROM > L< RAM > VDR CE MMMMMMMM 19904 * MMMEEDD PPPD D DPDSSIXWSSSSSSSS 19905 * SSA10TT 210TBA9876543210 T654321076543210 PCY10NTE32103210 19906 * 19907 * ||||||| |||||||||||||||| |||||||||||||||| |||||||||||||||| 19908 * 19909 *A INPUT TO ALU 19910 * 19911 *DEF A(?), 0000000 0000000000000000 00000000???????? 00000000ZZZZ0000; 19912 *DEF AR>A, 0000000 0000000000000000 0000000000000000 00000000ZZZ10000; 19913 .DEF TPD7>A, 0000000 0000000000000000 0000000000000000 000000001ZZ10000; 19914 .DEF TPD8>A, 0000000 0000000000000000 0000000000000000 0000000011110000; 19915 * 19916 *B INPUT TO ALU 19917 * 19918 *DEF B(?), 0000000 0000000000000000 00000000???????? 000000000000ZZZZ; 19919 *DEF BR>B, 0000000 0000000000000000 0000000000000000 000000000000ZZZ1; 19920 * 19921 *A AND B INPUT TO ALU 19922 * 19923 *DEF Y(?), 0000000 0000000000000000 00000000???????? 0001Z000ZZZZZZZZ; 19924 * 19925 *ALU OPERATIONS 19926 * 19927 *DEF ADD, 0000000 0000000000000000 0000000000000000 000ZZ00000000000; 19928 *DEF XOR, 0000000 0000000000000000 0000000000000000 0001100000000000; 19929 *DEF BIT8, 0000000 0000000000000000 0000000000000000 0001010000000000; 19930 * 19931 *ALU O/PS + REGISTER LOADS 19932 * 19933 .DEF Y>SRAM, 0000000 0000000000000000 0000000000000000 0000000100000000; 19934 * Y TO DR WITH Y8 = Y7 19935 *DEF Y>DR, 0000000 0001000000000000 0000000000000000 0000000000000000; 19936 * Y TO DR WITH Y8 = 0 19937 .DEF Y>DRCLR,0000000 0001000000000000 0000000000000000 0001010000000000; 19938 *DEF Y>PR, 0000000 0000000000000000 1000000000000000 0000000000000000; 19939 .DEF Y>APA, 0000000 0000000000000000 0000101100000000 0100000000000000; 19940 *DEF PR>BR, 1000001 0000000000000000 0000000000000000 0000000000000000; 19941 .DEF PR>SRA, 0010000 0000000000000000 0000000000000000 0000000000000000; 19942 .DEF RAMA(?),00Z0000 0000000000000000 0???????00000000 0000000000000000; 19943 .DEF RAMO>AR,0Z00010 0000000000000000 0000000000000000 0000000000000000; 19944 .DEF MD>TPD, 0000000 0000000000000000 0000000000000000 1000000000000000; 19945 * 19946 *JUMP INSTRUCTIONS 19947 * 19948 *DEF JUMP(?),0000000 ZZZ0???????????? 0000000000000000 0000000000000000; 19949 *DEF JZ(?,?),0000000 ZZ10???????????? 0000000000000000 0000000000000000; 19950 *DEF JN(?,?),0000000 Z1Z0???????????? 0000000000000000 0000000000000000; 19951 *DEF JLINE(?,?), 19952 * 0000000 Z110???????????? 0000000000000000 0000000000000000; 19953 *DEF JBYTE(?,?), 19954 * 0000000 1ZZ0???????????? 0000000000000000 0000000000000000; 19955 *DEF JRC(?,?), 19956 * 0000000 1Z10???????????? 0000000000000000 0000000000000000; 19957 *DEF JY(?), 0000000 11Z0???????????? 0000000000000000 0000000000000000; 19958 .DEF J7(?), 0000000 1110???????????? 0000000000000000 0000000000000000; 19959 *CASE JY; 19960 * 19961 * ||||||| |||||||||||||||| |||||||||||||||| |||||||||||||||| 19962 * 19963 * C 19964 * P AB JJJD P RVB AAAABBBB 19965 * CERFFCC MMMC< ROM > C< RAM > VDR CE MMMMMMMM 19966 * MMMEELL PPPL L DPDSSIXWSSSSSSSS 19967 * SSA10KK 210KBA9876543210 K654321076543210 PCY10NTE32103210 19968 * 19969 ************************************************************************ 19970 * 19971 * TEST LOCKED INSTRUCTION 19972 * ======================= 19973 * 19974 .EQU TESTLOCKED, >DFF; 19975 * 19976 *----------------------------------------------------------------------- 19977 * 19978 .ORG TESTLOCKED, * 19979 JUMP(TESTLOCKED); ----- ----- DFF 00000DFF 00000000 ----- 19980 * 19981 ************************************************************************ 19982 * 19983 * SRAM BIST TEST 19984 * ============== 19985 * 19986 * STEVE COOPER : 22/06/92 19987 * ======================= 19988 * 19989 * +------+-------+------+--------+--------------+ 19990 * | READ | WRITE | DIR | CYCLES | ERROR LOCK | 19991 * +------+-------+------+--------+--------------+ 19992 * | | | | | | 19993 * | -- | 00 | DOWN | 257 | ----------- | 19994 * | 00 | FF | UP | 514 | SRAMBIST7F | 19995 * | FF | 00 | UP | 514 | SRAMBIST13F | 19996 * | 00 | FF | DOWN | 641 | SRAMBIST19F | 19997 * | FF | 00 | DOWN | 641 | SRAMBIST26F | 19998 * | 00 | 55 | UP | 514 | SRAMBIST33F | 19999 * | 55 | AA | UP | 514 | SRAMBIST39F | 20000 * | AA | -- | UP | 386 | SRAMBIST45F | 20001 * | | | | | | 20002 * +------+-------+------+--------+--------------+ 20003 * 20004 * THIS SRAM TEST REQUIRES 3981 CLOCKS. 20005 * 20006 ************************************************************************ 20007 * 20008 .EQU SRAMBIST, >D00; 20009 .EQU SRAMBIST0, SRAMBIST + >0; 20010 .EQU PRAMBIST, >D02; 20011 .EQU SRAMBIST43F, PRAMBIST + >0; 20012 .EQU PRAMBIST0, PRAMBIST + >1; 20013 .EQU PRAMBIST74F, >D10; * MUST BE EVEN 20014 .EQU PRAMBISTPASS, >D11; * MUST BE ODD 20015 * 20016 *----------------------------------------------------------------------- 20017 * 20018 * LOAD SRAM WITH <00. 20019 * 20020 .ORG SRAMBIST0, * SET Y TO >07F 20021 Y(>7F), * STORE IN PQ 20022 Y>PR, 20023 JUMP(SRAMBIST1); ----- ----- D00 00000DC4 807F1000 ----- 20024 * 20025 .ORG SRAMBIST1, * WRITE >0 TO SRAM 20026 Y(0), * PASS ADDRESS TO BREG 20027 Y>SRAM, * WHEN ADDRESS = 0 JUMP 20028 PR>BR, 20029 PR>SRA, 20030 JZ(SRAMBIST2F,SRAMBIST3T); ----- ----- DC4 005126A0 00001100 ----- 20031 * 20032 .ORG SRAMBIST2F, * DECREMENT PREG 20033 A(-1), 20034 BR>B, 20035 ADD, 20036 Y>PR, 20037 JUMP(SRAMBIST1); ----- ----- 6A0 00000DC4 80FF0001 ----- 20038 * 20039 *----------------------------------------------------------------------- 20040 * 20041 * READ <00 FROM SRAM, LOCK IF NOT CORRECT, LOAD SRAM WITH 80), * SET Y TO >80 20047 Y>PR, * STORE IN PREG 20048 JUMP(SRAMBIST4); ----- ----- 6A1 00000DC5 80801000 ----- 20049 * 20050 .ORG SRAMBIST4, * READ SRAM INTO ALATCH 20051 PR>SRA, * STORE ADDRESS IN BREG 20052 RAMO>AR, * JUMP TO NEXT ROUTINE IF PQ 20053 PR>BR, * ADDRESS = >000 20054 JZ(SRAMBIST5F,SRAMBIST9T); ----- ----- DC5 005326A2 00000000 ----- 20055 * 20056 .ORG SRAMBIST5F, * COMPARE RAMO WITH >000 20057 AR>A, 20058 B(0), 20059 XOR, 20060 JUMP(SRAMBIST6); ----- ----- 6A2 00000DC6 00001810 ----- 20061 * 20062 .ORG SRAMBIST6, * WRITE >FF TO SRAM 20063 Y(>FF), * JUMP TO LOCK ADDRESS IF NOT 20064 PR>SRA, * CORRECT 20065 Y>SRAM, 20066 JZ(SRAMBIST7F,SRAMBIST8T); ----- ----- DC6 001026A4 00FF1100 ----- 20067 * 20068 * LOCK LOCATION FOR READ >00, WRITE >FF, INCREMENTING ADDRESSES. 20069 * 20070 .ORG SRAMBIST7F, 20071 JUMP(SRAMBIST7F); ----- ----- 6A4 000006A4 00000000 ----- 20072 * 20073 .ORG SRAMBIST8T, * INCREMENT PREG 20074 A(1), 20075 BR>B, 20076 ADD, 20077 Y>PR, 20078 JUMP(SRAMBIST4); ----- ----- 6A5 00000DC5 80010001 ----- 20079 * 20080 *----------------------------------------------------------------------- 20081 * 20082 * READ 80), * SET Y TO >80 20088 Y>PR, * STORE IN PREG 20089 JUMP(SRAMBIST10); ----- ----- 6A3 00000DC7 80801000 ----- 20090 * 20091 .ORG SRAMBIST10, * READ SRAM INTO ALATCH 20092 PR>SRA, * STORE ADDRESS IN BREG 20093 RAMO>AR, * JUMP TO NEXT ROUTINE IF PQ 20094 PR>BR, * ADDRESS = >000 20095 JZ(SRAMBIST11F,SRAMBIST15T); ----- ----- DC7 005326A6 00000000 ----- 20096 * 20097 .ORG SRAMBIST11F, * COMPARE RAMO WITH >3FF 20098 AR>A, 20099 B(>FF), 20100 XOR, 20101 JUMP(SRAMBIST12); ----- ----- 6A6 00000DC8 00FF1810 ----- 20102 * 20103 .ORG SRAMBIST12, * WRITE >00 TO SRAM 20104 Y(0), * JUMP TO LOCK ADDRESS IF NOT 20105 PR>SRA, * CORRECT 20106 Y>SRAM, 20107 JZ(SRAMBIST13F,SRAMBIST14T); ----- ----- DC8 001026A8 00001100 ----- 20108 * 20109 * LOCK LOCATION FOR READ >FF, WRITE >00, INCREMENTING ADDRESSES. 20110 * 20111 .ORG SRAMBIST13F, 20112 JUMP(SRAMBIST13F); ----- ----- 6A8 000006A8 00000000 ----- 20113 * 20114 .ORG SRAMBIST14T, * INCREMENT PREG 20115 A(1), 20116 BR>B, 20117 ADD, 20118 Y>PR, 20119 JUMP(SRAMBIST10); ----- ----- 6A9 00000DC7 80010001 ----- 20120 * 20121 *----------------------------------------------------------------------- 20122 * 20123 * READ <00 FROM SRAM, LOCK IF NOT CORRECT, LOAD SRAM WITH 7F), * SET Y TO >7F 20129 Y>PR, * STORE IN PREG 20130 JUMP(SRAMBIST16F); ----- ----- 6A7 000006AC 807F1000 ----- 20131 * 20132 .ORG SRAMBIST16F, * READ SRAM INTO ALATCH 20133 PR>SRA, 20134 RAMO>AR, 20135 PR>BR, * STORE ADDRESS IN BREG 20136 JUMP(SRAMBIST17); ----- ----- 6AC 00530DC9 00000000 ----- 20137 * 20138 .ORG SRAMBIST17, * COMPARE RAMO WITH >00 20139 AR>A, 20140 B(0), 20141 XOR, 20142 JUMP(SRAMBIST18); ----- ----- DC9 00000DCA 00001810 ----- 20143 * 20144 .ORG SRAMBIST18, * WRITE >FF TO SRAM 20145 Y(>FF), * JUMP TO LOCK ADDRESS IF NOT 20146 PR>SRA, * CORRECT 20147 Y>SRAM, 20148 JZ(SRAMBIST19F,SRAMBIST20T); ----- ----- DCA 001026AA 00FF1100 ----- 20149 * 20150 * LOCK LOCATION FOR READ >00, WRITE >FF, DECREMENTING ADDRESSES. 20151 * 20152 .ORG SRAMBIST19F, 20153 JUMP(SRAMBIST19F); ----- ----- 6AA 000006AA 00000000 ----- 20154 * 20155 .ORG SRAMBIST20T, * READ PQ ADDRESS FROM BREG. 20156 A(0), 20157 BR>B, 20158 ADD, 20159 JUMP(SRAMBIST21); ----- ----- 6AB 00000DCB 00000001 ----- 20160 * 20161 .ORG SRAMBIST21, * DECREMENT PREG 20162 A(-1), * JUMP TO NEXT ROUTINE IF PQ 20163 BR>B, * ADDRESS = >000 20164 ADD, 20165 Y>PR, 20166 JZ(SRAMBIST16F,SRAMBIST22T); ----- ----- DCB 000026AC 80FF0001 ----- 20167 * 20168 *----------------------------------------------------------------------- 20169 * 20170 * READ 7F), * SET Y TO >7F 20176 Y>PR, * STORE IN PREG 20177 JUMP(SRAMBIST23F); ----- ----- 6AD 000006B4 807F1000 ----- 20178 * 20179 .ORG SRAMBIST23F, * READ SRAM INTO ALATCH 20180 PR>SRA, 20181 RAMO>AR, 20182 PR>BR, * STORE ADDRESS IN BREG 20183 JUMP(SRAMBIST24); ----- ----- 6B4 00530DCC 00000000 ----- 20184 * 20185 .ORG SRAMBIST24, * COMPARE RAMO WITH >FF 20186 AR>A, 20187 B(>FF), 20188 XOR, 20189 JUMP(SRAMBIST25); ----- ----- DCC 00000DCD 00FF1810 ----- 20190 * 20191 .ORG SRAMBIST25, * WRITE >00 TO SRAM 20192 Y(>00), * JUMP TO LOCK ADDRESS IF NOT 20193 PR>SRA, * CORRECT 20194 Y>SRAM, 20195 JZ(SRAMBIST26F,SRAMBIST27T); ----- ----- DCD 001026AE 00001100 ----- 20196 * 20197 * LOCK LOCATION FOR READ >FF, WRITE >00, DECREMENTING ADDRESSES. 20198 * 20199 .ORG SRAMBIST26F, 20200 JUMP(SRAMBIST26F); ----- ----- 6AE 000006AE 00000000 ----- 20201 * 20202 .ORG SRAMBIST27T, * READ PQ ADDRESS FROM BREG. 20203 A(0), 20204 BR>B, 20205 ADD, 20206 JUMP(SRAMBIST28); ----- ----- 6AF 00000DCE 00000001 ----- 20207 * 20208 .ORG SRAMBIST28, * DECREMENT PREG 20209 A(-1), * JUMP TO NEXT ROUTINE IF PQ 20210 BR>B, * ADDRESS = >000 20211 ADD, 20212 Y>PR, 20213 JZ(SRAMBIST23F,SRAMBIST29T); ----- ----- DCE 000026B4 80FF0001 ----- 20214 * 20215 *----------------------------------------------------------------------- 20216 * 20217 * READ <00 FROM SRAM, LOCK IF NOT CORRECT, LOAD SRAM WITH <55. 20218 * 20219 * INCREMENTING ADDRESSES 20220 * 20221 .ORG SRAMBIST29T, 20222 Y(>80), * SET Y TO >80 20223 Y>PR, * STORE IN PREG 20224 JUMP(SRAMBIST30); ----- ----- 6B5 00000DCF 80801000 ----- 20225 * 20226 .ORG SRAMBIST30, * READ SRAM INTO ALATCH 20227 PR>SRA, * STORE ADDRESS IN BREG 20228 RAMO>AR, * JUMP TO NEXT ROUTINE IF PQ 20229 PR>BR, * ADDRESS = >000 20230 JZ(SRAMBIST31F,SRAMBIST35T); ----- ----- DCF 005326B6 00000000 ----- 20231 * 20232 .ORG SRAMBIST31F, * COMPARE RAMO WITH >00 20233 AR>A, 20234 B(0), 20235 XOR, 20236 JUMP(SRAMBIST32); ----- ----- 6B6 00000DD0 00001810 ----- 20237 * 20238 .ORG SRAMBIST32, * WRITE >55 TO SRAM 20239 Y(>55), * JUMP TO LOCK ADDRESS IF NOT 20240 PR>SRA, * CORRECT 20241 Y>SRAM, 20242 JZ(SRAMBIST33F,SRAMBIST34T); ----- ----- DD0 001026B8 00551100 ----- 20243 * 20244 * LOCK LOCATION FOR READ >00, WRITE >55, INCREMENTING ADDRESSES. 20245 * 20246 .ORG SRAMBIST33F, 20247 JUMP(SRAMBIST33F); ----- ----- 6B8 000006B8 00000000 ----- 20248 * 20249 .ORG SRAMBIST34T, * INCREMENT PREG 20250 A(1), 20251 BR>B, 20252 ADD, 20253 Y>PR, 20254 JUMP(SRAMBIST30); ----- ----- 6B9 00000DCF 80010001 ----- 20255 * 20256 *----------------------------------------------------------------------- 20257 * 20258 * READ <55 FROM SRAM, LOCK IF NOT CORRECT, LOAD SRAM WITH 80), * SET Y TO >80 20264 Y>PR, * STORE IN PREG 20265 JUMP(SRAMBIST36); ----- ----- 6B7 00000DD1 80801000 ----- 20266 * 20267 .ORG SRAMBIST36, * READ SRAM INTO ALATCH 20268 PR>SRA, * STORE ADDRESS IN BREG 20269 RAMO>AR, * JUMP TO NEXT ROUTINE IF PQ 20270 PR>BR, * ADDRESS = >000 20271 JZ(SRAMBIST37F,SRAMBIST41T); ----- ----- DD1 005326BA 00000000 ----- 20272 * 20273 .ORG SRAMBIST37F, * COMPARE RAMO WITH >55 20274 AR>A, 20275 B(>55), 20276 XOR, 20277 JUMP(SRAMBIST38); ----- ----- 6BA 00000DD2 00551810 ----- 20278 * 20279 .ORG SRAMBIST38, * WRITE >AA TO SRAM 20280 Y(>AA), * JUMP TO LOCK ADDRESS IF NOT 20281 PR>SRA, * CORRECT 20282 Y>SRAM, 20283 JZ(SRAMBIST39F,SRAMBIST40T); ----- ----- DD2 001026BC 00AA1100 ----- 20284 * 20285 * LOCK LOCATION FOR READ >55, WRITE >AA, INCREMENTING ADDRESSES. 20286 * 20287 .ORG SRAMBIST39F, 20288 JUMP(SRAMBIST39F); ----- ----- 6BC 000006BC 00000000 ----- 20289 * 20290 .ORG SRAMBIST40T, * INCREMENT PREG 20291 A(1), 20292 BR>B, 20293 ADD, 20294 Y>PR, 20295 JUMP(SRAMBIST36); ----- ----- 6BD 00000DD1 80010001 ----- 20296 * 20297 *----------------------------------------------------------------------- 20298 * 20299 * READ 80), * SET Y TO >80 20305 Y>PR, * STORE IN PREG 20306 JUMP(SRAMBIST42T); ----- ----- 6BB 000006BF 80801000 ----- 20307 * 20308 .ORG SRAMBIST42T, * READ SRAM INTO ALATCH 20309 PR>SRA, * STORE ADDRESS IN BREG 20310 RAMO>AR, * JUMP TO NEXT ROUTINE IF PQ 20311 PR>BR, * ADDRESS = >000 20312 JZ(SRAMBIST43F,PRAMBIST0); ----- ----- 6BF 00532D02 00000000 ----- 20313 * 20314 * JZ(SRAMBIST43F,SRAMBISTPASS); 20315 * 20316 .ORG SRAMBIST43F, * COMPARE RAMO WITH >AA 20317 AR>A, 20318 B(>AA), 20319 XOR, 20320 JUMP(SRAMBIST44); ----- ----- D02 00000DD3 00AA1810 ----- 20321 * 20322 .ORG SRAMBIST44, * INCREMENT PREG 20323 A(1), * JUMP TO LOCK ADDRESS IF NOT 20324 BR>B, * CORRECT 20325 ADD, 20326 Y>PR, 20327 JZ(SRAMBIST45F,SRAMBIST42T); ----- ----- DD3 000026BE 80010001 ----- 20328 * 20329 * LOCK LOCATION FOR READ >AA. 20330 * 20331 .ORG SRAMBIST45F, 20332 JUMP(SRAMBIST45F); ----- ----- 6BE 000006BE 00000000 ----- 20333 * 20334 *----------------------------------------------------------------------- 20335 * 20336 *ORG SRAMBISTPASS, 20337 * JUMP(SRAMBISTPASS); 20338 * 20339 ************************************************************************ 20340 * 20341 * PRAM BIST TEST 20342 * ============== 20343 * 20344 * STEVE COOPER : 22/06/92 20345 * ======================= 20346 * 20347 * +------+-----+-------+------+--------+--------------+ 20348 * | READ | AMS | WRITE | DIR | CYCLES | ERROR LOCK | 20349 * +------+-----+-------+------+--------+--------------+ 20350 * | | | | | | | 20351 * | --- | - | 000 | DOWN | 16410 | ----------- | 20352 * | 000 | F | 1FF | UP | 40993 | PRAMBIST12F | 20353 * | 1FF | F | 000 | UP | 40993 | PRAMBIST23F | 20354 * | 000 | F | 1FF | DOWN | 40985 | PRAMBIST34F | 20355 * | 1FF | F | 000 | DOWN | 40985 | PRAMBIST45F | 20356 * | 000 | F | 055 | UP | 40993 | PRAMBIST56F | 20357 * | 055 | F | 0AA | UP | 40993 | PRAMBIST67F | 20358 * | 3AA/ | 9/ | --- | UP | 49185 | PRAMBIST78F/ | BIT7 = BIT7 20359 * | 02A | 9 | | | | PRAMBIST81F | BIT7 = BIT8 20360 * | | | | | | | 20361 * +------+-----+-------+------+--------+--------------+ 20362 * 20363 * ERROR FREE RUN LOCKS AT PRAMBISTPASS. 20364 * 20365 * THIS TEST REQUIRES 311537 CLOCKS APPROX. 20366 * 20367 ************************************************************************ 20368 * 20369 *EQU PRAMBIST, >D01; 20370 *EQU PRAMBIST0, PRAMBIST + >0; 20371 *EQU PRAMBISTPASS, >D30; 20372 * 20373 *----------------------------------------------------------------------- 20374 * 20375 * LOAD PRAM WITH <000. 20376 * 20377 * DECREMENTING ADDRESSES. 20378 * 20379 .ORG PRAMBIST0, * SET Y TO >7 20380 Y(7), * STORE IN APA 20381 Y>APA, * STORE IN SRAM[11] TO CONTROL 20382 Y>SRAM, * WRITING LOOP 20383 JUMP(PRAMBIST1F); ----- ----- D03 000006C6 0B075100 ----- 20384 * 20385 .ORG PRAMBIST1F, * SET Y TO >3FF 20386 Y(>FF), * STORE IN PQ 20387 Y>PR, 20388 JUMP(PRAMBIST2); ----- ----- 6C6 00000DD4 80FF1000 ----- 20389 * 20390 .ORG PRAMBIST2, * WRITE >0 TO PRAM 20391 Y(0), * PASS ADDRESS TO BREG 20392 Y>DR, * WHEN ADDRESS = 0 JUMP 20393 PR>BR, 20394 JZ(PRAMBIST3F,PRAMBIST4T); ----- ----- DD4 004136C4 00001000 ----- 20395 * 20396 .ORG PRAMBIST3F, * DECREMENT PREG 20397 A(-1), 20398 BR>B, 20399 ADD, 20400 Y>PR, 20401 JUMP(PRAMBIST2); ----- ----- 6C4 00000DD4 80FF0001 ----- 20402 * 20403 .ORG PRAMBIST4T, * READ APA VALUE FROM SRAM[11] 20404 RAMA(11), * INTO AREG 20405 RAMO>AR, 20406 JUMP(PRAMBIST5); ----- ----- 6C5 00020DD5 0B000000 ----- 20407 * 20408 .ORG PRAMBIST5, * PUT APA VALUE ON Y BUS 20409 AR>A, 20410 B(0), 20411 ADD, 20412 JUMP(PRAMBIST6); ----- ----- DD5 00000DD6 00000010 ----- 20413 * 20414 .ORG PRAMBIST6, * DECREMENT APA VALUE AND LOAD 20415 AR>A, * NEW VALUE INTO SRAM[11] 20416 B(-1), 20417 ADD, 20418 Y>APA, 20419 Y>SRAM, 20420 JZ(PRAMBIST1F,PRAMBIST7T); ----- ----- DD6 000026C6 0BFF4110 ----- 20421 * 20422 *----------------------------------------------------------------------- 20423 * 20424 * READ <000 FROM PRAM, LOCK IF NOT CORRECT, LOAD PRAM WITH <1FF. 20425 * 20426 * INCREMENTING ADDRESSES. 20427 * 20428 .ORG PRAMBIST7T, * SET Y TO >3F8 20429 Y(>F8), * STORE IN APA 20430 Y>APA, * STORE IN SRAM[11] TO CONTROL 20431 Y>SRAM, * WRITING LOOP 20432 JUMP(PRAMBIST8F); ----- ----- 6C7 000006CC 0BF85100 ----- 20433 * 20434 .ORG PRAMBIST8F, 20435 Y(0), * SET Y TO >0 20436 Y>PR, * STORE IN PREG 20437 JUMP(PRAMBIST9F); ----- ----- 6CC 000006CA 80001000 ----- 20438 * 20439 .ORG PRAMBIST9F, * READ PRAM IN PRLATCH 20440 MD>TPD, * STORE ADDRESS IN BREG 20441 PR>BR, 20442 JUMP(PRAMBIST10); ----- ----- 6CA 00410DD7 00008000 ----- 20443 * 20444 .ORG PRAMBIST10, * COMPARE TPD WITH >000 20445 TPD8>A, 20446 B(0), 20447 XOR, 20448 JUMP(PRAMBIST11); ----- ----- DD7 00000DD8 000018F0 ----- 20449 * 20450 .ORG PRAMBIST11, * WRITE >1FF TO PRAM 20451 Y(>FF), * JUMP TO LOCK ADDRESS IF NOT 20452 Y>DR, * CORRECT 20453 JZ(PRAMBIST12F,PRAMBIST13T); ----- ----- DD8 000036C8 00FF1000 ----- 20454 * 20455 * LOCK LOCATION FOR READ >000, WRITE >1FF, INCREMENTING ADDRESSES. 20456 * 20457 .ORG PRAMBIST12F, 20458 JUMP(PRAMBIST12F); ----- ----- 6C8 000006C8 00000000 ----- 20459 * 20460 .ORG PRAMBIST13T, * INCREMENT PREG 20461 A(1), 20462 BR>B, 20463 ADD, 20464 Y>PR, 20465 JUMP(PRAMBIST14); ----- ----- 6C9 00000DD9 80010001 ----- 20466 * 20467 .ORG PRAMBIST14, * IF PQ ADDRESS = 0 THEN JUMP. 20468 JZ(PRAMBIST9F,PRAMBIST15T); ----- ----- DD9 000026CA 00000000 ----- 20469 * 20470 .ORG PRAMBIST15T, * READ APA VALUE FROM SRAM[11] 20471 RAMA(11), * INTO AREG 20472 RAMO>AR, 20473 JUMP(PRAMBIST16); ----- ----- 6CB 00020DDA 0B000000 ----- 20474 * 20475 .ORG PRAMBIST16, * INCREMENT APA VALUE AND LOAD 20476 AR>A, * NEW VALUE INTO SRAM[11] 20477 B(1), 20478 ADD, 20479 Y>APA, 20480 Y>SRAM, 20481 JUMP(PRAMBIST17); ----- ----- DDA 00000DDB 0B014110 ----- 20482 * 20483 .ORG PRAMBIST17, * IF APA ADDRESS = 0 THEN JUMP 20484 JZ(PRAMBIST8F,PRAMBIST18T); * TO NEXT ROUTINE ----- ----- DDB 000026CC 00000000 ----- 20485 * 20486 *----------------------------------------------------------------------- 20487 * 20488 * READ <1FF FROM PRAM, LOCK IF NOT CORRECT, LOAD PRAM WITH <000. 20489 * 20490 * INCREMENTING ADDRESSES. 20491 * 20492 .ORG PRAMBIST18T, * SET Y TO >3F8 20493 Y(>F8), * STORE IN APA 20494 Y>APA, * STORE IN SRAM[11] TO CONTROL 20495 Y>SRAM, * WRITING LOOP 20496 JUMP(PRAMBIST19F); ----- ----- 6CD 000006D2 0BF85100 ----- 20497 * 20498 .ORG PRAMBIST19F, 20499 Y(0), * SET Y TO >0 20500 Y>PR, * STORE IN PREG 20501 JUMP(PRAMBIST20F); ----- ----- 6D2 000006D0 80001000 ----- 20502 * 20503 .ORG PRAMBIST20F, * READ PRAM IN PRLATCH 20504 MD>TPD, * STORE ADDRESS IN BREG 20505 PR>BR, 20506 JUMP(PRAMBIST21); ----- ----- 6D0 00410DDC 00008000 ----- 20507 * 20508 .ORG PRAMBIST21, * COMPARE TPD WITH >1FF 20509 TPD8>A, 20510 B(>FF), 20511 XOR, 20512 JUMP(PRAMBIST22); ----- ----- DDC 00000DDD 00FF18F0 ----- 20513 * 20514 .ORG PRAMBIST22, * WRITE >000 TO PRAM 20515 Y(0), * JUMP TO LOCK ADDRESS IF NOT 20516 Y>DR, * CORRECT 20517 JZ(PRAMBIST23F,PRAMBIST24T); ----- ----- DDD 000036CE 00001000 ----- 20518 * 20519 * LOCK LOCATION FOR READ >1FF, WRITE >000, INCREMENTING ADDRESSES. 20520 * 20521 .ORG PRAMBIST23F, 20522 JUMP(PRAMBIST23F); ----- ----- 6CE 000006CE 00000000 ----- 20523 * 20524 .ORG PRAMBIST24T, * INCREMENT PREG 20525 A(1), 20526 BR>B, 20527 ADD, 20528 Y>PR, 20529 JUMP(PRAMBIST25); ----- ----- 6CF 00000DDE 80010001 ----- 20530 * 20531 .ORG PRAMBIST25, * IF PQ ADDRESS = 0 THEN JUMP. 20532 JZ(PRAMBIST20F,PRAMBIST26T); ----- ----- DDE 000026D0 00000000 ----- 20533 * 20534 .ORG PRAMBIST26T, * READ APA VALUE FROM SRAM[11] 20535 RAMA(11), * INTO AREG 20536 RAMO>AR, 20537 JUMP(PRAMBIST27); ----- ----- 6D1 00020DDF 0B000000 ----- 20538 * 20539 .ORG PRAMBIST27, * INCREMENT APA VALUE AND LOAD 20540 AR>A, * NEW VALUE INTO SRAM[11] 20541 B(1), 20542 ADD, 20543 Y>APA, 20544 Y>SRAM, 20545 JUMP(PRAMBIST28); ----- ----- DDF 00000DE0 0B014110 ----- 20546 * 20547 .ORG PRAMBIST28, * IF APA ADDRESS = 0 THEN JUMP 20548 JZ(PRAMBIST19F,PRAMBIST29T); * TO NEXT ROUTINE ----- ----- DE0 000026D2 00000000 ----- 20549 * 20550 *----------------------------------------------------------------------- 20551 * 20552 * READ <000 FROM PRAM, LOCK IF NOT CORRECT, LOAD PRAM WITH <1FF. 20553 * 20554 * DECREMENTING ADDRESSES. 20555 * 20556 .ORG PRAMBIST29T, * SET Y TO >7 20557 Y(7), * STORE IN APA 20558 Y>APA, * STORE IN SRAM[11] TO CONTROL 20559 Y>SRAM, * WRITING LOOP 20560 JUMP(PRAMBIST30F); ----- ----- 6D3 000006D8 0B075100 ----- 20561 * 20562 .ORG PRAMBIST30F, 20563 Y(>FF), * SET Y TO >3FF 20564 Y>PR, * STORE IN PREG 20565 JUMP(PRAMBIST31); ----- ----- 6D8 00000DE1 80FF1000 ----- 20566 * 20567 .ORG PRAMBIST31, * READ PRAM IN PRLATCH 20568 MD>TPD, * STORE PQ ADDRESS IN BREG 20569 PR>BR, 20570 JUMP(PRAMBIST32); ----- ----- DE1 00410DE2 00008000 ----- 20571 * 20572 .ORG PRAMBIST32, * COMPARE TPD WITH >000 20573 TPD8>A, 20574 B(0), 20575 XOR, 20576 JUMP(PRAMBIST33); ----- ----- DE2 00000DE3 000018F0 ----- 20577 * 20578 .ORG PRAMBIST33, 20579 A(0), * JUMP TO LOCK ADDRESS IF 20580 BR>B, * COMPARISON NOT CORRECT 20581 ADD, * READ PQ ADDRESS FROM BREG 20582 JZ(PRAMBIST34F,PRAMBIST35T); ----- ----- DE3 000026D4 00000001 ----- 20583 * 20584 * LOCK LOCATION FOR READ >1FF, WRITE >000, DECREMENTING ADDRESSES. 20585 * 20586 .ORG PRAMBIST34F, 20587 JUMP(PRAMBIST34F); ----- ----- 6D4 000006D4 00000000 ----- 20588 * 20589 .ORG PRAMBIST35T, * WRITE >1FF TO PRAM 20590 Y(>FF), * IF PQ ADDRESS = 0 THEN JUMP 20591 Y>DR, 20592 JZ(PRAMBIST36F,PRAMBIST37T); ----- ----- 6D5 000036D6 00FF1000 ----- 20593 * 20594 .ORG PRAMBIST36F, * DECREMENT PREG 20595 A(-1), 20596 BR>B, 20597 ADD, 20598 Y>PR, 20599 JUMP(PRAMBIST31); ----- ----- 6D6 00000DE1 80FF0001 ----- 20600 * 20601 .ORG PRAMBIST37T, * READ APA VALUE FROM SRAM[11] 20602 RAMA(11), * INTO AREG 20603 RAMO>AR, 20604 JUMP(PRAMBIST38); ----- ----- 6D7 00020DE4 0B000000 ----- 20605 * 20606 .ORG PRAMBIST38, * READ AREG VALUE 20607 AR>A, 20608 B(0), 20609 ADD, 20610 JUMP(PRAMBIST39); ----- ----- DE4 00000DE5 00000010 ----- 20611 * 20612 .ORG PRAMBIST39, * DECREMENT APA VALUE AND LOAD 20613 AR>A, * NEW VALUE INTO SRAM[11] 20614 B(-1), * IF APA ADDRESS = 0 THEN JUMP 20615 ADD, * TO NEXT ROUTINE 20616 Y>APA, 20617 Y>SRAM, 20618 JZ(PRAMBIST30F,PRAMBIST40T); ----- ----- DE5 000026D8 0BFF4110 ----- 20619 * 20620 *----------------------------------------------------------------------- 20621 * 20622 * READ <1FF FROM PRAM, LOCK IF NOT CORRECT, LOAD PRAM WITH <000. 20623 * 20624 * DECREMENTING ADDRESSES. 20625 * 20626 .ORG PRAMBIST40T, * SET Y TO >7 20627 Y(7), * STORE IN APA 20628 Y>APA, * STORE IN SRAM[11] TO CONTROL 20629 Y>SRAM, * WRITING LOOP 20630 JUMP(PRAMBIST41F); ----- ----- 6D9 000006DE 0B075100 ----- 20631 * 20632 .ORG PRAMBIST41F, 20633 Y(>FF), * SET Y TO >3FF 20634 Y>PR, * STORE IN PREG 20635 JUMP(PRAMBIST42); ----- ----- 6DE 00000DE6 80FF1000 ----- 20636 * 20637 .ORG PRAMBIST42, * READ PRAM IN PRLATCH 20638 MD>TPD, * STORE PQ ADDRESS IN BREG 20639 PR>BR, 20640 JUMP(PRAMBIST43); ----- ----- DE6 00410DE7 00008000 ----- 20641 * 20642 .ORG PRAMBIST43, * COMPARE TPD WITH >1FF 20643 TPD8>A, 20644 B(>FF), 20645 XOR, 20646 JUMP(PRAMBIST44); ----- ----- DE7 00000DE8 00FF18F0 ----- 20647 * 20648 .ORG PRAMBIST44, 20649 A(0), * JUMP TO LOCK ADDRESS IF 20650 BR>B, * COMPARISON NOT CORRECT 20651 ADD, * READ PQ ADDRESS FROM BREG 20652 JZ(PRAMBIST45F,PRAMBIST46T); ----- ----- DE8 000026DA 00000001 ----- 20653 * 20654 * LOCK LOCATION FOR READ >1FF, WRITE >000, DECREMENTING ADDRESSES. 20655 * 20656 .ORG PRAMBIST45F, 20657 JUMP(PRAMBIST45F); ----- ----- 6DA 000006DA 00000000 ----- 20658 * 20659 .ORG PRAMBIST46T, * WRITE >000 TO PRAM 20660 Y(0), * IF PQ ADDRESS = 0 THEN JUMP 20661 Y>DR, 20662 JZ(PRAMBIST47F,PRAMBIST48T); ----- ----- 6DB 000036DC 00001000 ----- 20663 * 20664 .ORG PRAMBIST47F, * DECREMENT PREG 20665 A(-1), 20666 BR>B, 20667 ADD, 20668 Y>PR, 20669 JUMP(PRAMBIST42); ----- ----- 6DC 00000DE6 80FF0001 ----- 20670 * 20671 .ORG PRAMBIST48T, * READ APA VALUE FROM SRAM[11] 20672 RAMA(11), * INTO AREG 20673 RAMO>AR, 20674 JUMP(PRAMBIST49); ----- ----- 6DD 00020DE9 0B000000 ----- 20675 * 20676 .ORG PRAMBIST49, * READ AREG VALUE 20677 AR>A, 20678 B(0), 20679 ADD, 20680 JUMP(PRAMBIST50); ----- ----- DE9 00000DEA 00000010 ----- 20681 * 20682 .ORG PRAMBIST50, * DECREMENT APA VALUE AND LOAD 20683 AR>A, * NEW VALUE INTO SRAM[11] 20684 B(-1), * IF APA ADDRESS = 0 THEN JUMP 20685 ADD, * TO NEXT ROUTINE 20686 Y>APA, 20687 Y>SRAM, 20688 JZ(PRAMBIST41F,PRAMBIST51T); ----- ----- DEA 000026DE 0BFF4110 ----- 20689 * 20690 *----------------------------------------------------------------------- 20691 * 20692 * READ <000 FROM PRAM, LOCK IF NOT CORRECT, LOAD PRAM WITH <055. 20693 * 20694 * INCREMENTING ADDRESSES. 20695 * 20696 .ORG PRAMBIST51T, * SET Y TO >3F8 20697 Y(>F8), * STORE IN APA 20698 Y>APA, * STORE IN SRAM[11] TO CONTROL 20699 Y>SRAM, * WRITING LOOP 20700 JUMP(PRAMBIST52F); ----- ----- 6DF 000006E4 0BF85100 ----- 20701 * 20702 .ORG PRAMBIST52F, 20703 Y(0), * SET Y TO >0 20704 Y>PR, * STORE IN PREG 20705 JUMP(PRAMBIST53F); ----- ----- 6E4 000006E2 80001000 ----- 20706 * 20707 .ORG PRAMBIST53F, * READ PRAM IN PRLATCH 20708 MD>TPD, * STORE ADDRESS IN BREG 20709 PR>BR, 20710 JUMP(PRAMBIST54); ----- ----- 6E2 00410DEB 00008000 ----- 20711 * 20712 .ORG PRAMBIST54, * COMPARE TPD WITH >000 20713 TPD8>A, 20714 B(0), 20715 XOR, 20716 JUMP(PRAMBIST55); ----- ----- DEB 00000DEC 000018F0 ----- 20717 * 20718 .ORG PRAMBIST55, * WRITE >055 TO PRAM 20719 Y(>55), * JUMP TO LOCK ADDRESS IF NOT 20720 Y>DR, * CORRECT 20721 JZ(PRAMBIST56F,PRAMBIST57T); ----- ----- DEC 000036E0 00551000 ----- 20722 * 20723 * LOCK LOCATION FOR READ >000, WRITE >055, INCREMENTING ADDRESSES. 20724 * 20725 .ORG PRAMBIST56F, 20726 JUMP(PRAMBIST56F); ----- ----- 6E0 000006E0 00000000 ----- 20727 * 20728 .ORG PRAMBIST57T, * INCREMENT PREG 20729 A(1), 20730 BR>B, 20731 ADD, 20732 Y>PR, 20733 JUMP(PRAMBIST58); ----- ----- 6E1 00000DED 80010001 ----- 20734 * 20735 .ORG PRAMBIST58, * IF PQ ADDRESS = 0 THEN JUMP. 20736 JZ(PRAMBIST53F,PRAMBIST59T); ----- ----- DED 000026E2 00000000 ----- 20737 * 20738 .ORG PRAMBIST59T, * READ APA VALUE FROM SRAM[11] 20739 RAMA(11), * INTO AREG 20740 RAMO>AR, 20741 JUMP(PRAMBIST60); ----- ----- 6E3 00020DEE 0B000000 ----- 20742 * 20743 .ORG PRAMBIST60, * INCREMENT APA VALUE AND LOAD 20744 AR>A, * NEW VALUE INTO SRAM[11] 20745 B(1), 20746 ADD, 20747 Y>APA, 20748 Y>SRAM, 20749 JUMP(PRAMBIST61); ----- ----- DEE 00000DEF 0B014110 ----- 20750 * 20751 .ORG PRAMBIST61, * IF APA ADDRESS = 0 THEN JUMP 20752 JZ(PRAMBIST52F,PRAMBIST62T); * TO NEXT ROUTINE ----- ----- DEF 000026E4 00000000 ----- 20753 * 20754 *----------------------------------------------------------------------- 20755 * 20756 * READ <055 FROM PRAM, LOCK IF NOT CORRECT, LOAD PRAM WITH <0AA. 20757 * 20758 * INCREMENTING ADDRESSES. 20759 * 20760 .ORG PRAMBIST62T, * SET Y TO >3F8 20761 Y(>F8), * STORE IN APA 20762 Y>APA, * STORE IN SRAM[11] TO CONTROL 20763 Y>SRAM, * WRITING LOOP 20764 JUMP(PRAMBIST63F); ----- ----- 6E5 000006EA 0BF85100 ----- 20765 * 20766 .ORG PRAMBIST63F, 20767 Y(0), * SET Y TO >0 20768 Y>PR, * STORE IN PREG 20769 JUMP(PRAMBIST64F); ----- ----- 6EA 000006E8 80001000 ----- 20770 * 20771 .ORG PRAMBIST64F, * READ PRAM IN PRLATCH 20772 MD>TPD, * STORE ADDRESS IN BREG 20773 PR>BR, 20774 JUMP(PRAMBIST65); ----- ----- 6E8 00410DF0 00008000 ----- 20775 * 20776 .ORG PRAMBIST65, * COMPARE TPD WITH >055 20777 TPD8>A, 20778 B(>55), 20779 XOR, 20780 JUMP(PRAMBIST66); ----- ----- DF0 00000DF1 005518F0 ----- 20781 * 20782 .ORG PRAMBIST66, * WRITE >0AA TO PRAM 20783 Y(>AA), * JUMP TO LOCK ADDRESS IF NOT 20784 Y>DRCLR, * CORRECT 20785 JZ(PRAMBIST67F,PRAMBIST68T); ----- ----- DF1 000036E6 00AA1400 ----- 20786 * 20787 * LOCK LOCATION FOR READ >055, WRITE >0AA, INCREMENTING ADDRESSES. 20788 * 20789 .ORG PRAMBIST67F, 20790 JUMP(PRAMBIST67F); ----- ----- 6E6 000006E6 00000000 ----- 20791 * 20792 .ORG PRAMBIST68T, * INCREMENT PREG 20793 A(1), 20794 BR>B, 20795 ADD, 20796 Y>PR, 20797 JUMP(PRAMBIST69); ----- ----- 6E7 00000DF2 80010001 ----- 20798 * 20799 .ORG PRAMBIST69, * IF PQ ADDRESS = 0 THEN JUMP. 20800 JZ(PRAMBIST64F,PRAMBIST70T); ----- ----- DF2 000026E8 00000000 ----- 20801 * 20802 .ORG PRAMBIST70T, * READ APA VALUE FROM SRAM[11] 20803 RAMA(11), * INTO AREG 20804 RAMO>AR, 20805 JUMP(PRAMBIST71); ----- ----- 6E9 00020DF3 0B000000 ----- 20806 * 20807 .ORG PRAMBIST71, * INCREMENT APA VALUE AND LOAD 20808 AR>A, * NEW VALUE INTO SRAM[11] 20809 B(1), 20810 ADD, 20811 Y>APA, 20812 Y>SRAM, 20813 JUMP(PRAMBIST72); ----- ----- DF3 00000DF4 0B014110 ----- 20814 * 20815 .ORG PRAMBIST72, * IF APA ADDRESS = 0 THEN JUMP 20816 JZ(PRAMBIST63F,PRAMBIST73T); * TO NEXT ROUTINE ----- ----- DF4 000026EA 00000000 ----- 20817 * 20818 *----------------------------------------------------------------------- 20819 * 20820 * READ <0AA FROM PRAM, LOCK IF NOT CORRECT. 20821 * 20822 * INCREMENTING ADDRESSES. 20823 * 20824 .ORG PRAMBIST73T, * SET Y TO >3F8 20825 Y(>F8), * STORE IN APA 20826 Y>APA, * STORE IN SRAM[11] TO CONTROL 20827 Y>SRAM, * WRITING LOOP 20828 JUMP(PRAMBIST74F); ----- ----- 6EB 00000D10 0BF85100 ----- 20829 * 20830 .ORG PRAMBIST74F, 20831 Y(0), * SET Y TO >0 20832 Y>PR, * STORE IN PREG 20833 JUMP(PRAMBIST75F); ----- ----- D10 00000700 80001000 ----- 20834 * 20835 .ORG PRAMBIST75F, * READ PRAM IN PRLATCH 20836 MD>TPD, * BIT7 = BIT7 20837 PR>BR, * STORE PQ ADDRESS IN BREG 20838 JUMP(PRAMBIST76); ----- ----- 700 00410DF5 00008000 ----- 20839 * 20840 .ORG PRAMBIST76, * COMPARE TPD WITH >1AA 20841 TPD7>A, 20842 B(>AA), 20843 XOR, 20844 JUMP(PRAMBIST77); ----- ----- DF5 00000DF6 00AA1890 ----- 20845 * 20846 .ORG PRAMBIST77, * READ PRAM IN PRLATCH 20847 MD>TPD, * BIT7 = BIT8 20848 BIT8, * JUMP TO LOCK ADDRESS IF 20849 JZ(PRAMBIST78F,PRAMBIST79T); * COMPARISON NOT CORRECT ----- ----- DF6 000026EC 00009400 ----- 20850 * 20851 * LOCK LOCATION FOR READ >0AA, BIT7 = BIT7. 20852 * 20853 .ORG PRAMBIST78F, 20854 JUMP(PRAMBIST78F); ----- ----- 6EC 000006EC 00000000 ----- 20855 * 20856 .ORG PRAMBIST79T, * COMPARE TPD WITH >02A 20857 TPD7>A, 20858 B(>2A), 20859 XOR, 20860 JUMP(PRAMBIST80); ----- ----- 6ED 00000DF7 002A1890 ----- 20861 * 20862 .ORG PRAMBIST80, * INCREMENT PREG 20863 A(1), 20864 BR>B, 20865 ADD, 20866 Y>PR, 20867 JZ(PRAMBIST81F,PRAMBIST82T); ----- ----- DF7 000026EE 80010001 ----- 20868 * 20869 * LOCK LOCATION FOR READ >0AA, BIT7 = BIT8. 20870 * 20871 .ORG PRAMBIST81F, 20872 JUMP(PRAMBIST81F); ----- ----- 6EE 000006EE 00000000 ----- 20873 * 20874 .ORG PRAMBIST82T, * IF PQ ADDRESS = 0 THEN JUMP. 20875 JZ(PRAMBIST75F,PRAMBIST83T); ----- ----- 6EF 00002700 00000000 ----- 20876 * 20877 .ORG PRAMBIST83T, * READ APA VALUE FROM SRAM[11] 20878 RAMA(11), * INTO AREG 20879 RAMO>AR, 20880 JUMP(PRAMBIST84); ----- ----- 701 00020DF8 0B000000 ----- 20881 * 20882 .ORG PRAMBIST84, * INCREMENT APA VALUE AND LOAD 20883 AR>A, * NEW VALUE INTO SRAM[11] 20884 B(1), 20885 ADD, 20886 Y>APA, 20887 Y>SRAM, 20888 JUMP(PRAMBIST85); ----- ----- DF8 00000DF9 0B014110 ----- 20889 * 20890 .ORG PRAMBIST85, * IF APA ADDRESS = 0 THEN JUMP 20891 JZ(PRAMBIST74F,PRAMBISTPASS); * TO NEXT ROUTINE ----- ----- DF9 00002D10 00000000 ----- 20892 * 20893 *----------------------------------------------------------------------- 20894 * 20895 .ORG PRAMBISTPASS, 20896 JUMP(PRAMBISTPASS); ----- ----- D11 00000D11 00000000 ----- 20897 * 20898 ************************************************************************ 20899 * 20900 * JUMP LOGIC TEST 20901 * =============== 20902 * 20903 * STEVE COOPER : 25/06/92 20904 * ======================= 20905 * 20906 * THE JUMPLOGIC IS DISABLED DURING MICROCODE SIGNATURE TESTING. THE 20907 * JUMP LOGIC THERFORE NEEDS TESTING SEPARATELY. 20908 * 20909 * THE TESTS FOR THIS LOGIC HAVE BEEN GENERATED USING TESTSCAN. 20910 * 20911 * THE FOLLOWING INPUTS TO THE JUMP LOGIC ARE SET BY SCANNING THE 20912 * REQUIRED VALUES :- 20913 * 20914 * BYTERDY 20915 * LINERDY 20916 * RCIFS_4 20917 * VBI 20918 * Y_9 20919 * Y_3 20920 * Y_2 20921 * Y_1 20922 * Y_0 20923 * 20924 * THE FOLLOWING INPUTS TO THE JUMP LOGIC ARE SET BY ADDRESSING SPECIAL 20925 * TEST INSTRUCTIONS IN THE TEST MICROCODE :- 20926 * 20927 * RD_47 (JMP2) 20928 * RD_46 (JMP1) 20929 * RD_45 (JMP0) 20930 * RD_35 (ROMA3) 20931 * RD_34 (ROMA2) 20932 * RD_33 (ROMA1) 20933 * RD_32 (ROMA0) 20934 * 20935 * THE RESULTANT VALUES IN UA[35:32] ARE THEN SCANNED OUT. 20936 * 20937 * SINCE THESE TESTS ARE AIMED AT TESTING THE JUMPLOGIC ONLY, ROMA0 TO 20938 * ROMA3 ARE HELD AT ZERO DURING THESE TESTS, THESE BITS HAVING BEEN 20939 * TESTED DURING MICROCODE SIGNATURE TESTING. 20940 * 20941 ************************************************************************ 20942 * 20943 .EQU JMPTESTBASE0, >D90; 20944 .EQU JMPTESTBASE1, JMPTESTBASE0 + >1; 20945 .EQU JMPTEST0, JMPTESTBASE0 + >2; 20946 .EQU JMPTEST1, JMPTESTBASE0 + >3; 20947 .EQU JMPTEST2, JMPTESTBASE0 + >4; 20948 .EQU JMPTEST3, JMPTESTBASE0 + >5; 20949 .EQU JMPTEST4, JMPTESTBASE0 + >6; 20950 .EQU JMPTEST5, JMPTESTBASE0 + >7; 20951 .EQU JMPTEST6, JMPTESTBASE0 + >8; 20952 .EQU JMPTEST7, JMPTESTBASE0 + >9; 20953 * 20954 *----------------------------------------------------------------------- 20955 * 20956 .ORG JMPTESTBASE0, * ADDRESS MUST BE XX0 20957 JUMP(JMPTESTBASE0); ----- ----- D90 00000D90 00000000 ----- 20958 * 20959 .ORG JMPTESTBASE1, 20960 JUMP(JMPTESTBASE1); ----- ----- D91 00000D91 00000000 ----- 20961 * 20962 .ORG JMPTEST0, * JMP[2:0] = 000 20963 JUMP(JMPTESTBASE0); ----- ----- D92 00000D90 00000000 ----- 20964 * 20965 .ORG JMPTEST1, * JMP[2:0] = 001 20966 JZ(JMPTESTBASE0,JMPTESTBASE1); ----- ----- D93 00002D90 00000000 ----- 20967 * 20968 .ORG JMPTEST2, * JMP[2:0] = 010 20969 JN(JMPTESTBASE0,JMPTESTBASE1); ----- ----- D94 00004D90 00000000 ----- 20970 * 20971 .ORG JMPTEST3, * JMP[2:0] = 011 20972 JLINE(JMPTESTBASE0,JMPTESTBASE1); ----- ----- D95 00006D90 00000000 ----- 20973 * 20974 .ORG JMPTEST4, * JMP[2:0] = 100 20975 JBYTE(JMPTESTBASE0,JMPTESTBASE1); ----- ----- D96 00008D90 00000000 ----- 20976 * 20977 .ORG JMPTEST5, * JMP[2:0] = 101 20978 JRC(JMPTESTBASE0,JMPTESTBASE1); ----- ----- D97 0000AD90 00000000 ----- 20979 * 20980 .ORG JMPTEST6, * JMP[2:0] = 110 20981 JY(JMPTESTBASE0); ----- ----- D98 0000CD90 00000000 ----- 20982 * 20983 .ORG JMPTEST7, * JMP[2:0] = 111 20984 J7(JMPTESTBASE0); ----- ----- D99 0000ED90 00000000 ----- 20985 * 20986 *----------------------------------------------------------------------- 20987 * 20988 .END 20989 ÿ