00001 ************************************************************************ 00002 * * 00003 * EUROTEXT: 212, Multilanguage VPS developed from version 7 of: * 00004 * started 060696, Colin Hinson. * 00005 * * 00006 ************************************************************************ 00007 ************************************************************************ 00008 * * 00009 * EUROTEXT: 211, Multilanguage VPS * 00010 * * 00011 ************************************************************************ 00012 * * 00013 * Based on ET8-203 which was originaly based on ET8-22B code: * 00014 * * 00015 * ET8-22: Trevor Jones * 00016 * 8/30 reception bug correction * 00017 * EVEN/ODD field signal correction * 00018 * 8/30 status channel change bug correction * 00019 * Addition of alternate MUTE mode * 00020 * Correction of BTT update bug * 00021 * Correction bad hamming in PLT bug * 00022 * Correction of CHNG I2C lock up bug * 00023 * Addition of Subtitle Browse * 00024 * Addition of MODE2 row24 display inhibit * 00025 * * 00026 ************************************************************************ 00027 * * 00028 * VPS, started April 94 * 00029 * * 00030 * 209-00-0 * 00031 * Initial Code * 00032 * Removed R24LAN register * 00033 * Removed all unessesary ORG equates * 00034 * Ukrainian Language Translation added * 00035 * * 00036 * 209-01-0 * 00037 * Removed 'STOP' option from hold command * 00038 * * 00039 * 209-02-0 * 00040 * Removed termination of downloaded data by ESC char * 00041 * * 00042 * 209-03-0 Trevor Jones * 00043 * Correction of I2C lockup problems due * 00044 * to I2C reads. * 00045 * * 00046 ************************************************************************ 00047 * * 00048 * 211, started July 94 * 00049 * * 00050 * 211-00-0 * 00051 * Initial Code, copied from 209-03-0 * 00052 * * 00053 ************************************************************************ 00054 .IDT '212-02-0' *8 character label for .OBJ file * 00055 .SIZ >E00; *3.5K ROM, SHC says he needs 144 words * 00056 .TITL 'EUROTEXT Application Microcode' * 00057 .ETFO * EUROTEXT format, 64 bit object and no variable bit reverse * 00058 .OUT 56; 00059 * * 00060 *### marks interesting points for future reference (eg bits where code * 00061 * could be compressed) * 00062 * * 00063 *Design rules:- -RVDP before TPD * 00064 * -one instruction between JBYTE and CBRDY * 00065 * -if RVDP and Y>DR in the same instruction, TPD will * 00066 * be updated in the next instruction and the write will * 00067 * occur in the next instruction * 00068 * -can't do a RVDP in the instruction after a Y>DR * 00069 * * 00070 *Assembler:- * 00071 * -does not error jumps to non-existent .ORGs * 00072 * * 00073 * section 1: poll for event * 00074 * section 2: recieve teletext line * 00075 * section 3: VBI post processing * 00076 * section 4: service interface * 00077 * section 5: sub-routines * 00078 * section 6: initialisation * 00079 * section 7: misc/ temporary * 00080 *----------------------------------------------------------------------* 00081 * C 00082 * P AB JJJD P RVB AAAABBBB 00083 * CERFFLL MMML< ROM > L< RAM > VDR CE MMMMMMMM 00084 * MMMEEDD PPPD D DPDSSIXWSSSSSSSS 00085 * SSA10TT 210TBA9876543210 T654321076543210 PCY10NTE32103210 00086 * ||||||| |||||||||||||||| |||||||||||||||| |||||||||||||||| 00087 *A INPUT TO ALU 00088 .DEF A(?), 0000000 0000000000000000 00000000???????? 00000000ZZZZ0000; 00089 .DEF AR>A, 0000000 0000000000000000 0000000000000000 00000000ZZZ10000; 00090 .DEF ARHI>A, 0000000 0000000000000000 0000000000000000 00000000ZZ1Z0000; 00091 .DEF AR<<4>A, 0000000 0000000000000000 0000000000000000 00000000ZZ110000; 00092 .DEF NAR>A, 0000000 0000000000000000 0000000000000000 00000000Z1ZZ0000; 00093 .DEF AR<<3>A, 0000000 0000000000000000 0000000000000000 00000000Z1Z10000; 00094 .DEF NAR.0F>A, 0000000 0000000000000000 0000000000000000 00000000Z11Z0000; 00095 .DEF PCL>A, 0000000 0000000000000000 0000000000000000 00000000Z1110000; 00096 .DEF CTL>A, 0000000 0000000000000000 0000000000000000 000000001ZZZ0000; 00097 .DEF TPD>A, 0000000 0000000000000000 0000000000000000 000000001ZZ10000; 00098 .DEF TPD.0F>A, 0000000 0000000000000000 0000000000000000 000000001Z1Z0000; 00099 .DEF TPD.F0>A, 0000000 0000000000000000 0000000000000000 000000001Z110000; 00100 .DEF AR.0F>A, 0000000 0000000000000000 0000000000000000 0000000011ZZ0000; 00101 .DEF AR.F0>A, 0000000 0000000000000000 0000000000000000 0000000011Z10000; 00102 .DEF AR>>1>A, 0000000 0000000000000000 0000000000000000 00000000111Z0000; 00103 *B INPUT TO ALU 00104 .DEF B(?), 0000000 0000000000000000 00000000???????? 000000000000ZZZZ; 00105 .DEF BR>B, 0000000 0000000000000000 0000000000000000 000000000000ZZZ1; 00106 .DEF BR.0F>B, 0000000 0000000000000000 0000000000000000 000000000000ZZ1Z; 00107 .DEF BR.F0>B, 0000000 0000000000000000 0000000000000000 000000000000ZZ11; 00108 .DEF BR>>4>B, 0000000 0000000000000000 0000000000000000 000000000000Z1ZZ; 00109 .DEF AR<<5>B, 0000000 0000000000000000 0000000000000000 0000000000001ZZ1; 00110 .DEF RCD>B, 0000000 0000000000000000 0000000000000000 0000000000001Z1Z; 00111 .DEF RCS>B, 0000000 0000000000000000 0000000000000000 0000000000001Z11; 00112 .DEF BRHI>B, 0000000 0000000000000000 0000000000000000 00000000000011ZZ; 00113 .DEF PLL>B, 0000000 0000000000000000 0000000000000000 000000000000111Z; 00114 .DEF GPIO>B, 0000000 0000000000000000 0000000000000000 0000000000001111; 00115 *A AND B INPUT TO ALU 00116 .DEF Y(?), 0000000 0000000000000000 00000000???????? 0001Z000ZZZZZZZZ; 00117 *FRONT END DEFS 00118 .DEF DATA>B, 000ZZ00 0000000000000000 0000000000000000 000000000000Z1Z1; 00119 .DEF PTY>B, 000Z100 0000000000000000 0000000000000000 000000000000Z1Z1; 00120 .DEF HAM>B, 0001Z00 0000000000000000 0000000000000000 000000000000Z111; 00121 .DEF ROW>B, 0001100 0000000000000000 0000000000000000 000000000000Z1Z1; 00122 .DEF P26AD>B, 000ZZ00 0000000000000000 0000000000000000 0000000000001ZZZ; 00123 .DEF P26MO>B, 000Z100 0000000000000000 0000000000000000 0000000000001ZZZ; 00124 .DEF P26CH>B, 0001Z00 0000000000000000 0000000000000000 0000000000001ZZZ; 00125 .DEF CBRDY, 0000000 0000000000000000 0000000000000000 0010000000000000; 00126 *ALU OPERATIONS 00127 .DEF ADD, 0000000 0000000000000000 0000000000000000 000ZZ00000000000; 00128 .DEF AND, 0000000 0000000000000000 0000000000000000 000Z100000000000; 00129 .DEF OR, 0000000 0000000000000000 0000000000000000 0001Z00000000000; 00130 .DEF XOR, 0000000 0000000000000000 0000000000000000 0001100000000000; 00131 .DEF BIT8, 0000000 0000000000000000 0000000000000000 0001010000000000; 00132 .DEF Z>CIN, 0000000 0000000000000000 0000000000000000 00000Z0000000000; 00133 .DEF O>CIN, 0000000 0000000000000000 0000000000000000 0000010000000000; 00134 *JUMP INSTRUCTIONS 00135 .DEF JUMP(?), 0000000 ZZZ0???????????? 0000000000000000 0000000000000000; 00136 .DEF JZ(?,?), 0000000 ZZ10???????????? 0000000000000000 0000000000000000; 00137 .DEF JN(?,?), 0000000 Z1Z0???????????? 0000000000000000 0000000000000000; 00138 .DEF JLINE(?,?),0000000 Z110???????????? 0000000000000000 0000000000000000; 00139 .DEF JBYTE(?,?),0000000 1ZZ0???????????? 0000000000000000 0000000000000000; 00140 .DEF JRC(?,?), 0000000 1Z10???????????? 0000000000000000 0000000000000000; 00141 .DEF JY(?), 0000000 11Z0???????????? 0000000000000000 0000000000000000; 00142 *ALU O/PS + REGISTER LOADS 00143 .DEF Y>RAM, 0000000 0000000000000000 0000000000000000 0000000100000000; 00144 .DEF Y>DR, 0000000 0001000000000000 0000000000000000 0000000000000000; 00145 *(COPY Y7 TO Y8) 00146 .DEF Y>DCLR, 0000000 0001000000000000 0000000000000000 0001010000000000; 00147 *(CLEAR Y8) 00148 .DEF Y>PR, 0000000 0000000000000000 1000000000000000 0000000000000000; 00149 .DEF Y>AR, 0100010 0000000000000000 0000000000000000 0000000000000000; 00150 .DEF Y>IO, 0000000 0000000000000000 0000000000000000 0100000000000000; 00151 .DEF Y>RCI, 000Z100 0000000000000000 0000000000000000 0000001000000000; 00152 .DEF RVDP, 0000000 0000000000000000 0000000000000000 1000000000000000; 00153 .DEF MA(?), 00Z0000 0000000000000000 0???????00000000 0000000000000000; 00154 .DEF PR>MA, 0010000 0000000000000000 0000000000000000 0000000000000000; 00155 .DEF RAM>AR, 0Z00010 0000000000000000 0000000000000000 0000000000000000; 00156 .DEF RAM>BR, Z000001 0000000000000000 0000000000000000 0000000000000000; 00157 .DEF PR>BR, 1000001 0000000000000000 0000000000000000 0000000000000000; 00158 *CONTROL INTERFACE 00159 .DEF RSTRXTX, 000ZZ00 0000000000000000 0000000000000000 0000001000000000; 00160 * ||||||| |||||||||||||||| |||||||||||||||| |||||||||||||||| 00161 * C 00162 * P AB JJJD P RVB AAAABBBB 00163 * CERFFCC MMMC< ROM > C< RAM > VDR CE MMMMMMMM 00164 * MMMEELL PPPL L DPDSSIXWSSSSSSSS 00165 * SSA10KK 210KBA9876543210 K654321076543210 PCY10NTE32103210 00166 *----------------------------------------------------------------------* 00167 * SCRATCH RAM REGISTER EQUATES 00168 *----------------------------------------------------------------------* 00169 * 00170 .EQU VDP0, >00;*IO+RAM| +R24ON+R1T23+R0ON |DPL | 00171 .EQU VDP1, >01;*IO+RAM|BR24 +BR0 +EXPT +EXPB |RVL +BOX +MIX +TEXT | 00172 .EQU VDP2, >02;*IO+RAM| +TWIST+LF1 +LF0 |C14 +C13 +C12 +ILANG| 00173 .EQU VDP3, >03;*IO | +DUAL +LF1 +LF0 |C14 +C13 +C12 + | 00174 .EQU VDP4, >04;*IO+RAM|CLOCK+ + + | + + + | 00175 .EQU VDP5, >05;*IO+RAM|STYLE+CON + +ROW4 |ROW3 +ROW2 +ROW1 +ROW0 | 00176 .EQU VDP6, >06;*IO+RAM| + +COL5 +COL4 |COL3 +COL2 +COL1 +COL0 | 00177 .EQU VDP7, >07;*IO+RAM|TXTBG+FRAME+ + | +FSC2 +FSC1 +FSC0 | 00178 * 00179 .EQU P26MO, >08;*IO | + + +packet 26 mode latch | 00180 .EQU P26CH, >09;*IO | +packet 26 character latch | 00181 .EQU P26EN, >0A;*IO |packet 26 enable | 00182 * 00183 .EQU SYS1, >08;* RAM|page capture mode |FIND +FNRM +FTOP +FFLF | 00184 .EQU SYS2, >09;* RAM|R24EN+R24OS+S6T1 +TVPS |RP24 +CPYR2+R24RT+APIN | 00185 .EQU VPSERR,>0A;* RAM| + + + | + + + | 00186 .EQU RWL, >0B;*IO+RAM| ? + ? + ? + ? |read/write latch | 00187 .EQU PLLRG1,>0C;*IO*RAM|MUTE +R24B +HPOS +INSYN|UEL +SIX24+LOCK +ILCE | 00188 .EQU PLLRG2,>0D;*IO+RAM| - + - +PLL fine coeffs | 00189 .EQU PLLRG3,>0E;*IO+RAM| - + - +PLL coarse coeffs | 00190 * 00191 .EQU GPIO, >0F;*IO+RAM| + +DDF2 +DDF1 | + +FLAG2+FLAG1| 00192 * 00193 .EQU M0, >10;*IO+RAM|-----------------------|latch 0 mag | 00194 .EQU POLREG,>10;* RAM|VBIFL+WAIT +VBITF+LFTOG|-----------------------| 00195 .EQU M1, >11;*IO+RAM|-----------------------|latch 1 mag | 00196 .EQU LTK, >11;* RAM|last TOP key |-----------------------| 00197 .EQU M2, >12;*IO+RAM| + + + |latch 2 mag | 00198 .EQU FLFREG,>12;*IO+RAM|FULFL+P27FL+ - + - |-----------------------| 00199 .EQU M3, >13;*IO+RAM|-----------------------|latch 3 mag | 00200 .EQU AITLAN,>13;* RAM| +C14 +C13 +C12 |-----------------------| 00201 .EQU M4, >14;*IO+RAM|---------------------- |latch 4 mag | 00202 .EQU STSWD1,>14;* RAM| + +FLOCK+ |-----------------------| 00203 .EQU M5, >15;*IO+RAM|-----------------------|latch 5 mag | 00204 .EQU ROTATE,>15;* RAM| + +NBY +ROTT |latch 5 mag | 00205 .EQU M6, >16;*IO+RAM| + + + |latch 6 mag | 00206 .EQU M7, >17;*IO+RAM| + + + |latch 7 mag | 00207 .EQU T0, >18;*IO+RAM| + + + |latch 0 tens | 00208 .EQU T1, >19;*IO+RAM| + + + |latch 1 tens | 00209 .EQU T2, >1A;*IO+RAM| + + + |latch 2 tens | 00210 .EQU T3, >1B;*IO+RAM|-----------------------|latch 3 tens | 00211 .EQU T4, >1C;*IO+RAM|-----------------------|latch 4 tens | 00212 .EQU T5, >1D;*IO+RAM|-----------------------|latch 5 tens | 00213 .EQU T6, >1E;*IO+RAM|-----------------------|latch 6 tens | 00214 .EQU T7, >1F;*IO+RAM|-----------------------|latch 7 tens | 00215 .EQU PEN, >1B;* RAM|page entry state |-----------------------| 00216 *EQU >1C;* RAM| + + + |-----------------------| 00217 *EQU >1D;* RAM| + + + |-----------------------| 00218 *EQU >1E;* RAM| + + + |-----------------------| 00219 *EQU >1F;* RAM| + + + |-----------------------| 00220 .EQU U0, >20;*IO+RAM|-----------------------|latch 0 units | 00221 .EQU U1, >21;*IO+RAM|-----------------------|latch 1 units | 00222 .EQU U2, >22;*IO+RAM|-----------------------|latch 2 units | 00223 .EQU U3, >23;*IO+RAM|-----------------------|latch 3 units | 00224 .EQU U4, >24;*IO+RAM|-----------------------|latch 4 units | 00225 .EQU U5, >25;*IO+RAM|-----------------------|latch 5 units | 00226 .EQU U6, >26;*IO+RAM|-----------------------|latch 6 units | 00227 .EQU U7, >27;*IO+RAM|-----------------------|latch 7 units | 00228 .EQU STOR0, >20;* RAM|store 0 |-----------------------| 00229 .EQU STOR1, >21;* RAM| |-----------------------| 00230 .EQU STOR2, >22;* RAM| store table |-----------------------| 00231 .EQU STOR3, >23;* RAM| containing |-----------------------| 00232 .EQU STOR4, >24;* RAM| pointers to |-----------------------| 00233 .EQU STOR5, >25;* RAM| latches |-----------------------| 00234 .EQU STOR6, >26;* RAM| |-----------------------| 00235 .EQU STOR7, >27;* RAM|store 7 |-----------------------| 00236 .EQU RCM, >28;*IO+RAM|TOFF +AOFF + + |rcvd mag | 00237 .EQU RCT, >29;*IO+RAM| ? + ? + ? + ? |rcvd tens | 00238 .EQU RCU, >2A;*IO+RAM| ? + ? + ? + ? |rcvd units | 00239 .EQU VDPTXT,>2B;* RAM|UCLK + +UPD +C8YET|URVL +STOP +UEXT +UEXB | 00240 .EQU VDPOSD,>2C;* RAM| + + + |URVL +CFU +UEXT +UEXB | 00241 .EQU USRLAN,>2D;* RAM|FLM +TWIST+LF1 +LF0 |C14 +C13 +C12 + | 00242 .EQU LSTINS,>2E;* RAM|last instruction | 00243 .EQU RCSTAT,>2F;* RAM|CHRM +RMODE |OPCNT | 00244 .EQU ROWPTR,>30;* RAM|LCH2 +LCH1 +LCH0 +ROW4 |ROW3 +ROW2 +ROW1 +ROW0 | 00245 .EQU COLPTR,>31;* RAM| + +COL5 +COL4 |COL3 +COL2 +COL1 +COL0 | 00246 .EQU DHREG, >32;* RAM|HOFF +ICP +POOCD+NRH |TOD +ENDIG+STBRW+BWSE | 00247 .EQU CGA, >33;* RAM| ? + ? + ? + ? |control group A | 00248 .EQU CGB, >34;* RAM| ? + ? + ? + ? |control group B | 00249 .EQU LAFR, >35;* RAM|store for current latch flags | 00250 .EQU MFR, >36;* RAM| + + + |mag flags, rcvd mag | 00251 .EQU TOPRG1,>37;* RAM|BTTER+BTTCA+BTTP +BTTUP|last BTT update code | 00252 .EQU INVCNT,>38;* RAM|inventory page count, LSB is complete flag | 00253 .EQU MREG0, >39;* RAM|DETO +CNR24+CAEXP+ERROV|DISER+PMNM +COOC +STP | 00254 .EQU ERRCNT,>3A;* RAM|error count | 00255 .EQU TIMOUT,>3B;* RAM|OOC display time out | 00256 .EQU RSPI, >3C;* RAM| ? + ? + ? + ? |rcvd sub-page units | 00257 .EQU RSPX, >3D;* RAM| ? + ? + ? + ? |rcvd sub-page tens | 00258 .EQU RSPC, >3E;* RAM| ? + ? + ? + ? |rcvd sub-page hundreds | 00259 .EQU RSPM, >3F;* RAM| ? + ? + ? + ? |rcvd sub-page thousands| 00260 * 00261 .EQU LAF0, >40;* RAM|latch flags, latch 0 | 00262 .EQU LAF1, >41;* RAM|latch flags, latch 1 | 00263 .EQU LAF2, >42;* RAM| " | 00264 .EQU LAF3, >43;* RAM|CAP +VBICA+CLR +OPN | +MPG +BTTL +AITL | 00265 .EQU LAF4, >44;* RAM| (LAFx) | 00266 .EQU LAF5, >45;* RAM| " | 00267 .EQU LAF6, >46;* RAM|latch flags, latch 6 | 00268 .EQU LAF7, >47;* RAM|latch flags, latch 7 | 00269 * 00270 .EQU LFSP0, >48;* RAM|-----------------------|latch for sub-page 0 | 00271 .EQU LFSP1, >49;* RAM|-----------------------|latch for sub-page 1 | 00272 .EQU LFSP2, >4A;* RAM|-----------------------|latch for sub-page 2 | 00273 *EQU >4B;* RAM|-----------------------| + + + | 00274 .EQU AITCNT,>4C;* RAM|-----------------------|AITs left to capture | 00275 *EQU >4D;* RAM|-----------------------| + + + | 00276 *EQU >4E;* RAM|-----------------------| + + + | 00277 *EQU >4F;* RAM|-----------------------| + + + | 00278 *EQU >50;* RAM|-----------------------| + + + | 00279 *EQU >51;* RAM|-----------------------| + + + | 00280 *EQU >52;* RAM|-----------------------| + + + | 00281 *EQU >53;* RAM|-----------------------| + + + | 00282 * 00283 .EQU SP0I, >48;* RAM|req sub-page 0, units |-----------------------| 00284 .EQU SP0X, >49;* RAM|req sub-page 0, tens |-----------------------| 00285 .EQU SP0C, >4A;* RAM|req sub-page 0, h'dreds|-----------------------| 00286 .EQU SP0M, >4B;* RAM|req sub-page 0, th'ands|-----------------------| 00287 .EQU SP1I, >4C;* RAM|req sub-page 1, units |-----------------------| 00288 .EQU SP1X, >4D;* RAM|req sub-page 1, tens |-----------------------| 00289 .EQU SP1C, >4E;* RAM|req sub-page 1, h'dreds|-----------------------| 00290 .EQU SP1M, >4F;* RAM|req sub-page 1, th'ands|-----------------------| 00291 .EQU SP2I, >50;* RAM|req sub-page 2, units |-----------------------| 00292 .EQU SP2X, >51;* RAM|req sub-page 2, tens |-----------------------| 00293 .EQU SP2C, >52;* RAM|req sub-page 2, h'dreds|-----------------------| 00294 .EQU SP2M, >53;* RAM|req sub-page 2, th'ands|-----------------------| 00295 * 00296 .EQU SPREG0,>54;* RAM|LFPCL0 | +MSP2 +MSP1 +MSP0 | 00297 .EQU SPREG1,>55;* RAM|LFPCL1 | +MSP2 +MSP1 +MSP0 | 00298 .EQU SPREG2,>56;* RAM|LFPCL2 | +MSP2 +MSP1 +MSP0 | 00299 .EQU SPFRC, >57;* RAM| ? + ? + ? + ? | +FSP2 +FSP1 +FSP0 | 00300 * 00301 .EQU USPI, >58;* RAM|user sub-page units |-----------------------| 00302 .EQU USPX, >59;* RAM|user sub-page tens |-----------------------| 00303 .EQU USPC, >5A;* RAM|user sub-page hundreds |-----------------------| 00304 .EQU USPM, >5B;* RAM|user sub-page th'ands |-----------------------| 00305 *EQU >5C;* RAM| + + + |-----------------------| 00306 *EQU >5D;* RAM| + + + |-----------------------| 00307 *EQU >5E;* RAM| + + + |-----------------------| 00308 *EQU >5F;* RAM| + + + |-----------------------| 00309 * 00310 .EQU MF0, >58;* RAM|-----------------------|mag flags, mag 0 | 00311 .EQU MF1, >59;* RAM|-----------------------|mag flags, mag 1 | 00312 .EQU MF2, >5A;* RAM|-----------------------| " | 00313 .EQU MF3, >5B;* RAM|-----------------------|MOP +MLP | 00314 .EQU MF4, >5C;* RAM|-----------------------| " | 00315 .EQU MF5, >5D;* RAM|-----------------------|mag flags, mag 5 | 00316 .EQU MF6, >5E;* RAM|-----------------------|mag flags, mag 6 | 00317 .EQU MF7, >5F;* RAM|-----------------------|mag flags, mag 7 | 00318 * 00319 .EQU SCREEN,>60;* RAM|picture, text, box, mix|MENM +TDISP+MNDP1+MNDP0| 00320 .EQU VPPRG1,>61;* RAM|SBL +SLFB +PMPN +CSVDP| - +HOSP +PCSP +SPIN | 00321 .EQU VPPRG2,>62;* RAM|SUBT +NWSF + +DPFC |USPR +CSPLL+DPC +DPHC | 00322 .EQU EXPREG,>63;* RAM|P830F+PDC +VPS +SINP |CGAP +CPRF +USM +SRTC | 00323 .EQU STSWD0,>64;* RAM|TFLG +POFF +FFLG +BADFL| + + + | 00324 .EQU MREG1, >65;* RAM|IFRUN+ADDST+UPSYM+THRSH|FPPP +DETV +RKM +RIB | 00325 .EQU LINCNT,>66;* RAM|number of teletext lines in the last VBI | 00326 .EQU HYSREG,>67;* RAM|hysterisis end stop |hysterisis count | 00327 .EQU DPM, >68;* RAM|display page mag |last page mag | 00328 .EQU DPT, >69;* RAM|display page tens |last page tens | 00329 .EQU DPU, >6A;* RAM|display page units |last page units | 00330 .EQU OGLCNT,>6B;* RAM|on-going teletext line count | 00331 .EQU PDCRG1,>6C;* RAM|flags indicate which DC P26 have been captured | 00332 .EQU PDCRG2,>6D;* RAM|flags indicate which DC P26 have been captured | 00333 .EQU MREG2, >6E;* RAM| + + + | +NMOFF+EVODD+SPALT| 00334 .EQU UPLL, >6F;* RAM|MUTEM+R24T +HPOS +FSYNC|UEL +SIX24+ISYNC+ILCE | 00335 *Local variables, these can be used for local temporary storage. If a 00336 *a sub-routine is called, need to check that the local variable is not 00337 *modified by the sub-routine code unless the variable is an input 00338 *parameter. 00339 .EQU TEST, >70;* RAM| + + + | + + + | 00340 .EQU OLDSTR,>71;* RAM|old store 0 |old store 7 | 00341 .EQU LOCAL, >72;* RAM| + + + | + + + | 00342 .EQU MASK, >73;* RAM| + + + | + + + | 00343 .EQU PM, >74;* RAM|page magazine routines|-----------------------| 00344 .EQU PT, >75;* RAM|page tens pars for|-----------------------| 00345 .EQU PU, >76;* RAM|page units i/p |-----------------------| 00346 .EQU STORE, >77;* RAM| + + + | + + + | 00347 .EQU COUNT, >78;* RAM| + + + | + + + | 00348 .EQU RET4, >79;* RAM| + + + | + + + | 00349 .EQU RET3, >7A;* RAM| + + + | + + + | 00350 .EQU RET2, >7B;* RAM| + + + | + + + | 00351 .EQU RETURN,>7C;* RAM| + + + | + + + | 00352 .EQU THISRW,>7D;* RAM| + + + | + + + | 00353 *end of local variables 00354 .EQU LPPREG,>7E;* RAM|line post processing register | 00355 .EQU HFLGS, >7F;* RAM|host read byte count | 00356 * 00357 *----------------------------------------------------------------------* 00358 * SCRATCH RAM FLAG EQUATES 00359 *----------------------------------------------------------------------* 00360 **** VDP0; *VDP REGISTER 0 (SEE VDP SPEC) 00361 * ----------------------------------------------------------------- 00362 * | |R24ON |R1T23 |R0ON | |DPL | 00363 * ----------------------------------------------------------------- 00364 .EQU R24ON, >40; * 00365 .EQU R1T23, >20; * 00366 .EQU R0ON, >10; * 00367 .EQU DPL, >0F; *DISPLAY LATCH 00368 *----------------------------------------------------------------------* 00369 **** VDP1; *VDP REGISTER 1 (SEE VDP SPEC) 00370 * ----------------------------------------------------------------- 00371 * |BR24 |BR0 |EXPT |EXPB |RVL |BOX |MIX |TEXT | 00372 * ----------------------------------------------------------------- 00373 .EQU BR24, >80; * 00374 .EQU BR0, >40; * 00375 .EQU EXPT, >20; * 00376 .EQU EXPB, >10; * 00377 .EQU RVL, >08; * 00378 .EQU BOX, >04; * 00379 .EQU MIX, >02; * 00380 .EQU TEXT, >01; * 00381 *----------------------------------------------------------------------* 00382 **** VDP3; *VDP REGISTER 3 (SEE VDP SPEC) 00383 * ----------------------------------------------------------------- 00384 * | | | | | | | | | 00385 * ----------------------------------------------------------------- 00386 *----------------------------------------------------------------------* 00387 **** VDP4; *VDP REGISTER 3 (SEE VDP SPEC) 00388 * ----------------------------------------------------------------- 00389 * |CLOCK | | | | | | | | 00390 * ----------------------------------------------------------------- 00391 .EQU CLOCK, >80; *CLOCK MODE 00392 *----------------------------------------------------------------------* 00393 **** SYS1; *SYSTEM MODE REGISTER 1 00394 * ----------------------------------------------------------------- 00395 * | |PCM |FIND |FNRM |FTOP |FFLF | 00396 * ----------------------------------------------------------------- 00397 * 00398 * case(PCM==0): NORMAL mode 00399 * case(PCM==1): TOP mode 00400 * case(PCM==2): FLOF mode 00401 * case(PCM==3): FAVP mode 00402 * 00403 .EQU FIND, >08; *FIND PAGE CAPTURE MODE IN AUTO 00404 * When set, the decoder will switch to FLOF mode when a display page 00405 * with correct FLOF is received if FNRM=FTOP=0. FIND is cleared once 00406 * FLOF is selected. If a BTT is captured when FRM=FTOP=0 and FIND is 00407 * set, the decoder will go to TOP mode. In this case, FIND is not 00408 * cleared so that the decoder can still switch to FLOF (ie FLOF has 00409 * priority over TOP). 00410 .EQU FNRM, >04; *FORCED NORMAL MODE 00411 * The decoder has been forced to NORMAL. 00412 .EQU FTOP, >02; *FORCED TOP MODE 00413 * The decoder has been forced to TOP. 00414 .EQU FFLF, >01; *FORCED FLOF MODE 00415 * The decoder has been forced to FLOF. 00416 *----------------------------------------------------------------------* 00417 **** SYS2, *SYSTEM MODE REGISTER 2 00418 * ----------------------------------------------------------------- 00419 * |R24EN |R24OSD |S6T1 |TVPS |RP24 |CPYR24 |R24RTC |APIN | 00420 * ----------------------------------------------------------------- 00421 .EQU R24EN, >80; *RECEPTION OF PACKET 24 ENABLED (IF APIN=1) 00422 .EQU R24OSD, >40; *ROW 24 OSDS 00423 * This flag inhibits the display of rows 0-23 of the teletext 00424 * page. This allows row 24 to be used for OSDs without the 00425 * need to set menu page mode. 00426 .EQU S6T1, >20; *STORE 6 CONTAINS TOP 1 00427 * In TOP mode, store 6 is set for TOP1 unless menu mode is set. 00428 * This flag is tested on sub-page clear to see if store 6 should be 00429 * swapped back to store 4 00430 .EQU TVPS, >10; *RECEIVED A VPS PACKET 00431 .EQU RP24, >08; *RECEIVE PACKET 24 00432 * This flag enables packet 24 for the display page to be copied 00433 * from store 6 when CPYR24=1 and R24RTC=1. 00434 .EQU CPYR24, >04; *COPY ROW 24 00435 * When set, this flag causes the display page row 24 to be copied 00436 * from store 6 to the display page in the next VPP if 00437 * RP24 and R24RTC are set. 00438 .EQU R24RTC, >02; *ROW 24 READY TO COPY 00439 * This flag indicates that a row 24 for the display page has been 00440 * captured in store 6. 00441 .EQU APIN, >01; *AUTOMATIC PROMPTS INHIBITED 00442 *----------------------------------------------------------------------* 00443 **** PLLRG1, *PLL REGISTER 1 00444 * ----------------------------------------------------------------- 00445 * |MUTE |R24B |HPOS |INSYNC |UEL |SIX24 |LOCK |ILCE | 00446 * ----------------------------------------------------------------- 00447 .EQU MUTE, >80; *MUTE OUTPUT ACTIVE 00448 .EQU R24B, >40; *ROW 24 BOTTOM ROW 00449 .EQU HPOS, >20; *SHIFT TO RIGHT 00450 .EQU INSYNC, >10; *ENABLE INTERNAL SYNC 00451 .EQU UEL, >08; *UNLOCKED EXTRA LINE 00452 .EQU SIX24, >04; *624 LINES PER FRAME 00453 .EQU LOCK, >02; *TRY TO LOCK TO INCOMMING FIELD SYNC 00454 .EQU ILCE, >01; *INTERLACE MODE 00455 *----------------------------------------------------------------------* 00456 **** UPLL, *USER PLL MODE 00457 * ----------------------------------------------------------------- 00458 * |MUTEM |R24T |HPOS |FSYNC |UEL |SIX24 |ISYNC |ILCE | 00459 * ----------------------------------------------------------------- 00460 .EQU MUTEM, >80; *MUTE MODE 00461 .EQU R24T, >40; *ROW 24 TOP ROW 00462 .EQU FSYNC, >10; *FORCE SYNC SWITCH MODE 00463 .EQU ISYNC, >02; *INTERNAL SYNC MODE 00464 *ELSE THE SAME AS PLLRG1 00465 *----------------------------------------------------------------------* 00466 **** POLREG, *POLLING REGISTER 00467 * --------------------------------- 00468 * |VBIFLG |WAIT |VBITF |LFTOG | 00469 * --------------------------------- 00470 .EQU VBIFLG, >80; *VBI FLAG 00471 * This flag indicates the last tested state of the VBI state. 00472 .EQU WAIT, >40; *WAIT 00473 * This flag is set to stop the interface from being serviced until 00474 * the end of VBI. 00475 .EQU VBITF, >20; *VBI THIS FIELD 00476 * A VBI has been detected since the last time the field toggle 00477 * line changed state. 00478 .EQU LFTOG, >10; *LAST FIELD TOGGLE 00479 * This flag is used to detect a change of state on the field 00480 * toggle line. 00481 *----------------------------------------------------------------------* 00482 **** LTK, *LAST TOP KEY 00483 * This nibble holds the last TOP key entered. This is used when 00484 * initialising TOP latches. 00485 * --------------------------------- 00486 * | | | | | 00487 * --------------------------------- 00488 * If LTK=0, RED key or initialisation 00489 * If LTK=1, GREEN or this page is a TV page 00490 * If LTK=2, YELLOW key 00491 * If LTK=4, BLUE key 00492 *----------------------------------------------------------------------* 00493 **** FLFREG, *FLOF REGISTER 00494 * This register holds the FLOF status of the displayed page and 00495 * is updated every time the display page is captured. 00496 * --------------------------------- 00497 * |FULFLF |P27FLF | - | - | 00498 * --------------------------------- 00499 .EQU FULFLF, >80; *FULL FLOF 00500 * A packet 27 with the display row 24 flag set, and a packet 24 00501 * for the display page has been received. 00502 .EQU P27FLF, >40; *PACKET 27 FLOF 00503 * A packet 27 for the display page has been received with either 00504 * the display row 24 flag not set or no packet 24. 00505 *----------------------------------------------------------------------* 00506 **** STSWD1, *STATUS WORD 1 REGISTER 00507 * --------------------------------- 00508 * | | |FLOCK | | 00509 * --------------------------------- 00510 .EQU FLOCK, >20; *FIELD LOCK 00511 * This flag is set if a VBI was detected during the last field 00512 * toggle period. 00513 *----------------------------------------------------------------------* 00514 **** ROTATE, *ROTATE IN BLOCK FLAGS 00515 * These flags control the rotate in block function, if either 00516 * is set, the rotate will be inhibited. 00517 * --------------------------------- 00518 * | | |NBY |ROTT | 00519 * --------------------------------- 00520 .EQU NBY, >20; *NO BLOCK FOUND YET 00521 .EQU ROTT, >10; *ALREADY ROTATED IN A BLOCK 00522 *----------------------------------------------------------------------* 00523 **** PEN, *PAGE ENTRY STATE 00524 * The nibble tracks the digit entry sequence, the 2 lsbs are the 00525 * number of '-' required for incomplete pages. The third lsb 00526 * indicates sub-page mode. 00527 * --------------------------------- 00528 * | | | | | 00529 * --------------------------------- 00530 * If PEN=0, complete main page entered P100 00531 * If PEN=1, main page tens entered P10- 00532 * If PEN=2, main page mag entered P1-- 00533 * If PEN=4, complete sub-page entered 1234 00534 * If PEN=5, sub-page tens entered 123- 00535 * If PEN=6, sub-page hundreds entered 12-- 00536 * If PEN=7, sub-page thousands entered 1--- 00537 *----------------------------------------------------------------------* 00538 **** RCM, *RECEIVED MAGAZINE 00539 * ----------------------------------------------------------------- 00540 * |TOFF |AOFF | | |received magazine | 00541 * ----------------------------------------------------------------- 00542 .EQU TOFF, >80; *TELETEXT OFF 00543 * This flag is set by STOP and cleared by START to inhibit and 00544 * re-start teletext reception. 00545 .EQU AOFF, >40; *AUTO TELETEXT OFF 00546 * This flag is used to inhibit teletext reception when the 00547 * automatic teletext reception threshold is enabled. 00548 *----------------------------------------------------------------------* 00549 **** VDPTXT *VDP FLAGS FOR TELETEXT DISPLAYS 00550 * This register is an input registers for the SVDP routine. 00551 * Together with the page related status data stored in 00552 * page RAM, it defines how the displayed page is displayed. 00553 * ----------------------------------------------------------------- 00554 * |UCLK | |UPD |C8YET |URVL |STOP |UEXT |UEXB | 00555 * ----------------------------------------------------------------- 00556 .EQU UCLK, >80; *USER CLOCK MODE 00557 .EQU UPD, >20; *UPDATE MODE 00558 .EQU C8YET, >10; *C8 HEADER BIT RECEIVED YET 00559 * This flag is cleared when UPD is set and set when a header 00560 * of the displayed page with C8 set is received, on first capture 00561 * of a page or on page number entry. This is the time 00562 * when the user is prompted with the page number rather than the 00563 * update symbol in update mode. UPD and C8YET therefore define 00564 * the current update mode. 00565 .EQU URVL, >08; *USER REVEAL 00566 * This bit is toggled by the high level reveal function. It 00567 * must be cleared if the displayed page is cleared for any 00568 * reason. 00569 .EQU STOP, >04; *STOP OR HOLD 00570 .EQU UEXT, >02; *USER EXPAND TOP 00571 .EQU UEXB, >01; *USER EXPAND BOTTOM 00572 *----------------------------------------------------------------------* 00573 **** VDPOSD *VDP FLAGS FOR MENU PAGES 00574 * This register is an input parameter for the SVDP routine. 00575 * ----------------------------------------------------------------- 00576 * | | | | |URVL |CFU |UEXT |UEXB | 00577 * ----------------------------------------------------------------- 00578 *EQU URVL, >08; *USER REVEAL 00579 .EQU CFU, >04; *CLOCK FIELD OF MENU PAGE UPDATED 00580 * When set, this flag enables the display of concealed characters 00581 * in the menu page display. 00582 *EQU UEXT, >02; *USER EXPAND TOP 00583 *EQU UEXB, >01; *USER EXPAND BOTTOM 00584 *----------------------------------------------------------------------* 00585 **** USRLAN, *USER LANGUAGE 00586 * 00587 * TCJ April 94, 00588 * TWIST and ILANG added. 00589 * 00590 * This register is updated via the user interface. It defines 00591 * the language used for OSD displays and the default language 00592 * used for teletext displays. 00593 * If FLM=0, the C bits are updated by teletext headers. 00594 * If FLM=1, the C bits are not updated by teletext headers. 00595 * ----------------------------------------------------------------- 00596 * |FLM |TWIST |LF1 |LF0 |C14 |C13 |C12 |ILANG | 00597 * ----------------------------------------------------------------- 00598 .EQU FLM, >80; *FORCED LANGUAGE MODE 00599 * This bit is set when the teletext display is to be forced to 00600 * a language (defined by USRLAN). 00601 .EQU TWIST, >40; *ENABLE TWIST MODE 00602 * When set, enables the twist (>1B) serial attribute. 00603 .EQU ILANG, >01; *INITIAL LANGUAGE 00604 * Defines the initial languge for the start of a display row, when 00605 * 0 the defaults to LATIN at start of a line. If set to a 1, defaults 00606 * to CYRILIC. 00607 * 00608 *----------------------------------------------------------------------* 00609 **** RCSTAT, *REMOTE CONTROL STATE 00610 * ----------------------------------------------------------------- 00611 * |CHRM |RMODE |OPCNT | 00612 * ----------------------------------------------------------------- 00613 .EQU CHRM, >80; *CHARACTER MODE 00614 .EQU RMODE, >70; *READ DATA MODE 00615 * These three bits indicate what data should be written to the I2C 00616 * interface the next time the host reads a byte. 00617 .EQU OPCNT, >0F; *OPERAND COUNT 00618 * These bits contain the number of operands to be received for 00619 * multi-operand commands. If non-zero, the RC code will 00620 * use LSTINS and OPCNT to work out what to do with the 00621 * received byte. 00622 *----------------------------------------------------------------------* 00623 **** DHREG; *DISPLAY HEADER REGISTER 00624 * ----------------------------------------------------------------- 00625 * |HOFF |ICP |POOCD |NRH |TOD |ENDIG | |BWSE | 00626 * ----------------------------------------------------------------- 00627 .EQU HOFF, >80; *HEADER OFF 00628 * This bit used by high level functions to inhibit the reception 00629 * of the display page header characters. 00630 .EQU ICP, >40; *INCOMPLETE PAGE 00631 * When set, this flag inhibits UPDATE and suppressed header, and 00632 * causes the header to be boxed. 00633 .EQU POOCD, >20; *PAGE OUT OF CYCLE DISPLAY 00634 .EQU NRH, >10; *ROLLING HEADER 00635 * This bit is used by low level functions to switch on/ off a 00636 * rolling header display. 00637 .EQU TOD, >08; *TIME OUT DISPLAY 00638 * When this flag is set, row 0 and row 24 of the teletext display 00639 * are always enabled and boxed (FLOF or APIN can override). 00640 .EQU ENDIG, >04; *ENABLE DIGIT 00641 * This flag enables digit entry in box mode if DETO is set. 00642 .EQU STBRW, >02; *SUBTITLE BROWSE 00643 .EQU BWSE, >01; *BROWSE 00644 * This is set when STORE 0 has been initialised to receive the 00645 * next received page. If this flag is set, then the next header 00646 * of a page not in a latch (if a decimal page and not a subtitle) 00647 * causes STORE 0 to receive that page. 00648 *----------------------------------------------------------------------* 00649 **** TOPRG1, *TOP REGISTER 1 00650 * ----------------------------------------------------------------- 00651 * |BTTERR |BTTCAP |BTTP |BTTUP |last BTT update code | 00652 * ----------------------------------------------------------------- 00653 .EQU BTTERR, >80; *BTT ERR 00654 * This flag is cleared when a latch is opened to receive a BTT and 00655 * is set if an error in the BTT is detected. It gives an indication 00656 * to the reliability of currently stored BTT data. 00657 .EQU BTTCAP, >40; *BTT CAPTURED 00658 * This flag indicates that a BTT has been captured in STOR1. It 00659 * is cleared on a channel change and when STOR1 is initialised 00660 * to receive something else (eg in FLOF mode). 00661 .EQU BTTP, >20; *BTT PROCESSING TO DO 00662 * This flag initiates VBI post processing of a captured BTT, it 00663 * is cleared when the processing is complete. 00664 .EQU BTTUP, >10; *UPDATED BTT PROCESSING TO DO 00665 * This flag initiates VBI post processing of a captured BTT 00666 * which has been 'updated'. This could mean that an update has 00667 * been indicated in the BTT sub-code, or that BTT processing 00668 * needs to be done for the first time. This flag causes the AIT 00669 * latches to be re-initialised. It is cleared when the processing 00670 * is complete. 00671 *----------------------------------------------------------------------* 00672 **** MREG0, *MODE REGISTER 0 00673 * ----------------------------------------------------------------- 00674 * |DETO |CNR24D |CAEXP |ERROVF |DISERR |PMNM |COOCD |STP | 00675 * ----------------------------------------------------------------- 00676 .EQU DETO, >80; *DIGIT ENTRY TIME-OUTS ENABLED 00677 * This flag enables causes a digit entry key to time out a header 00678 * display if the decoder is in box mode. The user has to press 00679 * the digit while the header is displayed for it to be accepted. 00680 .EQU CNR24D, >40; *CLEAR NEWSFLASH ROW 24 DISPLAY 00681 * This flag disables the display of row 24 on newsflash pages. 00682 .EQU CAEXP, >20; *CLEAR AUTO-EXPAND 00683 * This flag prevents the decoder from switchin from expand bottom 00684 * to expand top on page number entry. 00685 .EQU ERROVF, >10; *ENABLE ERROR OVERFLOW 00686 * This flag enables ths error count to overflow. 00687 .EQU DISERR, >08; *DISPLAY ERROR COUNT 00688 * This flag enables a display of the error count in the page field 00689 * for system de-bug. 00690 .EQU PMNM, >04; *PLUS MINUS NORMAL MENU 00691 * This flag selects the Grundig style normal menu 00692 .EQU COOCD, >02; *CLEAR OUT OF CYCLE DISPLAY 00693 .EQU STP, >01; *DISPLAY 'STOP' INSTEAD OF HOLD SYMBOL 00694 * 00695 *----------------------------------------------------------------------* 00696 * TCJ Nov 92 - Addition of MODE2 control mode register 00697 * Jan 94 - Addition of NMOFF flag 00698 * 00699 * MREG2, 00700 * ---------------------------------------------------------------- 00701 * | XMUTE | | | | | NMOFF | EVODD |SPALT | 00702 * ---------------------------------------------------------------- 00703 .EQU XMUTE, >80; * Inverted mute signal 00704 * Forces the MUTE output to be inverted. 00705 .EQU SPALT, >01; * Alternate subpage mode. 00706 * Forces the subpage mode to capture the next two subpages transmitted 00707 * after the display page. Default mode is to capture the next two 00708 * numerical subpages. 00709 .EQU EVODD, >02; * Alternate EVEN/ODD signal 00710 * When set enables the alternate EVEN/ODD signal behaviour of 00711 * FLAG2. 00712 .EQU NMOFF, >04; * Disables Normal Mode prompt 00713 * When set the normal mode row 24 prompt will be disabled from being 00714 * displayed until the inventory page is complete. This has the effect 00715 * that under most circumstances on a FLOF or TOP channel, row 24 will 00716 * stay blank until FLOF mode or TOP mode id initiated. 00717 * 00718 *----------------------------------------------------------------------* 00719 **** SPREGx, *SUB-PAGE REGISTER FOR S-P LATCH x 00720 * There is a sub-page register for each sub-page latch 00721 * containing:- 00722 * LFPCLx The latch number to test against PCL. 00723 * This is necessary because we may be looking for more than one 00724 * sub-page of a main page. 00725 * ----------------------------------------------------------------- 00726 * |LFPCLx | |MSP2 |MSP1 |MSP0 | 00727 * ----------------------------------------------------------------- 00728 .EQU MSP, >07; *SUB-PAGE LATCH MARKER FIELD 00729 .EQU MSP0, >01; *marker for sub-page capture latch 0 00730 .EQU MSP1, >02; *marker for sub-page capture latch 1 00731 .EQU MSP2, >04; *marker for sub-page capture latch 2 00732 *----------------------------------------------------------------------* 00733 * TCJ Nov 92 00734 * SPFRC, *FORCE SUB-PAGE CAPTURE 00735 * ----------------------------------------------------------------- 00736 * | | | | | |FSP2 |FSP1 |FSP0 | 00737 * ----------------------------------------------------------------- 00738 * 00739 .EQU FSP0, >01; 00740 .EQU FSP1, >02; 00741 .EQU FSP2, >04; 00742 * 00743 *----------------------------------------------------------------------* 00744 **** LAFx, >??; *LATCH FLAGS- LATCH x 00745 * These registers contain latch related status. 00746 * ----------------------------------------------------------------- 00747 * |CAP |VBICAP |CLR |OPN | |MPG |BTTL |AITL | 00748 * ----------------------------------------------------------------- 00749 .EQU CAP, >80; *PAGE HAS BEEN CAPTURED 00750 * This flag is cleared when a latch is initialised and set by the 00751 * VBI post processing code when the page has been captured. 00752 .EQU VBICAP, >40; *PAGE HAS BEEN CAPTURED DURING THE LAST VBI 00753 * This flag is used to indicate to the VBI code that the latch 00754 * has captured a page. It is set in the header post processing 00755 * and cleared by the VBI code at the end of each VBI. 00756 .EQU CLR, >20; *CLEAR LATCH 00757 * This flag is used to indicate to the VBI code that this latch 00758 * should be cleared (eg by C4 or for first capture). 00759 .EQU OPN, >10; *LATCH IS OPEN 00760 * This flag is set while the latch is open. It can be used to 00761 * inhibit some processing (eg BTT processing) until the page 00762 * has been terminated. However, it must be used very 00763 * carefully as some pages are never terminated (eg BBC 00764 * subtitles). 00765 .EQU MPG, >04; *LATCH IS SET TO RECIEVE A MENU PAGE 00766 .EQU BTTL, >02; *LATCH IS SET TO RECIEVE A BTT 00767 .EQU AITL, >01; *LATCH IS SET TO RECIEVE AN AIT 00768 * N.B. If BTT or AITL is set, the page should not be 00769 * displayed if the page is entered by the user, and the latch 00770 * should not be shuffled when the user selects a page which 00771 * is stored in non-displayed RAM. 00772 *----------------------------------------------------------------------* 00773 **** MFx, MFR; *MAGAZINE FLAGS 00774 * These registers contain magazine related status. The flags 00775 * are used to find the appropriate latch when a magazine is 00776 * received. 00777 * ----------------------------------------------------------------- 00778 * | | | | |MOP | MLP | 00779 * ----------------------------------------------------------------- 00780 .EQU MOP, >08; *MAG OPEN FLAG 00781 .EQU MLP, >07; *MAG LATCH POINTER 00782 * When the header processing code opens a magazine, it places the 00783 * page capture latch output in this field. This points the row 00784 * reception code to the correct page in memory. 00785 *----------------------------------------------------------------------* 00786 **** SCREEN, * 00787 * ----------------------------------------------------------------- 00788 * |picture, teletext, mix and box |MENM |TDISP |MNDP1 |MNDP0 | 00789 * ----------------------------------------------------------------- 00790 * The MSN defines the user selected screen, this may differ 00791 * from the actual screen mode (eg in update). 00792 * case(SCREEN==0):PIC 00793 * case(SCREEN==1):TXT 00794 * case(SCREEN==2):MIX 00795 * case(SCREEN==3):BOX 00796 .EQU MENM, >08; *MENU MODE 00797 .EQU TDISP, >04; *TELETEXT DISPLAY 00798 * This flag indicates that there is a teletext display. This flag 00799 * is used to enable teletext functions. 00800 .EQU MNDP1, >02; *MENU DISPLAY PAGE 1 00801 * This flag indicates that the current display page is menu 00802 * page 1 (store 7). 00803 .EQU MNDP0, >01; *MENU DISPLAY PAGE 0 00804 * This flag indicates that the current display page is menu 00805 * page 0 (store 6). 00806 * N.B. If neither MNDPx or TDISP is set, the clock function can be 00807 * enabled. 00808 *----------------------------------------------------------------------* 00809 **** VPPRG1, *VBI POST PROCESSING REGISTER 00810 * ----------------------------------------------------------------- 00811 * |SBL |SLFB |PMPN |CSVDP | - |HOSP |PCSP |SPIN | 00812 * ----------------------------------------------------------------- 00813 .EQU SBL, >80; *SORT BACKGROUND LATCHES 00814 * This flag causes the VBI post processing code to 'sort' the 00815 * non-displayed latches. This is necessary, for example, when 00816 * a new TOP table has been received. 00817 .EQU SLFB, >40; *SET LATCH FOR BROWSE 00818 * This flag is set when the BROWSE command is received. At the end 00819 * of the next VBI, STORE 0 will be initialised to receive the next 00820 * received page and the BWSE flag is set to direct the header code 00821 * to capture it. 00822 .EQU PMPN, >20; *PROCESS NEW PAGE NUMBER 00823 * This flag is set to tell the VPP routine to process a new page 00824 * number. 00825 .EQU CSVDP, >10; *CALL SET VDP REGISTERS ROUTINE 00826 * This flag is set to call the SVDP routine at the end of the next 00827 * VBI. The SVDP routine updates all the VDP registers 00828 .EQU HOSP, >04; *HOLD DISPLAYED SUB-PAGE 00829 .EQU PCSP, >02; *PROCESS COMPLETE SUB-PAGE IN SPLM CODE 00830 .EQU SPIN, >01; *SUB-PAGE PAGE LATCH INIT 00831 * This flag causes sub-page latch initialisation in SPLM 00832 *----------------------------------------------------------------------* 00833 **** VPPRG2, *VBI POST PROCESSING REGISTER 00834 * ----------------------------------------------------------------- 00835 * |SUBT |NWSF | |DPFC |USPR |CSPLL |DPC |DPHC | 00836 * ----------------------------------------------------------------- 00837 .EQU SUBT, >80; *STORE 0 IS A SUBTITLE PAGE 00838 .EQU NWSF, >40; *STORE 0 IS A NEWSFLASH PAGE 00839 .EQU DPFC, >10; *DISPLAY PAGE FIRST CAPTURE 00840 * This flag indicates to the VPP code that the display page 00841 * has just been captured for the first time. 00842 .EQU USPR, >08; *UPDATE SUB-PAGE REGISTERS IN TOP MODE 00843 .EQU CSPLL, >04; *CALL SET PLL REGISTERS ROUTINE 00844 .EQU DPC, >02; *DISPLAY PAGE CAPTURED 00845 * This flag indicates that the display page was captured during 00846 * the last VBI. 00847 .EQU DPHC, >01; *DISPLAY PAGE HEADER CAPTURED 00848 * This flag indicates that a header of the displayed page was 00849 * captured during the last VBI period. 00850 *----------------------------------------------------------------------* 00851 **** EXPREG, *EXTENSION PACKETS REGISTER 00852 * ----------------------------------------------------------------- 00853 * |P830F2 |PDC |VPS |SINP |CGAP |CPRF |USM |SRTC | 00854 * ----------------------------------------------------------------- 00855 .EQU P830F2, >80; *CAPTURE PACKET 8/30 FORMAT 2 00856 .EQU PDC, >40; *CAPTURE PDC PACKET 26S 00857 .EQU VPS, >20; *CAPTURE VPS PACKET 00858 .EQU SINP, >10; *SEARCH FOR PACKET 8/30 INITIAL PAGE 00859 * This flag is set on a channel change initialisation to enable 00860 * the packet 8/30 initial page for the new channel to be received. 00861 .EQU CGAP, >08; *CALL GENERATE A PROMPT ROUTINE IN VPP 00862 * If this flag is set, the VBI post processing code will generate 00863 * a prompt (if APIN=0). 00864 .EQU CPRF, >04; *CLEAR PROMPT FIRST 00865 * If this flag is set, the GAP code will clear row 24 before 00866 * generating a prompt. 00867 .EQU USM, >02; *USER STATUS MODE 00868 * This mode is set when the packet 8/30 field is being 00869 * automatically displayed by the status function. 00870 .EQU SRTC, >01; *STATUS READY TO COPY 00871 * This flag is set when the packet 8/30 status field is captured. 00872 * If USM=1 and SRTC=1, the VBI post processing code clears SRTC 00873 * and copies the status info to store 0. 00874 *----------------------------------------------------------------------* 00875 **** STSWD0, *STATUS WORD 0 REGISTER 00876 * ----------------------------------------------------------------- 00877 * |TFLG |POFF |FFLG |BADFLG | | | | | 00878 * ----------------------------------------------------------------- 00879 .EQU TFLG, >80; *TOP FLAG 00880 .EQU POFF, >40; *PICTURE OFF FLAG 00881 * This flag is set if the sync switch is set to internal sync. 00882 .EQU FFLG, >20; *FLOF FLAG 00883 .EQU BADFLG, >10; *BAD QUALITY FLAG 00884 *----------------------------------------------------------------------* 00885 **** MREG1, *MODE REGISTER 1 00886 * ----------------------------------------------------------------- 00887 * |IFRUN |ADDSTS |UPSYM |THRSH |FPPP |DETV |RKM |RIB | 00888 * ----------------------------------------------------------------- 00889 .EQU IFRUN, >80; *INHIBIT FREE-RUN 00890 * If set, this prevents the free-run PLL coeffs being loaded if 00891 * the quality algorithm indicates a bad signal. The decoder will 00892 * always try to lock (unless 624 mode is set). 00893 .EQU ADDSTS, >40; *ADDITIONAL STATUS BYTES SELECTED 00894 .EQU UPSYM, >20; *UPDATE SYMBOL MODE (SET NOKIA MODE) 00895 .EQU THRSH, >10; *TELETEXT THRESHOLD ACTIVE 00896 .EQU FPPP, >08; *FORCE PAGE PREFIX TO P 00897 .EQU DETV, >04; *DIGIT ENTRY ENABLED IN TV MODE 00898 .EQU RKM, >02; *RED KEY MODE (SET NOKIA MODE) 00899 .EQU RIB, >01; *ROTATE IN GROUP (SET NOKIA MODE) 00900 *----------------------------------------------------------------------* 00901 **** LPPREG, >29; *LINE POST PROCESSING REGISTER 00902 * ----------------------------------------------------------------- 00903 * | | | | | | | | | 00904 * ----------------------------------------------------------------- 00905 * If LPPREG=0, no post processing to do 00906 * If LPPREG=1, process a header of a page not in a latch. 00907 * If LPPREG=2, process a header of a page in a latch. 00908 * If LPPREG=3, packet 1-24 stored 00909 * If LPPREG=4, there was a ROW or MAG hamming error 00910 * If LPPREG=5, there was a UNITS or TENS hamming error 00911 * If LPPREG=6, packet 26 received and PDC triplets stored 00912 * If LPPREG=7, packet 8/30 format 2 00913 * If LPPREG=8, process header in browse mode 00914 * If LPPREG=9, packet 8/30 format 1 00915 * If LPPREG=10, process BTT line with error 00916 * If LPPREG=11, packet 24 received 00917 *----------------------------------------------------------------------* 00918 **** HFLGS, *HARD FLAGS (!!! NOT RESET BY SRST!!!) 00919 * ----------------------------------------------------------------- 00920 * | | | | | | | | | 00921 * ----------------------------------------------------------------- 00922 *----------------------------------------------------------------------* 00923 **** MASK, *TEMPORARY MASK FOR BTT AND SUB-PAGE CHECKS 00924 * ----------------------------------------------------------------- 00925 * | | | | |BTTM |MSP | 00926 * ----------------------------------------------------------------- 00927 .EQU BTTM, >08; *BTT MASK BIT FOR SUB-PAGE CHECK CODE 00928 *EQU MSP, >07; *SUB-PAGE LATCH MARKER FIELD (SEE SPREGx) 00929 *----------------------------------------------------------------------* 00930 **** ****, * 00931 * ----------------------------------------------------------------- 00932 * | | | | | | | | | 00933 * ----------------------------------------------------------------- 00934 *EQU 00935 *----------------------------------------------------------------------* 00936 *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++* 00937 * 00938 * MICROCODE ADDRESS EQUATES 00939 * 00940 *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++* 00941 * 00942 .EQU HRST0, >000; * Harware reset, must be >000 00943 * 00944 .EQU I30Y, >010; *CASE ROW-24 00945 .EQU I31, >011; * 00946 .EQU I32, >012; * 00947 .EQU I33, >013; * 00948 .EQU I34, >014; * 00949 .EQU I35, >015; * 00950 *EQU >016; *UNUSED 00951 .EQU I37, >017; 00952 * 00953 .EQU DR10Y, >018; *CASE 00954 .EQU DR11, >019; * 00955 .EQU DR12, >01A; * 00956 * 00957 .EQU HD20Y, >020; *CASE PCL 00958 .EQU HD21, >021; * 00959 .EQU HD22, >022; * 00960 .EQU HD23, >023; * 00961 .EQU HD24, >024; * 00962 .EQU HD25, >025; * 00963 .EQU HD26, >026; * 00964 .EQU HD27, >027; * 00965 * 00966 .EQU CGB5Y, >030; *RETURN FROM WAIT 00967 .EQU BSD7, >031; * 00968 .EQU BSD9, >032; * 00969 .EQU BSD71B, >033; * 00970 .EQU PLP45, >034; * 00971 .EQU PLP55, >035; * 00972 .EQU PLP24B, >036; * 00973 .EQU VPS006, >037; * 00974 .EQU VPS014, >038; * 00975 * 00976 .EQU CGAXX.0, >040; *CASE 00977 .EQU CGAXX.1, >041; * 00978 .EQU CGAXX.2, >042; * 00979 .EQU CGAXX.3, >043; * 00980 .EQU CGAXX.4, >044; * 00981 .EQU CGAXX.5, >045; * 00982 .EQU CGAXX.6, >046; * 00983 .EQU CGAXX.7, >047; * 00984 * 00985 .EQU PND62Y, >050; *CASE RETURN FROM PND50T 00986 .EQU GAP51, >051; * 00987 .EQU GAP310, >052; * 00988 *EQU CMPE55T, >053; *(ACTUALLY EXITS BEFORE CASE) 00989 * 00990 .EQU CKR200Y, >060; *CASE RETURN FROM GFL0 00991 .EQU IKR20, >061; * 00992 .EQU FPFS210, >062; * 00993 .EQU GAP62B, >063; * 00994 * 00995 .EQU PND80Y, >070; *CASE RETURN FROM PND72 00996 .EQU GAP342, >071; * 00997 * 00998 .EQU SVDP10Y, >080; *CASE UPD+C8YET 00999 .EQU SVDP11, >081; * 01000 .EQU SVDP12, >082; * 01001 .EQU SVDP13, >083; * 01002 * 01003 .EQU SVDP20Y, >090; *CASE SCREEN 01004 .EQU SVDP21, >091; * 01005 .EQU SVDP22, >092; * 01006 .EQU SVDP23, >093; * 01007 * 01008 .EQU VPP500Y, >0A0; *CASE RETURN FROM CBR0 01009 .EQU FPFS410, >0A1; * 01010 .EQU FPFS430, >0A2; * 01011 * 01012 .EQU PLP20Y, >0B0; *CASE LINK IN PLP CODE 01013 .EQU PLP21, >0B1; * 01014 .EQU PLP22, >0B2; * 01015 .EQU PLP23, >0B3; * 01016 .EQU PLP24, >0B4; * 01017 .EQU PLP25, >0B5; * 01018 .EQU PLP26, >0B6; * 01019 * 01020 .EQU RC40Y, >0C0; *CASE RETURN FROM POINT0F 01021 .EQU RC60A, >0C1; * 01022 * 01023 .EQU SMENM7Y, >0D0; *CASE RETURN FROM CSCN 01024 .EQU DI100, >0D1; * 01025 .EQU INPCM14E, >0D2; * 01026 .EQU ROW10, >0D3; * 01027 .EQU CHNG3, >0D4; * 01028 .EQU CHNG4, >0D5; * 01029 .EQU CHNG2A, >0D6; * 01030 .EQU CHNG2B, >0D7; * 01031 * 01032 .EQU VPP215Y, >0E0; *CASE RETURN FROM MASK0 01033 .EQU LPP20, >0E1; * 01034 .EQU LPP110, >0E2; * 01035 * 01036 .EQU RC60Y, >0F0; *CASE RMODE 01037 .EQU RC61, >0F1; * 01038 .EQU RC62, >0F2; * 01039 .EQU RC63, >0F3; * 01040 .EQU RC64, >0F4; * 01041 .EQU RC65, >0F5; * 01042 .EQU RC66, >0F6; * 01043 .EQU RC67, >0F7; * 01044 * 01045 .EQU PND53.0, >100; *CASE 01046 .EQU PND53.1, >101; * 01047 .EQU PND53.2, >102; * 01048 .EQU PND53.3, >103; * 01049 * 01050 .EQU PND54A.0, >110; *CASE 01051 .EQU PND54A.1, >111; * 01052 .EQU PND54A.2, >112; * 01053 .EQU PND54A.3, >113; * 01054 .EQU PND54A.4, >114; * 01055 .EQU PND54A.5, >115; * 01056 .EQU PND54A.6, >116; * 01057 .EQU PND54A.7, >117; * 01058 * 01059 .EQU PND54B.0, >120; *CASE 01060 .EQU PND54B.1, >121; * 01061 .EQU PND54B.2, >122; * 01062 .EQU PND54B.3, >123; * 01063 .EQU PND54B.4, >124; * 01064 .EQU PND54B.5, >125; * 01065 .EQU PND54B.6, >126; * 01066 .EQU PND54B.7, >127; * 01067 * 01068 .EQU PND54C.0, >130; *CASE 01069 .EQU PND54C.1, >131; * 01070 .EQU PND54C.2, >132; * 01071 .EQU PND54C.3, >133; * 01072 .EQU PND54C.4, >134; * 01073 .EQU PND54C.5, >135; * 01074 .EQU PND54C.6, >136; * 01075 .EQU PND54C.7, >137; * 01076 * 01077 .EQU PND54D.0, >140; *CASE 01078 .EQU PND54D.1, >141; * 01079 .EQU PND54D.2, >142; * 01080 .EQU PND54D.3, >143; * 01081 .EQU PND54D.4, >144; * 01082 .EQU PND54D.5, >145; * 01083 .EQU PND54D.6, >146; * 01084 .EQU PND54D.7, >147; * 01085 * 01086 .EQU DI0XY, >200; *CASE 01087 .EQU DI1X, >201; * 01088 .EQU DI2X, >202; * 01089 .EQU DI3X, >203; * 01090 .EQU DI4X, >204; * 01091 .EQU DI5X, >205; * 01092 .EQU DI6X, >206; * 01093 .EQU DI7X, >207; * 01094 * 01095 .EQU GFP20Y, >208; *CASE 01096 .EQU GFP21, >209; * 01097 .EQU GFP22, >20A; * 01098 .EQU GFP23, >20B; * 01099 * 01100 .EQU DI00Y, >210; *CASE 01101 .EQU DI01, >211; * 01102 .EQU DI02, >212; * 01103 .EQU DI03, >213; * 01104 .EQU DI04, >214; * 01105 .EQU DI05, >215; * 01106 .EQU DI06, >216; * 01107 .EQU DI07, >217; * 01108 .EQU DI08, >218; * 01109 .EQU DI09, >219; * 01110 .EQU DI0A, >21A; * 01111 .EQU DI0B, >21B; * 01112 .EQU DI0C, >21C; * 01113 .EQU DI0D, >21D; * 01114 .EQU DI0E, >21E; * 01115 .EQU DI0F, >21F; * 01116 * 01117 .EQU DI10Y, >220; *CASE 01118 .EQU DI11, >221; * 01119 .EQU DI12, >222; * 01120 .EQU DI13, >223; * 01121 .EQU DI14, >224; * 01122 .EQU DI15, >225; * 01123 .EQU DI16, >226; * 01124 .EQU DI17, >227; * 01125 .EQU DI18, >228; * 01126 .EQU DI19, >229; * 01127 .EQU DI1A, >22A; * 01128 .EQU DI1B, >22B; * 01129 .EQU DI1C, >22C; * 01130 .EQU DI1D, >22D; * 01131 .EQU DI1E, >22E; * 01132 .EQU DI1F, >22F; * 01133 * 01134 .EQU CKR30Y, >230; *CASE 01135 .EQU CKR31, >231; * 01136 .EQU CKR32, >232; * 01137 .EQU CKR33, >233; * 01138 * 01139 .EQU DIG10Y, >238; *CASE PAGE ENTRY STATE 01140 .EQU DIG11, >239; * 01141 .EQU DIG12, >23A; * 01142 *EQU >23B; * 01143 .EQU DIG14, >23C; * 01144 .EQU DIG15, >23D; * 01145 .EQU DIG16, >23E; * 01146 .EQU DIG17, >23F; * 01147 * 01148 .EQU DI40Y, >240; *CASE 01149 .EQU DI41, >241; * 01150 .EQU DI42, >242; * 01151 .EQU DI43, >243; * 01152 .EQU DI44, >244; * 01153 .EQU DI45, >245; * 01154 .EQU DI46, >246; * 01155 .EQU DI47, >247; * 01156 .EQU DI48, >248; * 01157 .EQU DI49, >249; * 01158 .EQU DI4A, >24A; * 01159 .EQU DI4B, >24B; * 01160 .EQU DI4C, >24C; * 01161 .EQU DI4D, >24D; * 01162 .EQU DI4E, >24E; * 01163 .EQU DI4F, >24F; * 01164 * 01165 .EQU DI70Y, >250; *CASE 01166 .EQU DI71, >251; * 01167 .EQU DI72, >252; * 01168 .EQU DI73, >253; * 01169 .EQU DI74, >254; * 01170 .EQU DI75, >255; * 01171 .EQU DI76, >256; * 01172 .EQU DI77, >257; * 01173 .EQU DI78, >258; * 01174 .EQU DI79, >259; * 01175 .EQU DI7A, >25A; * 01176 .EQU DI7B, >25B; * 01177 .EQU DI7C, >25C; * 01178 .EQU DI7D, >25D; * 01179 .EQU DI7E, >25E; * 01180 .EQU DI7F, >25F; * 01181 * 01182 .EQU DI60Y, >260; *CASE 01183 .EQU DI61, >261; * 01184 .EQU DI62, >262; * 01185 .EQU DI63, >263; * 01186 .EQU DI64, >264; * 01187 .EQU DI65, >265; * 01188 .EQU DI66, >266; * 01189 .EQU DI67, >267; * 01190 * 01191 .EQU FPFS60Y, >270; *CASE RETURN FROM GFP0T 01192 .EQU GAP63B, >271; * 01193 .EQU CKR300, >272; * 01194 * 01195 .EQU SST2Y, >290; *CASE RETURN FROM PIL0 01196 .EQU VPP254, >291; * 01197 .EQU VPP370, >292; * 01198 .EQU FPFS333, >293; * 01199 .EQU GAP63E, >294; * 01200 * 01201 .EQU SST5Y, >298; *CASE RETURN FROM INLA0 01202 .EQU VPP263, >299; * 01203 *EQU >29A; * 01204 *EQU >29B; *DO NOT USE! (RETURN=3 EXITS PXTOLA CODE) 01205 * 01206 .EQU FPFS30Y, >2AC; *CASE 01207 .EQU FPFS31, >2AD; * 01208 .EQU FPFS32, >2AE; * 01209 .EQU FPFS33, >2AF; * 01210 * 01211 .EQU FPFS50Y, >2B4; *CASE 01212 .EQU FPFS51, >2B5; * 01213 .EQU FPFS52, >2B6; * 01214 .EQU FPFS53, >2B7; * 01215 * 01216 .EQU SPLM22Y, >2C0; *CASE RETURN FROM CSP0 01217 .EQU SPLM42, >2C1; * 01218 * 01219 .EQU DIG30Y, >2D8; *CASE RETURN FROM PPB0 01220 *EQU >2D9; * 01221 .EQU DIP2, >2DA; * 01222 .EQU LPP30, >2DB; * 01223 .EQU CKR2, >2DC; * 01224 .EQU CKR210, >2DD; * 01225 .EQU IKR10, >2DE; * 01226 * 01227 .EQU DIP8Y.0, >2E0; *CASE 01228 .EQU DIP8Y.1, >2E1; * 01229 .EQU DIP8Y.2, >2E2; * 01230 .EQU DIP8Y.3, >2E3; * 01231 * 01232 .EQU SAT20Y, >2E8; *CASE 01233 .EQU SAT21, >2E9; * 01234 .EQU SAT22, >2EA; * 01235 .EQU SAT23, >2EB; * 01236 * 01237 .EQU EXP10Y, >348; *CASE UEXT+UEXB 01238 .EQU EXP11, >349; * 01239 .EQU EXP12, >34A; * 01240 .EQU EXP13, >34B; * 01241 * 01242 .EQU LPP10Y, >370; *CASE LPPREG 01243 .EQU LPP11, >371; * 01244 .EQU LPP12, >372; * 01245 .EQU LPP13, >373; * 01246 .EQU LPP14, >374; * 01247 .EQU LPP15, >375; * 01248 .EQU LPP16, >376; * 01249 .EQU LPP17, >377; * 01250 .EQU LPP18, >378; * 01251 .EQU LPP19, >379; * 01252 .EQU LPP1A, >37A; * 01253 * 01254 .EQU DI30Y, >3B0; *CASE 01255 .EQU DI31, >3B1; * 01256 .EQU DI32, >3B2; * 01257 .EQU DI33, >3B3; * 01258 .EQU DI34, >3B4; * 01259 .EQU DI35, >3B5; * 01260 .EQU DI36, >3B6; * 01261 .EQU DI37, >3B7; * 01262 .EQU DI38, >3B8; * 01263 .EQU DI39, >3B9; * 01264 .EQU DI3A, >3BA; * 01265 .EQU DI3B, >3BB; * 01266 .EQU DI3C, >3BC; * 01267 .EQU DI3D, >3BD; * 01268 .EQU DI3E, >3BE; * 01269 .EQU DI3F, >3BF; * 01270 * 01271 .EQU VPP250Y, >3F0; *CASE RETURN FROM DPTP 01272 *EQU >3F1; * 01273 * 01274 .EQU PND30Y, >410; *CASE 01275 .EQU PND31, >411; * 01276 .EQU PND32, >412; * 01277 .EQU PND33, >413; * 01278 .EQU PND34, >414; * 01279 .EQU PND35, >415; * 01280 .EQU PND36, >416; * 01281 .EQU PND37, >417; * 01282 .EQU PND38, >418; * 01283 * 01284 .EQU SPLM0.0, >430; * CASE return from FSP0T 01285 .EQU DIP30.1, >431; * 01286 .EQU TCJVPP05.2, >432; * 01287 * 01288 .EQU DIP40Y, >440; *CASE RETURN FROM DISP0 01289 .EQU SPLM110, >441; * 01290 .EQU SPLM300, >442; * 01291 .EQU SPLM400, >443; * 01292 * 01293 .EQU TCJVPP08.0, >450; * Case 01294 .EQU TCJVPP08.1, >451; * 01295 .EQU TCJVPP08.2, >452; * 01296 .EQU TCJVPP08.3, >453; * 01297 * 01298 .EQU TCJVPP63.0, >480; * CASE 01299 .EQU TCJVPP63.1, >481; * 01300 .EQU TCJVPP63.2, >482; * 01301 .EQU TCJVPP63.3, >483; * 01302 * 01303 .EQU PPAGE2Y, >498; *CASE RETURN FROM PPDP0 01304 .EQU PMPE4, >499; * 01305 .EQU SPMOD5, >49A; * 01306 .EQU SPCM6, >49B; * 01307 .EQU DIP1B, >49C; * 01308 * 01309 .EQU GFP50Y, >540; *CASE 01310 .EQU GFP51, >541; * 01311 .EQU GFP52, >542; * 01312 .EQU GFP53, >543; * 01313 * 01314 .EQU GNP0Y, >544; *CASE 01315 *EQU XXXX, >545; * 01316 .EQU GAP62, >546; * 01317 .EQU GAP63, >547; * 01318 * 01319 .EQU CGAZZ.0, >548; *CASE 01320 .EQU CGAZZ.1, >549; * 01321 .EQU CGAZZ.2, >54A; * 01322 .EQU CGAZZ.3, >54B; * 01323 .EQU CGAZZ.4, >54C; * 01324 .EQU CGAZZ.5, >54D; * 01325 .EQU CGAZZ.6, >54E; * 01326 .EQU CGAZZ.7, >54F; * 01327 * 01328 .EQU BSD40Y, >588; *CASE RETURN FROM RDD AND RPD 01329 .EQU BSD30, >589; * 01330 .EQU BSD20, >58A; * 01331 .EQU BSD50, >58B; * 01332 .EQU BSD60, >58C; * 01333 * 01334 .EQU SVDP203.0, >590; *CASE 01335 .EQU SVDP203.1, >591; * 01336 .EQU SVDP203.2, >592; * 01337 .EQU SVDP203.3, >593; * 01338 * 01339 .EQU SVDP204.0, >5A0; *CASE 01340 .EQU SVDP204.1, >5A1; * 01341 .EQU SVDP204.2, >5A2; * 01342 .EQU SVDP204.3, >5A3; * 01343 .EQU SVDP204.4, >5A4; * 01344 .EQU SVDP204.5, >5A5; * 01345 .EQU SVDP204.6, >5A6; * 01346 .EQU SVDP204.7, >5A7; * 01347 * 01348 .EQU SVDP206.0, >5B0; *CASE 01349 .EQU SVDP206.1, >5B1; * 01350 .EQU SVDP206.2, >5B2; * 01351 .EQU SVDP206.3, >5B3; * 01352 .EQU SVDP206.4, >5B4; * 01353 .EQU SVDP206.5, >5B5; * 01354 .EQU SVDP206.6, >5B6; * 01355 .EQU SVDP206.7, >5B7; * 01356 * 01357 .EQU SVDP207.0, >5C0; *CASE 01358 .EQU SVDP207.1, >5C1; * 01359 .EQU SVDP207.2, >5C2; * 01360 .EQU SVDP207.3, >5C3; * 01361 .EQU SVDP207.4, >5C4; * 01362 .EQU SVDP207.5, >5C5; * 01363 .EQU SVDP207.6, >5C6; * 01364 .EQU SVDP207.7, >5C7; * 01365 * 01366 .EQU SVDP208.0, >5D0; *CASE 01367 .EQU SVDP208.1, >5D1; * 01368 .EQU SVDP208.2, >5D2; * 01369 .EQU SVDP208.3, >5D3; * 01370 .EQU SVDP208.4, >5D4; * 01371 .EQU SVDP208.5, >5D5; * 01372 .EQU SVDP208.6, >5D6; * 01373 .EQU SVDP208.7, >5D7; * 01374 * 01375 .EQU GAP90Y, >5E0; *CASE 01376 .EQU GAP91, >5E1; * 01377 .EQU GAP92, >5E2; * 01378 .EQU GAP93, >5E3; * 01379 * 01380 .EQU GAP70Y, >5E8; *CASE 01381 .EQU GAP71, >5E9; * 01382 .EQU GAP72, >5EA; * 01383 .EQU GAP73, >5EB; * 01384 * 01385 .EQU CHNG50Y, >620; *CASE RETURN FROM INPCM0 01386 .EQU SPCM1, >621; * 01387 .EQU TPP0, >622; * 01388 .EQU PPP100, >623; * 01389 * 01390 .EQU INPCM30Y, >630; *CASE PAGE CAPTURE MODE 01391 .EQU INPCM31, >631; * 01392 .EQU INPCM32, >632; * 01393 .EQU INPCM33, >633; * 01394 * 01395 .EQU TPP30Y, >648; *CASE 01396 .EQU TPP31, >649; *? 01397 .EQU TPP32, >64A; *? 01398 .EQU TPP33, >64B; *? 01399 * 01400 .EQU TPP70Y, >678; *CASE COUNT 01401 .EQU TPP71, >679; * 01402 .EQU TPP72, >67A; * 01403 .EQU TPP73, >67B; * 01404 * 01405 .EQU TPP92Y, >694; *CASE 01406 .EQU TPP93, >695; * 01407 .EQU TPP94, >696; * 01408 * 01409 .EQU TPP50Y, >6B0; *CASE RETURN FROM INSPRG0 01410 .EQU CHNG59A, >6B1; * 01411 .EQU CMPE5, >6B2; * 01412 .EQU INPCM80, >6B3; * 01413 * 01414 .EQU VPP360Y, >6C0; *CASE 01415 .EQU VPP361, >6C1; * 01416 .EQU VPP362, >6C2; * 01417 * 01418 .EQU DI50Y, >6F0; *CASE 01419 .EQU DI51, >6F1; * 01420 .EQU DI52, >6F2; * 01421 .EQU DI53, >6F3; * 01422 .EQU DI54, >6F4; * 01423 .EQU DI55, >6F5; * 01424 .EQU DI56, >6F6; * 01425 .EQU DI57, >6F7; * 01426 .EQU DI58, >6F8; * 01427 .EQU DI59, >6F9; * 01428 .EQU DI5A, >6FA; * 01429 .EQU DI5B, >6FB; * 01430 .EQU DI5C, >6FC; * 01431 .EQU DI5D, >6FD; * 01432 .EQU DI5E, >6FE; * 01433 .EQU DI5F, >6FF; * 01434 * 01435 .EQU DIP20Y, >730; *CASE RETURN FROM INTPN0 01436 .EQU FPFS332, >731; * 01437 .EQU GAP133G, >732; * 01438 .EQU IKR50, >733; * 01439 .EQU GAP160, >734; * 01440 * 01441 .EQU PNTIN46Y, >740; *CASE RETURN FROM DBB0 01442 .EQU SBT33, >741; * 01443 * 01444 .EQU DBB10Y, >750; *CASE ON BTT CODE 01445 .EQU DBB11, >751; * 01446 .EQU DBB12, >752; * 01447 .EQU DBB13, >753; * 01448 .EQU DBB14, >754; * 01449 .EQU DBB15, >755; * 01450 .EQU DBB16, >756; * 01451 .EQU DBB17, >757; * 01452 .EQU DBB18, >758; * 01453 .EQU DBB19, >759; * 01454 .EQU DBB1A, >75A; * 01455 .EQU DBB1B, >75B; * 01456 * 01457 .EQU FSP20Y.0, >760; *CASE 01458 .EQU FSP20Y.1, >761; * 01459 .EQU FSP20Y.2, >762; * 01460 .EQU FSP20Y.3, >763; * 01461 * 01462 .EQU FPFS110Y, >768; *CASE 01463 .EQU FPFS111, >769; * 01464 .EQU FPFS112, >76A; * 01465 .EQU FPFS113, >76B; * 01466 * 01467 .EQU GAP134Y, >778; *CASE RETURN FROM SAT0 01468 .EQU GAP171, >779; * 01469 * 01470 .EQU GAP136Y, >780; *CASE RETURN FROM COP0 01471 .EQU GAP173, >781; * 01472 * 01473 .EQU GAP40Y, >788; *CASE PCM 01474 .EQU GAP41, >789; * 01475 .EQU GAP42, >78A; * 01476 .EQU GAP43, >78B; * 01477 * 01478 .EQU DIP4Y, >790; *CASE RETURN FROM PNTIN0 01479 .EQU FPFS320, >791; * 01480 .EQU CKR4, >792; * 01481 .EQU FPFS41, >793; * 01482 .EQU GAP132, >794; *NEW 01483 .EQU GAP122, >795; * 01484 .EQU GAP138, >796; * 01485 .EQU UPI7, >797; * 01486 .EQU FPFS105, >798; * 01487 .EQU CMPE40, >799; * 01488 .EQU IKR40, >79A; * 01489 * 01490 .EQU DIP18Y, >7A0; *CASE RETURN FROM SBT0 01491 .EQU FPFS331, >7A1; * 01492 .EQU GAP133A, >7A2; * 01493 .EQU INTPN0, >7A3; * 01494 .EQU GAP140, >7A4; * 01495 .EQU GAP133E, >7A5; * 01496 .EQU CKR62, >7A6; * 01497 .EQU CKR66, >7A7; * 01498 .EQU FPFS327, >7A8; * 01499 * 01500 .EQU PNTIN10Y.0, >7B0; *CASE 01501 .EQU PNTIN10Y.1, >7B1; * 01502 .EQU PNTIN10Y.2, >7B2; * 01503 .EQU PNTIN10Y.3, >7B3; * 01504 .EQU PNTIN10Y.4, >7B4; * 01505 .EQU PNTIN10Y.5, >7B5; * 01506 .EQU PNTIN10Y.6, >7B6; * 01507 .EQU PNTIN10Y.7, >7B7; * 01508 * 01509 .EQU PNTIN30Y.0, >7C0; *CASE 01510 .EQU PNTIN30Y.1, >7C1; * 01511 .EQU PNTIN30Y.2, >7C2; * 01512 .EQU PNTIN30Y.3, >7C3; * 01513 .EQU PNTIN30Y.4, >7C4; * 01514 .EQU PNTIN30Y.5, >7C5; * 01515 .EQU PNTIN30Y.6, >7C6; * 01516 .EQU PNTIN30Y.7, >7C7; * 01517 .EQU PNTIN30Y.8, >7C8; * 01518 .EQU PNTIN30Y.9, >7C9; * 01519 * 01520 .EQU TCJVPP13.0, >7D0; *CASE 01521 .EQU TCJVPP13.1, >7D1; * 01522 .EQU TCJVPP13.2, >7D2; * 01523 .EQU TCJVPP13.3, >7D3; * 01524 .EQU TCJVPP13.4, >7D4; * 01525 .EQU TCJVPP13.5, >7D5; * 01526 .EQU TCJVPP13.6, >7D6; * 01527 .EQU TCJVPP13.7, >7D7; * 01528 * 01529 ************************************************************************ 01530 * section 1: poll for event * 01531 ************************************************************************ 01532 * MUST HAVE HAD A CBRDY! 01533 ***CHECK RC ONCE BEFORE POLLING TEXT 01534 .ORG PL0, *AR=POLREG 01535 MA(POLREG), RAM>AR, 01536 JRC(PL1F,PL1T); ----- ----- 7F7 0002A002 10000000 ----- 01537 .ORG PL1F, * 01538 JUMP(ST0F); ----- ----- 002 00000001 00000000 ----- 01539 .ORG PL1T, *Y=WAIT 01540 *RC RDY 01541 AR>A, B(WAIT), AND, 01542 JUMP(PL2); ----- ----- 003 00000016 00400810 ----- 01543 .ORG PL2, *WAIT? 01544 JZ(PL3F,PL3T); ----- ----- 016 00002004 00000000 ----- 01545 .ORG PL3F, *WAIT, DELAYING EXECUTION UNTIL END OF VBI 01546 JUMP(ST0F); ----- ----- 004 00000001 00000000 ----- 01547 .ORG PL3T, *NO WAIT 01548 JUMP(RC0T); ----- ----- 005 0000000F 00000000 ----- 01549 * 01550 *ST0F: MAIN POLLING LOOP 01551 * 01552 * I have avoided writing to scratch RAM in the sections of code 01553 * which are repeated continually because of unreliability 01554 * problems with the scratch RAM on the breadboards. 01555 * 01556 ***DO NOT CHECK RC UNLESS VBI=0 01557 .ORG ST0F, *AR=POLREG 01558 * 01559 * TCJ Aug 93, 01560 * The channel change command occasionaly locked up the I2C bus. 01561 * This is because a Line Ready was generated during the command 01562 * and not cleared before resuming teletext processing. 01563 * 01564 CBRDY, 01565 JUMP(SBJ1); ----- ----- 001 0000001B 00002000 ----- 01566 * 01567 .ORG SBJ1, 01568 JUMP(SBJ2F); ----- ----- 01B 0000000A 00000000 ----- 01569 * 01570 .ORG SBJ2F, 01571 *TELETEXT LINE RCVD? 01572 MA(POLREG), RAM>AR, 01573 A(%01000000), RCS>B, AND, 01574 JLINE(ST1F,VPSCHK0T); ----- ----- 00A 00026006 1040080B ----- 01575 * 01576 .ORG ST1F, *VBI? 01577 *Y=VBIFLG 01578 AR>A, B(VBIFLG), AND, 01579 JZ(ST2F,ST2T); ----- ----- 006 00002008 00800810 ----- 01580 .ORG ST2F, *IN VBI, VBIFLG? 01581 *TCJ JZ(ST0F,ST0T); 01582 JZ(SBJ2F,ST0T); ----- ----- 008 0000200A 00000000 ----- 01583 * 01584 .ORG ST0T, *VBI RISING EDGE JUST DETECTED 01585 *VBIFLG=1 01586 MA(POLREG), 01587 AR>A, B(VBIFLG), OR, 01588 Y>RAM, 01589 *TCJ JUMP(ST0F); 01590 JUMP(SBJ2F); ----- ----- 00B 0000000A 10801110 ----- 01591 * 01592 .ORG ST2T, *OUT OF VBI 01593 *Y=WAIT 01594 AR>A, B(WAIT), AND, 01595 JUMP(ST2A); ----- ----- 009 00000039 00400810 ----- 01596 .ORG ST2A, *INSTRUCTION WAITING? 01597 *BR=INSTRUCTION 01598 MA(LSTINS), RAM>BR, 01599 JZ(ST2BF,ST2BT); ----- ----- 039 0001200C 2E000000 ----- 01600 .ORG ST2BF, *GO AND COMPLETE DELAYED INSTRUCTION 01601 *WAIT=0 01602 MA(POLREG), 01603 AR>A, B(>FF-WAIT), AND, 01604 Y>RAM, 01605 JUMP(DI0); ----- ----- 00C 00000053 10BF0910 ----- 01606 .ORG ST2BT, *NO, RC RDY? 01607 *Y=VBIFLG 01608 AR>A, B(VBIFLG), AND, 01609 JRC(ST3F,RC0T); ----- ----- 00D 0000A00E 00800810 ----- 01610 .ORG ST3F, *VBIFLG? 01611 *Y=FIELD TOGGLE 01612 A(%00000010), PLL>B, AND, 01613 JZ(ST3AF,ST3AT); ----- ----- 00E 0000201C 0002080E ----- 01614 .ORG ST3AF, *FALLING EDGE OF VBI DETECTED 01615 *JUMP TO VBI POST PROCESSING 01616 *VBITF=1 01617 MA(POLREG), 01618 AR>A, B(VBITF), OR, 01619 Y>RAM, Y>AR, 01620 JUMP(VPP0); ----- ----- 01C 002200A3 10201110 ----- 01621 .ORG ST3AT, *VBIFLG WAS 0 01622 *Y=LFTOG 01623 *B=STSWD1 01624 MA(STSWD1), RAM>BR, 01625 AR>A, B(LFTOG), AND, 01626 JZ(ST4F,ST4T); ----- ----- 01D 0001201E 14100810 ----- 01627 *FIELD TOGGLE LOW 01628 .ORG ST4T, *FIELD TOGGLE=0 01629 *LFTOG? 01630 *Y=VBITF 01631 AR>A, B(VBITF), AND, 01632 JZ(ST5F,ST5T); ----- ----- 01F 00002028 00200810 ----- 01633 .ORG ST5T, *NO CHANGE IN FIELD TOGGLE 01634 *TCJ JUMP(ST0F); 01635 JUMP(SBJ2F); ----- ----- 029 0000000A 00000000 ----- 01636 * 01637 .ORG ST5F, *FIELD TOGGLE JUST GONE LOW, VBITF? 01638 *LFTOG=0 01639 MA(POLREG), 01640 AR>A, B(>FF-LFTOG), AND, 01641 Y>RAM, Y>AR, 01642 JZ(ST7F,ST7T); ----- ----- 028 0022202A 10EF0910 ----- 01643 *FIELD TOGGLE HIGH 01644 .ORG ST4F, *FIELD TOGGLE=1 01645 *LFTOG? 01646 *Y=VBITF 01647 AR>A, B(VBITF), AND, 01648 JZ(ST6F,ST6T); ----- ----- 01E 0000202C 00200810 ----- 01649 .ORG ST6F, *NO CHANGE IN FIELD TOGGLE 01650 *TCJ JUMP(ST0F); 01651 JUMP(SBJ2F); ----- ----- 02C 0000000A 00000000 ----- 01652 * 01653 .ORG ST6T, *FIELD TOGGLE JUST GONE HIGH, VBITF? 01654 *LFTOG=1 01655 MA(POLREG), 01656 AR>A, B(LFTOG), OR, 01657 Y>RAM, Y>AR, 01658 JZ(ST7F,ST7T); ----- ----- 02D 0022202A 10101110 ----- 01659 *FIELD LOCKED 01660 .ORG ST7F, *FLOCK=1 01661 MA(STSWD1), 01662 A(FLOCK), BR>B, OR, 01663 Y>RAM, 01664 JUMP(ST8); ----- ----- 02A 000000B7 14201101 ----- 01665 .ORG ST8, *VBITF=0 01666 MA(POLREG), 01667 AR>A, B(>FF-VBITF), AND, 01668 Y>RAM, 01669 *TCJ JUMP(ST0F); 01670 JUMP(SBJ2F); ----- ----- 0B7 0000000A 10DF0910 ----- 01671 * 01672 *FIELD NOT LOCKED 01673 .ORG ST7T, *FLOCK=0 01674 *JUMP TO VBI POST PROCESSING 01675 MA(STSWD1), 01676 A(>FF-FLOCK), BR>B, AND, 01677 Y>RAM, 01678 JUMP(VPP0); ----- ----- 02B 000000A3 14DF0901 ----- 01679 * 01680 ************************************************************************ 01681 * section 2a: recieve VPS line * 01682 ************************************************************************ 01683 * 01684 * TCJ Feb 94, 01685 * 01686 * VPS reception 01687 * First check the MSB of the byte in the front end when we 01688 * receive a line ready. If this bit is a one we have VPS 01689 * otherwise we have TEXT. 01690 * 01691 .ORG VPSCHK0T, * Y = byte in front end 01692 A(>80), DATA>B, AND, 01693 JUMP(VPSCHK1); ----- ----- 007 000000E3 00800805 ----- 01694 * 01695 .ORG VPSCHK1, * MSB of byte == 1 ? 01696 * BR = system 2 flags 01697 MA(SYS2), RAM>BR, 01698 JZ(VPS000F,G1T); ----- ----- 0E3 0001202E 09000000 ----- 01699 * 01700 .ORG VPS000F, * AR = Extension packet flags 01701 * set the Iv'e seen VPS flag 01702 CBRDY, 01703 A(TVPS), BR>B, OR, 01704 MA(SYS2), Y>RAM, 01705 JUMP(VPS000A); ----- ----- 02E 0000023B 09103101 ----- 01706 * 01707 .ORG VPS000A, 01708 MA(EXPREG), RAM>AR, 01709 JUMP(VPS001); ----- ----- 23B 00020273 63000000 ----- 01710 * 01711 .ORG VPS001, * Y = VPS packet enable flag 01712 AR>A, B(VPS), AND, 01713 JUMP(VPS002); ----- ----- 273 00000295 00200810 ----- 01714 * 01715 .ORG VPS002, * Capturing VPS packet ? 01716 * AR = Row 20 01717 Y(20), Y>AR, 01718 JZ(VPS003F,VPS003T); ----- ----- 295 0022203A 00141000 ----- 01719 * 01720 .ORG VPS003T, * No, abort the line 01721 JUMP(ST0F); ----- ----- 03B 00000001 00000000 ----- 01722 * 01723 .ORG VPS003F, * PR = AR * 40, Row 20 Column 0 01724 * Fetch pointer to store 7 01725 MA(STOR7), RAM>AR, 01726 AR<<3>A, AR<<5>B, ADD, 01727 Y>PR, 01728 JUMP(VPS004A); ----- ----- 03A 000202D9 A7000059 ----- 01729 * 01730 .ORG VPS004A, * Point to store 7 01731 MA(RWL), 01732 ARHI>A, B(0), OR, 01733 Y>RAM, Y>IO, 01734 JUMP(VPS004B); ----- ----- 2D9 000002DF 0B005120 ----- 01735 * 01736 .ORG VPS004B, * We need to wait for 4 bytes 01737 Y(4), 01738 Y>AR, 01739 JUMP(VPS005); ----- ----- 2DF 0022037B 00041000 ----- 01740 * 01741 .ORG VPS005, * Return to VPS006 01742 MA(RETURN), 01743 Y(7), 01744 Y>RAM, 01745 JUMP(WAIT0F); ----- ----- 37B 0000064E 7C071100 ----- 01746 * 01747 .ORG VPS006, * Read the packet count 01748 * Return from WAIT 01749 PR>MA, RVDP, 01750 JUMP(VPS007); ----- ----- 037 001003F1 00008000 ----- 01751 * 01752 .ORG VPS007, * Increment packet count 01753 * and write it back 01754 PR>MA, 01755 TPD>A, B(1), ADD, 01756 Y>DR, 01757 JBYTE(VPS008F,VPS008T); ----- ----- 3F1 0010903C 00010090 ----- 01758 * 01759 .ORG VPS008F, * Wait for the first VPS byte 01760 PR>BR, 01761 JBYTE(VPS008F,VPS008T); ----- ----- 03C 0041803C 00000000 ----- 01762 * 01763 .ORG VPS008T, * Increment PR pointer 01764 CBRDY, 01765 A(1), BR>B, ADD, 01766 Y>PR, 01767 JUMP(VPS009); ----- ----- 03D 00000419 80012001 ----- 01768 * 01769 .ORG VPS009, * Write first byte to RAM 01770 A(>30), DATA>B, OR, 01771 Y>DR, 01772 JUMP(VPS009A); ----- ----- 419 00001433 00301005 ----- 01773 * 01774 .ORG VPS009A, * A = VPS error count 01775 MA(VPSERR), RAM>AR, 01776 JN(VPS009BF,VPS009BT); ----- ----- 433 0002403E 0A000000 ----- 01777 * 01778 .ORG VPS009BT, 01779 MA(VPSERR), 01780 AR>A, B(1), ADD, 01781 Y>RAM, 01782 JUMP(VPS010F); ----- ----- 03F 00000048 0A010110 ----- 01783 * 01784 .ORG VPS009BF, 01785 JUMP(VPS010F); ----- ----- 03E 00000048 00000000 ----- 01786 * 01787 .ORG VPS010F, * Wait for the second VPS byte 01788 PR>BR, 01789 JBYTE(VPS010F,VPS010T); ----- ----- 048 00418048 00000000 ----- 01790 * 01791 .ORG VPS010T, * Increment PR pointer 01792 CBRDY, 01793 A(1), BR>B, ADD, 01794 Y>PR, 01795 JUMP(VPS011); ----- ----- 049 0000049D 80012001 ----- 01796 * 01797 .ORG VPS011, * Write second byte to RAM 01798 A(>30), DATA>B, OR, 01799 Y>DR, 01800 JUMP(VPS011A); ----- ----- 49D 00001545 00301005 ----- 01801 * 01802 .ORG VPS011A, * A = VPS error count 01803 MA(VPSERR), RAM>AR, 01804 JN(VPS011BF,VPS011BT); ----- ----- 545 0002404A 0A000000 ----- 01805 * 01806 .ORG VPS011BT, 01807 MA(VPSERR), 01808 AR>A, B(1), ADD, 01809 Y>RAM, 01810 JUMP(VPS012); ----- ----- 04B 0000058D 0A010110 ----- 01811 * 01812 .ORG VPS011BF, 01813 JUMP(VPS012); ----- ----- 04A 0000058D 00000000 ----- 01814 * 01815 .ORG VPS012, * Wait for next 10 bytes 01816 Y(10), Y>AR, 01817 JUMP(VPS013); ----- ----- 58D 00220697 000A1000 ----- 01818 * 01819 .ORG VPS013, * Return to VPS014 01820 * call WAIT routine 01821 MA(RETURN), 01822 Y(8), 01823 Y>RAM, 01824 JUMP(WAIT0F); ----- ----- 697 0000064E 7C081100 ----- 01825 * 01826 .ORG VPS014, * Return from WAIT 01827 * Receive 10 VPS bytes 01828 Y(10), Y>AR, 01829 JUMP(VPS015F); ----- ----- 038 0022004C 000A1000 ----- 01830 * 01831 .ORG VPS015F, * Wait for the next VPS byte 01832 PR>BR, 01833 JBYTE(VPS015F,VPS015T); ----- ----- 04C 0041804C 00000000 ----- 01834 * 01835 .ORG VPS015T, * Decrement loop count 01836 AR>A, B(-1), ADD, 01837 Y>AR, 01838 JUMP(VPS016); ----- ----- 04D 002206C3 00FF0010 ----- 01839 * 01840 .ORG VPS016, * Increment PR pointer 01841 * loop count == 0 ? 01842 CBRDY, 01843 A(1), BR>B, ADD, 01844 Y>PR, 01845 JZ(VPS017F,VPS017T); ----- ----- 6C3 0000204E 80012001 ----- 01846 * 01847 .ORG VPS017F, * Write next byte to RAM 01848 A(>30), DATA>B, OR, 01849 Y>DR, 01850 JUMP(VPS017A); ----- ----- 04E 000016E2 00301005 ----- 01851 * 01852 .ORG VPS017A, * A = VPS error count 01853 MA(VPSERR), RAM>BR, 01854 JN(VPS017BF,VPS017BT); ----- ----- 6E2 00014054 0A000000 ----- 01855 * 01856 .ORG VPS017BT, 01857 MA(VPSERR), 01858 A(1), BR>B, ADD, 01859 Y>RAM, 01860 JUMP(VPS015F); ----- ----- 055 0000004C 0A010101 ----- 01861 * 01862 .ORG VPS017BF, 01863 JUMP(VPS015F); ----- ----- 054 0000004C 00000000 ----- 01864 * 01865 .ORG VPS017T, * Write last byte to RAM 01866 A(>30), DATA>B, OR, 01867 Y>DR, 01868 PR>BR, 01869 JUMP(VPS018); ----- ----- 04F 004116E3 00301005 ----- 01870 * 01871 .ORG VPS018, * Skip over one byte 01872 MA(VPSERR), RAM>AR, 01873 A(2), BR>B, ADD, 01874 Y>PR, 01875 JUMP(VPS019); ----- ----- 6E3 000206E4 8A020001 ----- 01876 * 01877 .ORG VPS019, * Write MSNibble of error count 01878 ARHI>A, B(>30), OR, 01879 Y>DR, 01880 PR>BR, 01881 JUMP(VPS020); ----- ----- 6E4 004116E5 00301020 ----- 01882 * 01883 .ORG VPS020, * Increment write pointer 01884 A(1), BR>B, ADD, 01885 Y>PR, 01886 JUMP(VPS21); ----- ----- 6E5 000006E6 80010001 ----- 01887 * 01888 .ORG VPS21, * Write LSNibble of error count 01889 AR.0F>A, B(>30), OR, 01890 Y>DR, 01891 JUMP(ST0F); ----- ----- 6E6 00001001 003010C0 ----- 01892 * 01893 ************************************************************************ 01894 * section 2b: recieve teletext line * 01895 ************************************************************************ 01896 * 01897 .ORG G1T, *B=SYS1 01898 CBRDY, 01899 MA(SYS1), RAM>BR, 01900 JUMP(G2); ----- ----- 02F 000106E7 08002000 ----- 01901 .ORG G2, *Y=PCM-2 01902 A(-2), BRHI>B, ADD, 01903 JUMP(G3); ----- ----- 6E7 000006E8 00FE000C ----- 01904 .ORG G3, *FLOF? 01905 *LPPREG=3 01906 *SET DEFAULT LINE POST PROCESSING 01907 MA(LPPREG), 01908 Y(3), 01909 Y>RAM, 01910 JZ(G4F,G4T); ----- ----- 6E8 00002056 7E031100 ----- 01911 .ORG G4F, *NOT FLOF, WANT TO CAPTURE THE BTT 01912 *SET MARKER IN TEMPORARY MASK TO CHECK FOR BTT 01913 *BTTM=1 01914 MA(MASK), 01915 Y(BTTM), 01916 Y>RAM, 01917 JUMP(G5F); ----- ----- 056 00000058 73081100 ----- 01918 .ORG G4T, *FLOF MODE 01919 *DO NOT SET MARKER IN TEMPORARY MASK TO CHECK FOR BTT 01920 *BTTM=0 01921 MA(MASK), 01922 Y(0), 01923 Y>RAM, 01924 JUMP(G5F); ----- ----- 057 00000058 73001100 ----- 01925 .ORG G5F, *WAIT FOR MAGAZINE 01926 *B=RCM 01927 MA(RCM), RAM>BR, 01928 JBYTE(G5F,H1T); ----- ----- 058 00018058 28000000 ----- 01929 .ORG H1T, *Y=MAG 01930 CBRDY, 01931 A(0), HAM>B, ADD, 01932 JUMP(H2); ----- ----- 059 000806E9 00002007 ----- 01933 .ORG H2, *Y=TOFF AND AOFF, PTY? 01934 A(TOFF+AOFF), BR>B, AND, 01935 JN(H3F,H3T); ----- ----- 6E9 0000405A 00C00801 ----- 01936 .ORG H3T, *BAD MAG PTY 01937 *LPPREG=4 01938 MA(LPPREG), 01939 Y(4), 01940 Y>RAM, 01941 JUMP(LPP0); ----- ----- 05B 000006EA 7E041100 ----- 01942 .ORG H3F, *Y=MAG, A=MAG, TELETEXT ENABLED? 01943 *PTY OK 01944 A(7), HAM>B, AND, 01945 Y>AR, 01946 JZ(H4F,H4T); ----- ----- 05A 002A205C 00070807 ----- 01947 *TELETEXT DISABLED 01948 *WAIT FOR ROW, CHECK PARITY FOR THE ERROR COUNT AND EXIT 01949 .ORG H4F, *ROW RDY? 01950 JBYTE(HH5F,HH5T); ----- ----- 05C 0000805E 00000000 ----- 01951 .ORG HH5F, *ROW RDY? 01952 JBYTE(HH5F,HH5T); ----- ----- 05E 0000805E 00000000 ----- 01953 .ORG HH5T, *ROW RDY, Y=ROW 01954 CBRDY, 01955 A(0), HAM>B, OR, 01956 JUMP(HH6); ----- ----- 05F 000806EB 00003007 ----- 01957 .ORG HH6, *PTY OK? 01958 JN(HH7F,HH7T); ----- ----- 6EB 00004064 00000000 ----- 01959 .ORG HH7T, *BAD ROW PARITY 01960 *LPPREG=4 01961 MA(LPPREG), 01962 Y(4), 01963 Y>RAM, 01964 JUMP(LPP0); ----- ----- 065 000006EA 7E041100 ----- 01965 .ORG HH7F, *ROW PARITY OK 01966 *LPPREG=0 01967 MA(LPPREG), 01968 Y(0), 01969 Y>RAM, 01970 JUMP(LPP0); ----- ----- 064 000006EA 7E001100 ----- 01971 *TELETEXT ENABLED 01972 .ORG H4T, *RCM=MAG 01973 MA(RCM), 01974 AR.0F>A, BR.F0>B, ADD, 01975 Y>RAM, Y>IO, 01976 JUMP(H5); ----- ----- 05D 000006EC 280041C3 ----- 01977 .ORG H5, *P=INDEX TO MFx 01978 AR>A, B(MF0), ADD, 01979 Y>PR, 01980 JUMP(H6); ----- ----- 6EC 000006ED 80580010 ----- 01981 .ORG H6, *BR=MFx 01982 *Y=MAG-1 01983 PR>MA, RAM>BR, 01984 AR>A, B(-1), ADD, 01985 JUMP(H7); ----- ----- 6ED 001106EE 00FF0010 ----- 01986 .ORG H7, *A=MLP 01987 *BTT MAG? 01988 *UPDATE READ/WRITE LATCH 01989 *POINT TO MEMORY PAGE FOR LATCH POINTED TO BY 01990 *THE MLP FIELD IN THE MFx 01991 MA(RWL), 01992 A(MLP), BR>B, AND, 01993 Y>RAM, Y>IO, Y>AR, 01994 JZ(H8F,H8T); ----- ----- 6EE 00222066 0B074901 ----- 01995 .ORG H8F, *NOT BTT MAG, CLEAR BTTM 01996 MA(MASK), 01997 Y(0), 01998 Y>RAM, 01999 JUMP(H8T); ----- ----- 066 00000067 73001100 ----- 02000 .ORG H8T, *P=INDEX TO LAFx 02001 AR>A, B(LAF0), ADD, 02002 Y>PR, 02003 JUMP(H9); ----- ----- 067 000006EF 80400010 ----- 02004 .ORG H9, *MFR=MFx 02005 MA(MFR), 02006 A(0), BR>B, OR, 02007 Y>RAM, 02008 JUMP(H10); ----- ----- 6EF 00000700 36001101 ----- 02009 .ORG H10, *AR=LAFx 02010 PR>MA, RAM>AR, 02011 JUMP(H11); ----- ----- 700 00120701 00000000 ----- 02012 .ORG H11, *LAFR=LAFx 02013 MA(LAFR), 02014 AR>A, B(0), OR, 02015 Y>RAM, 02016 JBYTE(H12F,I1); ----- ----- 701 00008068 35001110 ----- 02017 .ORG H12F, *WAIT FOR ROW 02018 JBYTE(H12F,I1); ----- ----- 068 00008068 00000000 ----- 02019 .ORG I1, *AR=ROW, THISRW=ROW 02020 CBRDY, 02021 MA(THISRW), 02022 A(0), ROW>B, ADD, 02023 Y>AR, Y>RAM, 02024 JUMP(I2); ----- ----- 069 002E0702 7D002105 ----- 02025 .ORG I2, *P=ROW*40, PTY? 02026 AR<<3>A, AR<<5>B, ADD, 02027 Y>PR, 02028 JN(I3F,I3T); ----- ----- 702 0000406A 80000059 ----- 02029 .ORG I3T, *BAD ROW PTY 02030 *LPPREG=4 02031 MA(LPPREG), 02032 Y(4), 02033 Y>RAM, 02034 JUMP(LPP0); ----- ----- 06B 000006EA 7E041100 ----- 02035 .ORG I3F, *PTY OK, Y=ROW-30, B=RCM, ROW0? 02036 *GET MAG FLAG RECEIVED 02037 MA(MFR), RAM>BR, 02038 A(-30), ROW>B, ADD, 02039 JZ(I4F,HD0); ----- ----- 06A 000D206C 36E20005 ----- 02040 .ORG I4F, *NOT A HEADER 02041 *Y=MAG OPEN FLAG, ROW=30? 02042 *BR=RCM 02043 MA(RCM), RAM>BR, 02044 A(MOP), BR>B, AND, 02045 JZ(I5F,I5T); ----- ----- 06C 0001206E 28080801 ----- 02046 .ORG I5F, *NOT A HEADER OR ROW 30 02047 *Y=ROW-24, MAG OPEN? 02048 A(-24), ROW>B, ADD, 02049 JZ(I6F,I6T); ----- ----- 06E 000C2072 00E80005 ----- 02050 .ORG I6T, *MAG CLOSED 02051 *LPPREG=0 02052 MA(LPPREG), 02053 Y(0), 02054 Y>RAM, 02055 JUMP(LPP0); ----- ----- 073 000006EA 7E001100 ----- 02056 .ORG I6F, *MAG OPEN 02057 *ROW1-23? 02058 *Y=ROW-24 02059 *AR=LAFR 02060 MA(LAFR), RAM>AR, 02061 A(-24), ROW>B, ADD, 02062 JN(I7F,DR0); ----- ----- 072 000E4074 35E80005 ----- 02063 .ORG I7F, *ROW 24- ROW 31 02064 *CASE ROW-24=? 02065 *A=STOR7 02066 MA(STOR7), RAM>AR, 02067 JY(I30Y); ----- ----- 074 0002C010 27000000 ----- 02068 ***ROW 0*********************** 02069 .ORG HD0, *HEADER 02070 *A=RCU 02071 MA(RCU), RAM>AR, 02072 JBYTE(HD1F,HD1T); ----- ----- 06D 00028076 2A000000 ----- 02073 .ORG HD1F, *WAIT FOR PAGE UNITS 02074 JBYTE(HD1F,HD1T); ----- ----- 076 00008076 00000000 ----- 02075 .ORG HD1T, *Y=UNITS 02076 CBRDY, 02077 A(0), HAM>B, ADD, 02078 JUMP(HD2); ----- ----- 077 00080703 00002007 ----- 02079 .ORG HD2, *PTY OK? 02080 *A=RCU 02081 *Y=HAM-10 02082 MA(RCU), RAM>AR, 02083 A(-10), HAM>B, ADD, 02084 JN(HD3F,HD3T); ----- ----- 703 000A4078 2AF60007 ----- 02085 .ORG HD3T, *BAD UNITS PARITY 02086 *LPPREG=5 02087 MA(LPPREG), 02088 Y(5), 02089 Y>RAM, 02090 JUMP(LPP0); ----- ----- 079 000006EA 7E051100 ----- 02091 .ORG HD3F, *PTY OK, HEX UNITS? 02092 *Y=UNITS 02093 A(0), HAM>B, OR, 02094 JN(HD4F,HD4T); ----- ----- 078 0008407A 00001007 ----- 02095 .ORG HD4F, *HEX UNITS 02096 *RET4=1 (MARK HEX UNITS FOR BROWSE) 02097 MA(RET4), 02098 Y(1), 02099 Y>RAM, 02100 JUMP(HD5AF); ----- ----- 07A 0000007C 79011100 ----- 02101 .ORG HD4T, *DECIMAL UNITS 02102 *RET4=0 (MARK DECIMAL UNITS FOR BROWSE) 02103 *BTT UNITS? 02104 MA(RET4), 02105 Y(0), 02106 Y>RAM, 02107 JZ(HD5AF,HD5AT); ----- ----- 07B 0000207C 79001100 ----- 02108 .ORG HD5AF, *NOT BTT UNITS, CLEAR BTTM 02109 MA(MASK), 02110 Y(0), 02111 Y>RAM, 02112 JUMP(HD5AT); ----- ----- 07C 0000007D 73001100 ----- 02113 .ORG HD5AT, *BTT UNITS, DO NOT CLEAR BTTM 02114 *RCU=UNITS 02115 MA(RCU), 02116 AR.F0>A, HAM>B, ADD, 02117 Y>RAM, Y>IO, 02118 JBYTE(HD6F,HD6T); ----- ----- 07D 0008807E 2A0041D7 ----- 02119 .ORG HD6F, *WAIT FOR PAGE TENS 02120 JBYTE(HD6F,HD6T); ----- ----- 07E 0000807E 00000000 ----- 02121 .ORG HD6T, *Y=TENS 1ST 02122 CBRDY, 02123 A(0), HAM>B, ADD, 02124 JUMP(HD6A); ----- ----- 07F 00080704 00002007 ----- 02125 .ORG HD6A, *PTY OK? 2ND 02126 *Y=HAM-10 02127 A(-10), HAM>B, ADD, 02128 JN(HD7F,HD7T); ----- ----- 704 00084084 00F60007 ----- 02129 .ORG HD7T, *BAD TENS PARITY 02130 *LPPREG=5 02131 MA(LPPREG), 02132 Y(5), 02133 Y>RAM, 02134 JUMP(LPP0); ----- ----- 085 000006EA 7E051100 ----- 02135 .ORG HD7F, *PTY OK, HEX TENS? 3RD 02136 *Y=HAM-15 02137 *A=RCT 02138 MA(RCT), RAM>AR, 02139 A(-15), HAM>B, ADD, 02140 JN(HD8F,HD8T); ----- ----- 084 000A4086 29F10007 ----- 02141 .ORG HD8T, *DECIMAL TENS 4TH 02142 *NOT BTT TENS, CLEAR BTTM 02143 MA(MASK), 02144 Y(0), 02145 Y>RAM, 02146 JUMP(HD9T); ----- ----- 087 00000089 73001100 ----- 02147 .ORG HD8F, *HEX TENS, BTT TENS? 4TH 02148 *IF BTT TENS, DO NOT CLEAR BTTM 02149 *RET4=1 (MARK HEX TENS FOR BROWSE) 02150 MA(RET4), 02151 Y(1), 02152 Y>RAM, 02153 JZ(HD9F,HD9T); ----- ----- 086 00002088 79011100 ----- 02154 .ORG HD9F, *NOT BTT TENS, CLEAR BTTM 5TH 02155 MA(MASK), 02156 Y(0), 02157 Y>RAM, 02158 JUMP(HD9T); ----- ----- 088 00000089 73001100 ----- 02159 * 02160 .ORG HD9T, *RCT=TENS 6TH 02161 MA(RCT), 02162 AR.F0>A, HAM>B, ADD, 02163 Y>RAM, Y>IO, 02164 JUMP(HD10); ----- ----- 089 00080705 290041D7 ----- 02165 .ORG HD10, *Y=LATCH 7TH 02166 PCL>A, B(7), AND, 02167 JUMP(HD11); ----- ----- 705 00000706 00070870 ----- 02168 * Assume that the page is in a latch for now, check PCL3 02169 * later 02170 .ORG HD11, *PAGE IN LATCH 8TH 02171 *CASE LATCH=? 02172 *B=MASK (CONTAINS BTT MARKER BIT) 02173 MA(MASK), RAM>BR, 02174 JY(HD20Y); ----- ----- 706 0001C020 73000000 ----- 02175 *** 02176 .ORG HD20Y, *CASE LATCH=0 9TH 02177 *A=LAF0 02178 MA(LAF0), RAM>AR, 02179 JUMP(HD30); ----- ----- 020 00020707 40000000 ----- 02180 .ORG HD21, *CASE LATCH=1 9TH 02181 *A=LAF1 02182 MA(LAF1), RAM>AR, 02183 JUMP(HD30); ----- ----- 021 00020707 41000000 ----- 02184 .ORG HD22, *CASE LATCH=2 9TH 02185 *A=LAF2 02186 MA(LAF2), RAM>AR, 02187 JUMP(HD30); ----- ----- 022 00020707 42000000 ----- 02188 .ORG HD23, *CASE LATCH=3 9TH 02189 *A=LAF3 02190 MA(LAF3), RAM>AR, 02191 JUMP(HD30); ----- ----- 023 00020707 43000000 ----- 02192 .ORG HD24, *CASE LATCH=4 9TH 02193 *A=LAF4 02194 MA(LAF4), RAM>AR, 02195 JUMP(HD30); ----- ----- 024 00020707 44000000 ----- 02196 .ORG HD25, *CASE LATCH=5 9TH 02197 *A=LAF5 02198 MA(LAF5), RAM>AR, 02199 JUMP(HD30); ----- ----- 025 00020707 45000000 ----- 02200 .ORG HD26, *CASE LATCH=6 9TH 02201 *A=LAF6 02202 MA(LAF6), RAM>AR, 02203 JUMP(HD30); ----- ----- 026 00020707 46000000 ----- 02204 .ORG HD27, *CASE LATCH=7 9TH 02205 *A=LAF7 02206 MA(LAF7), RAM>AR, 02207 JUMP(HD30); ----- ----- 027 00020707 47000000 ----- 02208 *** 02209 .ORG HD30, *LAFR=LAFx 10TH 02210 MA(LAFR), 02211 AR>A, B(0), OR, 02212 Y>RAM, 02213 JUMP(HD40); ----- ----- 707 00000708 35001110 ----- 02214 .ORG HD40, *AR=SP0I 11TH 02215 *P=BTTM + MSP 02216 *(BTTM=1 IF PAGE IS 1F0) 02217 MA(SP0I), RAM>AR, 02218 A(MSP), BR>B, OR, 02219 Y>PR, 02220 JBYTE(SPCK0F,SPCK0T); ----- ----- 708 0002808A C8071001 ----- 02221 ***ROW 0, SUP-PAGE MODE 1 (SUB-PAGE CHECK MODE) 02222 * AR=SP0I, PR=LAFR 02223 *****WAIT FOR SP UNITS 02224 .ORG SPCK0F, *WAIT FOR SPI 02225 JBYTE(SPCK0F,SPCK0T); ----- ----- 08A 0000808A 00000000 ----- 02226 .ORG SPCK0T, *Y=HAM XOR SP0I 1ST 02227 *AR=SP1I 02228 CBRDY, 02229 MA(SP1I), RAM>AR, 02230 ARHI>A, HAM>B, XOR, 02231 JUMP(SPCK1); ----- ----- 08B 000A0709 4C003827 ----- 02232 .ORG SPCK1, *RSPI=HAM 2ND 02233 *RSPI=SP0I? PTY OK? 02234 MA(RSPI), 02235 A(0), HAM>B, OR, 02236 Y>RAM, 02237 JZ(SPCK3F,SPCK3T); ----- ----- 709 0008208C 3C001107 ----- 02238 *** 02239 .ORG SPCK3F, *SP0I!=RSPI 3RD 02240 *Y=HAM XOR AR 02241 *BR=MASK 02242 PR>BR, 02243 ARHI>A, HAM>B, XOR, 02244 JUMP(SPCK4); ----- ----- 08C 0049070A 00001827 ----- 02245 .ORG SPCK4, *CLEAR MSP0 MARKER 4TH 02246 *SP1I=RSPI? 02247 *AR=SP2I 02248 MA(SP2I), RAM>AR, 02249 A(>FF-MSP0), BR>B, AND, 02250 Y>PR, 02251 JZ(SPCK5F,SPCK5T); ----- ----- 70A 0002208E D0FE0801 ----- 02252 .ORG SPCK3T, *SP0I=RSPI 3RD 02253 *Y=HAM XOR AR 02254 ARHI>A, HAM>B, XOR, 02255 JUMP(SPCK8); ----- ----- 08D 0008070B 00001827 ----- 02256 .ORG SPCK8, *SP1I=RSPI? 4TH 02257 *AR=SP2I 02258 MA(SP2I), RAM>AR, 02259 JZ(SPCK5F,SPCK5T); ----- ----- 70B 0002208E 50000000 ----- 02260 *** 02261 .ORG SPCK5F, *SP1I!=RSPI 5TH 02262 *Y=HAM XOR SP2I 02263 *B=MASK 02264 PR>BR, 02265 ARHI>A, HAM>B, XOR, 02266 JUMP(SPCK6); ----- ----- 08E 0049070C 00001827 ----- 02267 .ORG SPCK6, *CLEAR MSP1 MARKER 6TH 02268 *SP2I=RSPI? 02269 * AR = forceing subpage capture flags 02270 MA(SPFRC), RAM>AR, 02271 A(>FF-MSP1), BR>B, AND, 02272 Y>PR, 02273 JZ(SPCK7F,SPCK7T); ----- ----- 70C 00022094 D7FD0801 ----- 02274 .ORG SPCK5T, *SP1I=RSPI 5TH 02275 *Y=HAM XOR SP2I 02276 ARHI>A, HAM>B, XOR, 02277 JUMP(SPCK9); ----- ----- 08F 0008070D 00001827 ----- 02278 .ORG SPCK9, *SP2I=RSPI? 6TH 02279 * AR = forcing subpage capture flags 02280 MA(SPFRC), RAM>AR, 02281 JZ(SPCK7F,SPCK7T); ----- ----- 70D 00022094 57000000 ----- 02282 *** 02283 .ORG SPCK7F, *SP2I!=RSPI 7TH 02284 *B=MASK 02285 PR>BR, 02286 JUMP(SPCK7A); ----- ----- 094 0041070E 00000000 ----- 02287 * 02288 .ORG SPCK7A, *CLEAR MSP2 MARKER 8TH 02289 A(>FF-MSP2), BR>B, AND, 02290 Y>PR, 02291 JBYTE(SPCK10F,SPCK10T); ----- ----- 70E 00008096 80FB0801 ----- 02292 * 02293 .ORG SPCK7T, *SP2I=RSPI 7TH 02294 JBYTE(SPCK10F,SPCK10T); ----- ----- 095 00008096 00000000 ----- 02295 * 02296 *****WAIT FOR SP TENS 02297 .ORG SPCK10F, *WAIT FOR SP TENS 02298 JBYTE(SPCK10F,SPCK10T); ----- ----- 096 00008096 00000000 ----- 02299 .ORG SPCK10T, *AR=SP TENS (MASK C4) 1ST 02300 *PRESERVE PARITY ERROR INFO 02301 *BR=SP0X 02302 CBRDY, 02303 MA(SP0X), RAM>BR, 02304 A(%11110111), HAM>B, AND, 02305 Y>AR, 02306 JUMP(SPCK11); ----- ----- 097 002B070F 49F72807 ----- 02307 .ORG SPCK11, *Y=SP0X XOR SP TENS 2ND 02308 AR>A, BRHI>B, XOR, 02309 JUMP(SPCK12); ----- ----- 70F 00000710 0000181C ----- 02310 .ORG SPCK12, *SP0X==SP TENS? 3RD 02311 *BR=MARKERS 02312 *RSPX= HAM 02313 PR>BR, 02314 MA(RSPX), 02315 A(0), HAM>B, OR, 02316 Y>RAM, 02317 JZ(SPCK13F,SPCK13T); ----- ----- 710 00492098 3D001107 ----- 02318 .ORG SPCK13F, *SP0X!=SP TENS 4TH 02319 *CLEAR MARKER 02320 *BR=SP1X 02321 MA(SP1X), RAM>BR, 02322 A(>FF-MSP0), BR>B, AND, 02323 Y>PR, 02324 JUMP(SPCK14); ----- ----- 098 00010711 CDFE0801 ----- 02325 .ORG SPCK13T, *SP0X==SP TENS 4TH 02326 *DO NOT CLEAR MARKER 02327 *BR=SP1X 02328 MA(SP1X), RAM>BR, 02329 JUMP(SPCK14); ----- ----- 099 00010711 4D000000 ----- 02330 .ORG SPCK14, *Y=SP1X XOR SP TENS 5TH 02331 AR>A, BRHI>B, XOR, 02332 JUMP(SPCK15); ----- ----- 711 00000712 0000181C ----- 02333 .ORG SPCK15, *SP1X==SP TENS? 6TH 02334 *BR=MARKERS 02335 PR>BR, 02336 JZ(SPCK16F,SPCK16T); ----- ----- 712 0041209A 00000000 ----- 02337 .ORG SPCK16F, *SP1X!=SP TENS 7TH 02338 *CLEAR MARKER 02339 *BR=SP2X 02340 MA(SP2X), RAM>BR, 02341 A(>FF-MSP1), BR>B, AND, 02342 Y>PR, 02343 JUMP(SPCK17); ----- ----- 09A 00010713 D1FD0801 ----- 02344 .ORG SPCK16T, *SP1X==SP TENS 7TH 02345 *DO NOT CLEAR MARKER 02346 *BR=SP2X 02347 MA(SP2X), RAM>BR, 02348 JUMP(SPCK17); ----- ----- 09B 00010713 51000000 ----- 02349 .ORG SPCK17, *Y=SP2X XOR SP TENS 8TH 02350 AR>A, BRHI>B, XOR, 02351 JUMP(SPCK18); ----- ----- 713 00000714 0000181C ----- 02352 .ORG SPCK18, *SP2X==SP TENS? 9TH 02353 *BR=MARKERS 02354 PR>BR, 02355 JZ(SPCK19F,SPCK19T); ----- ----- 714 0041209C 00000000 ----- 02356 .ORG SPCK19F, *SP2X!=SP TENS 10TH 02357 *CLEAR MARKER 02358 *AR=SP0C 02359 MA(SP0C), RAM>AR, 02360 A(>FF-MSP2), BR>B, AND, 02361 Y>PR, 02362 JBYTE(SPCK20F,SPCK20T); ----- ----- 09C 0002809E CAFB0801 ----- 02363 .ORG SPCK19T, *SP2X==SP TENS 10TH 02364 *DO NOT CLEAR MARKER 02365 *AR=SP0C 02366 MA(SP0C), RAM>AR, 02367 JBYTE(SPCK20F,SPCK20T); ----- ----- 09D 0002809E 4A000000 ----- 02368 *****WAIT FOR SP HUNDREDS 02369 * AR=SP0C 02370 .ORG SPCK20F, *WAIT FOR SPC 02371 JBYTE(SPCK20F,SPCK20T); ----- ----- 09E 0000809E 00000000 ----- 02372 .ORG SPCK20T, *Y=HAM XOR SP0C 1ST 02373 *AR=SP1C 02374 CBRDY, 02375 MA(SP1C), RAM>AR, 02376 ARHI>A, HAM>B, XOR, 02377 JUMP(SPCK21); ----- ----- 09F 000A0715 4E003827 ----- 02378 .ORG SPCK21, *RSPC=HAM 2ND 02379 *RSPC=SP0C? 02380 MA(RSPC), 02381 A(0), HAM>B, OR, 02382 Y>RAM, 02383 JZ(SPCK23F,SPCK23T); ----- ----- 715 000820A4 3E001107 ----- 02384 *** 02385 .ORG SPCK23F, *SP0C!=RSPC 3RD 02386 *Y=HAM XOR AR 02387 *BR=MASK 02388 PR>BR, 02389 ARHI>A, HAM>B, XOR, 02390 JUMP(SPCK24); ----- ----- 0A4 00490716 00001827 ----- 02391 .ORG SPCK24, *CLEAR MSP0 MARKER 4TH 02392 *SP1C=RSPC? 02393 *AR=SP2C 02394 MA(SP2C), RAM>AR, 02395 A(>FF-MSP0), BR>B, AND, 02396 Y>PR, 02397 JZ(SPCK25F,SPCK25T); ----- ----- 716 000220A6 D2FE0801 ----- 02398 .ORG SPCK23T, *SP0C=RSPC 3RD 02399 *Y=HAM XOR AR 02400 ARHI>A, HAM>B, XOR, 02401 JUMP(SPCK28); ----- ----- 0A5 00080717 00001827 ----- 02402 .ORG SPCK28, *SP1C=RSPC? 4TH 02403 *AR=SP2C 02404 MA(SP2C), RAM>AR, 02405 JZ(SPCK25F,SPCK25T); ----- ----- 717 000220A6 52000000 ----- 02406 *** 02407 .ORG SPCK25F, *SP1C!=RSPC 5TH 02408 *Y=HAM XOR SP2C 02409 *B=MASK 02410 PR>BR, 02411 JUMP(SPCK26); ----- ----- 0A6 00410718 00000000 ----- 02412 .ORG SPCK26, *CLEAR MSP1 MARKER 6TH 02413 A(>FF-MSP1), BR>B, AND, 02414 Y>PR, 02415 JUMP(SPCK25T); ----- ----- 718 000000A7 80FD0801 ----- 02416 .ORG SPCK25T, *SP1C=RSPC 7TH 02417 *Y=HAM XOR SP2C 02418 ARHI>A, HAM>B, XOR, 02419 JUMP(SPCK29); ----- ----- 0A7 00080719 00001827 ----- 02420 .ORG SPCK29, *SP2C=RSPC? 8TH 02421 *Y=SP HUNDREDS-15 02422 *B=MASK 02423 PR>BR, 02424 A(-15), HAM>B, ADD, 02425 JZ(SPCK27F,SPCK27T); ----- ----- 719 004920A8 00F10007 ----- 02426 *** 02427 .ORG SPCK27F, *SP2C!=RSPC 9TH 02428 *BTT HUNDREDS? 02429 JZ(SPCK27AF,SPCK27AT); ----- ----- 0A8 000020AA 00000000 ----- 02430 .ORG SPCK27AF, *NO, CLEAR BTTM 10TH 02431 *CLEAR MSP2 02432 A(%11110011), BR>B, AND, 02433 Y>PR, 02434 JBYTE(SPCK30F,SPCK30T); ----- ----- 0AA 000080AC 80F30801 ----- 02435 .ORG SPCK27AT, *YES, LEAVE BTTM 10TH 02436 *CLEAR MSP2 02437 A(>FF-MSP2), BR>B, AND, 02438 Y>PR, 02439 JBYTE(SPCK30F,SPCK30T); ----- ----- 0AB 000080AC 80FB0801 ----- 02440 .ORG SPCK27T, *SP2C=RSPC 9TH 02441 *BTT HUNDREDS? 02442 JZ(SPCK27BF,SPCK27BT); ----- ----- 0A9 000020AE 00000000 ----- 02443 .ORG SPCK27BF, *NO, CLEAR BTTM 10TH 02444 A(>FF-BTTM), BR>B, AND, 02445 Y>PR, 02446 JBYTE(SPCK30F,SPCK30T); ----- ----- 0AE 000080AC 80F70801 ----- 02447 .ORG SPCK27BT, *YES, LEAVE BTTM 10TH 02448 JBYTE(SPCK30F,SPCK30T); ----- ----- 0AF 000080AC 00000000 ----- 02449 *****WAIT FOR SP THOUSANDS 02450 .ORG SPCK30F, *WAIT FOR SP THOU'S 02451 JBYTE(SPCK30F,SPCK30T); ----- ----- 0AC 000080AC 00000000 ----- 02452 .ORG SPCK30T, *AR=SP THOU'S (MASK C5,C6) 1ST 02453 *PRESERVE PARITY ERROR INFO 02454 *BR=SP0M 02455 CBRDY, 02456 MA(SP0M), RAM>BR, 02457 A(%11110011), HAM>B, AND, 02458 Y>AR, 02459 JUMP(SPCK31); ----- ----- 0AD 002B071A 4BF32807 ----- 02460 .ORG SPCK31, *Y=SP0M XOR SP THOU'S 2ND 02461 AR>A, BRHI>B, XOR, 02462 JUMP(SPCK32); ----- ----- 71A 0000071B 0000181C ----- 02463 .ORG SPCK32, *SP0M==SP THOU'S? 3RD 02464 *BR=MARKERS 02465 *RSPM= HAM 02466 PR>BR, 02467 MA(RSPM), 02468 A(0), HAM>B, OR, 02469 Y>RAM, 02470 JZ(SPCK33F,SPCK33T); ----- ----- 71B 004920B8 3F001107 ----- 02471 .ORG SPCK33F, *SP0M!=SP THOU'S 4TH 02472 *CLEAR MARKER 02473 *BR=SP1M 02474 MA(SP1M), RAM>BR, 02475 A(>FF-MSP0), BR>B, AND, 02476 Y>PR, 02477 JUMP(SPCK34); ----- ----- 0B8 0001071C CFFE0801 ----- 02478 .ORG SPCK33T, *SP0M==SP THOU'S 4TH 02479 *DO NOT CLEAR MARKER 02480 *BR=SP1M 02481 MA(SP1M), RAM>BR, 02482 JUMP(SPCK34); ----- ----- 0B9 0001071C 4F000000 ----- 02483 .ORG SPCK34, *Y=SP1M XOR SP THOU'S 5TH 02484 AR>A, BRHI>B, XOR, 02485 JUMP(SPCK35); ----- ----- 71C 0000071D 0000181C ----- 02486 .ORG SPCK35, *SP1M==SP THOU'S? 6TH 02487 *BR=MARKERS 02488 PR>BR, 02489 JZ(SPCK36F,SPCK36T); ----- ----- 71D 004120BA 00000000 ----- 02490 .ORG SPCK36F, *SP1M!=SP THOU'S 7TH 02491 *CLEAR MARKER 02492 *BR=SP2M 02493 MA(SP2M), RAM>BR, 02494 A(>FF-MSP1), BR>B, AND, 02495 Y>PR, 02496 JUMP(SPCK37); ----- ----- 0BA 0001071E D3FD0801 ----- 02497 .ORG SPCK36T, *SP1M==SP TENS 7TH 02498 *DO NOT CLEAR MARKER 02499 *BR=SP2M 02500 MA(SP2M), RAM>BR, 02501 JUMP(SPCK37); ----- ----- 0BB 0001071E 53000000 ----- 02502 .ORG SPCK37, *Y=SP2M XOR SP THOU'S 8TH 02503 *BR=MARKERS 02504 PR>BR, 02505 AR>A, BRHI>B, XOR, 02506 JUMP(SPCK38); ----- ----- 71E 0041071F 0000181C ----- 02507 .ORG SPCK38, *SP2M==SP THOU'S? 9TH 02508 *Y=SP THOUSANDS-3 02509 AR>A, B(-3), ADD, 02510 JZ(SPCK39F,SPCK39T); ----- ----- 71F 000020BC 00FD0010 ----- 02511 .ORG SPCK39F, *SP2M!=SP THOU'S 10TH 02512 *BTT THOUSANDS? 02513 JZ(SPCK39AF,SPCK39AT); ----- ----- 0BC 000020BE 00000000 ----- 02514 .ORG SPCK39AF, *NO, CLEAR BTTM 11TH 02515 *CLEAR MSP2 02516 *AR=MARKERS 02517 MA(SPFRC), RAM>BR, 02518 A(%11110011), BR>B, AND, 02519 Y>PR, Y>AR, 02520 JBYTE(CGA0F,CGA0T); ----- ----- 0BE 002380C2 D7F30801 ----- 02521 * 02522 .ORG SPCK39AT, *YES, LEAVE BTTM 11TH 02523 *CLEAR MSP2 02524 *AR=MARKERS 02525 MA(SPFRC), RAM>BR, 02526 A(>FF-MSP2), BR>B, AND, 02527 Y>PR, Y>AR, 02528 JBYTE(CGA0F,CGA0T); ----- ----- 0BF 002380C2 D7FB0801 ----- 02529 * 02530 .ORG SPCK39T, *SP2M==SP THOU'S 10TH 02531 *DO NOT CLEAR MSP2 MARKER 02532 *BTT THOUSANDS? 02533 JZ(SPCK39BF,SPCK39BT); ----- ----- 0BD 000020C4 00000000 ----- 02534 .ORG SPCK39BF, *NO, CLEAR BTTM 11TH 02535 *AR=MARKERS 02536 MA(SPFRC), RAM>BR, 02537 A(>FF-BTTM), BR>B, AND, 02538 Y>PR, Y>AR, 02539 JBYTE(CGA0F,CGA0T); ----- ----- 0C4 002380C2 D7F70801 ----- 02540 * 02541 .ORG SPCK39BT, *YES, LEAVE BTTM 11TH 02542 *AR=MARKERS 02543 MA(SPFRC), RAM>BR, 02544 A(0), BR>B, OR, 02545 Y>PR, Y>AR, 02546 JBYTE(CGA0F,CGA0T); ----- ----- 0C5 002380C2 D7001001 ----- 02547 * 02548 *****WAIT FOR CGA 02549 * PR=MASK 02550 .ORG CGA0F, * 02551 JBYTE(CGA0F,CGA0T); ----- ----- 0C2 000080C2 00000000 ----- 02552 .ORG CGA0T, *Y=BTTM 02553 CBRDY, 02554 AR>A, B(BTTM), AND, 02555 JUMP(CGA0A); ----- ----- 0C3 00000720 00082810 ----- 02556 .ORG CGA0A, *CGA=CGA 1ST 02557 *RECEIVE A BTT? 02558 MA(CGA), 02559 A(0), HAM>B, ADD, 02560 Y>RAM, 02561 JZ(CGA0BF,CGA0BT); ----- ----- 720 000820C6 33000107 ----- 02562 *RECEIVE A BTT 02563 .ORG CGA0BF, *RECEIVE A BTT 2ND 02564 *B=STOR1 02565 MA(STOR1), RAM>BR, 02566 JUMP(CGA0C); ----- ----- 0C6 00010721 21000000 ----- 02567 .ORG CGA0C, *RWL=LATCH IN STORE 1 3RD 02568 MA(RWL), 02569 A(0), BRHI>B, OR, 02570 Y>RAM, Y>IO, 02571 JUMP(CGA0D); ----- ----- 721 00000722 0B00510C ----- 02572 .ORG CGA0D, *A=THIS BTT UPDATE CODE 4TH 02573 MA(RSPX), RAM>AR, 02574 JUMP(CGA0E); ----- ----- 722 00020723 3D000000 ----- 02575 .ORG CGA0E, *B=TOPRG1 (INCLUDES LAST BTT UPDATE CODE PLUS ONE) 02576 *CLEAR C4 IN COPY OF RSPX 5TH 02577 MA(TOPRG1), RAM>BR, 02578 AR>A, B(%11110111), AND, 02579 Y>AR, 02580 JUMP(CGA0G); ----- ----- 723 00230724 37F70810 ----- 02581 .ORG CGA0G, *COMPARE UPDATE CODES 6TH 02582 *(DON'T NEED A CIN BECAUSE TOPRG1 HAS UPDATE CODE 02583 *PLUS ONE) 02584 *PARITY OK? 02585 NAR>A, BR.0F>B, ADD, 02586 JN(CGA0HF,CGA0HT); ----- ----- 724 000040C8 00000042 ----- 02587 .ORG CGA0HF, *PARITY OK 7TH 02588 *INIT BTTERR 02589 *BTT UPDATED? 02590 *B=RSPX 02591 MA(RSPX), RAM>BR, 02592 A(>FF-BTTERR), BR>B, AND, 02593 Y>AR, 02594 JZ(CGA0JF,CGA0JT); ----- ----- 0C8 002320CA 3D7F0801 ----- 02595 .ORG CGA0HT, *BAD PARITY 7TH 02596 *BTTERR=1 02597 MA(TOPRG1), 02598 *TCJ A(BTTERR), BR>B, OR, *July 93 BTT update bug fix 02599 A(>FF-BTTERR), BR>B, AND, 02600 Y>RAM, 02601 JBYTE(CGB0F,CGB0T); ----- ----- 0C9 000080CC 377F0901 ----- 02602 .ORG CGA0JF, *BTT UPDATED 8TH 02603 *Y=CLEAR BIT 02604 A(>08), BR>B, AND, 02605 JUMP(CGA0K); ----- ----- 0CA 00000725 00080801 ----- 02606 .ORG CGA0K, *UPDATED AND CLEAR BIT SET? 9TH 02607 *BTTUP=1 02608 MA(TOPRG1), 02609 *TCJ AR>A, B(BTTUP), OR, * July 93 BTT update bug fix 02610 AR>A, B(0), OR, 02611 Y>RAM, Y>AR, 02612 JZ(CGA0LF,CGA0LT); ----- ----- 725 002220CE 37001110 ----- 02613 .ORG CGA0LF, *UPDATED AND CLEAR BIT SET 10TH 02614 *BTTUP=1, UPDATE CODE=0 02615 MA(TOPRG1), 02616 AR.F0>A, B(0), OR, 02617 Y>RAM, 02618 JBYTE(CGB0F,CGB0T); ----- ----- 0CE 000080CC 370011D0 ----- 02619 .ORG CGA0LT, *UPDATED AND CLEAR BIT NOT SET 10TH 02620 *BTTUP=1, UPDATE UPDATE CODE 02621 *(INCREMENT SO ZERO CAUSES UPDATE) 02622 MA(TOPRG1), 02623 AR.F0>A, BR.0F>B, O>CIN, ADD, 02624 Y>RAM, 02625 JBYTE(CGB0F,CGB0T); ----- ----- 0CF 000080CC 370005D2 ----- 02626 * 02627 .ORG CGA0JT, *BTT NOT UPDATED 8TH 02628 *Y=CLEAR BIT 02629 A(>08), BR>B, AND, 02630 JUMP(CGA0M); ----- ----- 0CB 00000726 00080801 ----- 02631 .ORG CGA0M, *NOT UPDATED AND CLEAR BIT SET? 9TH 02632 JZ(CGA0NF,CGA0NT); ----- ----- 726 000020D8 00000000 ----- 02633 .ORG CGA0NF, *NOT UPDATED AND CLEAR BIT SET 10TH 02634 *BTTUP=1, UPDATE CODE=0 02635 MA(TOPRG1), 02636 *TCJ AR.F0>A, B(BTTUP), OR, * July 93 BTT update bug fix 02637 AR.F0>A, B(0), OR, 02638 Y>RAM, 02639 JBYTE(CGB0F,CGB0T); ----- ----- 0D8 000080CC 370011D0 ----- 02640 .ORG CGA0NT, *NOT UPDATED AND NO CLEAR 10TH 02641 *DO NOTHING (BUT NEED TO UPDATE BTTERR) 02642 MA(TOPRG1), 02643 AR>A, B(0), OR, 02644 Y>RAM, 02645 JBYTE(CGB0F,CGB0T); ----- ----- 0D9 000080CC 37001110 ----- 02646 *NOT RECEIVING A BTT 02647 * PR=MASK 02648 .ORG CGA0BT, *B=SPREG0 2ND 02649 MA(SPREG0), RAM>BR, 02650 PCL>A, B(0), ADD, 02651 JUMP(CGA1); ----- ----- 0C7 00010727 54000070 ----- 02652 .ORG CGA1, *COMPARE PCL AND LFPCL0 3RD 02653 *PAGE IN LATCH? 02654 *B=SPREG1 02655 MA(SPREG1), RAM>BR, 02656 PCL>A, BRHI>B, XOR, 02657 JN(CGA2F,BSE4T); ----- ----- 727 000140DA 5500187C ----- 02658 *+++ PAGE NOT IN LATCH, CAPTURE IT IN BROWSE MODE? 02659 .ORG BSE4T, *BR=DHREG 4TH 02660 MA(DHREG), RAM>BR, 02661 JUMP(BSE5); ----- ----- 0DB 00010728 32000000 ----- 02662 .ORG BSE5, *Y=BWSE, BR=RSPM 5TH 02663 MA(RSPM), RAM>BR, 02664 A(BWSE), BR>B, AND, 02665 JUMP(BSE6); ----- ----- 728 00010729 3F010801 ----- 02666 * 02667 * TCJ Dec 93 02668 * 02669 .ORG BSE6, *Y=SUBT, BROWSE MODE? 6TH 02670 *AR=STBRW 02671 MA(DHREG), RAM>AR, 02672 A(%00001000), BR>B, AND, 02673 JZ(BSE7F,BSE7T); ----- ----- 729 000220DC 32080801 ----- 02674 * 02675 .ORG BSE7T, *NOT BROWSING, EXIT TO PNIL0 02676 *AR=STOR0 02677 MA(STOR0), RAM>AR, 02678 JUMP(PNIL0); ----- ----- 0DD 0002072A 20000000 ----- 02679 * 02680 .ORG BSE7F, *Y=STBRW, SUBTITLE PAGE? 02681 *AR=RET4 (HEX PAGE NUMBER MARKER) 02682 MA(RET4), RAM>AR, 02683 AR>A, B(STBRW), AND, 02684 JZ(BSE8F,BSE8T); ----- ----- 0DC 000220DE 79020810 ----- 02685 * 02686 * TCJ Dec 93 02687 * Addition of subtitle browse, if it is a subbtitle 02688 * page and STBRW is set then capture it. 02689 * 02690 .ORG BSE8F, *SUBTITLE PAGE, STBRW ? 02691 JZ(TCJBSE00F,TCJBSE00T); ----- ----- 0DE 000020E4 00000000 ----- 02692 * 02693 .ORG TCJBSE00F, *SUBBTITLE & STBRW==1, So capture it 02694 *WAIT FOR CGB 02695 JBYTE(BSE10F,BSE10T); ----- ----- 0E4 000080E6 00000000 ----- 02696 * 02697 .ORG TCJBSE00T, *DO NOT BROWSE ONTO A SUBT PAGE, EXIT TO PNIL0 02698 *AR=STOR0 02699 MA(STOR0), RAM>AR, 02700 JUMP(PNIL0); ----- ----- 0E5 0002072A 20000000 ----- 02701 * 02702 .ORG BSE8T, *Y=RET4 02703 *AR=STOR0 02704 MA(STOR0), RAM>AR, 02705 AR>A, B(0), OR, 02706 JZ(TCJBSE01F,TCJBSE01T); ----- ----- 0DF 000220E8 20001010 ----- 02707 * 02708 .ORG TCJBSE01F, *NOT SUBTITLE & STBRW==1, EXIT TO PNIL0 02709 *AR=STOR0 02710 MA(STOR0), RAM>AR, 02711 JUMP(PNIL0); ----- ----- 0E8 0002072A 20000000 ----- 02712 * 02713 .ORG TCJBSE01T, *NOT SUBTITLE & STBRW==0 02714 *HEX PAGE NUMBER? 02715 *RWL=STOR0 02716 MA(RWL), 02717 ARHI>A, B(7), AND, 02718 Y>RAM, Y>IO, 02719 JZ(BSE9F,BSE9T); ----- ----- 0E9 000020EA 0B074920 ----- 02720 * 02721 .ORG BSE9F, *DO NOT BROWSE ONTO A HEX PAGE, EXIT TO PNIL0 02722 *AR=STOR0 02723 MA(STOR0), RAM>AR, 02724 JUMP(PNIL0); ----- ----- 0EA 0002072A 20000000 ----- 02725 .ORG BSE9T, *NOT A HEX PAGE, OK TO RECIEVE 02726 *WAIT FOR CGB 02727 JBYTE(BSE10F,BSE10T); ----- ----- 0EB 000080E6 00000000 ----- 02728 .ORG BSE10F, *WAIT FOR CGB 02729 JBYTE(BSE10F,BSE10T); ----- ----- 0E6 000080E6 00000000 ----- 02730 .ORG BSE10T, *LPPREG=8 1ST 02731 CBRDY, 02732 MA(LPPREG), 02733 Y(8), 02734 Y>RAM, 02735 JUMP(CGB0B); ----- ----- 0E7 0000072B 7E083100 ----- 02736 *+++PAGE IN A LATCH 02737 * A=MASK, B=SPREG1, LAST Y WAS PCL XOR LFPCL0 02738 .ORG CGA2F, *PAGE IN LATCH 4TH 02739 *COMPARE PCL AND LFPCL1 02740 *PCL=LFPCL0? 02741 *B=SPREG2 02742 MA(SPREG2), RAM>BR, 02743 PCL>A, BRHI>B, XOR, 02744 JZ(CGA3F,CGA3T); ----- ----- 0DA 000120EC 5600187C ----- 02745 .ORG CGA3T, *PCL=LFPCL0 5TH 02746 *B=SPREG0 02747 MA(SPREG0), RAM>BR, 02748 JUMP(CGA5T); ----- ----- 0ED 000100F9 54000000 ----- 02749 .ORG CGA3F, *PCL!=LFPCL0 5TH 02750 *COMPARE PCL AND LFPCL2 02751 *PCL=LFPCL1? 02752 PCL>A, BRHI>B, XOR, 02753 JZ(CGA4F,CGA4T); ----- ----- 0EC 000020EE 0000187C ----- 02754 .ORG CGA4T, *PCL=LFPCL1 6TH 02755 *B=SPREG1 02756 MA(SPREG1), RAM>BR, 02757 JUMP(CGA5T); ----- ----- 0EF 000100F9 55000000 ----- 02758 .ORG CGA4F, *PCL!=LFPCL1 6TH 02759 *PCL=LFPCL2? 02760 JZ(CGA5F,CGA5T); ----- ----- 0EE 000020F8 00000000 ----- 02761 .ORG CGA5F, *PCL IS NOT FOR A SUB-PAGE 7TH 02762 *RWL=PCL 02763 MA(RWL), 02764 PCL>A, B(7), AND, 02765 Y>RAM, Y>IO, 02766 JBYTE(CGB0F,CGB0T); ----- ----- 0F8 000080CC 0B074970 ----- 02767 * 02768 .ORG CGA5T, *CASE MASK.MASKx 7TH 02769 *AR = SPFRC 02770 MA(SPFRC), RAM>AR, 02771 AR.0F>A, BR.0F>B, AND, 02772 JUMP(CGA6); ----- ----- 0F9 0002072C 570008C2 ----- 02773 * 02774 .ORG CGA6, * CASE Y = SPFRC & 7 8TH 02775 AR.0F>A, B(7), AND, 02776 JY(CGAXX.0); ----- ----- 72C 0000C040 000708C0 ----- 02777 * 02778 .ORG CGAXX.0, *CASE =000 9TH 02779 *NOT LOOKING FOR THIS SUB-PAGE 02780 JY(CGAZZ.0); ----- ----- 040 0000C548 00000000 ----- 02781 * 02782 .ORG CGAXX.1, *CASE MASK=001 9TH 02783 *AR=LFSP0 02784 MA(LFSP0), RAM>AR, 02785 JUMP(CGAYY); ----- ----- 041 0002072D 48000000 ----- 02786 * 02787 .ORG CGAXX.2, * CASE MASK=010 9TH 02788 * AR = LFSP1 02789 MA(LFSP1), RAM>AR, 02790 JUMP(CGAYY); ----- ----- 042 0002072D 49000000 ----- 02791 * 02792 .ORG CGAXX.3, *CASE MASK=011, ERROR, 9TH 02793 *Assume MASK==001 02794 MA(LFSP0), RAM>AR, 02795 JUMP(CGAYY); ----- ----- 043 0002072D 48000000 ----- 02796 * 02797 .ORG CGAXX.4, *CASE MASK=100 9TH 02798 MA(LFSP2), RAM>AR, 02799 JUMP(CGAYY); ----- ----- 044 0002072D 4A000000 ----- 02800 * 02801 .ORG CGAYY, *RWL=LFSPx 10TH 02802 MA(RWL), 02803 AR.0F>A, B(0), OR, 02804 Y>RAM, Y>IO, 02805 JBYTE(CGB0F,CGB0T); ----- ----- 72D 000080CC 0B0051C0 ----- 02806 * 02807 * The following three cases are errors which imply that 02808 * two or more latches have been set to identical page numbers. 02809 * This can happen when TOP broadcasters update the tables as more 02810 * than one identical AIT page number can appear in the PLT. This 02811 * does not cause a problem because the AIT search code will look 02812 * in all the captured AITs until it finds a page number. The 02813 * situation will correct itself as soon as a BTT is received 02814 * with no duplicate page numbers. 02815 * 02816 .ORG CGAXX.5, *CASE MASK=101 9TH 02817 *ERROR 02818 *AR=LFSP0 02819 MA(LFSP0), RAM>AR, 02820 JUMP(CGAYY); ----- ----- 045 0002072D 48000000 ----- 02821 * 02822 .ORG CGAXX.6, *CASE MASK=110 9TH 02823 *ERROR 02824 *AR=LFSP1 02825 MA(LFSP1), RAM>AR, 02826 JUMP(CGAYY); ----- ----- 046 0002072D 49000000 ----- 02827 * 02828 .ORG CGAXX.7, *CASE MASK=111 9TH 02829 *ERROR 02830 *AR=LFSP0 02831 MA(LFSP0), RAM>AR, 02832 JUMP(CGAYY); ----- ----- 047 0002072D 48000000 ----- 02833 * 02834 * TCJ Jan 92 02835 * Page in latch but not for one of the given 02836 * subpage numbers. Do a case jump on the 02837 * SPFRC flag in case we need to force a capture 02838 * 02839 .ORG CGAZZ.0, * CASE SPFRC==0, Don'y force 02840 * AR = STOR0 02841 MA(STOR0), RAM>AR, 02842 JUMP(PNIL0); ----- ----- 548 0002072A 20000000 ----- 02843 * 02844 .ORG CGAZZ.1, * CASE SPFRC==1 02845 * AR = LFSP0 02846 MA(LFSP0), RAM>AR, 02847 JUMP(CGAYY); ----- ----- 549 0002072D 48000000 ----- 02848 * 02849 .ORG CGAZZ.2, * CASE SPFRC==2 02850 * AR = LFSP1 02851 MA(LFSP1), RAM>AR, 02852 JUMP(CGAYY); ----- ----- 54A 0002072D 49000000 ----- 02853 * 02854 .ORG CGAZZ.3, * CASE SPFRC==3, Error 02855 MA(STOR0), RAM>AR, 02856 JUMP(PNIL0); ----- ----- 54B 0002072A 20000000 ----- 02857 * 02858 .ORG CGAZZ.4, * CASE SPFRC==4 02859 * AR = LFSP2 02860 MA(LFSP2), RAM>AR, 02861 JUMP(CGAYY); ----- ----- 54C 0002072D 4A000000 ----- 02862 * 02863 .ORG CGAZZ.5, * CASE SPFRC==5, Error 02864 MA(STOR0), RAM>AR, 02865 JUMP(PNIL0); ----- ----- 54D 0002072A 20000000 ----- 02866 * 02867 .ORG CGAZZ.6, * CASE SPFRC==6, Error 02868 MA(STOR0), RAM>AR, 02869 JUMP(PNIL0); ----- ----- 54E 0002072A 20000000 ----- 02870 * 02871 .ORG CGAZZ.7, * CASE SPFRC==7, Error 02872 MA(STOR0), RAM>AR, 02873 JUMP(PNIL0); ----- ----- 54F 0002072A 20000000 ----- 02874 * 02875 *+++ 02876 .ORG CGB0F, *WAITING FOR CGB 02877 *GOING TO CAPTURE THE PAGE 02878 JBYTE(CGB0F,CGB0T); ----- ----- 0CC 000080CC 00000000 ----- 02879 .ORG CGB0T, *LPPREG=2 1ST 02880 CBRDY, 02881 MA(LPPREG), 02882 Y(2), 02883 Y>RAM, 02884 JUMP(CGB0B); ----- ----- 0CD 0000072B 7E023100 ----- 02885 *ENTRY POINT FROM BROWSE CODE 02886 .ORG CGB0B, *BR=DHREG 2ND 02887 MA(DHREG), RAM>BR, 02888 JUMP(CGB1); ----- ----- 72B 0001072E 32000000 ----- 02889 .ORG CGB1, *Y=HOFF 3RD 02890 A(HOFF), BR>B, AND, 02891 JUMP(CGB2); ----- ----- 72E 0000072F 00800801 ----- 02892 .ORG CGB2, *CGB=CGB 4TH 02893 *HOFF? 02894 MA(CGB), 02895 A(0), HAM>B, ADD, 02896 Y>RAM, 02897 JZ(CGB3F,CGB3T); ----- ----- 72F 000820FA 34000107 ----- 02898 * 02899 *ENTRY POINT FROM PNIL CODE 02900 * 02901 .ORG CGB3F, *DO NOT RECEIVE HEADER 9TH 02902 *GO TO TIME 02903 *WAIT FOR BYTE 02904 *BR=SCREEN 02905 MA(SCREEN), RAM>BR, 02906 JBYTE(CGB4F,CGB4T); ----- ----- 0FA 000180FC 60000000 ----- 02907 .ORG CGB4F, *WAIT FOR BYTE 02908 JBYTE(CGB4F,CGB4T); ----- ----- 0FC 000080FC 00000000 ----- 02909 .ORG CGB4T, *Y=MNDP1+MNDP0 1ST 02910 *AR=VDPOSD 02911 CBRDY, 02912 MA(VDPOSD), RAM>AR, 02913 A(MNDP1+MNDP0), BR>B, AND, 02914 JUMP(CGB4A); ----- ----- 0FD 00020735 2C032801 ----- 02915 .ORG CGB4A, *DISPLAYING A MENU PAGE? 2ND 02916 *Y=CFU 02917 AR>A, B(CFU), AND, 02918 JZ(CGB4BF,CGB4BT); ----- ----- 735 000020FE 00040810 ----- 02919 .ORG CGB4BT, *NO, RWL ALREADY SET TO STORE 0 3RD 02920 JUMP(CGB4CT); ----- ----- 0FF 00000105 00000000 ----- 02921 .ORG CGB4BF, *MENU PAGE, UPDATING CLOCK FIELD? 02922 *AR=VDP0 3RD 02923 MA(VDP0), RAM>AR, 02924 JZ(CGB4CF,CGB4CT); ----- ----- 0FE 00022104 00000000 ----- 02925 .ORG CGB4CF, *UPDATING CLOCK IN MENU PAGE 4TH 02926 *RWL=DPL 02927 MA(RWL), 02928 AR>A, B(0), OR, 02929 Y>RAM, Y>IO, 02930 JUMP(CGB4CT); ----- ----- 104 00000105 0B005110 ----- 02931 * 02932 .ORG CGB4CT, *AR=23, SKIP 23 BYTES 5TH 02933 Y(23), 02934 Y>AR, 02935 JUMP(CGB4D); ----- ----- 105 00220736 00171000 ----- 02936 .ORG CGB4D, *CALL WAIT 6TH 02937 *RETURN=0, RETURN TO CGB5Y 02938 MA(RETURN), 02939 A(0), B(0), AND, 02940 Y>RAM, 02941 JUMP(WAIT0F); ----- ----- 736 0000064E 7C000900 ----- 02942 .ORG CGB5Y, *BASE CASE OF WAIT RETURN ->5TH 02943 *P=32 02944 A(16), B(16), ADD, 02945 Y>PR, 02946 JUMP(CGB6); ----- ----- 030 00000737 80100000 ----- 02947 .ORG CGB6, *COUNT=8 6TH 02948 *CALL RDC 02949 *RETURN TO LPP0 02950 MA(COUNT), 02951 A(4), B(4), ADD, 02952 Y>RAM, 02953 JBYTE(RDC0F,RDC0T); ----- ----- 737 00008106 78040100 ----- 02954 *** 02955 .ORG CGB3T, *RECEIVE HEADER CHARACTERS 9TH 02956 *AND TIME 02957 *P=8 02958 A(4), B(4), ADD, 02959 Y>PR, 02960 JUMP(CGB7); ----- ----- 0FB 00000738 80040000 ----- 02961 .ORG CGB7, *COUNT=32 10TH 02962 *CALL RDC 02963 *RETURN TO LPP0 02964 MA(COUNT), 02965 A(16), B(16), ADD, 02966 Y>RAM, 02967 JBYTE(RDC0F,RDC0T); ----- ----- 738 00008106 78100100 ----- 02968 * 02969 ***PNIL: PAGE NOT IN LATCH***** 02970 * 02971 * This routines either:- 02972 * 1) stores header characters for a rolling header 02973 * 2) store time characters for time display 02974 * or 3) does not store characters as appropriate. 02975 * 02976 * It updates LPPREG to specify The correct type of post processing 02977 * after the required characters have been received. 02978 * 02979 * AR=STORE0 02980 .ORG PNIL0, *SET RWL TO STORE 0 LATCH 10TH 02981 MA(RWL), 02982 ARHI>A, B(DPL), AND, 02983 Y>RAM, Y>IO, 02984 JUMP(PNIL0AF); ----- ----- 72A 00000108 0B0F4920 ----- 02985 .ORG PNIL0AF, *WAIT FOR CGB 11TH 02986 *AR=DISPLAY PAGE MAGAZINE 02987 MA(DPM), RAM>AR, 02988 JBYTE(PNIL0AF,PNIL0AT); ----- ----- 108 00028108 68000000 ----- 02989 .ORG PNIL0AT, *SET RWL TO DISPLAY LATCH 1ST 02990 *MOVE TO LO NIBBLE 02991 CBRDY, 02992 ARHI>A, B(0), OR, 02993 Y>AR, 02994 JUMP(PNIL4); ----- ----- 109 00220739 00003020 ----- 02995 .ORG PNIL4, *Y=MS (MAG SERIAL) 2ND 02996 MA(RCM), RAM>BR, 02997 A(%0001), HAM>B, AND, 02998 JUMP(PNIL7); ----- ----- 739 0009073A 28010807 ----- 02999 .ORG PNIL7, *MS? 3RD 03000 *Y=RCM-MAG OF DISPLAY LATCH 03001 *AS DISPLAYED PAGE 03002 *AR=CGA 03003 MA(CGA), RAM>AR, 03004 NAR.0F>A, BR.0F>B, O>CIN, ADD, 03005 JZ(PNIL8F,PNIL8T); ----- ----- 73A 0002210A 33000462 ----- 03006 *** 03007 .ORG PNIL8F, *SERIAL MAG 4TH 03008 *Y=PTY+SH+ID+IS OF CGA 03009 AR>A, B(%10001101), AND, 03010 JUMP(PNIL8A); ----- ----- 10A 0000073B 008D0810 ----- 03011 .ORG PNIL8A, *SET LPPREG=1 5TH 03012 *PTY ERROR, SH, ID OR IS? 03013 MA(LPPREG), 03014 Y(1), 03015 Y>RAM, 03016 JZ(PNIL10F,PNIL10T); ----- ----- 73B 0000210C 7E011100 ----- 03017 *** 03018 .ORG PNIL8T, *PARALLEL MAG 4TH 03019 *HEADER FROM SAME MAG AS DISPLAY PAGE? 03020 *Y=PTY+SH+ID+IS OF CGA 03021 AR>A, B(%10001101), AND, 03022 JZ(PNIL9F,PNIL9T); ----- ----- 10B 0000210E 008D0810 ----- 03023 .ORG PNIL9F, *NO, NO GOOD FOR ROLLING 5TH 03024 *HEADER OR TIME 03025 *SET LPPREG=1 03026 MA(LPPREG), 03027 Y(1), 03028 Y>RAM, 03029 JUMP(PNIL10F); ----- ----- 10E 0000010C 7E011100 ----- 03030 .ORG PNIL9T, *PARALLEL ROLLING HEADER 5TH 03031 *OR TIME 03032 *SET LPPREG=1 03033 *PTY ERROR, SH, ID OR IS? 03034 MA(LPPREG), 03035 Y(1), 03036 Y>RAM, 03037 JZ(PNIL10F,PNIL10T); ----- ----- 10F 0000210C 7E011100 ----- 03038 ***PARALLEL AND SERIAL MAG JOIN HERE 03039 .ORG PNIL10F, *DO NOT USE FOR HEADER 03040 *OR TIME 03041 *CGB=HAM 03042 MA(CGB), 03043 A(0), HAM>B, ADD, 03044 Y>RAM, 03045 JUMP(LPP0); ----- ----- 10C 000806EA 34000107 ----- 03046 .ORG PNIL10T, *BR=DHREG 5TH/6TH 03047 MA(DHREG), RAM>BR, 03048 JUMP(PNIL10A); ----- ----- 10D 0001073C 32000000 ----- 03049 .ORG PNIL10A, *Y=POOCD+NRH 7TH 03050 A(NRH+POOCD), BR>B, AND, 03051 JUMP(PNIL10B); ----- ----- 73C 0000073D 00300801 ----- 03052 .ORG PNIL10B, *ROLLING HEADER ENABLED? 8TH 03053 *CGB=HAM 03054 MA(CGB), 03055 A(0), HAM>B, ADD, 03056 Y>RAM, 03057 JZ(CGB3F,CGB3T); ----- ----- 73D 000820FA 34000107 ----- 03058 *+++ 03059 ***END OF ROW 0**************** 03060 ***DISPLAY ROW 1-23************ 03061 * input parameters:- AR=LAFR 03062 .ORG DR0, *ROW 1 TO 23 7TH 03063 *Y=(AITL+BTTL) 03064 AR>A, B(AITL+BTTL), AND, 03065 JUMP(DR1); ----- ----- 075 0000073E 00030810 ----- 03066 .ORG DR1, *BR=THISRW 8TH 03067 *CASE (AITL+BTTL)=? 03068 MA(THISRW), RAM>BR, 03069 JY(DR10Y); ----- ----- 73E 0001C018 7D000000 ----- 03070 .ORG DR10Y, *CASE NOT BTT OR AIT 9TH 03071 *DISPLAY ROW OFF? 03072 *COUNT=40 03073 MA(COUNT), 03074 A(20), B(20), ADD, 03075 Y>RAM, 03076 JUMP(DR10); ----- ----- 018 0000073F 78140100 ----- 03077 .ORG DR10, *RECEIVE BYTES 10TH 03078 *CALL RDC 03079 *RETURNS TO POST PROCESSING CODE 03080 JBYTE(RDC0F,RDC0T); ----- ----- 73F 00008106 00000000 ----- 03081 .ORG DR11, *CASE AIT 9TH 03082 *CALL AIT 03083 *RETURNS TO POST PROCESSING CODE 03084 *Y=THISRW-23 03085 A(-23), BR>B, ADD, 03086 JUMP(AIT0A); ----- ----- 019 00000742 00E90001 ----- 03087 .ORG DR12, *CASE BTT 03088 *RETURNS TO POST PROCESSING CODE 03089 *Y=THISRW-23 03090 A(-23), BR>B, ADD, 03091 JUMP(BTT0A); ----- ----- 01A 00000743 00E90001 ----- 03092 ***ROW 24********************** 03093 * A=STOR7 03094 .ORG I30Y, *POINT TO FLOF FLAGS 8TH 03095 *B=RWL 03096 MA(RWL), RAM>BR, 03097 Y(-16), 03098 Y>PR, 03099 JUMP(RBR0); ----- ----- 010 00010744 8BF01000 ----- 03100 .ORG RBR0, *Y=STOR7 XOR RWL 9TH 03101 *A=STOR0 03102 *TPD= FLOF FLAGS FOR THIS LATCH 03103 RVDP, 03104 MA(STOR0), RAM>AR, 03105 ARHI>A, BR.0F>B, XOR, 03106 JUMP(RBR1); ----- ----- 744 00020745 20009822 ----- 03107 .ORG RBR1, *LPPREG=0 10TH 03108 *RECEIVING ROW 24 FOR STORE 7? 03109 *LPPREG=0 03110 MA(LPPREG), 03111 Y(0), 03112 Y>RAM, 03113 JZ(RBR2F,RBR2T); ----- ----- 745 00002118 7E001100 ----- 03114 .ORG RBR2T, *INHIBIT ROW 24 RECEPTION FOR STORE 7 03115 JUMP(LPP0); ----- ----- 119 000006EA 00000000 ----- 03116 .ORG RBR2F, *SET P24R FLAG IN FLOF FLAGS 11TH 03117 TPD>A, B(>40), OR, 03118 Y>DR, 03119 JBYTE(RBR10F,RBR10T); ----- ----- 118 0000911A 00401090 ----- 03120 *WAITING FOR FIRST BYTE 03121 .ORG RBR10F, * 03122 JBYTE(RBR10F,RBR10T); ----- ----- 11A 0000811A 00000000 ----- 03123 .ORG RBR10T, *COMPARE RWL AND STOR0 1ST 03124 CBRDY, 03125 ARHI>A, BR.0F>B, XOR, 03126 JUMP(RBR11); ----- ----- 11B 00000746 00003822 ----- 03127 .ORG RBR11, *RWL= DISPLAY LATCH? 2ND 03128 *B=STOR7 03129 *A=PTY 03130 MA(STOR7), RAM>BR, 03131 A(0), PTY>B, OR, 03132 Y>AR, 03133 JZ(RBR11F,RBR11T); ----- ----- 746 0027211C 27001005 ----- 03134 .ORG RBR11T, *ROW 24 FOR DISPLAY PAGE, PUT IT IN STORE 7 03135 * 3RD 03136 MA(RWL), 03137 A(0), BRHI>B, OR, 03138 Y>RAM, Y>IO, 03139 JUMP(RBR12); ----- ----- 11D 00000747 0B00510C ----- 03140 .ORG RBR12, *B=SYS2 4TH 03141 MA(SYS2), RAM>BR, 03142 JUMP(RBR13); ----- ----- 747 00010748 09000000 ----- 03143 .ORG RBR13, *SET CPYR24 AND R24RTC 5TH 03144 MA(SYS2), 03145 A(CPYR24+R24RTC), BR>B, OR, 03146 Y>RAM, 03147 JUMP(RBR11F); ----- ----- 748 0000011C 09061101 ----- 03148 * 03149 .ORG RBR11F, *Y=PTY 6TH 03150 AR>A, B(0), OR, 03151 JUMP(RBR22); ----- ----- 11C 00000749 00001010 ----- 03152 .ORG RBR22, *P=POINTER TO FIRST COL 7TH 03153 *PTY OK? 03154 Y(-64), 03155 Y>PR, 03156 JN(RBR23F,RBR23T); ----- ----- 749 0000411E 80C01000 ----- 03157 .ORG RBR23F, *PARITY OK, WRITE CHARACTER 8TH 03158 AR>A, B(0), OR, 03159 Y>DR, 03160 JUMP(RBR23T); ----- ----- 11E 0000111F 00001010 ----- 03161 .ORG RBR23T, *POINT TO 2ND COL 9TH 03162 Y(-63), 03163 Y>PR, 03164 JUMP(RBR24); ----- ----- 11F 0000074A 80C11000 ----- 03165 .ORG RBR24, *COUNT=39 TO RECEIVE 39 BYTES 10TH 03166 MA(COUNT), 03167 Y(39), 03168 Y>RAM, 03169 JBYTE(RDC0F,RDC0T); ----- ----- 74A 00008106 78271100 ----- 03170 ***ROW 25********************** 03171 .ORG I31, *ROW 25, 03172 *LPPREG=0 03173 MA(LPPREG), 03174 Y(0), 03175 Y>RAM, 03176 JUMP(LPP0); ----- ----- 011 000006EA 7E001100 ----- 03177 ***ROW 26********************** 03178 .ORG I32, *ROW 26 9TH 03179 *PR=INDEX TO P26FLGS 03180 * *PACKET 26 FRONT END ENABLE 03181 * MA(P26EN), 03182 * Y>IO, 03183 Y(-11), 03184 Y>PR, 03185 JBYTE(SP0F,SP0T); ----- ----- 012 00008128 80F51000 ----- 03186 ***ROW 27********************** 03187 .ORG I33, *ROW 27 03188 *LPPREG=0 03189 MA(LPPREG), 03190 Y(0), 03191 Y>RAM, 03192 JBYTE(PLP0F,PLP0T); ----- ----- 013 0000812A 7E001100 ----- 03193 ***ROW 28********************** 03194 .ORG I34, *ROW 28 03195 *LPPREG=0 03196 MA(LPPREG), 03197 Y(0), 03198 Y>RAM, 03199 JUMP(LPP0); ----- ----- 014 000006EA 7E001100 ----- 03200 ***ROW 29********************** 03201 .ORG I35, *ROW 29 03202 *LPPREG=0 03203 MA(LPPREG), 03204 Y(0), 03205 Y>RAM, 03206 JUMP(LPP0); ----- ----- 015 000006EA 7E001100 ----- 03207 ***ROW 30********************** 03208 .ORG I5T, *ROW 30 03209 *Y=RCM 03210 A(0), BR.0F>B, OR, 03211 JUMP(BSD0); ----- ----- 06F 0000074B 00001002 ----- 03212 .ORG BSD0, *LPPREG=9 6TH 03213 *MAGAZINE 8? 03214 MA(LPPREG), 03215 Y(9), 03216 Y>RAM, 03217 JZ(BSD1F,BSD1T); ----- ----- 74B 0000212C 7E091100 ----- 03218 .ORG BSD1F, *NOT 8/30 7TH 03219 *LPPREG=0 03220 MA(LPPREG), 03221 Y(0), 03222 Y>RAM, 03223 JUMP(LPP0); ----- ----- 12C 000006EA 7E001100 ----- 03224 .ORG BSD1T, *WAIT FOR DC 7TH 03225 JBYTE(BSD2F,BSD2T); ----- ----- 12D 0000812E 00000000 ----- 03226 .ORG BSD2F, 03227 JBYTE(BSD2F,BSD2T); ----- ----- 12E 0000812E 00000000 ----- 03228 .ORG BSD2T, *MASK 2 LSBS 1ST 03229 CBRDY, 03230 A(>FC), HAM>B, AND, 03231 JUMP(BSD3); ----- ----- 12F 0008074C 00FC2807 ----- 03232 .ORG BSD3, *STORE=FORMAT 2ND 03233 *FORMAT 1 OR 2? 03234 MA(STORE), 03235 A(>02), HAM>B, AND, 03236 Y>RAM, 03237 JZ(BSD4F,BSD4T); ----- ----- 74C 00082138 77020907 ----- 03238 .ORG BSD4F, *NOT FORMAT 1 OR 2, OR HAMMING ERROR 03239 *LPPREG=0 03240 MA(LPPREG), 03241 Y(0), 03242 Y>RAM, 03243 JUMP(LPP0); ----- ----- 138 000006EA 7E001100 ----- 03244 .ORG BSD4T, *OK TO PROCESS 3RD 03245 *WAIT FOR UNITS 03246 JBYTE(BSD5F,BSD5T); ----- ----- 139 0000813A 00000000 ----- 03247 .ORG BSD5F, * 03248 JBYTE(BSD5F,BSD5T); ----- ----- 13A 0000813A 00000000 ----- 03249 .ORG BSD5T, *RET2=UNITS, CHECK FOR HAMMING ERROR LATER 03250 CBRDY, 03251 MA(RET2), 03252 A(0), HAM>B, OR, 03253 Y>RAM, 03254 JUMP(BSD5A); ----- ----- 13B 0008074D 7B003107 ----- 03255 .ORG BSD5A, *THIS IS INSTRUCTION BETWEEN CBRDY AND JBYTE 03256 JUMP(BSD6F); ----- ----- 74D 0000013C 00000000 ----- 03257 .ORG BSD6F, *WAIT FOR TENS 03258 *AR=2 FOR WAIT CALL 03259 Y(2), 03260 Y>AR, 03261 JBYTE(BSD6F,BSD6T); ----- ----- 13C 0022813C 00021000 ----- 03262 .ORG BSD6T, *RET3=TENS, CHECK FOR HAMMING ERROR LATER 03263 CBRDY, 03264 MA(RET3), 03265 A(0), HAM>B, OR, 03266 Y>RAM, 03267 JUMP(BSD6A); ----- ----- 13D 0008074E 7A003107 ----- 03268 .ORG BSD6A, *THIS IS INSTRUCTION BETWEEN CBRDY AND JBYTE 03269 *CALL WAIT0F, AR=2 (WAIT FOR TWO BYTES) 03270 *RETURN=1, RETURN TO BSD7 03271 MA(RETURN), 03272 Y(1), 03273 Y>RAM, 03274 JUMP(WAIT0F); ----- ----- 74E 0000064E 7C011100 ----- 03275 .ORG BSD7, *Y=C4 03276 A(>08), HAM>B, AND, 03277 JUMP(BSD7A); ----- ----- 031 0008074F 00080807 ----- 03278 .ORG BSD7A, *ASSUME C4=0, KEEP ERROR INFO 03279 *IS C4=0? 03280 MA(RET4), 03281 A(>F0), HAM>B, AND, 03282 Y>RAM, Y>AR, 03283 JZ(BSD8F,BSD8T); ----- ----- 74F 002A213E 79F00907 ----- 03284 .ORG BSD8F, *ACTUALLY C4=1, CORRECT RET4, KEEP ERROR INFO 03285 MA(RET4), 03286 AR>A, B(1), ADD, 03287 Y>RAM, 03288 JUMP(BSD8T); ----- ----- 13E 0000013F 79010110 ----- 03289 .ORG BSD8T, *CALL WAIT0F, AR=2 (WAIT FOR TWO BYTES) 03290 *RETURN=2, RETURN TO BSD9 03291 *(ALSO USE THIS IN BSD13) 03292 MA(RETURN), 03293 Y(2), 03294 Y>RAM, Y>AR, 03295 JUMP(WAIT0F); ----- ----- 13F 0022064E 7C021100 ----- 03296 .ORG BSD9, *BR=RET4 5TH 03297 *PUT C5 AND C6 IN AR 03298 *MASK 2ND LSB TO PRESERVE C4 03299 MA(RET4), RAM>BR, 03300 A(>FD), HAM>B, AND, 03301 Y>AR, 03302 JUMP(BSD10); ----- ----- 032 002B075C 79FD0807 ----- 03303 .ORG BSD10, *OR C5 AND C6 INTO RET4, KEEP ERROR INFO 6TH 03304 *C4, C5 AND C6 NOW IN CORRECT POSITIONS 03305 MA(RET4), 03306 AR>>1>A, BR>B, OR, 03307 Y>RAM, 03308 JUMP(BSD11); ----- ----- 75C 0000075D 790011E1 ----- 03309 *WHICH FORMAT? 03310 .ORG BSD11, *BR=STORE 7TH 03311 MA(STORE), RAM>BR, 03312 JUMP(BSD12); ----- ----- 75D 0001075E 77000000 ----- 03313 .ORG BSD12, *Y=STORE 2ND LSB 8TH 03314 *AR=EXPREG 03315 MA(EXPREG), RAM>AR, 03316 A(>02), BR>B, AND, 03317 JUMP(BSD13); ----- ----- 75E 0002075F 63020801 ----- 03318 .ORG BSD13, *FORMAT 1 OR FORMAT 2? 9TH 03319 *POINT TO PAGE FOR FIRST 6 BYTES OF 03320 *FORMAT 1 DATA FIELD 03321 *RWL=0 03322 *IF FORMAT 1, CALL RDDA TO RECEIVE FIRST 6 BYTES 03323 *RETURN=2 (SEE BSD8T), RETURN TO BSD20 03324 MA(RWL), 03325 Y(0), 03326 Y>RAM, Y>IO, 03327 JZ(BSD14F,RDDA); ----- ----- 75F 00002148 0B005100 ----- 03328 *RECIEVING PACKET 8/30 FORMAT 1 DATA 03329 .ORG BSD20, *POINT TO PAGE FOR LAST 7 BYTES OF DATA FIELD 03330 *RWL=1 03331 MA(RWL), 03332 Y(1), 03333 Y>RAM, Y>IO, 03334 JUMP(BSD21); ----- ----- 58A 00000764 0B015100 ----- 03335 .ORG BSD21, *CALL RDDB TO RX LAST 7 BYTES 03336 *RETURN=1, RETURN TO BSD30 03337 MA(RETURN), 03338 Y(1), 03339 Y>RAM, 03340 JUMP(RDDB); ----- ----- 764 00000765 7C011100 ----- 03341 *ENTRY POINT FROM FORMAT 2 CODE 03342 .ORG BSD30, *POINT TO PAGE FOR FIRST 6 BYTES OF STATUS FIELD 03343 *RWL=2 03344 MA(RWL), 03345 Y(2), 03346 Y>RAM, Y>IO, 03347 JUMP(BSD31); ----- ----- 589 00000766 0B025100 ----- 03348 .ORG BSD31, *CALL RPDA TO RX FIRST 6 BYTES OF STATUS FIELD 03349 *RETURN=0, RETURN TO BSD40Y 03350 MA(RETURN), 03351 Y(0), 03352 Y>RAM, 03353 JUMP(RPDA); ----- ----- 766 00000767 7C001100 ----- 03354 .ORG BSD40Y, *POINT TO PAGE FOR NEXT 7 BYTES OF STATUS FIELD 03355 *RWL=3 03356 MA(RWL), 03357 Y(3), 03358 Y>RAM, Y>IO, 03359 JUMP(BSD41); ----- ----- 588 0000076C 0B035100 ----- 03360 .ORG BSD41, *CALL RPDB TO RX NEXT 7 BYTES OF STATUS FIELD 03361 *RETURN=3, RETURN TO BSD50 03362 MA(RETURN), 03363 Y(3), 03364 Y>RAM, 03365 JUMP(RPDB); ----- ----- 76C 0000076D 7C031100 ----- 03366 .ORG BSD50, *POINT TO PAGE FOR LAST 7 BYTES OF STATUS FIELD 03367 *RWL=4 03368 MA(RWL), 03369 Y(4), 03370 Y>RAM, Y>IO, 03371 JUMP(BSD51); ----- ----- 58B 0000076E 0B045100 ----- 03372 .ORG BSD51, *CALL RPDB TO RX LAST 7 BYTES OF STATUS FIELD 03373 *RETURN=4, RETURN TO BSD60 03374 MA(RETURN), 03375 Y(4), 03376 Y>RAM, 03377 JUMP(RPDB); ----- ----- 76E 0000076D 7C041100 ----- 03378 .ORG BSD60, *AR=EXPREG 03379 MA(EXPREG), RAM>AR, 03380 JUMP(BSD61); ----- ----- 58C 0002076F 63000000 ----- 03381 .ORG BSD61, *Y=USM 03382 AR>A, B(USM), AND, 03383 JUMP(BSD62); ----- ----- 76F 00000770 00020810 ----- 03384 .ORG BSD62, *USM? 03385 JZ(BSD63F,BSD63T); ----- ----- 770 0000214A 00000000 ----- 03386 .ORG BSD63F, *SRTC=1, CGAP=1 03387 *USER STATUS MODE, GENERATE A PROMPT 03388 MA(EXPREG), 03389 AR>A, B(SRTC+CGAP), OR, 03390 Y>RAM, 03391 JUMP(LPP0); ----- ----- 14A 000006EA 63091110 ----- 03392 .ORG BSD63T, *SRTC=1 03393 MA(EXPREG), 03394 AR>A, B(SRTC), OR, 03395 Y>RAM, 03396 JUMP(LPP0); ----- ----- 14B 000006EA 63011110 ----- 03397 *PROCESS PACKET 8/30 FORMAT 2 DATA 03398 * A=EXPREG 03399 .ORG BSD14F, *FORMAT 2 10TH 03400 *LPPREG=7 03401 MA(LPPREG), 03402 Y(7), 03403 Y>RAM, 03404 JUMP(BSD70F); ----- ----- 148 0000014C 7E071100 ----- 03405 .ORG BSD70F, *WAIT FOR FIRST DATA BYTE 11TH 03406 *Y=P830F2 03407 AR>A, B(P830F2), AND, 03408 JBYTE(BSD70F,BSD70T); ----- ----- 14C 0000814C 00800810 ----- 03409 .ORG BSD70T, *Y=HAM 1ST 03410 *CAPTURING EXTENSION PACKETS? 03411 *AR=STOR7 03412 CBRDY, 03413 MA(STOR7), RAM>AR, 03414 A(0), HAM>B, OR, 03415 JZ(BSD71F,BSD71T); ----- ----- 14D 000A214E 27003007 ----- 03416 *NOT CAPTURING FORMAT 2 DATA 03417 .ORG BSD71T, *WAIT FOR STATUS FIELD (12 BYTES) 03418 Y(12), 03419 Y>AR, 03420 JUMP(BSD71A); ----- ----- 14F 00220771 000C1000 ----- 03421 *ENTRY POINT IF HAMMING ERROR IN THIS BYTE 03422 .ORG BSD71A, *CALL WAIT0F 03423 *RETURN=3, RETURN TO BSD71B 03424 MA(RETURN), 03425 Y(3), 03426 Y>RAM, 03427 JUMP(WAIT0F); ----- ----- 771 0000064E 7C031100 ----- 03428 .ORG BSD71B, *GO AND RECIEVE STATUS 03429 JUMP(BSD30); ----- ----- 033 00000589 00000000 ----- 03430 *CAPTURING FORMAT 2 DATA 03431 .ORG BSD71F, *HAMMING OK? 2ND 03432 *POINT TO STOR7 03433 *RWL=STOR7 03434 MA(RWL), 03435 ARHI>A, B(0), OR, 03436 Y>RAM, Y>IO, 03437 JN(BSD72F,BSD72T); ----- ----- 14E 00004150 0B005120 ----- 03438 .ORG BSD72T, *HAMMING ERROR 03439 *WAIT FOR STATUS FIELD (12 BYTES) 03440 Y(12), 03441 Y>AR, 03442 JUMP(BSD71A); ----- ----- 151 00220771 000C1000 ----- 03443 .ORG BSD72F, *AR=LABEL INTERLEAVE BITS 3RD 03444 A(3), HAM>B, AND, 03445 Y>AR, 03446 JUMP(BSD73); ----- ----- 150 002A0772 00030807 ----- 03447 .ORG BSD73, *POINT TO ROW FOR THIS INTERLEAVE 4TH 03448 AR<<3>A, AR<<5>B, ADD, 03449 Y>PR, 03450 JUMP(BSD74); ----- ----- 772 00000773 80000059 ----- 03451 .ORG BSD74, *READ BYTE COUNT STORED IN PAGE MEMORY 5TH 03452 *BR=MEMORY POINTER 03453 *SET AR AS A LOOP COUNTER TO RECIEVE 12 BYTES 03454 RVDP, 03455 PR>BR, 03456 Y(12), 03457 Y>AR, 03458 JUMP(BSD75); ----- ----- 773 00630774 000C9000 ----- 03459 .ORG BSD75, *INCREMENT BYTE COUNT 6TH 03460 TPD>A, B(1), ADD, 03461 Y>DR, 03462 JUMP(BSD76); ----- ----- 774 00001775 00010090 ----- 03463 .ORG BSD76, *POINT TO LOC FOR 1ST DATA BYTE 7TH 03464 A(1), BR>B, ADD, 03465 Y>PR, 03466 JUMP(BSD77); ----- ----- 775 00000776 80010001 ----- 03467 .ORG BSD77, *STORE 1ST DATA BYTE 8TH 03468 *BR=PR 03469 *OR WITH >30 TO MAKE IT VISIBLE 03470 PR>BR, 03471 A(>30), HAM>B, OR, 03472 Y>DR, 03473 JBYTE(BSD90F,BSD90T); ----- ----- 776 00499152 00301007 ----- 03474 *LOOP TO RECIEVE 12 BYTES OF HAMMING DATA 03475 * RWL, PR POINT TO RAM, AR=COUNT 03476 .ORG BSD90F, *WAIT FOR BYTE 03477 *BR=PR 03478 PR>BR, 03479 JBYTE(BSD90F,BSD90T); ----- ----- 152 00418152 00000000 ----- 03480 .ORG BSD90T, *DEC LOOP COUNT 1ST 03481 CBRDY, 03482 AR>A, B(-1), ADD, 03483 Y>AR, 03484 JUMP(BSD91); ----- ----- 153 00220777 00FF2010 ----- 03485 .ORG BSD91, *INCREMENT RAM ADDRESS, LAST BYTE? 2ND 03486 A(1), BR>B, ADD, 03487 Y>PR, 03488 JZ(BSD92F,BSD92T); ----- ----- 777 00002154 80010001 ----- 03489 .ORG BSD92F, *STORE BYTE 3RD 03490 *OR WITH >30 TO MAKE IT VISIBLE 03491 A(>30), HAM>B, OR, 03492 Y>DR, 03493 JUMP(BSD90F); ----- ----- 154 00081152 00301007 ----- 03494 *END OF LOOP 03495 .ORG BSD92T, *STORE LAST BYTE 3RD 03496 *OR WITH >30 TO MAKE IT VISIBLE 03497 A(>30), HAM>B, OR, 03498 Y>DR, 03499 JUMP(BSD30); ----- ----- 155 00081589 00301007 ----- 03500 ***ROW 31********************** 03501 .ORG I37, *ROW 31 03502 *LPPREG=0 03503 MA(LPPREG), 03504 Y(0), 03505 Y>RAM, 03506 JUMP(LPP0); ----- ----- 017 000006EA 7E001100 ----- 03507 * 03508 ***RDD: RECEIVE 'DATA' DATA 03509 * 03510 * This routine stores incomming bytes in data mode. It is a tight 03511 * loop which enables it to be called to receive sections of 03512 * extension packets as appropriate. It does not check for packet 26 03513 * markers. The i/p pars are:- 03514 * PR, RWL:page memory start address -1 03515 * COUNT: number of bytes to receive 03516 * RETURN: pointer to return address 03517 * 03518 *SET BR=-7, COUNT=6 BEFORE CALLING RDD0F 03519 .ORG RDDA, *PR=-7 03520 Y(-7), 03521 Y>PR, 03522 JUMP(RDDAA); ----- ----- 149 0000077A 80F91000 ----- 03523 .ORG RDDAA, *COUNT=6 03524 MA(COUNT), 03525 Y(6), 03526 Y>RAM, 03527 JBYTE(RDD0F,RDD0T); ----- ----- 77A 00008156 78061100 ----- 03528 *SET BR=-8, COUNT=7 BEFORE CALLING RDD0F 03529 .ORG RDDB, *PR=-8 03530 Y(-8), 03531 Y>PR, 03532 JUMP(RDDBB); ----- ----- 765 0000077B 80F81000 ----- 03533 .ORG RDDBB, *COUNT=7 03534 MA(COUNT), 03535 Y(7), 03536 Y>RAM, 03537 JBYTE(RDD0F,RDD0T); ----- ----- 77B 00008156 78071100 ----- 03538 * 03539 .ORG RDD0F, *WAIT FOR BYTE 03540 JBYTE(RDD0F,RDD0T); ----- ----- 156 00008156 00000000 ----- 03541 .ORG RDD0T, *AR=RETURN 03542 *BR=SCREEN POINTER 03543 PR>BR, 03544 CBRDY, 03545 MA(RETURN), RAM>AR, 03546 JUMP(RDD10); ----- ----- 157 0043077C 7C002000 ----- 03547 .ORG RDD10, *PR++ 2ND 03548 *BR=COUNT 03549 MA(COUNT), RAM>BR, 03550 A(1), BR>B, ADD, 03551 Y>PR, 03552 JUMP(RDD20); ----- ----- 77C 0001077D F8010001 ----- 03553 .ORG RDD20, *DR=DATA 3RD 03554 *TCJ A(0), PTY>B, OR, 03555 A(0), DATA>B, OR, 03556 Y>DR, 03557 JUMP(RDD20A); ----- ----- 77D 0000177E 00001005 ----- 03558 .ORG RDD20A, *COUNT-- 4TH 03559 MA(COUNT), 03560 A(-1), BR>B, ADD, 03561 Y>RAM, 03562 JUMP(RDD21); ----- ----- 77E 0000077F 78FF0101 ----- 03563 .ORG RDD21, *LAST BYTE? 5TH 03564 *Y=RETURN 03565 AR>A, B(0), OR, 03566 JZ(RDD22F,RDD22T); ----- ----- 77F 00002158 00001010 ----- 03567 .ORG RDD22F, *WAIT FOR BYTE 6TH 03568 *BR=PR 03569 PR>BR, 03570 JBYTE(RDD0F,RDD0T); ----- ----- 158 00418156 00000000 ----- 03571 *EXIT 03572 .ORG RDD22T, *CASE RETURN 6TH 03573 JY(BSD40Y); ----- ----- 159 0000C588 00000000 ----- 03574 * 03575 ***RPD: RECEIVE PARITY DATA 03576 * 03577 * This routine stores incomming bytes in parity mode. It is a tight 03578 * loop which enables it to be called to receive sections of 03579 * extension packets as appropriate. It does not check for packet 26 03580 * markers. The i/p pars are:- 03581 * PR, RWL:page memory start address -1 03582 * COUNT: number of bytes to receive 03583 * RETURN: pointer to return address 03584 * 03585 *SET BR=-7, COUNT=6 BEFORE CALLING RPD0F 03586 .ORG RPDA, *PR=-7 03587 Y(-7), 03588 Y>PR, 03589 JUMP(RPDAA); ----- ----- 767 00000782 80F91000 ----- 03590 .ORG RPDAA, *COUNT=6 03591 MA(COUNT), 03592 Y(6), 03593 Y>RAM, 03594 JBYTE(RPD0F,RPD0T); ----- ----- 782 0000815A 78061100 ----- 03595 *SET BR=-8, COUNT=7 BEFORE CALLING RPD0F 03596 .ORG RPDB, *PR=-8 03597 Y(-8), 03598 Y>PR, 03599 JUMP(RPDBB); ----- ----- 76D 00000783 80F81000 ----- 03600 .ORG RPDBB, *COUNT=7 03601 MA(COUNT), 03602 Y(7), 03603 Y>RAM, 03604 JBYTE(RPD0F,RPD0T); ----- ----- 783 0000815A 78071100 ----- 03605 * 03606 .ORG RPD0F, *WAIT FOR BYTE 03607 JBYTE(RPD0F,RPD0T); ----- ----- 15A 0000815A 00000000 ----- 03608 .ORG RPD0T, *Y=PTY 1ST 03609 *AR=RETURN 03610 PR>BR, 03611 CBRDY, 03612 MA(RETURN), RAM>AR, 03613 A(0), PTY>B, OR, 03614 JUMP(RPD10); ----- ----- 15B 00470784 7C003005 ----- 03615 .ORG RPD10, *PTY OK? 2ND 03616 *PR++ 03617 *BR=COUNT 03618 MA(COUNT), RAM>BR, 03619 A(1), BR>B, ADD, 03620 Y>PR, 03621 JN(RPD20F,RPD20T); ----- ----- 784 0001415C F8010001 ----- 03622 .ORG RPD20F, *PTY OK, DR=PTY 3RD 03623 A(0), PTY>B, OR, 03624 Y>DR, 03625 JUMP(RPD20T); ----- ----- 15C 0004115D 00001005 ----- 03626 * 03627 .ORG RPD20T, *COUNT-- 4TH 03628 MA(COUNT), 03629 A(-1), BR>B, ADD, 03630 Y>RAM, 03631 JUMP(RPD21); ----- ----- 15D 00000785 78FF0101 ----- 03632 .ORG RPD21, *LAST BYTE? 5TH 03633 *Y=RETURN 03634 AR>A, B(0), OR, 03635 JZ(RPD22F,RPD22T); ----- ----- 785 0000215E 00001010 ----- 03636 .ORG RPD22F, *WAIT FOR BYTE 6TH 03637 *BR=PR 03638 PR>BR, 03639 JBYTE(RPD0F,RPD0T); ----- ----- 15E 0041815A 00000000 ----- 03640 *EXIT 03641 .ORG RPD22T, *CASE RETURN 6TH 03642 JY(BSD40Y); ----- ----- 15F 0000C588 00000000 ----- 03643 * 03644 ***RDC: RECEIVE DISPLAY CHARACTERS 03645 * 03646 * This routine stores incomming display characters in the memory location 03647 * defined by the input parameters:- 03648 * PR, COUNT (contains number of characters), RWL 03649 * The routine exits to line post processing routine 03650 * 03651 .ORG RDC0F, *LINE RDY? 03652 JLINE(RDC1F,RDC1T); ----- ----- 106 00006160 00000000 ----- 03653 .ORG RDC0T, *BYTE IS READY 3RD 03654 RVDP, BIT8, CBRDY, 03655 A(0), PTY>B, OR, 03656 JUMP(RDC2); ----- ----- 107 00040786 0000B405 ----- 03657 .ORG RDC1F, *BYTE RDY? 2ND 03658 JBYTE(RDC0F,RDC0T); ----- ----- 160 00008106 00000000 ----- 03659 .ORG RDC1T, *LINE RDY, ERROR 03660 CBRDY, 03661 JUMP(LPP0); ----- ----- 161 000006EA 00002000 ----- 03662 * 03663 .ORG RDC2, *Y=EXISTING DATA WITH MARKER 4TH 03664 *B=LAFR 03665 MA(LAFR), RAM>BR, 03666 TPD>A, B(0), OR, 03667 JUMP(RDC3); ----- ----- 786 00010787 35001090 ----- 03668 .ORG RDC3, *P26 MARKER? 5TH 03669 *Y=PTY 03670 *A=COUNT 03671 MA(COUNT), RAM>AR, 03672 A(0), PTY>B, OR, 03673 JN(RDC4F,RDC4T); ----- ----- 787 00064162 78001005 ----- 03674 .ORG RDC4T, *P26 MARKER 6TH+8TH 03675 *COUNT-- 03676 MA(COUNT), 03677 AR>A, B(-1), ADD, 03678 Y>RAM, 03679 JUMP(RDC8T); ----- ----- 163 00000167 78FF0110 ----- 03680 .ORG RDC4F, *NOT A MARKED P26 CHARACTER 6TH 03681 *Y=CLR 03682 *PARITY OK? 03683 A(CLR), BR>B, AND, 03684 JN(RDC7F,RDC7T); ----- ----- 162 00004164 00200801 ----- 03685 .ORG RDC7F, *PTY OK, WRITE PTY DATA TO RAM 7TH 03686 A(0), PTY>B, OR, 03687 Y>DR, 03688 JUMP(RDC4T); ----- ----- 164 00041163 00001005 ----- 03689 .ORG RDC7T, *BAD PTY 7TH 03690 *CLEAR PAGE PENDING? 03691 *COUNT-- 03692 MA(COUNT), 03693 AR>A, B(-1), ADD, 03694 Y>RAM, 03695 JZ(RDC8F,RDC8T); ----- ----- 165 00002166 78FF0110 ----- 03696 .ORG RDC8F, *CLEAR PAGE PENDING AND BAD PARITY 03697 *WRITE A SPACE 8TH 03698 *COUNT=0? 03699 *B=P 03700 PR>BR, 03701 Y(>20), 03702 Y>DR, 03703 JZ(RDC9F,RDC9T); ----- ----- 166 00413168 00201000 ----- 03704 .ORG RDC8T, *NO CLEAR PAGE PENDING AND BAD PARITY 03705 *OR P26 MARKER 8TH+9TH 03706 *DO NOTHING 03707 *COUNT=0? 03708 *B=P 03709 PR>BR, 03710 JZ(RDC9F,RDC9T); ----- ----- 167 00412168 00000000 ----- 03711 .ORG RDC9F, *COUNT!=0, MORE CHARACTERS 10TH 03712 *INC P 03713 A(1), BR>B, ADD, 03714 Y>PR, 03715 JBYTE(RDC0F,RDC0T); ----- ----- 168 00008106 80010001 ----- 03716 .ORG RDC9T, *NO MORE CHARACTERS 03717 *CALL LPP0 03718 JUMP(LPP0); ----- ----- 169 000006EA 00000000 ----- 03719 * 03720 ***AIT: RECEIVE ADDITIONAL INFORMATION TABLE CHARACTERS 03721 * 03722 * This routine stores incomming AIT characters in the memory location 03723 * defined by the input parameters:- 03724 * PR, COUNT (contains number of characters), RWL 03725 * The routine exits to line post processing routine 03726 * 03727 .ORG AIT0A, *THISRW<23? 10TH 03728 *COUNT=40 03729 MA(COUNT), 03730 A(20), B(20), ADD, 03731 Y>RAM, 03732 JN(AIT0BF,AIT0BT); ----- ----- 742 0000416A 78140100 ----- 03733 .ORG AIT0BT, *BYTE RDY? 11TH 03734 JBYTE(AIT0F,AIT0T); ----- ----- 16B 0000816C 00000000 ----- 03735 .ORG AIT0BF, *THISRW>23, ERROR 03736 JUMP(LPP0); ----- ----- 16A 000006EA 00000000 ----- 03737 ***RECEIVE HAM FIELDS 03738 .ORG AIT0F, *LINE RDY? 03739 JLINE(AIT1F,AIT1T); ----- ----- 16C 0000616E 00000000 ----- 03740 .ORG AIT0T, *BYTE IS READY 3RD 03741 *Y=BYTE, 03742 CBRDY, 03743 MA(COUNT), RAM>AR, 03744 A(0), HAM>B, OR, 03745 JUMP(AIT2); ----- ----- 16D 000A078C 78003007 ----- 03746 .ORG AIT1F, *BYTE RDY? 2ND 03747 JBYTE(AIT0F,AIT0T); ----- ----- 16E 0000816C 00000000 ----- 03748 .ORG AIT1T, *LINE RDY, ERROR 03749 CBRDY, 03750 JUMP(LPP0); ----- ----- 16F 000006EA 00002000 ----- 03751 .ORG AIT2, *PTY OK? 4TH 03752 *COUNT-- 03753 MA(COUNT), 03754 AR>A, B(-1), ADD, 03755 Y>RAM, Y>AR, 03756 JN(AIT3F,AIT3T); ----- ----- 78C 00224170 78FF0110 ----- 03757 .ORG AIT3T, *PTY ERROR 5TH 03758 JUMP(AIT4); ----- ----- 171 0000078D 00000000 ----- 03759 .ORG AIT3F, *PTY OK 5TH+6TH 03760 *WRITE TO RAM 03761 A(>30), HAM>B, OR, 03762 Y>DR, 03763 JUMP(AIT4); ----- ----- 170 0008178D 00301007 ----- 03764 .ORG AIT4, *Y=COUNT-32 7TH 03765 AR>A, B(-32), ADD, 03766 JUMP(AIT5); ----- ----- 78D 0000078E 00E00010 ----- 03767 .ORG AIT5, *Y=COUNT-12, COUNT==32? 8TH 03768 PR>BR, 03769 AR>A, B(-12), ADD, 03770 JZ(AIT6F,AIT6T); ----- ----- 78E 00412172 00F40010 ----- 03771 .ORG AIT6F, *COUNT!=32, COUNT==12? 9TH 03772 *INC P 03773 A(1), BR>B, ADD, 03774 Y>PR, 03775 JZ(AIT7F,AIT7T); ----- ----- 172 00002174 80010001 ----- 03776 .ORG AIT7F, *COUNT NOT 32 OR 12 9TH 03777 *CONT WITH HAM 03778 JBYTE(AIT0F,AIT0T); ----- ----- 174 0000816C 00000000 ----- 03779 .ORG AIT6T, *COUNT IS 32, RCV PTY 9TH 03780 *INC P 03781 A(1), BR>B, ADD, 03782 Y>PR, 03783 JBYTE(AIT10F,AIT10T); ----- ----- 173 00008176 80010001 ----- 03784 .ORG AIT7T, *COUNT IS 12, RCV PTY 10TH 03785 JBYTE(AIT10F,AIT10T); ----- ----- 175 00008176 00000000 ----- 03786 ***RECEIVE PARITY FIELDS 03787 .ORG AIT10F, *LINE RDY? 03788 JLINE(AIT11F,AIT11T); ----- ----- 176 00006178 00000000 ----- 03789 .ORG AIT10T, *BYTE IS READY 3RD 03790 *Y=BYTE, 03791 CBRDY, 03792 MA(COUNT), RAM>AR, 03793 A(0), PTY>B, OR, 03794 JUMP(AIT12); ----- ----- 177 0006078F 78003005 ----- 03795 .ORG AIT11F, *BYTE RDY? 2ND 03796 JBYTE(AIT10F,AIT10T); ----- ----- 178 00008176 00000000 ----- 03797 .ORG AIT11T, *LINE RDY, ERROR 03798 CBRDY, 03799 JUMP(LPP0); ----- ----- 179 000006EA 00002000 ----- 03800 .ORG AIT12, *PTY OK? 4TH 03801 *COUNT-- 03802 MA(COUNT), 03803 AR>A, B(-1), ADD, 03804 Y>RAM, Y>AR, 03805 JN(AIT13F,AIT13T); ----- ----- 78F 0022417A 78FF0110 ----- 03806 .ORG AIT13T, *PTY ERROR, COUNT++ ==0? 5TH 03807 JZ(AIT14F,AIT14T); ----- ----- 17B 0000217C 00000000 ----- 03808 .ORG AIT13F, *PTY OK, COUNT ==0? 5TH+6TH 03809 *WRITE TO RAM 03810 A(0), PTY>B, OR, 03811 Y>DR, 03812 JZ(AIT14F,AIT14T); ----- ----- 17A 0004317C 00001005 ----- 03813 .ORG AIT14T, *COUNT==0 7TH 03814 *CALL LPP0 03815 JUMP(LPP0); ----- ----- 17D 000006EA 00000000 ----- 03816 .ORG AIT14F, *Y=COUNT-20 7TH 03817 PR>BR, 03818 AR>A, B(-20), ADD, 03819 JUMP(AIT15); ----- ----- 17C 0041079B 00EC0010 ----- 03820 .ORG AIT15, *COUNT=20? 8TH 03821 *INC P 03822 A(1), BR>B, ADD, 03823 Y>PR, 03824 JZ(AIT16F,AIT16T); ----- ----- 79B 0000217E 80010001 ----- 03825 .ORG AIT16F, *COUNT IS NOT 20 OR 0 9TH 03826 *CONT WITH PTY 03827 JBYTE(AIT10F,AIT10T); ----- ----- 17E 00008176 00000000 ----- 03828 .ORG AIT16T, *COUNT IS 20, RCV HAM 9TH 03829 JBYTE(AIT0F,AIT0T); ----- ----- 17F 0000816C 00000000 ----- 03830 ***BTT: RECEIVE BASIC TOP TABLE CHARACTERS 03831 * 03832 * This routine stores incomming BTT characters in the memory location 03833 * defined by the input parameters:- 03834 * PR, COUNT (contains number of characters), RWL 03835 * The routine exits to line post processing routine 03836 * 03837 .ORG BTT0A, *THISRW<23? 10TH 03838 *COUNT=40 03839 MA(COUNT), 03840 A(20), B(20), ADD, 03841 Y>RAM, 03842 JN(BTT0BF,BTT0BT); ----- ----- 743 00004180 78140100 ----- 03843 .ORG BTT0BT, *BYTE RDY? 11TH 03844 JBYTE(BTT0F,BTT0T); ----- ----- 181 00008182 00000000 ----- 03845 .ORG BTT0BF, *THISRW>23, ERROR 03846 JUMP(LPP0); ----- ----- 180 000006EA 00000000 ----- 03847 ***RECEIVE HAM FIELDS 03848 .ORG BTT0F, *LINE RDY? 03849 JLINE(BTT1F,BTT1T); ----- ----- 182 00006184 00000000 ----- 03850 .ORG BTT0T, *BYTE IS READY 3RD 03851 *TPD=EXISTING BYTE 03852 *LOCAL= THIS BYTE 03853 RVDP, 03854 CBRDY, 03855 MA(LOCAL), 03856 A(0), HAM>B, OR, 03857 Y>RAM, 03858 JUMP(BTT2); ----- ----- 183 0008079C 7200B107 ----- 03859 .ORG BTT1F, *BYTE RDY? 2ND 03860 JBYTE(BTT0F,BTT0T); ----- ----- 184 00008182 00000000 ----- 03861 .ORG BTT1T, *LINE RDY, ERROR 03862 CBRDY, 03863 JUMP(LPP0); ----- ----- 185 000006EA 00002000 ----- 03864 .ORG BTT2, *HAMMING ERROR? 4TH 03865 *A= COPY OF INVENTORY FLAG 03866 TPD>A, B(>80), AND, 03867 Y>AR, 03868 JN(BTT3F,BTT3T); ----- ----- 79C 00224186 00800890 ----- 03869 * 03870 .ORG BTT3T, *HAMMING ERROR 5TH 03871 *CALL BTT ERROR CODE IN LINE POST PROCESSING 03872 *LPPREG=10 03873 MA(LPPREG), 03874 Y(10), 03875 Y>RAM, 03876 JUMP(BTT3A); ----- ----- 187 0000079D 7E0A1100 ----- 03877 .ORG BTT3A, *A=COUNT 6TH 03878 MA(COUNT), RAM>AR, 03879 JUMP(BTT5); ----- ----- 79D 0002079E 78000000 ----- 03880 * 03881 .ORG BTT3F, *HAMMING OK 5TH 03882 *OR COPY OF EXISTING BYTE WITH >30 TO MAKE IT VISIBLE 03883 *B=HAM BYTE 03884 MA(LOCAL), RAM>BR, 03885 AR>A, B(>30), OR, 03886 Y>AR, 03887 JUMP(BTT4); ----- ----- 186 0023079F 72301010 ----- 03888 .ORG BTT4, *UPDATE BYTE 6TH 03889 *A=COUNT 03890 MA(COUNT), RAM>AR, 03891 AR.F0>A, BR.0F>B, OR, 03892 Y>DCLR, 03893 JUMP(BTT5); ----- ----- 79F 0002179E 780014D2 ----- 03894 * 03895 .ORG BTT5, *COUNT-- 7TH 03896 MA(COUNT), 03897 AR>A, B(-1), ADD, 03898 Y>RAM, 03899 JUMP(BTT6); ----- ----- 79E 000007A9 78FF0110 ----- 03900 .ORG BTT6, *COUNT=0? 8TH 03901 PR>BR, 03902 JZ(BTT7F,BTT7T); ----- ----- 7A9 00412188 00000000 ----- 03903 .ORG BTT7F, *MORE BYTES 9TH 03904 *INC P 03905 A(1), BR>B, ADD, 03906 Y>PR, 03907 JBYTE(BTT0F,BTT0T); ----- ----- 188 00008182 80010001 ----- 03908 * 03909 .ORG BTT7T, *COUNT==0 03910 *CALL LPP0 03911 JUMP(LPP0); ----- ----- 189 000006EA 00000000 ----- 03912 * 03913 *+++SP: PACKET 26 PROCESSING 03914 * 03915 * PR=INDEX TO PACKET 26 FLAGS, RWL=LATCH FOR THIS PAGE 03916 *FIRST PROCESS DESIGNATION CODE 03917 .ORG SP0F, *WAIT FOR DC 03918 JBYTE(SP0F,SP0T); ----- ----- 128 00008128 00000000 ----- 03919 .ORG SP0T, *PACKET 26 FRONT END ENABLE 1ST 03920 *TPD=P26FLGS 03921 CBRDY, 03922 RVDP, 03923 MA(P26EN), 03924 Y>IO, 03925 JUMP(SP1); ----- ----- 129 000007AA 0A00E000 ----- 03926 .ORG SP1, *AR=P26FLGS 2ND 03927 *USE AR AS TEMP STORE FOR P26FLGS, STORE UPDATES 03928 *IN TPD BEFORE LEAVING SP CODE 03929 TPD>A, B(0), OR, 03930 Y>AR, 03931 JUMP(SP2); ----- ----- 7AA 002207AB 00001090 ----- 03932 .ORG SP2, *Y=DC 4TH 03933 A(0), HAM>B, OR, 03934 JUMP(SP3); ----- ----- 7AB 000807AC 00001007 ----- 03935 .ORG SP3, *DC=0? 5TH 03936 *Y=DC XOR OLDC 03937 AR.0F>A, HAM>B, XOR, 03938 JZ(SP4F,SP4T); ----- ----- 7AC 0008218A 000018C7 ----- 03939 .ORG SP4T, *DC=0, OLDDC=1 6TH 03940 *STORE IT FOR LPP0 CODE 03941 MA(RET2), 03942 AR.F0>A, B(1), ADD, 03943 Y>AR, Y>RAM, 03944 JUMP(SP6F); ----- ----- 18B 0022018C 7B0101D0 ----- 03945 .ORG SP4F, *OLDDC=DC+1 03946 *IN SEQUENCE? 03947 *STORE IT FOR LPP0 CODE 03948 MA(RET2), 03949 AR.F0>A, HAM>B, O>CIN, ADD, 03950 Y>AR, Y>RAM, 03951 JZ(SP6F,SP6T); ----- ----- 18A 002A218C 7B0005D7 ----- 03952 * 03953 .ORG SP6F, *OUT OF SEQUENCE OR DC=0 7TH 03954 *P26ON=0 03955 AR>A, B(>7F), AND, 03956 Y>AR, 03957 JUMP(SP6T); ----- ----- 18C 0022018D 007F0810 ----- 03958 *COMMON EXIT FROM DC CODE 03959 .ORG SP6T, *INITIALISE TRIPLET COUNT 8TH 03960 *ALSO USE COUNT AS OFFSET FOR PDC STORAGE 03961 *COUNT=39 03962 MA(COUNT), 03963 Y(39), 03964 Y>RAM, 03965 JUMP(SP7); ----- ----- 18D 000007AD 78271100 ----- 03966 .ORG SP7, *LPPREG=0 9TH 03967 *NO POST PROCESSING REQUIRED UNLESS PDC TRIPLET STORED 03968 MA(LPPREG), 03969 Y(0), 03970 Y>RAM, 03971 JUMP(SP8); ----- ----- 7AD 000007AE 7E001100 ----- 03972 .ORG SP8, *INIT PDC BYTE COUNT 03973 MA(LOCAL), 03974 Y(0), 03975 Y>RAM, 03976 JUMP(SP10F); ----- ----- 7AE 00000190 72001100 ----- 03977 *WAIT FOR PACKET 26 TRIPLET 03978 .ORG SP10F, *BYTE READY? 10TH 03979 *PR=INDEX TO P26ROW 03980 Y(-12), 03981 Y>PR, 03982 JBYTE(SP11F,SP11T); ----- ----- 190 0000818E 80F41000 ----- 03983 .ORG SP11F, *LINE READY? 03984 JLINE(SP10F,SP10T); ----- ----- 18E 00006190 00000000 ----- 03985 .ORG SP10T, *UNEXPECTED LINE READY ERROR 03986 CBRDY, 03987 JUMP(SP53T); ----- ----- 191 000001A7 00002000 ----- 03988 *PROCESS PACKET 26 TRIPLET 03989 .ORG SP11T, *Y=ADDRESS 2ND 03990 *TPD=P26ROW 03991 CBRDY, 03992 RVDP, 03993 A(0), P26AD>B, OR, 03994 JUMP(SP12); ----- ----- 18F 000007AF 0000B008 ----- 03995 .ORG SP12, *PARITY OK? 3RD 03996 *Y=ADDRESS-40 03997 A(-40), P26AD>B, ADD, 03998 JN(SP13F,SP13T); ----- ----- 7AF 00004192 00D80008 ----- 03999 .ORG SP13T, *TRIPLET HAMMING ERROR 4TH 04000 *P26ON=0 04001 AR>A, B(>7F), AND, 04002 Y>AR, 04003 JUMP(SP50T); ----- ----- 193 002201A1 007F0810 ----- 04004 .ORG SP13F, *TRIPLET PARITY OK 4TH 04005 *ROW OR COLUMN FORMAT BYTE? 04006 *Y=ADDRESS-40 04007 A(-40), P26AD>B, ADD, 04008 JN(SP14F,SP14T); ----- ----- 192 00004194 00D80008 ----- 04009 *ROW FORMAT BYTE 04010 .ORG SP14F, *ADDRESS=40? 5TH 04011 *Y=ADDRESS-63 04012 A(-63), P26AD>B, ADD, 04013 JZ(SP20F,SP20T); ----- ----- 194 00002196 00C10008 ----- 04014 .ORG SP20F, *ADDRESS=63? 04015 *Y=MODE-31 04016 A(-31), P26MO>B, ADD, 04017 JZ(SP21F,SP21T); ----- ----- 196 00042198 00E10008 ----- 04018 .ORG SP21F, *ADDRESS NOT 40 OR 63 04019 JUMP(SP22F); ----- ----- 198 0000019A 00000000 ----- 04020 .ORG SP21T, *ADDRESS=63, MODE=31? 04021 JZ(SP22F,SP22T); ----- ----- 199 0000219A 00000000 ----- 04022 .ORG SP22T, *ADDRESS=63, MODE=31 04023 *PACKET 26 TERMINATOR 04024 *P26ON=0, EXIT 04025 AR>A, B(>7F), AND, 04026 Y>AR, 04027 JUMP(SP53T); ----- ----- 19B 002201A7 007F0810 ----- 04028 * NOT PACKET 26 TERMINATOR OR ADDRESS 40 04029 .ORG SP22F, *P26ROW=ADDRESS-40 04030 A(-40), P26AD>B, ADD, 04031 Y>DR, 04032 JUMP(SP25); ----- ----- 19A 000017B8 00D80008 ----- 04033 * ADDRESS 40 04034 .ORG SP20T, *P26ROW=24 04035 Y(24), 04036 Y>DR, 04037 JUMP(SP25); ----- ----- 197 000017B8 00181000 ----- 04038 * 04039 .ORG SP25, *P26ON=1 04040 *JUMP TO PDC ROUTINE 04041 *RETURN TO SP50T 04042 *B=RWL 04043 MA(RWL), RAM>BR, 04044 AR>A, B(>80), OR, 04045 Y>AR, 04046 JUMP(SPT0T); ----- ----- 7B8 0023019F 0B801010 ----- 04047 *COLUMN FORMAT BYTE 04048 .ORG SP14T, *Y=P26MO-2 04049 *B=RWL 04050 MA(RWL), RAM>BR, 04051 A(-2), P26MO>B, ADD, 04052 JUMP(SP30); ----- ----- 195 000507B9 0BFE0008 ----- 04053 .ORG SP30, *Y=P26MO-15 04054 *MODE=2? 04055 A(-15), P26MO>B, ADD, 04056 JZ(SP30AF,SP30AT); ----- ----- 7B9 0004219C 00F10008 ----- 04057 .ORG SP30AT, *YES, PROCESS IT AS A CHARACTER 04058 *Y=P26ON 04059 AR>A, B(>80), AND, 04060 JUMP(SP30BF); ----- ----- 19D 0000019E 00800810 ----- 04061 .ORG SP30AF, *Y=P26ON 04062 *MODE>= 15? 04063 *IF NO, JUMP TO PDC ROUTINE 04064 *RETURN TO SP50T 04065 AR>A, B(>80), AND, 04066 JN(SP30BF,SPT0T); ----- ----- 19C 0000419E 00800810 ----- 04067 *PROCESS A PACKET 26 CHARACTER 04068 .ORG SP30BF, *P26ON? 04069 *RECEIVING CHARACTERS AT THE MOMENT? 04070 *STORE=P26FLGS 04071 MA(STORE), 04072 AR>A, B(0), ADD, 04073 Y>RAM, 04074 JZ(SP31F,SP50T); ----- ----- 19E 000021A0 77000110 ----- 04075 * 04076 *@@@ start of changes which inhibit packets 26 in row 24 04077 * 04078 *RECEIVING PACKET 26 CHARACTERS FOR THIS PAGE, CALCULATE ADDRESS 04079 .ORG SP31F, *RECEIVING CHARACTERS 04080 *AR=P26ROW 04081 TPD>A, B(0), ADD, 04082 Y>AR, 04083 JUMP(SP31A); ----- ----- 1A0 002207BA 00000090 ----- 04084 .ORG SP31A, *Y=P26ROW-24 04085 AR>A, B(-24), ADD, 04086 JUMP(SP32); ----- ----- 7BA 000007BB 00E80010 ----- 04087 .ORG SP32, *AR=START OF ROW 04088 *ROW 24? 04089 AR<<3>A, AR<<5>B, ADD, 04090 Y>AR, 04091 JZ(SP33F,SP33T); ----- ----- 7BB 002221A2 00000059 ----- 04092 *ROW 24, NOT SUPPORTED! 04093 .ORG SP33T, 04094 JUMP(SP50T); ----- ----- 1A3 000001A1 00000000 ----- 04095 *NOT ROW 24 04096 .ORG SP33F, *PR=ADDRESS OF PACKET 26 CHARACTER 04097 *PUT P26FLGS BACK IN AR 04098 MA(STORE), RAM>AR, 04099 AR>A, P26AD>B, ADD, 04100 Y>PR, 04101 JUMP(SP40); ----- ----- 1A2 000207BC F7000018 ----- 04102 * 04103 *@@@ end of changes which inhibit packets 26 in row 24 04104 * 04105 *FIND CHARACTER CODE AND STORE IN MEMORY 04106 * 04107 * TCJ Feb 94 04108 * Remove CTL correction code for >B6 and >B7 04109 * 04110 .ORG SP40, *UPDATE CTL MODE LATCH 04111 MA(P26MO), 04112 A(>1F), P26MO>B, AND, 04113 Y>IO, 04114 JUMP(SP41); ----- ----- 7BC 000407BD 081F4808 ----- 04115 * 04116 .ORG SP41, *UPDATE CTL CHARACTER LATCH 04117 MA(P26CH), 04118 A(>7F), P26CH>B, AND, 04119 Y>IO, 04120 JUMP(SP42); ----- ----- 7BD 000807BE 097F4808 ----- 04121 * 04122 .ORG SP42, *TCJ, 203 and 211 now require NOP 04123 *between P26CH or P26MO and looking 04124 *at CTL. 04125 JUMP(SP43); ----- ----- 7BE 000007BF 00000000 ----- 04126 * 04127 .ORG SP43, *Y=CTL OUTPUT 04128 CTL>A, B(0), OR, 04129 JUMP(SP44); ----- ----- 7BF 000007CA 00001080 ----- 04130 * 04131 .ORG SP44, *VALID CHARACTER/ MODE COMBINATION? 04132 JN(SP45F,SP45T); ----- ----- 7CA 000041A4 00000000 ----- 04133 * 04134 .ORG SP45T, *WRITE VALID CHARACTER 04135 *SET MARKER BIT 04136 CTL>A, B(0), OR, 04137 Y>DR, 04138 JUMP(SP50T); ----- ----- 1A5 000011A1 00001080 ----- 04139 * 04140 .ORG SP45F, *NOT VALID- DO NOTHING 04141 JUMP(SP50T); ----- ----- 1A4 000001A1 00000000 ----- 04142 * 04143 *ENTRY POINT TO INCREMENT BYTE COUNTER 04144 .ORG SP50T, *BR=COUNT 04145 MA(COUNT), RAM>BR, 04146 JUMP(SP51); ----- ----- 1A1 000107CB 78000000 ----- 04147 .ORG SP51, *COUNT=COUNT-3 04148 MA(COUNT), 04149 A(-3), BR>B, ADD, 04150 Y>RAM, 04151 JUMP(SP52); ----- ----- 7CB 000007CC 78FD0101 ----- 04152 .ORG SP52, *COUNT==0? 04153 JZ(SP53F,SP53T); ----- ----- 7CC 000021A6 00000000 ----- 04154 .ORG SP53F, *MORE TRIPLETS 04155 JUMP(SP10F); ----- ----- 1A6 00000190 00000000 ----- 04156 * 04157 .ORG SP53T, *COMMON EXIT 04158 *PR=INDEX TO P26FLGS 04159 Y(-11), 04160 Y>PR, 04161 JUMP(SP54); ----- ----- 1A7 000007CD 80F51000 ----- 04162 .ORG SP54, *UPDATE P26FLGS IN TPD 04163 AR>A, B(0), OR, 04164 Y>DR, 04165 JUMP(LPP0); ----- ----- 7CD 000016EA 00001010 ----- 04166 * 04167 *+++SPT: STORE PDC TRIPLET 04168 * 04169 * This routine routine stores packet 26 triplets in store 6 if 04170 * this is the display page and PDC mode is set. 04171 * 04172 * B=RWL, LOCAL=number of PDC bytes stored so far 04173 .ORG SPT0T, *PRESERVE P26FLGS IN STORE 04174 MA(STORE), 04175 AR>A, B(0), OR, 04176 Y>RAM, 04177 JUMP(SPT10); ----- ----- 19F 000007CE 77001110 ----- 04178 .ORG SPT10, *A=STOR0 04179 MA(STOR0), RAM>AR, 04180 JUMP(SPT11); ----- ----- 7CE 000207CF 20000000 ----- 04181 .ORG SPT11, *COMPARE LATCHES 04182 *A=EXPREG 04183 MA(EXPREG), RAM>AR, 04184 ARHI>A, BR.0F>B, XOR, 04185 JUMP(SPT12); ----- ----- 7CF 000207D8 63001822 ----- 04186 .ORG SPT12, *THIS THE DISPLAY PAGE? 04187 *Y=PDC 04188 *A=PACKET 26 FLAGS 04189 MA(STORE), RAM>AR, 04190 AR>A, B(PDC), AND, 04191 JZ(SPT20F,SPT20T); ----- ----- 7D8 000221A8 77400810 ----- 04192 .ORG SPT20F, *NOT, EXIT 04193 JUMP(SP50T); ----- ----- 1A8 000001A1 00000000 ----- 04194 .ORG SPT20T, *DISPLAY PAGE, PDC? 04195 *A=OLDDC+3 04196 *B=STOR7 04197 MA(STOR7), RAM>BR, 04198 AR.0F>A, B(3), ADD, 04199 Y>AR, 04200 JZ(SPT21F,SPT21T); ----- ----- 1A9 002321AA 270300C0 ----- 04201 .ORG SPT21T, *NOT, EXIT 04202 *A=PACKET 26 FLAGS 04203 MA(STORE), RAM>AR, 04204 JUMP(SP50T); ----- ----- 1AB 000201A1 77000000 ----- 04205 *OK TO STORE TRIPLET 04206 .ORG SPT21F, *P=ADDRESS OF START OF ROW (PDC BYTE COUNT) 04207 *A=LOCAL 04208 MA(LOCAL), RAM>AR, 04209 AR<<3>A, AR<<5>B, ADD, 04210 Y>PR, 04211 JUMP(SPT25); ----- ----- 1AA 000207D9 F2000059 ----- 04212 .ORG SPT25, *B=ADDRESS OF START OF ROW 04213 *RWL= LATCH FOR STORE 7 04214 PR>BR, 04215 MA(RWL), 04216 A(0), BRHI>B, OR, 04217 Y>IO, Y>RAM, 04218 JUMP(SPT26); ----- ----- 7D9 004107DA 0B00510C ----- 04219 .ORG SPT26, *UPDATE PDC BYTE COUNT 04220 *B=POINTER TO PDC BYTE COUNT 04221 PR>BR, 04222 MA(LOCAL), 04223 AR>A, B(3), ADD, 04224 Y>DR, Y>RAM, 04225 JUMP(SPT30); ----- ----- 7DA 004117DB 72030110 ----- 04226 .ORG SPT30, *POINT TO ADDRESS STORE FOR THIS TRIPLET 04227 AR>A, BR>B, ADD, O>CIN, 04228 Y>PR, 04229 JUMP(SPT32); ----- ----- 7DB 000007DC 80000411 ----- 04230 .ORG SPT32, *STORE ADDRESS, PRESERVE PTY 04231 PR>BR, 04232 A(0), P26AD>B, OR, 04233 Y>DR, 04234 JUMP(SPT33); ----- ----- 7DC 004117DD 00001008 ----- 04235 .ORG SPT33, *POINT TO MODE STORE FOR THIS TRIPLET 04236 A(1), BR>B, ADD, 04237 Y>PR, 04238 JUMP(SPT34); ----- ----- 7DD 000007DE 80010001 ----- 04239 .ORG SPT34, *STORE MODE, PRESERVE PTY 04240 PR>BR, 04241 A(0), P26MO>B, OR, 04242 Y>DR, 04243 JUMP(SPT35); ----- ----- 7DE 004517DF 00001008 ----- 04244 .ORG SPT35, *POINT TO DATA STORE FOR THIS TRIPLET 04245 *B=STOR0 04246 MA(STOR0), RAM>BR, 04247 A(1), BR>B, ADD, 04248 Y>PR, 04249 JUMP(SPT36); ----- ----- 7DF 000107E0 A0010001 ----- 04250 .ORG SPT36, *STORE DATA 04251 *A=PACKET 26 FLAGS 04252 MA(STORE), RAM>AR, 04253 A(0), P26CH>B, OR, 04254 Y>DR, 04255 JUMP(SPT37); ----- ----- 7E0 000A17E1 77001008 ----- 04256 .ORG SPT37, *PUT DISPLAY PAGE LATCH BACK IN RWL 04257 MA(RWL), 04258 A(0), BRHI>B, OR, 04259 Y>RAM, Y>IO, 04260 JUMP(SPT38); ----- ----- 7E1 000007E2 0B00510C ----- 04261 .ORG SPT38, *LPPREG=6 04262 MA(LPPREG), 04263 Y(6), 04264 Y>RAM, 04265 JUMP(SP50T); ----- ----- 7E2 000001A1 7E061100 ----- 04266 * 04267 *+++PLP: PACKET 27 PROCESSING 04268 * 04269 * LPPREG=7, RWL=LATCH FOR THIS PAGE 04270 *FIRST PROCESS DESIGNATION CODE 04271 .ORG PLP0F, *WAIT FOR DC 04272 JBYTE(PLP0F,PLP0T); ----- ----- 12A 0000812A 00000000 ----- 04273 .ORG PLP0T, *Y=DC 1ST 04274 CBRDY, 04275 A(0), HAM>B, OR, 04276 JUMP(PLP2); ----- ----- 12B 000807E3 00003007 ----- 04277 .ORG PLP2, *INIT LINK COUNT 04278 *DC=0 AND HAM OK? 04279 MA(COUNT), 04280 Y(0), 04281 Y>RAM, Y>AR, 04282 JZ(PLP3F,PLP3T); ----- ----- 7E3 002221AC 78001100 ----- 04283 .ORG PLP3F, *DC NOT ZERO OR HAMMING ERROR 04284 JUMP(LPP0); ----- ----- 1AC 000006EA 00000000 ----- 04285 .ORG PLP3T, *WAIT FOR UNITS 04286 JBYTE(PLP10F,PLP10T); ----- ----- 1AD 000081AE 00000000 ----- 04287 *LOOP START 04288 *WAIT FOR LINK UNITS 04289 * A=LINK 04290 .ORG PLP10F, * 04291 JBYTE(PLP10F,PLP10T); ----- ----- 1AE 000081AE 00000000 ----- 04292 .ORG PLP10T, *Y=LINK 04293 CBRDY, 04294 AR>A, B(7), AND, 04295 JUMP(PLP11); ----- ----- 1AF 000007E4 00072810 ----- 04296 .ORG PLP11, *A=LOCAL=UNITS 04297 *CASE LINK 04298 MA(LOCAL), 04299 A(0), HAM>B, OR, 04300 Y>RAM, Y>AR, 04301 JY(PLP20Y); ----- ----- 7E4 002AC0B0 72001107 ----- 04302 .ORG PLP20Y, *CASE RED LINK 04303 *P=-24 04304 Y(-24), 04305 Y>PR, 04306 JUMP(PLP30); ----- ----- 0B0 000007E5 80E81000 ----- 04307 .ORG PLP21, *CASE GREEN LINK 04308 *P=-23 04309 Y(-23), 04310 Y>PR, 04311 JUMP(PLP30); ----- ----- 0B1 000007E5 80E91000 ----- 04312 .ORG PLP22, *CASE YELLOW LINK 04313 *P=-22 04314 Y(-22), 04315 Y>PR, 04316 JUMP(PLP30); ----- ----- 0B2 000007E5 80EA1000 ----- 04317 .ORG PLP23, *CASE CYAN LINK 04318 *P=-21 04319 Y(-21), 04320 Y>PR, 04321 JUMP(PLP30); ----- ----- 0B3 000007E5 80EB1000 ----- 04322 .ORG PLP24, *CASE NULL LINK 04323 *A=BYTE COUNT 04324 Y(5), 04325 Y>AR, 04326 JUMP(PLP24A); ----- ----- 0B4 002207E6 00051000 ----- 04327 .ORG PLP24A, *CALL WAIT0F TO SKIP NULL LINK 04328 *RETURN=6, RETURN TO PLP24B 04329 MA(RETURN), 04330 Y(6), 04331 Y>RAM, 04332 JUMP(WAIT0F); ----- ----- 7E6 0000064E 7C061100 ----- 04333 .ORG PLP24B, *A=LINK 04334 MA(COUNT), RAM>AR, 04335 JUMP(PLP71); ----- ----- 036 000207E7 78000000 ----- 04336 .ORG PLP25, *CASE INDEX LINK 04337 *P=-20 04338 Y(-20), 04339 Y>PR, 04340 JUMP(PLP30); ----- ----- 0B5 000007E5 80EC1000 ----- 04341 .ORG PLP26, *CASE NO MORE LINKS 04342 *P=-16 (POINT TO FLOF FLAGS) 04343 Y(-16), 04344 Y>PR, 04345 JUMP(PLP100); ----- ----- 0B6 000007E8 80F01000 ----- 04346 * A=LOCAL=HAM 04347 .ORG PLP30, *Y=LINK UNITS PARITY 04348 *TPD=OLD LINK 04349 RVDP, 04350 AR.F0>A, B(0), OR, 04351 JUMP(PLP31); ----- ----- 7E5 000007E9 000090D0 ----- 04352 .ORG PLP31, *PTY OK? 04353 *B=HAM 04354 MA(LOCAL), RAM>BR, 04355 JZ(PLP32F,PLP32T); ----- ----- 7E9 000121B0 72000000 ----- 04356 .ORG PLP32T, *PTY OK, STORE UNITS 04357 *STORE NEW UNITS AND OLD TENS IN LOCAL 04358 MA(LOCAL), 04359 TPD.F0>A, BR.0F>B, OR, 04360 Y>DR, Y>RAM, 04361 JBYTE(PLP40F,PLP40T); ----- ----- 1B1 000091B2 720011B2 ----- 04362 .ORG PLP32F, *BAD PTY 04363 *STORE OLD UNITS AND TENS IN LOCAL 04364 MA(LOCAL), 04365 TPD>A, B(0), OR, 04366 Y>RAM, 04367 JBYTE(PLP40F,PLP40T); ----- ----- 1B0 000081B2 72001190 ----- 04368 *WAIT FOR LINK TENS 04369 .ORG PLP40F, * 04370 JBYTE(PLP40F,PLP40T); ----- ----- 1B2 000081B2 00000000 ----- 04371 .ORG PLP40T, *A=Y=LINK TENS 04372 *B=LATEST CORRECT UNITS 04373 CBRDY, 04374 MA(LOCAL), RAM>BR, 04375 A(0), HAM>B, OR, 04376 Y>AR, 04377 JUMP(PLP41); ----- ----- 1B3 002B07EA 72003007 ----- 04378 .ORG PLP41, *PTY OK? 04379 *RETURN=4 04380 MA(RETURN), 04381 Y(4), 04382 Y>RAM, 04383 JN(PLP42F,PLP42T); ----- ----- 7EA 000041B4 7C041100 ----- 04384 .ORG PLP42F, *PTY OK, STORE TENS 04385 AR<<4>A, BR.0F>B, OR, 04386 Y>DR, 04387 JUMP(PLP42T); ----- ----- 1B4 000011B5 00001032 ----- 04388 * 04389 .ORG PLP42T, *CALL WAIT0F TO WAIT FOR TWO BYTES 04390 *A=BYTE COUNT 04391 *RETURN=4, RETURN TO PLP45 04392 Y(2), 04393 Y>AR, 04394 JUMP(WAIT0F); ----- ----- 1B5 0022064E 00021000 ----- 04395 * LAST Y WAS HAM 04396 .ORG PLP45, *Y=C4, PTY OK? 5TH 04397 *B=RCM 04398 MA(RCM), RAM>BR, 04399 A(>08), HAM>B, AND, 04400 JN(PLP46F,PLP46T); ----- ----- 034 000941B6 28080807 ----- 04401 .ORG PLP46T, *BAD PTY 04402 *A=BYTE COUNT 04403 Y(2), 04404 Y>AR, 04405 JUMP(PLP47T); ----- ----- 1B7 002201B9 00021000 ----- 04406 .ORG PLP46F, *PTY OK, C4? 04407 *A=BYTE COUNT 04408 Y(1), 04409 Y>AR, 04410 JZ(PLP47F,PLP47T); ----- ----- 1B6 002221B8 00011000 ----- 04411 * 04412 .ORG PLP47T, *C4 NOT SET OR BAD PTY, STORE=RCM 04413 MA(STORE), 04414 A(0), BR>B, OR, 04415 Y>RAM, 04416 JUMP(PLP48); ----- ----- 1B9 000007EB 77001101 ----- 04417 .ORG PLP47F, *C4 SET, LINK MAG=RCM WITH LSB INVERTED 04418 MA(STORE), 04419 A(1), BR>B, XOR, 04420 Y>RAM, 04421 JUMP(PLP48); ----- ----- 1B8 000007EB 77011901 ----- 04422 * A=BYTE COUNT 04423 .ORG PLP48, *CALL WAIT0F TO SKIP SP THOUSANDS 04424 *RETURN=5, RETURN TO PLP55 04425 MA(RETURN), 04426 Y(5), 04427 Y>RAM, 04428 JUMP(WAIT0F); ----- ----- 7EB 0000064E 7C051100 ----- 04429 .ORG PLP55, *WAIT FOR SP TEN THOUSANDS 04430 JBYTE(PLP61F,PLP61T); ----- ----- 035 000081BA 00000000 ----- 04431 .ORG PLP61F, * 04432 JBYTE(PLP61F,PLP61T); ----- ----- 1BA 000081BA 00000000 ----- 04433 .ORG PLP61T, *Y=HAM 04434 CBRDY, 04435 A(0), HAM>B, OR, 04436 JUMP(PLP62); ----- ----- 1BB 000807EC 00003007 ----- 04437 .ORG PLP62, *Y=C5, PTY OK? 04438 A(>04), HAM>B, AND, 04439 JN(PLP63F,PLP63T); ----- ----- 7EC 000841BC 00040807 ----- 04440 .ORG PLP63T, *BAD PTY 04441 JUMP(PLP65T); ----- ----- 1BD 000001C1 00000000 ----- 04442 .ORG PLP63F, *PTY OK, Y=C6 04443 *C5 SET? 04444 *A=LINK MAG 04445 MA(STORE), RAM>AR, 04446 A(>08), HAM>B, AND, 04447 JZ(PLP64F,PLP64T); ----- ----- 1BC 000A21BE 77080807 ----- 04448 .ORG PLP64F, *C5 SET, INVERT 2ND LSB OF LINK MAG 04449 *C6 SET? 04450 MA(STORE), 04451 AR>A, B(>02), XOR, 04452 Y>RAM, Y>AR, 04453 JZ(PLP65F,PLP65T); ----- ----- 1BE 002221C0 77021910 ----- 04454 .ORG PLP64T, *C5 NOT SET 04455 *C6 SET? 04456 JZ(PLP65F,PLP65T); ----- ----- 1BF 000021C0 00000000 ----- 04457 .ORG PLP65F, *C6 SET, INVERT 3RD LSB OF LINK MAG 04458 MA(STORE), 04459 AR>A, B(>04), XOR, 04460 Y>RAM, 04461 JUMP(PLP65T); ----- ----- 1C0 000001C1 77041910 ----- 04462 * 04463 .ORG PLP65T, *C6 NOT SET 04464 *A=LINK 04465 MA(COUNT), RAM>AR, 04466 JUMP(PLP66); ----- ----- 1C1 000207ED 78000000 ----- 04467 .ORG PLP66, *P=-19+A/2 (POINT TO LINK MAG BYTE) 04468 AR>>1>A, B(-19), ADD, 04469 Y>PR, 04470 JUMP(PLP67); ----- ----- 7ED 000007EE 80ED00E0 ----- 04471 .ORG PLP67, *TPD= LINK MAG BYTE 04472 *Y=LINK LSB 04473 *A=NEW LINK MAG 04474 RVDP, 04475 MA(STORE), RAM>AR, 04476 AR>A, B(1), AND, 04477 JUMP(PLP68); ----- ----- 7EE 000207EF 77018810 ----- 04478 .ORG PLP68, *LINK LSB? 04479 *STORE=TPD 04480 MA(STORE), 04481 TPD>A, B(0), OR, 04482 Y>RAM, 04483 JZ(PLP69F,PLP69T); ----- ----- 7EF 000021C2 77001190 ----- 04484 *UPDATE HI NIB 04485 .ORG PLP69F, *B=TPD 04486 MA(STORE), RAM>BR, 04487 JUMP(PLP70); ----- ----- 1C2 000107F0 77000000 ----- 04488 .ORG PLP70, *A=LINK 04489 MA(COUNT), RAM>AR, 04490 AR<<4>A, BR.0F>B, OR, 04491 Y>DR, 04492 JUMP(PLP71); ----- ----- 7F0 000217E7 78001032 ----- 04493 *UPDATE LO NIB 04494 .ORG PLP69T, *B=TPD 04495 MA(STORE), RAM>BR, 04496 JUMP(PLP70A); ----- ----- 1C3 000107F1 77000000 ----- 04497 .ORG PLP70A, *A=LINK 04498 MA(COUNT), RAM>AR, 04499 AR.0F>A, BR.F0>B, OR, 04500 Y>DR, 04501 JUMP(PLP71); ----- ----- 7F1 000217E7 780010C3 ----- 04502 *ENTRY POINT FROM UNUSED LINK 04503 .ORG PLP71, *LINK++ 04504 MA(COUNT), 04505 AR>A, B(1), ADD, 04506 Y>RAM, Y>AR, 04507 JBYTE(PLP10F,PLP10T); ----- ----- 7E7 002281AE 78010110 ----- 04508 *STORE PACKET 27 FLAGS BYTE 04509 * A=LOCAL=HAM, P=POINTER TO FLOF FLAGS 04510 .ORG PLP100, *Y=HAM PTY, TPD=FLOF FLAGS 04511 RVDP, 04512 AR.F0>A, B(0), OR, 04513 JUMP(PLP101); ----- ----- 7E8 000007F2 000090D0 ----- 04514 .ORG PLP101, *PTY OK? 04515 *A=FLOF FLAGS WITH P27R SET 04516 *B=HAM 04517 MA(LOCAL), RAM>BR, 04518 TPD>A, B(>80), OR, 04519 Y>AR, 04520 JZ(PLP101F,PLP101T); ----- ----- 7F2 002321C4 72801090 ----- 04521 .ORG PLP101T, *PARITY OK, STORE NEW PACKET 27 FLAGS 04522 AR.F0>A, BR.0F>B, OR, 04523 Y>DR, 04524 JUMP(LPP0); ----- ----- 1C5 000016EA 000010D2 ----- 04525 .ORG PLP101F, *BAD PARITY, KEEP OLD FLAGS 04526 AR>A, B(0), OR, 04527 Y>DR, 04528 JUMP(LPP0); ----- ----- 1C4 000016EA 00001010 ----- 04529 ***LPP: LINE POST PROCESSING 04530 * THISRW= ROW JUST RECEIVED 04531 * IF LPPREG=6, RET2=OLDDC 04532 * This routine carries out the line post processing required by the 04533 * LPPREG register. It is a common exit point from all teletext 04534 * reception routines. (The common entry point is G1T where the default 04535 * value LPPREG=3 is set.) 04536 * This routine should only exit to PL0 or ST0F. 04537 * 04538 .ORG LPP0, *B=OGLCNT 04539 MA(OGLCNT), RAM>BR, 04540 JUMP(LPP0A); ----- ----- 6EA 000107F3 6B000000 ----- 04541 .ORG LPP0A, *INC ON-GOING LINE COUNT 04542 MA(OGLCNT), 04543 A(>01), BR>B, ADD, 04544 Y>RAM, 04545 JUMP(LPP0B); ----- ----- 7F3 000007F4 6B010101 ----- 04546 .ORG LPP0B, *B=LPPREG 04547 MA(LPPREG), RAM>BR, 04548 JUMP(LPP1); ----- ----- 7F4 000107F5 7E000000 ----- 04549 .ORG LPP1, *Y=LPPREG 04550 *B=ERRCNT 04551 MA(ERRCNT), RAM>BR, 04552 A(>F), BR>B, AND, 04553 JUMP(LPP2); ----- ----- 7F5 000107F6 3A0F0801 ----- 04554 .ORG LPP2, *CASE LPPREG=? 04555 *AR=THISRW 04556 MA(THISRW), RAM>AR, 04557 JY(LPP10Y); ----- ----- 7F6 0002C370 7D000000 ----- 04558 .ORG LPP10Y, *CASE LPPREG=0 04559 *no processing to do 04560 *(mag off, not enabled, ROW 24 or TOFF=1) 04561 JUMP(PL0); ----- ----- 370 000007F7 00000000 ----- 04562 .ORG LPP11, *CASE LPPREG=1 04563 *process a header of a page not in a latch. 04564 *CALL UPI0A TO UPDATE INVENTORY 04565 *RET2=0, RETURN TO HPP0T 04566 MA(RET2), 04567 Y(0), 04568 Y>RAM, 04569 JUMP(UPI0A); ----- ----- 371 000007F8 7B001100 ----- 04570 *ENTRY POINT FROM BROWSE HEADER POST PROCESSING 04571 .ORG LPP12, *CASE LPPREG=2 04572 *process a header of a page in a latch. 04573 *AR=CGB 04574 MA(CGB), RAM>AR, 04575 JUMP(HPP0T); ----- ----- 372 000201FB 34000000 ----- 04576 *ENTRY POINT FROM PACKET 24 CODE 04577 *ENTRY POINT FROM BTT LINE POST PROCESSING 04578 .ORG LPP13, *CASE LPPREG=3 04579 *packet 1-24 received (update markers, count errors) 04580 *CALL MASK0 04581 *RETURN=1, RETURN TO LPP20 04582 *A=THISRW= CURRENT ROW 04583 MA(RETURN), 04584 Y(1), 04585 Y>RAM, 04586 JUMP(MASK0); ----- ----- 373 000007F9 7C011100 ----- 04587 .ORG LPP14, *CASE LPPREG=4 04588 *there was a ROW or MAG hamming error 04589 *A=ERRCNT++ 04590 *B=MREG0 04591 MA(MREG0), RAM>BR, 04592 A(1), BR>B, ADD, 04593 Y>AR, 04594 JUMP(LPP80); ----- ----- 374 002307FA 39010001 ----- 04595 .ORG LPP15, *CASE LPPREG=5 04596 *there was a UNITS or TENS hamming error 04597 JUMP(PL0); ----- ----- 375 000007F7 00000000 ----- 04598 .ORG LPP16, *CASE LPPREG=6 04599 *packet 26 received and PDC triplets stored 04600 MA(RETURN), 04601 Y(2), 04602 Y>RAM, 04603 JUMP(LPP100); ----- ----- 376 000007FB 7C021100 ----- 04604 *ENTRY POINT FOR FORMAT 1 04605 .ORG LPP17, *CASE LPPREG=7 04606 *process packet 8/30 format 2 04607 *BR=RET4 04608 *JUMP TO INITIAL PAGE ROUTINE 04609 MA(RET4), RAM>BR, 04610 JUMP(LPP50); ----- ----- 377 000107FC 79000000 ----- 04611 .ORG LPP18, *CASE LPPREG=8 04612 *process header in browse mode 04613 *CALL PPB0 04614 *P=3, RETURN TO LPP30 04615 *B=PEN 04616 MA(PEN), RAM>BR, 04617 Y(3), 04618 Y>PR, 04619 JUMP(PPB0); ----- ----- 378 000104C5 9B031000 ----- 04620 .ORG LPP19, *CASE LPPREG=9 04621 *process packet 8/30 format 1 04622 *INCREMENT PACKET COUNT 04623 *RWL=0 04624 MA(RWL), 04625 Y(0), 04626 Y>RAM, Y>IO, 04627 JUMP(LPP19A); ----- ----- 379 000007FD 0B005100 ----- 04628 .ORG LPP19A, *POINT TO PACKET COUNT 04629 *P=-7 04630 Y(-7), 04631 Y>PR, 04632 JUMP(LPP19B); ----- ----- 7FD 000007FE 80F91000 ----- 04633 .ORG LPP19B, *TPD=PACKET COUNT 04634 RVDP, 04635 JUMP(LPP19C); ----- ----- 7FE 000007FF 00008000 ----- 04636 .ORG LPP19C, *INC PACKET COUNT 04637 *BR=RET4 04638 *JUMP TO INITIAL PAGE ROUTINE 04639 MA(RET4), RAM>BR, 04640 TPD>A, B(1), ADD, 04641 Y>DR, 04642 JUMP(LPP50); ----- ----- 7FF 000117FC 79010090 ----- 04643 .ORG LPP1A, *CASE LPPREG=10 04644 *process BTT line with an error 04645 *Y=THISRW-21 04646 AR>A, B(-21), ADD, 04647 JUMP(LPP90); ----- ----- 37A 00000800 00EB0010 ----- 04648 * 04649 *+++Display row post processing 04650 * AR=MASK, PR=CLEAR ROW MARKER BYTE POINTER 04651 * B=RET2=CLEAR ROW MARKER BYTE 04652 .ORG LPP20, *SET ROW MARKER BIT 04653 AR>A, BR>B, OR, 04654 Y>DR, 04655 JUMP(ST0F); ----- ----- 0E1 00001001 00001011 ----- 04656 * 04657 *+++Process header in browse mode 04658 * (### could be compressed with tricky loop) 04659 .ORG LPP30, *A=STOR0 04660 MA(STOR0), RAM>AR, 04661 JUMP(LPP30A); ----- ----- 2DB 00020801 20000000 ----- 04662 .ORG LPP30A, *AR=LATCH FOR STORE 0 04663 ARHI>A, B(7), AND, 04664 Y>AR, 04665 JUMP(LPP31); ----- ----- 801 00220802 00070820 ----- 04666 .ORG LPP31, *PR=INDEX TO MAG OF STOR0 04667 *AR=RCM (RECEIVED MAG) 04668 MA(RCM), RAM>AR, 04669 AR>A, B(M0), ADD, 04670 Y>PR, 04671 JUMP(LPP32); ----- ----- 802 00020803 A8100010 ----- 04672 .ORG LPP32, *BR= MAG OF STOR0 04673 PR>MA, RAM>BR, 04674 JUMP(LPP33); ----- ----- 803 00110804 00000000 ----- 04675 .ORG LPP33, *UPDATE MAG LATCH OF STOR0 TO RCM 04676 PR>MA, 04677 AR.0F>A, BR.F0>B, OR, 04678 Y>RAM, Y>IO, 04679 JUMP(LPP34); ----- ----- 804 00100805 000051C3 ----- 04680 .ORG LPP34, *BR=DPM 04681 MA(DPM), RAM>BR, 04682 JUMP(LPP35); ----- ----- 805 00010806 68000000 ----- 04683 .ORG LPP35, *UPDATE DPM 04684 *BR= INDEX 04685 PR>BR, 04686 MA(DPM), 04687 AR<<4>A, BR.0F>B, OR, 04688 Y>RAM, 04689 JUMP(LPP36); ----- ----- 806 00410807 68001132 ----- 04690 .ORG LPP36, *PR= INDEX TO TENS OF STOR0 04691 *AR=RCT (RECEIVED TENS) 04692 MA(RCT), RAM>AR, 04693 A(8), BR>B, ADD, 04694 Y>PR, 04695 JUMP(LPP37); ----- ----- 807 00020808 A9080001 ----- 04696 .ORG LPP37, *BR= TENS OF STOR0 04697 PR>MA, RAM>BR, 04698 JUMP(LPP38); ----- ----- 808 00110809 00000000 ----- 04699 .ORG LPP38, *UPDATE TENS LATCH OF STOR0 TO RCT 04700 PR>MA, 04701 AR.0F>A, BR.F0>B, OR, 04702 Y>RAM, Y>IO, 04703 JUMP(LPP39); ----- ----- 809 0010080A 000051C3 ----- 04704 .ORG LPP39, *BR=DPT 04705 MA(DPT), RAM>BR, 04706 JUMP(LPP40); ----- ----- 80A 0001080B 69000000 ----- 04707 .ORG LPP40, *UPDATE DPT 04708 *BR= INDEX 04709 PR>BR, 04710 MA(DPT), 04711 AR<<4>A, BR.0F>B, OR, 04712 Y>RAM, 04713 JUMP(LPP41); ----- ----- 80B 0041080C 69001132 ----- 04714 .ORG LPP41, *PR= INDEX TO UNITS OF STOR0 04715 *AR=RCU (RECEIVED UNITS) 04716 MA(RCU), RAM>AR, 04717 A(8), BR>B, ADD, 04718 Y>PR, 04719 JUMP(LPP42); ----- ----- 80C 0002080D AA080001 ----- 04720 .ORG LPP42, *BR= UNITS OF STOR0 04721 PR>MA, RAM>BR, 04722 JUMP(LPP43); ----- ----- 80D 0011080E 00000000 ----- 04723 .ORG LPP43, *UPDATE UNITS LATCH OF STOR0 TO RCU 04724 PR>MA, 04725 AR.0F>A, BR.F0>B, OR, 04726 Y>RAM, Y>IO, 04727 JUMP(LPP44); ----- ----- 80E 0010080F 000051C3 ----- 04728 .ORG LPP44, *BR=DPU 04729 MA(DPU), RAM>BR, 04730 JUMP(LPP45); ----- ----- 80F 00010810 6A000000 ----- 04731 .ORG LPP45, *UPDATE DPU 04732 MA(DPU), 04733 AR<<4>A, BR.0F>B, OR, 04734 Y>RAM, 04735 JUMP(LPP46); ----- ----- 810 00000811 6A001132 ----- 04736 * 04737 .ORG LPP46, *AR=DHREG 04738 MA(DHREG), RAM>AR, 04739 JUMP(LPP47); ----- ----- 811 00020812 32000000 ----- 04740 .ORG LPP47, *BWSE=0 04741 *GO AND DO NORMAL PROCESSING ON HEADER 04742 MA(DHREG), 04743 AR>A, B(>FF-BWSE), AND, 04744 Y>RAM, 04745 JUMP(LPP48); ----- ----- 812 00000813 32FE0910 ----- 04746 *SET SBL TO SORT BACKGROUND LATCHES 04747 .ORG LPP48, *BR=VPPRG1 04748 MA(VPPRG1), RAM>BR, 04749 JUMP(LPP49); ----- ----- 813 00010814 61000000 ----- 04750 .ORG LPP49, *SBL=1 04751 MA(VPPRG1), 04752 A(SBL), BR>B, OR, 04753 Y>RAM, 04754 JUMP(LPP49A); ----- ----- 814 00000815 61801101 ----- 04755 .ORG LPP49A, *BR=EXPREG 04756 MA(EXPREG), RAM>BR, 04757 JUMP(LPP49B); ----- ----- 815 00010816 63000000 ----- 04758 .ORG LPP49B, *CGAP=1, CPRF=1 04759 MA(EXPREG), 04760 A(CGAP+CPRF), BR>B, OR, 04761 Y>RAM, 04762 JUMP(LPP12); ----- ----- 816 00000372 630C1101 ----- 04763 * 04764 *+++Packet 8/30 initial page post processing 04765 * BR=RET4 (INITIAL PAGE MAGAZINE) 04766 .ORG LPP50, *AR=RET2 (INITIAL PAGE UNITS) 04767 *Y=MAG 04768 MA(RET2), RAM>AR, 04769 A(0), BR>B, OR, 04770 JUMP(LPP51); ----- ----- 7FC 00020817 7B001001 ----- 04771 .ORG LPP51, *HAMMING ERROR IN MAG? 04772 *BR=RET3 (INITIAL PAGE TENS) 04773 MA(RET3), RAM>BR, 04774 JN(LPP52F,LPP52T); ----- ----- 817 000141C6 7A000000 ----- 04775 .ORG LPP52T, *HAMMING ERROR IN MAG, DO NOT PROCESS INITIAL PAGE 04776 JUMP(LPP55T); ----- ----- 1C7 000001D1 00000000 ----- 04777 .ORG LPP52F, *Y=RET2+RET3 04778 AR>A, BR>B, OR, 04779 JUMP(LPP53); ----- ----- 1C6 00000818 00001011 ----- 04780 .ORG LPP53, *TENS AND UNITS PARITY OK? 04781 *Y=UNITS->F 04782 AR>A, B(->0F), ADD, 04783 JN(LPP53AF,LPP53AT); ----- ----- 818 000041C8 00F10010 ----- 04784 .ORG LPP53AT, *HAMMING ERROR, DO NOT PROCESS INITIAL PAGE 04785 JUMP(LPP55T); ----- ----- 1C9 000001D1 00000000 ----- 04786 .ORG LPP53AF, *UNITS=F? 04787 *Y=TENS->F 04788 *B=SYS1 04789 MA(SYS1), RAM>BR, 04790 A(->0F), BR>B, ADD, 04791 JZ(LPP53BF,LPP53BT); ----- ----- 1C8 000121CA 08F10001 ----- 04792 .ORG LPP53BF, *UNITS<>F, NOT A NULL PAGE 04793 *BR=EXPREG, Y=FTOP 04794 MA(EXPREG), RAM>BR, 04795 A(FTOP), BR>B, AND, 04796 JUMP(LPP53CF); ----- ----- 1CA 000101CC 63020801 ----- 04797 .ORG LPP53BT, *UNITS=F, NULL PAGE? 04798 *BR=EXPREG, Y=FTOP 04799 MA(EXPREG), RAM>BR, 04800 A(FTOP), BR>B, AND, 04801 JZ(LPP53CF,LPP53CT); ----- ----- 1CB 000121CC 63020801 ----- 04802 .ORG LPP53CT, *NULL PAGE, DO NOT PROCESS INITIAL PAGE 04803 JUMP(LPP55T); ----- ----- 1CD 000001D1 00000000 ----- 04804 .ORG LPP53CF, *TOP FORCED? 04805 *Y=SINP 04806 A(SINP), BR>B, AND, 04807 JZ(LPP54F,LPP54T); ----- ----- 1CC 000021CE 00100801 ----- 04808 .ORG LPP54F, *TOP FORCED, INHIBIT PACKET 8/30 INIT PAGE 04809 JUMP(LPP55T); ----- ----- 1CE 000001D1 00000000 ----- 04810 .ORG LPP54T, *TOP NOT FORCED 04811 *SINP? 04812 JZ(LPP55F,LPP55T); ----- ----- 1CF 000021D0 00000000 ----- 04813 *PROCESS INITIAL PAGE NUMBER 04814 * AR=RET2 (INITIAL PAGE UNITS) 04815 .ORG LPP55F, *UPDATE DPU 04816 MA(DPU), 04817 AR<<4>A, B(0), OR, 04818 Y>RAM, 04819 JUMP(LPP56); ----- ----- 1D0 00000819 6A001130 ----- 04820 .ORG LPP56, *AR=RET3 (INITIAL PAGE TENS) 04821 MA(RET3), RAM>AR, 04822 JUMP(LPP57); ----- ----- 819 0002081A 7A000000 ----- 04823 .ORG LPP57, *UPDATE DPT 04824 MA(DPT), 04825 AR<<4>A, B(0), OR, 04826 Y>RAM, 04827 JUMP(LPP58); ----- ----- 81A 0000081B 69001130 ----- 04828 .ORG LPP58, *AR=MAG 04829 MA(RET4), RAM>AR, 04830 JUMP(LPP59); ----- ----- 81B 0002081C 79000000 ----- 04831 .ORG LPP59, *UPDATE DPM 04832 *JUMP TO PAGE ENTRY CODE 04833 MA(DPM), 04834 AR<<4>A, B(1), OR, 04835 Y>RAM, 04836 JUMP(CMPE0); ----- ----- 81C 000004DF 68011130 ----- 04837 *END OF INITIAL PAGE PROCESSING 04838 .ORG LPP55T, * 04839 JUMP(ST0F); ----- ----- 1D1 00000001 00000000 ----- 04840 * 04841 *+++MAG or ROW hamming error processing 04842 * A=ERRCNT++, B=MREG0 04843 .ORG LPP80, *Y=0 IF ERRCNT OVERFLOW 04844 AR>>1>A, B(>80), ADD, 04845 JUMP(LPP81); ----- ----- 7FA 0000081D 008000E0 ----- 04846 .ORG LPP81, *Y=ERROVF 04847 *MAX VALUE? 04848 *B=VPPRG1 04849 MA(VPPRG1), RAM>BR, 04850 A(ERROVF), BR>B, AND, 04851 JZ(LPP82F,LPP82T); ----- ----- 81D 000121D2 61100801 ----- 04852 .ORG LPP82T, *MAX VALUE, ALLOWED TO OVERFLOW? 04853 JZ(LPP83F,LPP83T); ----- ----- 1D3 000021D4 00000000 ----- 04854 .ORG LPP82F, *NOT MAX VALUE 04855 *ERRCNT = A 04856 MA(ERRCNT), 04857 AR>A, B(0), OR, 04858 Y>RAM, 04859 JUMP(LPP83T); ----- ----- 1D2 000001D5 3A001110 ----- 04860 .ORG LPP83F, *MAX VALUE, OVERFLOW 04861 *ERRCNT = A 04862 MA(ERRCNT), 04863 AR>A, B(0), OR, 04864 Y>RAM, 04865 JUMP(LPP83T); ----- ----- 1D4 000001D5 3A001110 ----- 04866 .ORG LPP83T, *CALL SVDP 04867 MA(VPPRG1), 04868 A(CSVDP), BR>B, OR, 04869 Y>RAM, 04870 JUMP(ST0F); ----- ----- 1D5 00000001 61101101 ----- 04871 * 04872 *+++BTT with error post processing 04873 * A=THISRW, LAST Y WAS THISRW-21 04874 .ORG LPP90, *Y=THISRW-22 04875 *B=TOPRG1 04876 *ROW 21? 04877 MA(TOPRG1), RAM>BR, 04878 AR>A, B(-22), ADD, 04879 * JZ(LPP91F,LPP91T); 04880 *TCJ July 93 04881 * Ignore BTTERR as it is possible to receive correct 04882 * PLT rows 21 & 22 that also contain hamming errors 04883 * e.g. Hessentext on HR3. 04884 * 04885 JUMP (LPP13); ----- ----- 800 00010373 37EA0010 ----- 04886 * 04887 *ORG LPP91T, *ROW 21, BTTERR=1, EXIT TO LPP13 04888 * MA(TOPRG1), 04889 * A(BTTERR), BR>B, OR, 04890 * Y>RAM, 04891 * JUMP(LPP13); 04892 *ORG LPP91F, *ROW 22? 04893 * JZ(LPP92F,LPP92T); 04894 *ORG LPP92T, *ROW 22, BTTERR=1, EXIT TO LPP13 04895 * MA(TOPRG1), 04896 * A(BTTERR), BR>B, OR, 04897 * Y>RAM, 04898 * JUMP(LPP13); 04899 *ORG LPP92F, *NOT A PLT ROW, EXIT TO LPP13 04900 * JUMP(LPP13); * JUMP(LPP13); 04901 * 04902 *+++PDC triplets post processing 04903 * 04904 * Use MASK0 routine to update DC markers in PDCRG1 and 2. 04905 * 04906 * RETURN=2 04907 .ORG LPP100, *A=DC FOR P26 JUST RECEIVED PLUS ONE 04908 MA(RET2), RAM>AR, 04909 JUMP(LPP101); ----- ----- 7FB 0002081E 7B000000 ----- 04910 .ORG LPP101, *PUT IT IN THISRW FOR MASK, MASK UNWANTED BITS 04911 *CALL MASK 04912 *RETURN=2, RETURN TO LPP110 04913 MA(THISRW), 04914 AR>A, B(>1F), AND, 04915 Y>RAM, Y>AR, 04916 JUMP(MASK0); ----- ----- 81E 002207F9 7D1F0910 ----- 04917 * A=MARKER BIT, P=SCREEN POINTER 04918 .ORG LPP110, *B=SCREEN POINTER 04919 PR>BR, 04920 JUMP(LPP111); ----- ----- 0E2 0041081F 00000000 ----- 04921 .ORG LPP111, *Y=SCREEN POINTER LSB 04922 A(1), BR>B, AND, 04923 JUMP(LPP112); ----- ----- 81F 00000820 00010801 ----- 04924 .ORG LPP112, *PUT IT IN PDCRG1 OR 2? 04925 *B=PDCRG1 04926 MA(PDCRG1), RAM>BR, 04927 JZ(LPP113F,LPP113T); ----- ----- 820 000121D6 6C000000 ----- 04928 .ORG LPP113T, *UPDATE PDCRG1 04929 MA(PDCRG1), 04930 AR>A, BR>B, OR, 04931 Y>RAM, 04932 JUMP(ST0F); ----- ----- 1D7 00000001 6C001111 ----- 04933 .ORG LPP113F, *UPDATE PDCRG2 04934 *B=PDCRG2 04935 MA(PDCRG2), RAM>BR, 04936 JUMP(LPP114); ----- ----- 1D6 00010821 6D000000 ----- 04937 .ORG LPP114, * 04938 MA(PDCRG2), 04939 AR>A, BR>B, OR, 04940 Y>RAM, 04941 JUMP(ST0F); ----- ----- 821 00000001 6D001111 ----- 04942 * 04943 *+++Header post processing. All MFx maintenance should be done here. 04944 * AR=CGB 04945 .ORG HPP0T, *Y=MS 04946 *BR=RCM 04947 MA(RCM), RAM>BR, 04948 AR>A, B(%0001), AND, 04949 JUMP(HPP1); ----- ----- 1FB 00010822 28010810 ----- 04950 .ORG HPP1, *MS? 04951 *INIT LOOP FOR SMOF 04952 *A=COUNT=7 04953 MA(COUNT), 04954 Y(7), 04955 Y>RAM, Y>AR, 04956 JZ(HPP2F,HPP2T); ----- ----- 822 002221D8 78071100 ----- 04957 *+++SERIAL HEADER, CLOSE ALL MAGS 04958 * A=COUNT=7 04959 .ORG HPP2F, *P=MF0+COUNT 04960 AR>A, B(MF0), ADD, 04961 Y>PR, 04962 JN(SMOF0F,SMOF0T); ----- ----- 1D8 000041DA 80580010 ----- 04963 .ORG SMOF0F, *A=MFx 04964 PR>MA, RAM>AR, 04965 JUMP(SMOF1); ----- ----- 1DA 00120823 00000000 ----- 04966 .ORG SMOF1, *Y=MOP 04967 *B=COUNT 04968 MA(COUNT), RAM>BR, 04969 AR>A, B(MOP), AND, 04970 JUMP(SMOF2); ----- ----- 823 00010824 78080810 ----- 04971 .ORG SMOF2, *CLOSE THIS MAG, WAS IT OPEN? 04972 PR>MA, 04973 AR>A, B(>FF-MOP), AND, 04974 Y>RAM, Y>AR, 04975 JZ(SMOF3F,SMOF3T); ----- ----- 824 003221DC 00F70910 ----- 04976 *MAG WAS OPEN 04977 .ORG SMOF3F, *P=LAF0+MLP (INDEX TO LATCH FLAGS) 04978 *B=COUNT 04979 MA(COUNT), RAM>BR, 04980 AR.0F>A, B(LAF0), ADD, 04981 Y>PR, 04982 JUMP(SMOF4); ----- ----- 1DC 00010825 F84000C0 ----- 04983 .ORG SMOF4, *A=LAFx 04984 PR>MA, RAM>AR, 04985 JUMP(SMOF5); ----- ----- 825 00120826 00000000 ----- 04986 .ORG SMOF5, *SET VBICAP 04987 AR>A, B(VBICAP), OR, 04988 Y>AR, 04989 JUMP(SMOF5A); ----- ----- 826 00220827 00401010 ----- 04990 .ORG SMOF5A, *CLEAR OPN 04991 PR>MA, 04992 AR>A, B(>FF-OPN), AND, 04993 Y>RAM, 04994 JUMP(SMOF3T); ----- ----- 827 001001DD 00EF0910 ----- 04995 * B=COUNT 04996 .ORG SMOF3T, *COUNT=A=B-1 04997 MA(COUNT), 04998 A(-1), BR>B, ADD, 04999 Y>RAM, Y>AR, 05000 JUMP(HPP2F); ----- ----- 1DD 002201D8 78FF0101 ----- 05001 * 05002 .ORG SMOF0T, *CLOSED ALL MAGS EXIT 05003 *A=LPPREG 05004 MA(LPPREG), RAM>AR, 05005 JUMP(HPP6); ----- ----- 1DB 00020828 7E000000 ----- 05006 *+++PARALLEL MAG, CLOSE THIS MAG 05007 * BR=RCM 05008 .ORG HPP2T, *P=MF0+RCM 05009 A(MF0), BR.0F>B, ADD, 05010 Y>PR, 05011 JUMP(PMOF0F); ----- ----- 1D9 00000829 80580002 ----- 05012 .ORG PMOF0F, *AR=MFx 05013 PR>MA, RAM>AR, 05014 JUMP(PMOF1); ----- ----- 829 0012082A 00000000 ----- 05015 .ORG PMOF1, *Y=MOP 05016 AR>A, B(MOP), AND, 05017 JUMP(PMOF2); ----- ----- 82A 0000082B 00080810 ----- 05018 .ORG PMOF2, *WAS MAG OPEN? 05019 *CLOSE MAG 05020 *SAVE MFx INDEX IN BR 05021 PR>MA, 05022 AR>A, B(>FF-MOP), AND, 05023 Y>RAM, Y>AR, 05024 JZ(PMOF3F,PMOF3T); ----- ----- 82B 003221DE 00F70910 ----- 05025 *+++MAG WAS OPEN 05026 .ORG PMOF3F, *PR=INDEX TO LAFx 05027 AR.0F>A, B(LAF0), ADD, 05028 Y>PR, 05029 JUMP(PMOF4); ----- ----- 1DE 0000082C 804000C0 ----- 05030 .ORG PMOF4, *AR=LAFx 05031 PR>MA, RAM>AR, 05032 JUMP(PMOF5); ----- ----- 82C 0012082D 00000000 ----- 05033 .ORG PMOF5, *SET VBICAP 05034 AR>A, B(VBICAP), OR, 05035 Y>AR, 05036 JUMP(PMOF5A); ----- ----- 82D 0022082E 00401010 ----- 05037 .ORG PMOF5A, *CLEAR OPN 05038 PR>MA, 05039 AR>A, B(>FF-OPN), AND, 05040 Y>RAM, 05041 JUMP(PMOF3T); ----- ----- 82E 001001DF 00EF0910 ----- 05042 .ORG PMOF3T, *A=LPPREG 05043 MA(LPPREG), RAM>AR, 05044 JUMP(HPP6); ----- ----- 1DF 00020828 7E000000 ----- 05045 *NECESSARY MAGS HAVE BEEN CLOSED 05046 * A=LPPREG 05047 .ORG HPP6, *Y=LPPREG-1 05048 *BR=RCM 05049 MA(RCM), RAM>BR, 05050 AR.0F>A, B(-1), ADD, 05051 JUMP(HPP7); ----- ----- 828 0001082F 28FF00C0 ----- 05052 .ORG HPP7, *LPPREG==1? 05053 *PR=MFx INDEX 05054 *AR=LATCH OPEN FOR THIS PAGE 05055 MA(RWL), RAM>AR, 05056 A(MF0), BR.0F>B, ADD, 05057 Y>PR, 05058 JZ(HPP8F,HPP8T); ----- ----- 82F 000221E0 8B580002 ----- 05059 .ORG HPP8T, *LPPREG==1 05060 *PNIL 05061 JUMP(ST0F); ----- ----- 1E1 00000001 00000000 ----- 05062 *+++OPEN MAGAZINE (PAGE IN LATCH) 05063 * OLD LPPREG=2 05064 .ORG HPP8F, *AR=RWL+MOP 05065 *BR=MFx 05066 PR>MA, RAM>BR, 05067 AR.0F>A, B(MOP), OR, 05068 Y>AR, 05069 JUMP(HPP9); ----- ----- 1E0 00330830 000810C0 ----- 05070 .ORG HPP9, *UPDATE MLP AND MO FOR MFx 05071 PR>MA, 05072 AR.0F>A, BR.F0>B, ADD, 05073 Y>RAM, 05074 JUMP(HPP10); ----- ----- 830 00100831 000001C3 ----- 05075 *+++STORE SP AND CG IN PAGE RAM 05076 .ORG HPP10, *AR=RSPX 05077 MA(RSPX), RAM>AR, 05078 JUMP(HPP11); ----- ----- 831 00020832 3D000000 ----- 05079 .ORG HPP11, *BR=RSPI 05080 *PR=-15 05081 MA(RSPI), RAM>BR, 05082 A(-15), B(-15), OR, 05083 Y>PR, 05084 JUMP(HPP12); ----- ----- 832 00010833 BCF11000 ----- 05085 .ORG HPP12, *Y=RSPI+RSPX 05086 AR>A, BR>B, OR, 05087 JUMP(HPP13); ----- ----- 833 00000834 00001011 ----- 05088 .ORG HPP13, *PTY OK? 05089 JN(HPP14F,HPP14T); ----- ----- 834 000041E2 00000000 ----- 05090 .ORG HPP14F, *YES, STORE IT 05091 *SPARBY15 05092 AR<<4>A, BR.0F>B, OR, 05093 Y>DR, 05094 JUMP(HPP14T); ----- ----- 1E2 000011E3 00001032 ----- 05095 .ORG HPP14T, *AR=RSPM 05096 MA(RSPM), RAM>AR, 05097 JUMP(HPP21); ----- ----- 1E3 00020835 3F000000 ----- 05098 .ORG HPP21, *BR=RSPC 05099 *PR=-14 05100 MA(RSPC), RAM>BR, 05101 A(-14), B(-14), OR, 05102 Y>PR, 05103 JUMP(HPP22); ----- ----- 835 00010836 BEF21000 ----- 05104 .ORG HPP22, *Y=RSPC+RSPM 05105 AR>A, BR>B, OR, 05106 JUMP(HPP23); ----- ----- 836 00000837 00001011 ----- 05107 .ORG HPP23, *PTY OK? 05108 JN(HPP24F,HPP24T); ----- ----- 837 000041E4 00000000 ----- 05109 .ORG HPP24F, *YES, STORE IT 05110 *SPARBY14 05111 AR<<4>A, BR.0F>B, OR, 05112 Y>DR, 05113 JUMP(HPP24T); ----- ----- 1E4 000011E5 00001032 ----- 05114 .ORG HPP24T, *AR=CGB 05115 MA(CGB), RAM>AR, 05116 JUMP(HPP31); ----- ----- 1E5 00020838 34000000 ----- 05117 .ORG HPP31, *BR=CGA 05118 *PR=-13 05119 MA(CGA), RAM>BR, 05120 A(-13), B(-13), OR, 05121 Y>PR, 05122 JUMP(HPP32); ----- ----- 838 00010839 B3F31000 ----- 05123 .ORG HPP32, *Y=CGA+CGB 05124 AR>A, BR>B, OR, 05125 JUMP(HPP33); ----- ----- 839 0000083A 00001011 ----- 05126 .ORG HPP33, *PTY OK? 05127 JN(HPP34F,HPP34T); ----- ----- 83A 000041E6 00000000 ----- 05128 .ORG HPP34F, *YES, STORE IT 05129 *SPARBY13 05130 AR<<4>A, BR.0F>B, OR, 05131 Y>DR, 05132 JUMP(HPP34T); ----- ----- 1E6 000011E7 00001032 ----- 05133 .ORG HPP34T, *BR=LATCH OPEN FOR THIS PAGE 05134 MA(RWL), RAM>BR, 05135 JUMP(HPP35); ----- ----- 1E7 0001083B 0B000000 ----- 05136 .ORG HPP35, *PR=LAF INDEX 05137 *AR=RSPX 05138 MA(RSPX), RAM>AR, 05139 A(LAF0), BR.0F>B, ADD, 05140 Y>PR, 05141 JUMP(HPP35A); ----- ----- 83B 0002083C BD400002 ----- 05142 .ORG HPP35A, *Y=C4, A=LAFx 05143 PR>MA, RAM>AR, 05144 AR>A, B(%1000), AND, 05145 JUMP(HPP35B); ----- ----- 83C 0012083D 00080810 ----- 05146 .ORG HPP35B, *SET OPN 05147 *C4 SET? 05148 PR>MA, 05149 AR>A, B(OPN), OR, 05150 Y>RAM, Y>AR, 05151 JZ(HPP36F,HPP36T); ----- ----- 83D 003221E8 00101110 ----- 05152 *ERASE BIT SET, SET FLAGS TO CLEAR IN VPP 05153 .ORG HPP36F, *C4 SET 05154 *AR=LAFx 05155 PR>MA, RAM>AR, 05156 JUMP(HPP37T); ----- ----- 1E8 001201EB 00000000 ----- 05157 *ERASE BIT NOT SET. IF FIRST CAPTURE, SET FLAGS TO CLEAR IN VPP 05158 .ORG HPP36T, *C4 NOT SET 05159 *AR=LAFx 05160 PR>MA, RAM>AR, 05161 JUMP(HPP36A); ----- ----- 1E9 0012083E 00000000 ----- 05162 .ORG HPP36A, *Y=CAP 05163 AR>A, B(CAP), AND, 05164 JUMP(HPP36B); ----- ----- 83E 0000083F 00800810 ----- 05165 .ORG HPP36B, *CAPTURED YET? 05166 *B=STOR0 05167 MA(STOR0), RAM>BR, 05168 JZ(HPP37F,HPP37T); ----- ----- 83F 000121EA 20000000 ----- 05169 *SET CLR AND CLEAR ROW MARKERS FOR VPP 05170 .ORG HPP37T, *SET CLR IN LAFx 05171 PR>MA, 05172 AR>A, B(CLR), OR, 05173 Y>RAM, Y>AR, 05174 JUMP(HPP37A); ----- ----- 1EB 00320840 00201110 ----- 05175 .ORG HPP37A, *PR=-8 05176 Y(-8), 05177 Y>PR, 05178 JUMP(HPP37B); ----- ----- 840 00000841 80F81000 ----- 05179 .ORG HPP37B, *DR=0 05180 *SPARBY08 05181 A(0), B(0), OR, 05182 Y>DR, 05183 JUMP(HPP37C); ----- ----- 841 00001842 00001000 ----- 05184 .ORG HPP37C, *PR=-9 05185 Y(-9), 05186 Y>PR, 05187 JUMP(HPP37D); ----- ----- 842 00000843 80F71000 ----- 05188 .ORG HPP37D, *DR=0 05189 *SPARBY09 05190 A(0), B(0), OR, 05191 Y>DR, 05192 JUMP(HPP37E); ----- ----- 843 00001844 00001000 ----- 05193 .ORG HPP37E, *PR=-10 05194 Y(-10), 05195 Y>PR, 05196 JUMP(HPP37G); ----- ----- 844 00000845 80F61000 ----- 05197 .ORG HPP37G, *DR=0 05198 *SPARBY10 05199 *B=STOR0 05200 MA(STOR0), RAM>BR, 05201 A(0), B(0), OR, 05202 Y>DR, 05203 JUMP(HPP37H); ----- ----- 845 00011846 20001000 ----- 05204 .ORG HPP37H, *P=-16 05205 Y(-16), 05206 Y>PR, 05207 JUMP(HPP37J); ----- ----- 846 00000847 80F01000 ----- 05208 .ORG HPP37J, *CLEAR FLOF FLAGS (DR24, P27R, P24R) 05209 Y(0), 05210 Y>DR, 05211 JUMP(HPP37F); ----- ----- 847 000011EA 00001000 ----- 05212 *+++USER SELECTED PAGE HEADER PROCESSING 05213 * B=STOR0, A=LAFx 05214 .ORG HPP37F, *LOCAL=LAFx 05215 MA(LOCAL), 05216 AR>A, B(0), OR, 05217 Y>RAM, 05218 JUMP(HPP40); ----- ----- 1EA 00000848 72001110 ----- 05219 .ORG HPP40, *A=LATCH OPEN FOR THIS PAGE 05220 MA(RWL), RAM>AR, 05221 JUMP(HPP40A); ----- ----- 848 00020849 0B000000 ----- 05222 .ORG HPP40A, *COMPARE THIS HEADER LATCH WITH DISPLAY PAGE LATCH 05223 *A=DHREG 05224 MA(DHREG), RAM>AR, 05225 AR.0F>A, BRHI>B, XOR, 05226 JUMP(HPP41); ----- ----- 849 0002084A 320018CC ----- 05227 .ORG HPP41, *DISPLAY PAGE? 05228 *NRH=1, 05229 MA(DHREG), 05230 AR>A, B(NRH), OR, 05231 Y>RAM, 05232 JZ(HPP42F,HPP42T); ----- ----- 84A 000021EC 32101110 ----- 05233 .ORG HPP42F, *NOT THE DISPLAY PAGE 05234 *RESTORE ORIGINAL NRH AND EXIT 05235 MA(DHREG), 05236 AR>A, B(0), OR, 05237 Y>RAM, 05238 JUMP(ST0F); ----- ----- 1EC 00000001 32001110 ----- 05239 *DISPLAY PAGE 05240 .ORG HPP42T, *A=LAFx 05241 MA(LOCAL), RAM>AR, 05242 JUMP(HPP42A); ----- ----- 1ED 0002084B 72000000 ----- 05243 .ORG HPP42A, *Y=CLR 05244 AR>A, B(CLR), AND, 05245 JUMP(HPP42B); ----- ----- 84B 0000084C 00200810 ----- 05246 .ORG HPP42B, *CLR BIT SET? 05247 *BR=CGA 05248 MA(CGA), RAM>BR, 05249 JZ(HPP43F,HPP43T); ----- ----- 84C 000121EE 33000000 ----- 05250 *CLEAR PDC FLAGS 05251 .ORG HPP43F, *PDCRG1=0 05252 MA(PDCRG1), 05253 Y(0), 05254 Y>RAM, 05255 JUMP(HPP43A); ----- ----- 1EE 0000084D 6C001100 ----- 05256 .ORG HPP43A, *PDCRG2=0 05257 MA(PDCRG2), 05258 Y(0), 05259 Y>RAM, 05260 JUMP(HPP43T); ----- ----- 84D 000001EF 6D001100 ----- 05261 * 05262 .ORG HPP43T, *Y=HEADER UPDATE BIT 05263 *B=VPPRG2 05264 MA(VPPRG2), RAM>BR, 05265 A(%0010), BR>B, AND, 05266 JUMP(HPP44); ----- ----- 1EF 0001084E 62020801 ----- 05267 .ORG HPP44, *UPDATE? 05268 *AR=VDPTXT 05269 MA(VDPTXT), RAM>AR, 05270 JZ(HPP45F,HPP45T); ----- ----- 84E 000221F0 2B000000 ----- 05271 .ORG HPP45F, *C8 SET 05272 *SET C8YET 05273 MA(VDPTXT), 05274 AR>A, B(C8YET), OR, 05275 Y>RAM, 05276 JUMP(HPP45T); ----- ----- 1F0 000001F1 2B101110 ----- 05277 .ORG HPP45T, *SET DPHC TO CALL DISPLAY PAGE HEADER PROCESSING 05278 *AFTER VBI 05279 MA(VPPRG2), 05280 A(DPHC), BR>B, OR, 05281 Y>RAM, 05282 JUMP(ST0F); ----- ----- 1F1 00000001 62011101 ----- 05283 * 05284 *+++UPDATE PAGE INVENTORY 05285 * 05286 * RET2=RETURN POINTER 05287 *ENTRY POINT FROM LINE POST PROCESSING 05288 *MOVE RECEIVED PAGE TO PM,PT AND PU FOR PNTIN0 ROUTINE 05289 .ORG UPI0A, *A=RCM 05290 MA(RCM), RAM>AR, 05291 JUMP(UPI1A); ----- ----- 7F8 0002084F 28000000 ----- 05292 .ORG UPI1A, *PM=RCM 05293 MA(PM), 05294 AR<<4>A, B(0), OR, 05295 Y>RAM, 05296 JUMP(UPI1B); ----- ----- 84F 00000850 74001130 ----- 05297 .ORG UPI1B, *A=RCT 05298 MA(RCT), RAM>AR, 05299 JUMP(UPI2); ----- ----- 850 00020851 29000000 ----- 05300 .ORG UPI2, *PT=RCT 05301 MA(PT), 05302 AR<<4>A, B(0), OR, 05303 Y>RAM, 05304 JUMP(UPI3); ----- ----- 851 00000852 75001130 ----- 05305 .ORG UPI3, *A=RCU 05306 MA(RCU), RAM>AR, 05307 JUMP(UPI4); ----- ----- 852 00020853 2A000000 ----- 05308 .ORG UPI4, *PU=RCU 05309 MA(PU), 05310 AR<<4>A, B(0), OR, 05311 Y>RAM, 05312 JUMP(UPI5); ----- ----- 853 00000854 76001130 ----- 05313 *COMMON CODE FOR LPP AND VPP 05314 *CHECK IF FLOF BEFORE UPDATING INVENTORY PAGE 05315 .ORG UPI5, *A=SYS1 05316 MA(SYS1), RAM>AR, 05317 JUMP(UPI5A); ----- ----- 854 00020855 08000000 ----- 05318 .ORG UPI5A, *Y=PCM-2 05319 ARHI>A, B(-2), ADD, 05320 JUMP(UPI5B); ----- ----- 855 00000856 00FE0020 ----- 05321 .ORG UPI5B, *A=PM 05322 *FLOF MODE? 05323 Y(PM), 05324 Y>AR, 05325 JZ(UPI6F,UPI6T); ----- ----- 856 002221F2 00741000 ----- 05326 .ORG UPI6T, *FLOF MODE, NO TABLE TO UPDATE, EXIT 05327 JUMP(UPI11T); ----- ----- 1F3 000001F9 00000000 ----- 05328 *NOT FLOF, CALL PNTIN0 TO RETURN INVENTORY PAGE POINTER AND BYTE 05329 .ORG UPI6F, *CALL PNTIN0 05330 *RETURN=7, RETURN TO UPI7 05331 MA(RETURN), 05332 Y(7), 05333 Y>RAM, 05334 JUMP(PNTIN0); ----- ----- 1F2 00000857 7C071100 ----- 05335 * LAST Y WAS ERROR CODE, TPD= INV POINTER, RWL= LATCH FOR STORE 1 05336 .ORG UPI7, *Y=INCYCLE BIT 05337 *HEX PAGE? 05338 TPD>A, B(>80), AND, 05339 JZ(UPI8F,UPI8T); ----- ----- 797 000021F4 00800890 ----- 05340 .ORG UPI8F, *HEX PAGE, NO MARKER TO SET 05341 JUMP(UPI11T); ----- ----- 1F4 000001F9 00000000 ----- 05342 .ORG UPI8T, *SET INCYCLE BIT AND OR IN >30 TO MAKE IT VISIBLE 05343 *ALREADY SET? 05344 *A=INVCNT 05345 MA(INVCNT), RAM>AR, 05346 TPD>A, B(>B0), OR, 05347 Y>DCLR, 05348 JZ(UPI9F,UPI9T); ----- ----- 1F5 000231F6 38B01490 ----- 05349 .ORG UPI9T, *INCYCLE NOT SET, CLEAR INVENTORY COUNT AND EXIT 05350 *(PRESERVE 'COMPLETE' FLAG) 05351 MA(INVCNT), 05352 AR>A, B(1), AND, 05353 Y>RAM, 05354 JUMP(UPI11T); ----- ----- 1F7 000001F9 38010910 ----- 05355 .ORG UPI9F, *INCYCLE SET, Y=INVENTORY COUNT- 50 05356 *B=INVCNT 05357 MA(INVCNT), RAM>BR, 05358 AR>>1>A, B(-50), ADD, 05359 JUMP(UPI10); ----- ----- 1F6 00010858 38CE00E0 ----- 05360 .ORG UPI10, *MAX COUNT VALUE? 05361 JZ(UPI11F,UPI11T); ----- ----- 858 000021F8 00000000 ----- 05362 .ORG UPI11F, *COUNT NOT 50 YET, INCREMENT IT 05363 *(PRESERVE 'COMPLETE' FLAG) 05364 MA(INVCNT), 05365 A(2), BR>B, ADD, 05366 Y>RAM, 05367 JUMP(UPI11T); ----- ----- 1F8 000001F9 38020101 ----- 05368 *ENTRY POINT FROM VBI POST PROCESSING 05369 * A=THIS LATCH 05370 *COPY PAGE FOR THIS LATCH INTO PM,PT AND PU FOR PNTIN0 CALL 05371 .ORG UPI0B, *P=M0+A 05372 AR>A, B(M0), ADD, 05373 Y>PR, 05374 JUMP(UPI20); ----- ----- 8A8 00000859 80100010 ----- 05375 .ORG UPI20, *A=PAGE MAGS, P=T0+A 05376 PR>MA, RAM>AR, 05377 AR>A, B(T0), ADD, 05378 Y>PR, 05379 JUMP(UPI21); ----- ----- 859 0012085A 80180010 ----- 05380 .ORG UPI21, *PM=PAGE MAGS 05381 *B=INDEX TO TENS 05382 PR>BR, 05383 MA(PM), 05384 AR<<4>A, B(0), OR, 05385 Y>RAM, 05386 JUMP(UPI22); ----- ----- 85A 0041085B 74001130 ----- 05387 .ORG UPI22, *A=PAGE TENS 05388 *P=INDEX TO PAGE UNITS 05389 PR>MA, RAM>AR, 05390 A(8), BR>B, ADD, 05391 Y>PR, 05392 JUMP(UPI23); ----- ----- 85B 0012085C 80080001 ----- 05393 .ORG UPI23, *PT=PAGE TENS 05394 MA(PT), 05395 AR<<4>A, B(0), OR, 05396 Y>RAM, 05397 JUMP(UPI24); ----- ----- 85C 0000085D 75001130 ----- 05398 .ORG UPI24, *A=PAGE UNITS 05399 PR>MA, RAM>AR, 05400 JUMP(UPI25); ----- ----- 85D 0012085E 00000000 ----- 05401 .ORG UPI25, *PU=PAGE UNITS 05402 MA(PU), 05403 AR<<4>A, B(0), OR, 05404 Y>RAM, 05405 JUMP(UPI5); ----- ----- 85E 00000854 76001130 ----- 05406 *EXIT 05407 .ORG UPI11T, *A=RETURN POINTER 05408 MA(RET2), RAM>AR, 05409 JUMP(UPI12); ----- ----- 1F9 0002085F 7B000000 ----- 05410 .ORG UPI12, *Y=RETURN POINTER 05411 *BR=STOR0 05412 MA(STOR0), RAM>BR, 05413 AR>A, B(1), AND, 05414 JUMP(UPI13); ----- ----- 85F 00010860 20010810 ----- 05415 .ORG UPI13, *AR=CGB 05416 MA(CGB), RAM>AR, 05417 JZ(VPP104AF,HPP0T); ----- ----- 860 000221FA 34000000 ----- 05418 ************************************************************************ 05419 * section 3: VBI post processing * 05420 ************************************************************************ 05421 *+++DISPLAY PAGE HEADER PROCESSING 05422 * 05423 * A=POLREG 05424 .ORG VPP0, *VBIFLG=0 05425 MA(POLREG), 05426 AR>A, B(>FF-VBIFLG), AND, 05427 Y>RAM, 05428 * JUMP(VPP1); 05429 JUMP(TCJFG2F00); ----- ----- 0A3 00000861 107F0910 ----- 05430 * 05431 * TCJ June 93 05432 * Fix the Even/Odd output pin by setting the FLAG2 direction control 05433 * DDF2, dependant on the state of VDP text/mix/box. 05434 * 05435 .ORG TCJFG2F00, * Fetch BOX/MIX/TEXT bits 05436 MA(MREG2), RAM>AR, 05437 JUMP(TCJFG2F05); ----- ----- 861 00020862 6E000000 ----- 05438 * 05439 .ORG TCJFG2F05, 05440 AR>A, B(EVODD), AND, 05441 JUMP(TCJFG2F06); ----- ----- 862 00000863 00020810 ----- 05442 * 05443 .ORG TCJFG2F06, 05444 MA(VDP1), RAM>AR, 05445 JZ(TCJFG2F01F,VPP1T); ----- ----- 863 000221FC 01000000 ----- 05446 * 05447 .ORG TCJFG2F01F, * 05448 AR>A, B(BOX+MIX+TEXT), AND, 05449 Y>AR, 05450 JUMP(TCJFG2F02); ----- ----- 1FC 00220864 00070810 ----- 05451 * 05452 .ORG TCJFG2F02, 05453 AR>A, B(TEXT), XOR, 05454 JUMP(TCJFG2F03); ----- ----- 864 00000865 00011810 ----- 05455 * 05456 .ORG TCJFG2F03, 05457 MA(GPIO), RAM>AR, 05458 JZ(TCJFG2F04F,TCJFG2F04T); ----- ----- 865 000221FE 0F000000 ----- 05459 * 05460 .ORG TCJFG2F04F, * not in TEXT mode switch EVEN/ODD off 05461 MA(GPIO), 05462 AR>A, B(>DF), AND, Y>RAM, Y>IO, 05463 JUMP(VPP1T); ----- ----- 1FE 000001FD 0FDF4910 ----- 05464 * 05465 .ORG TCJFG2F04T, * in TEXT mode switch EVEN/ODD on 05466 MA(GPIO), 05467 AR>A, B(>20), OR, Y>RAM, Y>IO, 05468 JUMP(VPP1T); ----- ----- 1FF 000001FD 0F205110 ----- 05469 * 05470 .ORG VPP1T, *A=OGLCNT 05471 MA(OGLCNT), RAM>AR, 05472 JUMP(VPP2); ----- ----- 1FD 00020866 6B000000 ----- 05473 .ORG VPP2, *STORE LINE COUNT 05474 MA(LINCNT), 05475 AR>A, B(0), OR, 05476 Y>RAM, 05477 JUMP(VPP3); ----- ----- 866 00000867 66001110 ----- 05478 .ORG VPP3, *INIT ON-GOING COUNT FOR NEXT VBI 05479 MA(OGLCNT), 05480 Y(0), 05481 Y>RAM, 05482 JUMP(VPP10); ----- ----- 867 00000868 6B001100 ----- 05483 .ORG VPP10, *A=VPPRG2 05484 MA(VPPRG2), RAM>AR, 05485 JUMP(VPP40); ----- ----- 868 00020869 62000000 ----- 05486 .ORG VPP40, *Y=DPHC 05487 *B=VPPRG1 05488 MA(VPPRG1), RAM>BR, 05489 AR>A, B(DPHC), AND, 05490 JUMP(VPP41); ----- ----- 869 0001086A 61010810 ----- 05491 .ORG VPP41, *DPHC=0, DPHC? 05492 *IF NOT SET, SKIP PROCESSING 05493 MA(VPPRG2), 05494 AR>A, B(>FF-DPHC), AND, 05495 Y>RAM, 05496 JZ(VPP42F,TCJVPP10T); ----- ----- 86A 0000220C 62FE0910 ----- 05497 * 05498 * TCJ Nov 92 05499 * We know at this point that we have received a header for the 05500 * display page. If in alternate subpage mode, force the capture 05501 * of the next two subpages 05502 * 05503 .ORG VPP42F, *CSVDP=1 05504 * AREG = PEN, key states 05505 MA(PEN), RAM>AR, 05506 JUMP(TCJVPP00); ----- ----- 20C 0002086B 1B000000 ----- 05507 * 05508 .ORG TCJVPP00, * Y = PEN - 4, to see if we are in subpage mode 05509 ARHI>A, B(-4), ADD, 05510 JUMP(TCJVPP01); ----- ----- 86B 0000086C 00FC0020 ----- 05511 * 05512 .ORG TCJVPP01, * Subpage mode ? 05513 MA(MREG2), RAM>AR, 05514 JN(TCJVPP02F,TCJVPP02T); ----- ----- 86C 0002420E 6E000000 ----- 05515 * 05516 .ORG TCJVPP02F, * In Subpage mode 05517 * Y = SPALT 05518 AR>A, B(SPALT), AND, 05519 JUMP(TCJVPP03); ----- ----- 20E 0000086D 00010810 ----- 05520 * 05521 .ORG TCJVPP03, 05522 JZ(TCJVPP04F,TCJVPP04T); ----- ----- 86D 00002234 00000000 ----- 05523 * 05524 .ORG TCJVPP04F, * Call FSP0F to find STORE1 05525 * Returns to TCJVPP05.2 05526 MA(RETURN), 05527 Y(2), 05528 Y>RAM, 05529 JUMP(FSP0F); ----- ----- 234 0000030E 7C021100 ----- 05530 * 05531 .ORG TCJVPP05.2, * AR = STORE1 pointer 05532 MA(PT), RAM>AR, 05533 JUMP(TCJVPP06); ----- ----- 432 0002086E 75000000 ----- 05534 * 05535 .ORG TCJVPP06, * AR = AR >> 1 05536 AR>>1>A, B(0), OR, 05537 Y>AR, 05538 JUMP(TCJVPP07); ----- ----- 86E 0022086F 000010E0 ----- 05539 * 05540 .ORG TCJVPP07, * Y = (AR >> 1) & 3 05541 AR>>1>A, B(3), AND, 05542 JUMP(TCJVPP08.0); ----- ----- 86F 00000450 000308E0 ----- 05543 * 05544 .ORG TCJVPP08.0, 05545 JY(TCJVPP08.0); ----- ----- 450 0000C450 00000000 ----- 05546 * 05547 .ORG TCJVPP08.1, * Force a capture of Subpage latch 0 05548 MA(SPFRC), 05549 Y(FSP0), 05550 Y>RAM, 05551 JUMP(TCJVPP60); ----- ----- 451 00000870 57011100 ----- 05552 * 05553 .ORG TCJVPP08.2, * Force a capture of Subpage latch 1 05554 MA(SPFRC), 05555 Y(FSP1), 05556 Y>RAM, 05557 JUMP(TCJVPP60); ----- ----- 452 00000870 57021100 ----- 05558 * 05559 .ORG TCJVPP08.3, * Force a capture of Subpage latch 2 05560 MA(SPFRC), 05561 Y(FSP2), 05562 Y>RAM, 05563 JUMP(TCJVPP60); ----- ----- 453 00000870 57041100 ----- 05564 * 05565 .ORG TCJVPP60, * AR = STORE2 pointer 05566 MA(PU), RAM>AR, 05567 JUMP(TCJVPP61); ----- ----- 870 00020871 76000000 ----- 05568 * 05569 .ORG TCJVPP61, * AR = AR >> 1 05570 AR>>1>A, B(0), OR, 05571 Y>AR, 05572 JUMP(TCJVPP62); ----- ----- 871 00220872 000010E0 ----- 05573 * 05574 .ORG TCJVPP62, * Y = (AR >> 1) & 3 05575 AR>>1>A, B(3), AND, 05576 JUMP(TCJVPP63.0); ----- ----- 872 00000480 000308E0 ----- 05577 * 05578 .ORG TCJVPP63.0, * BR = First force flag 05579 MA(SPFRC), RAM>BR, 05580 JY(TCJVPP63.0); ----- ----- 480 0001C480 57000000 ----- 05581 * 05582 .ORG TCJVPP63.1, * Force a capture of Subpage latch 0 05583 MA(SPFRC), 05584 A(FSP0*16), BR>B, OR, 05585 Y>RAM, 05586 JUMP(TCJVPP64); ----- ----- 481 00000873 57101101 ----- 05587 * 05588 .ORG TCJVPP63.2, * Force a capture of Subpage latch 1 05589 MA(SPFRC), 05590 A(FSP1*16), BR>B, OR, 05591 Y>RAM, 05592 JUMP(TCJVPP64); ----- ----- 482 00000873 57201101 ----- 05593 * 05594 .ORG TCJVPP63.3, * Force a capture of Subpage latch 2 05595 MA(SPFRC), 05596 A(FSP2*16), BR>B, OR, 05597 Y>RAM, 05598 JUMP(TCJVPP64); ----- ----- 483 00000873 57401101 ----- 05599 * 05600 .ORG TCJVPP64, 05601 JUMP(TCJVPP02T); ----- ----- 873 0000020F 00000000 ----- 05602 * 05603 .ORG TCJVPP04T, * Not in special subpage capture 05604 JUMP(TCJVPP02T); ----- ----- 235 0000020F 00000000 ----- 05605 * 05606 .ORG TCJVPP02T, * Common exit for forced subage mode 05607 MA(VPPRG1), RAM>BR, 05608 JUMP(TCJVPP09); ----- ----- 20F 00010874 61000000 ----- 05609 * 05610 .ORG TCJVPP09, 05611 MA(VPPRG1), 05612 A(CSVDP), BR>B, OR, 05613 Y>RAM, 05614 JUMP(VPP43); ----- ----- 874 00000875 61101101 ----- 05615 * 05616 .ORG VPP43, *A=STOR0 05617 MA(STOR0), RAM>AR, 05618 JUMP(VPP44); ----- ----- 875 00020876 20000000 ----- 05619 .ORG VPP44, *P=INDEX TO LAFx 05620 *A=VDPTXT 05621 MA(VDPTXT), RAM>AR, 05622 ARHI>A, B(LAF0), ADD, 05623 Y>PR, 05624 JUMP(VPP45); ----- ----- 876 00020877 AB400020 ----- 05625 .ORG VPP45, *B=LAFx 05626 PR>MA, RAM>BR, 05627 JUMP(VPP46); ----- ----- 877 00110878 00000000 ----- 05628 .ORG VPP46, *Y=CAP 05629 A(CAP), BR>B, AND, 05630 JUMP(VPP47); ----- ----- 878 00000879 00800801 ----- 05631 .ORG VPP47, *Y=CLR, FIRST CAPTURE? 05632 A(CLR), BR>B, AND, 05633 JZ(VPP48F,VPP48T); ----- ----- 879 00002236 00200801 ----- 05634 .ORG VPP48T, *FIRST CAPTURE, C8YET=1 05635 *GO AND CLEAR URVL AS WELL 05636 AR>A, B(C8YET), OR, 05637 Y>AR, 05638 JUMP(VPP49F); ----- ----- 237 00220268 00101010 ----- 05639 .ORG VPP48F, *GOING TO CLEAR IT? 05640 JZ(VPP49F,VPP49T); ----- ----- 236 00002268 00000000 ----- 05641 .ORG VPP49F, *GOING TO CLEAR, URVL=0 05642 MA(VDPTXT), 05643 AR>A, B(>FF-URVL), AND, 05644 Y>RAM, 05645 JUMP(VPP60T); ----- ----- 268 0000026B 2BF70910 ----- 05646 .ORG VPP49T, *NO CLEAR 05647 JUMP(VPP60T); ----- ----- 269 0000026B 00000000 ----- 05648 * 05649 * TCJ Nov 92 05650 * Check to see if we have captured a page and if so, is 05651 * it the one we are forceing ?. 05652 * 05653 .ORG TCJVPP10T, * AR = Forceing subpage flags 05654 MA(SPFRC), RAM>AR, 05655 JUMP(TCJVPP11); ----- ----- 20D 0002087A 57000000 ----- 05656 * 05657 .ORG TCJVPP11, * Y = Flags 05658 AR>A, B(7), AND, 05659 JUMP(TCJVPP12); ----- ----- 87A 0000087B 00070810 ----- 05660 * 05661 .ORG TCJVPP12, 05662 JY(TCJVPP13.0); ----- ----- 87B 0000C7D0 00000000 ----- 05663 * 05664 .ORG TCJVPP13.0, * No subpage forced 05665 JUMP(VPP60T); ----- ----- 7D0 0000026B 00000000 ----- 05666 * 05667 .ORG TCJVPP13.1, * Forcing capture of Subpage 0 05668 MA(LFSP0), RAM>AR, 05669 JUMP(TCJVPP21); ----- ----- 7D1 0002087C 48000000 ----- 05670 * 05671 .ORG TCJVPP21, * STORE = Pointer to subpage number 05672 MA(STORE), 05673 Y(SP0I), 05674 Y>RAM, 05675 JUMP(TCJVPP14); ----- ----- 87C 0000087D 77481100 ----- 05676 * 05677 .ORG TCJVPP13.2, * Forcing capture of Subpage 1 05678 * Fetch pointer to page latch flags 05679 MA(LFSP1), RAM>AR, 05680 JUMP(TCJVPP22); ----- ----- 7D2 0002087E 49000000 ----- 05681 * 05682 .ORG TCJVPP22, * STORE = Pointer to subpage number 05683 MA(STORE), 05684 Y(SP1I), 05685 Y>RAM, 05686 JUMP(TCJVPP14); ----- ----- 87E 0000087D 774C1100 ----- 05687 * 05688 .ORG TCJVPP13.3, 05689 JUMP(VPP60T); ----- ----- 7D3 0000026B 00000000 ----- 05690 * 05691 .ORG TCJVPP13.4, * Forcing capture of Subpage 2 05692 MA(LFSP2), RAM>AR, 05693 JUMP(TCJVPP23); ----- ----- 7D4 0002087F 4A000000 ----- 05694 * 05695 .ORG TCJVPP23, * STORE = Pointer to subpage number 05696 MA(STORE), 05697 Y(SP2I), 05698 Y>RAM, 05699 JUMP(TCJVPP14); ----- ----- 87F 0000087D 77501100 ----- 05700 * 05701 .ORG TCJVPP13.5, 05702 JUMP(VPP60T); ----- ----- 7D5 0000026B 00000000 ----- 05703 * 05704 .ORG TCJVPP13.6, 05705 JUMP(VPP60T); ----- ----- 7D6 0000026B 00000000 ----- 05706 * 05707 .ORG TCJVPP13.7, 05708 JUMP(VPP60T); ----- ----- 7D7 0000026B 00000000 ----- 05709 * 05710 * TCJ Dec 92 05711 * We have a pointer to the subpage we are forcing capture. 05712 * See if we have captured it, and if so sort out the mess. 05713 * with the subpage numbers. 05714 * 05715 .ORG TCJVPP14, * PR = Subpage latch pointer 05716 AR.0F>A, B(LAF0), ADD, 05717 Y>PR, 05718 JUMP(TCJVPP15); ----- ----- 87D 00000880 804000C0 ----- 05719 * 05720 .ORG TCJVPP15, * BR = *(PR+LAF0), Fetch the flag for the subpage latch 05721 PR>MA, RAM>BR, 05722 JUMP(TCJVPP16); ----- ----- 880 00110881 00000000 ----- 05723 * 05724 .ORG TCJVPP16, * Y = Flag && VBICAP, have we just captured 05725 * the forced subpage. 05726 A(VBICAP), BR>B, AND, 05727 JUMP(TCJVPP17); ----- ----- 881 00000882 00400801 ----- 05728 * 05729 .ORG TCJVPP17, * RWL = Subpage store 05730 MA(RWL), 05731 AR.0F>A, B(0), OR, 05732 Y>RAM, Y>IO, 05733 JZ(TCJVPP24F,VPP60T); ----- ----- 882 0000226A 0B0051C0 ----- 05734 * 05735 .ORG TCJVPP24F, * BR = Pointer to subpage latch 05736 * PR = Pointer to number in page store 05737 MA(STORE), RAM>BR, 05738 A(-15), B(-15), OR, 05739 Y>PR, 05740 JUMP(TCJVPP25); ----- ----- 26A 00010883 F7F11000 ----- 05741 * 05742 .ORG TCJVPP25, * TDP = subpage tens and units 05743 * PR = Pointer to subpage latch units 05744 RVDP, 05745 JUMP(TCJVPP25A); ----- ----- 883 00000884 00008000 ----- 05746 * 05747 .ORG TCJVPP25A, 05748 TPD>A, B(0), OR, 05749 Y>AR, 05750 JUMP(TCJVPP26); ----- ----- 884 00220885 00001090 ----- 05751 * 05752 .ORG TCJVPP26, 05753 A(0), BR>B, ADD, 05754 Y>PR, 05755 JUMP(TCJVPP27); ----- ----- 885 00000886 80000001 ----- 05756 * 05757 .ORG TCJVPP27, * BR = Old latch value 05758 PR>MA, RAM>BR, 05759 JUMP(TCJVPP28); ----- ----- 886 00110887 00000000 ----- 05760 * 05761 .ORG TCJVPP28, * SPxI = New subpage units 05762 PR>MA, 05763 AR<<4>A, BR.0F>B, OR, 05764 Y>RAM, 05765 PR>BR, 05766 JUMP(TCJVPP29); ----- ----- 887 00510888 00001132 ----- 05767 * 05768 .ORG TCJVPP29, * PR = Pointer to subpage latch tens 05769 BR>B, A(1), ADD, 05770 Y>PR, 05771 JUMP(TCJVPP30); ----- ----- 888 00000889 80010001 ----- 05772 * 05773 .ORG TCJVPP30, * BR = Old latch value 05774 * AR = AR & 0x70, remove C4 bit 05775 PR>MA, RAM>BR, 05776 AR.F0>A, B(>70), AND, 05777 Y>AR, 05778 JUMP(TCJVPP31); ----- ----- 889 0033088A 007008D0 ----- 05779 * 05780 .ORG TCJVPP31, * SPxX = Subpage number tens 05781 PR>MA, 05782 AR.F0>A, BR.0F>B, OR, 05783 Y>RAM, 05784 PR>BR, 05785 JUMP(TCJVPP32); ----- ----- 88A 0051088B 000011D2 ----- 05786 * 05787 .ORG TCJVPP32, * PR = pointer to subpage hundreds and thousands 05788 A(-14), B(-14), OR, 05789 Y>PR, 05790 JUMP(TCJVPP33); ----- ----- 88B 0000088C 80F21000 ----- 05791 * 05792 .ORG TCJVPP33, * TDP = subpage hundreds and thousands 05793 * PR = Pointer the subpage latch hundreds 05794 RVDP, 05795 JUMP(TCJVPP33A); ----- ----- 88C 0000088D 00008000 ----- 05796 * 05797 .ORG TCJVPP33A, 05798 BR>B, A(1), ADD, 05799 Y>PR, 05800 JUMP(TCJVPP34); ----- ----- 88D 0000088E 80010001 ----- 05801 * 05802 .ORG TCJVPP34, * AR = subpage hundreds and thousands 05803 TPD>A, B(0), OR, 05804 Y>AR, 05805 JUMP(TCJVPP35); ----- ----- 88E 0022088F 00001090 ----- 05806 * 05807 .ORG TCJVPP35, * BR = Old latch hundreds value 05808 PR>MA, RAM>BR, 05809 JUMP(TCJVPP36); ----- ----- 88F 00110890 00000000 ----- 05810 * 05811 .ORG TCJVPP36, * SPxC = New subpage hundreds 05812 PR>MA, 05813 AR<<4>A, BR.0F>B, OR, 05814 Y>RAM, 05815 PR>BR, 05816 JUMP(TCJVPP37); ----- ----- 890 00510891 00001132 ----- 05817 * 05818 .ORG TCJVPP37, * PR = pointer to subpage latch thousands 05819 BR>B, A(1), ADD, 05820 Y>PR, 05821 JUMP(TCJVPP38); ----- ----- 891 00000892 80010001 ----- 05822 * 05823 .ORG TCJVPP38, * SPxM = New subpage thousands 05824 AR.F0>A, B(>30), AND, 05825 Y>RAM, 05826 JUMP(TCJVPP40); ----- ----- 892 00000893 003009D0 ----- 05827 * 05828 .ORG TCJVPP40, * BR = forceing flag 05829 MA(SPFRC), RAM>BR, 05830 JUMP(TCJVPP41); ----- ----- 893 00010894 57000000 ----- 05831 * 05832 .ORG TCJVPP41, * Set up for next flag value 05833 MA(SPFRC), 05834 A(>0F), BR>>4>B, AND, 05835 Y>RAM, 05836 JUMP(VPP60T); ----- ----- 894 0000026B 570F0904 ----- 05837 * 05838 *+++MAINTAIN TIME OUT 05839 .ORG VPP60T, *A=TIMOUT 05840 MA(TIMOUT), RAM>AR, 05841 JUMP(VPP61); ----- ----- 26B 00020895 3B000000 ----- 05842 .ORG VPP61, *Y=TIMOUT 05843 AR>A, B(0), OR, 05844 JUMP(VPP62); ----- ----- 895 00000896 00001010 ----- 05845 .ORG VPP62, *TIME OUT ACTIVE? 05846 *IF NOT, EXIT 05847 *B=VPPRG1 05848 MA(VPPRG1), RAM>BR, 05849 JZ(VPP63F,VPP100T); ----- ----- 896 0001226C 61000000 ----- 05850 .ORG VPP63F, *ACTIVE TIME OUT, DECREMENT COUNT 05851 MA(TIMOUT), 05852 AR>A, B(-1), ADD, 05853 Y>RAM, 05854 JUMP(VPP64); ----- ----- 26C 00000897 3BFF0110 ----- 05855 .ORG VPP64, *COUNT COMPLETE? 05856 *A=DHREG 05857 MA(DHREG), RAM>AR, 05858 JZ(VPP65F,VPP65T); ----- ----- 897 0002226E 32000000 ----- 05859 .ORG VPP65F, *NO, EXIT 05860 JUMP(VPP100T); ----- ----- 26E 0000026D 00000000 ----- 05861 .ORG VPP65T, *COUNT COMPLETE 05862 *RE-ENABLE HEADERS AND REMOVE TIMED OUT DISPLAY 05863 MA(DHREG), 05864 AR>A, B(>FF-POOCD-TOD), AND, 05865 Y>RAM, 05866 JUMP(VPP66); ----- ----- 26F 00000898 32D70910 ----- 05867 .ORG VPP66, *CALL SVDP TO UPDATE PAGE NUMBER 05868 *CSVDP=1 05869 MA(VPPRG1), 05870 A(CSVDP), BR>B, OR, 05871 Y>RAM, 05872 JUMP(VPP100T); ----- ----- 898 0000026D 61101101 ----- 05873 *+++VBICAP, CAP AND CLEAR PROCESSING 05874 * 05875 .ORG VPP100T, *INIT INDEX OFFSET FOR LAFx LOOP 05876 *COUNT=AR=7 05877 MA(COUNT), 05878 A(7), B(7), OR, 05879 Y>RAM, Y>AR, 05880 JUMP(VPP111); ----- ----- 26D 00220899 78071100 ----- 05881 * 05882 .ORG VPP111, *PR=LAFx INDEX, COUNT<0? 05883 AR>A, B(LAF0), ADD, 05884 Y>PR, 05885 JN(VPP101F,VPP230T); ----- ----- 899 00004274 80400010 ----- 05886 *CLR PROCESSING 05887 * for each LAFx:- 05888 * if (CLR==1) {CLR=0, clear page} 05889 .ORG VPP101F, *BR=LAFx 05890 PR>MA, RAM>BR, 05891 JUMP(VPP200A); ----- ----- 274 0011089A 00000000 ----- 05892 .ORG VPP200A, *LAFR= LAFx 05893 MA(LAFR), 05894 A(0), BR>B, OR, 05895 Y>RAM, 05896 JUMP(VPP200B); ----- ----- 89A 0000089B 35001101 ----- 05897 .ORG VPP200B, *RWL=COUNT 05898 MA(RWL), 05899 AR>A, B(0), ADD, 05900 Y>RAM, Y>IO, 05901 JUMP(VPP200C); ----- ----- 89B 0000089C 0B004110 ----- 05902 .ORG VPP200C, *Y=CLR 05903 A(CLR), BR>B, AND, 05904 JUMP(VPP201); ----- ----- 89C 0000089D 00200801 ----- 05905 .ORG VPP201, *CLR=0, CLR? 05906 *IF NO, SKIP CLEAR 05907 PR>MA, 05908 A(>FF-CLR), BR>B, AND, 05909 Y>RAM, 05910 JZ(VPP202F,VPP202T); ----- ----- 89D 00102276 00DF0901 ----- 05911 *CLEAR THIS PAGE 05912 .ORG VPP202F, *RETURN=0 05913 MA(RETURN), 05914 Y(0), 05915 Y>RAM, 05916 JUMP(VPP203); ----- ----- 276 0000089E 7C001100 ----- 05917 .ORG VPP203, *USE THISRW FOR ROW LOOP 05918 *AR=THISRW=23 05919 *CALL MASK0 05920 *RETURN=0, RETURN TO VPP215Y 05921 MA(THISRW), 05922 Y(23), 05923 Y>RAM, Y>AR, 05924 JUMP(MASK0); ----- ----- 89E 002207F9 7D171100 ----- 05925 *START OF ROW CLEAR LOOP 05926 .ORG VPP215Y, *Y=MARKER BYTE FOR THIS ROW 05927 *AR=THISRW 05928 MA(THISRW), RAM>AR, 05929 AR>A, BR>B, AND, 05930 JUMP(VPP216); ----- ----- 0E0 0002089F 7D000811 ----- 05931 .ORG VPP216, *CLEAR THIS ROW? 05932 *PR=AR*40, POINT TO FIRST BYTE ON ROW 05933 *A=LAFx 05934 MA(LAFR), RAM>AR, 05935 AR<<3>A, AR<<5>B, ADD, 05936 Y>PR, 05937 JZ(VPP217F,VPP217T); ----- ----- 89F 00022278 B5000059 ----- 05938 .ORG VPP217F, *NO, SKIP CLEAR 05939 *AR=THISRW 05940 MA(THISRW), RAM>AR, 05941 JUMP(VPP223T); ----- ----- 278 00020281 7D000000 ----- 05942 *CLEAR THIS ROW, LEAVE MARKED PACKET 26 CHARACTERS 05943 * A=LAFx 05944 .ORG VPP217T, *Y=BTTL 05945 AR>A, B(BTTL), AND, 05946 JUMP(VPP217A); ----- ----- 279 000008A0 00020810 ----- 05947 .ORG VPP217A, *USE STORE FOR LOOP COUNT 05948 *INIT LOOP COUNT 05949 *IS THIS LATCH SET TO RECEIVE A BTT? 05950 MA(STORE), 05951 A(40), B(40), OR, 05952 Y>RAM, 05953 JZ(VPP218F,VPP218T); ----- ----- 8A0 0000227A 77281100 ----- 05954 *CLEAR A BTT ROW (DO NOT OVERWRITE THE PAGE INVENTORY) 05955 .ORG VPP218F, *AR= LOOP, TPD=EXISTING BYTE 05956 RVDP, 05957 MA(STORE), RAM>AR, 05958 JUMP(VPP218A); ----- ----- 27A 000208A1 77008000 ----- 05959 .ORG VPP218A, *DEC LOOP 05960 MA(STORE), 05961 AR>A, B(-1), ADD, 05962 Y>RAM, 05963 JUMP(VPP218B); ----- ----- 8A1 000008A2 77FF0110 ----- 05964 .ORG VPP218B, *CLEAR BTT NIBBLE ONLY 05965 *LAST BYTE? 05966 *B=COLUMN POINTER 05967 PR>BR, 05968 TPD.F0>A, B(0), OR, 05969 Y>DCLR, 05970 JZ(VPP218CF,VPP218CT); ----- ----- 8A2 0041327C 000014B0 ----- 05971 .ORG VPP218CF, *MORE BYTES 05972 *PR++ 05973 A(1), BR>B, ADD, 05974 Y>PR, 05975 JUMP(VPP218F); ----- ----- 27C 0000027A 80010001 ----- 05976 * 05977 .ORG VPP218CT, *COMPLETED CLEARING BTT ROW 05978 *AR=THISRW 05979 MA(THISRW), RAM>AR, 05980 JUMP(VPP223T); ----- ----- 27D 00020281 7D000000 ----- 05981 *CLEAR AN ORDINARY ROW 05982 .ORG VPP218T, *READ TELETEXT MEMORY WITH 9TH BIT 05983 *AR=STORE 05984 MA(STORE), RAM>AR, 05985 BIT8, 05986 RVDP, 05987 JUMP(VPP220); ----- ----- 27B 000208A3 77009400 ----- 05988 .ORG VPP220, *Y=TELETEXT DATA WITH 9TH BIT 05989 TPD>A, B(0), ADD, 05990 JUMP(VPP221); ----- ----- 8A3 000008A4 00000090 ----- 05991 .ORG VPP221, *LOOP COUNT-- 05992 *9TH BIT SET? 05993 MA(STORE), 05994 AR>A, B(-1), ADD, 05995 Y>RAM, 05996 JN(VPP222F,VPP222T); ----- ----- 8A4 0000427E 77FF0110 ----- 05997 .ORG VPP222F, *9TH BIT NOT SET, CLEAR THE BYTE 05998 *DR=>20 05999 *LAST BYTE? 06000 *BR=PR 06001 *AR=THISRW 06002 MA(THISRW), RAM>AR, 06003 PR>BR, 06004 A(>20), B(>20), OR, 06005 Y>DR, 06006 JZ(VPP223F,VPP223T); ----- ----- 27E 00433280 7D201000 ----- 06007 .ORG VPP222T, *9TH BIT SET, LEAVE THE BYTE 06008 *LAST BYTE? 06009 *BR=PR 06010 *AR=THISRW 06011 MA(THISRW), RAM>AR, 06012 PR>BR, 06013 JZ(VPP223F,VPP223T); ----- ----- 27F 00432280 7D000000 ----- 06014 .ORG VPP223F, *MORE BYTES 06015 *PR++ 06016 A(1), BR>B, ADD, 06017 Y>PR, 06018 JUMP(VPP218T); ----- ----- 280 0000027B 80010001 ----- 06019 *LAST ROW? 06020 * AR=THISRW 06021 .ORG VPP223T, *THISRW-- 06022 MA(THISRW), 06023 AR>A, B(-1), ADD, 06024 Y>RAM, 06025 JUMP(VPP224); ----- ----- 281 000008A5 7DFF0110 ----- 06026 .ORG VPP224, *CLEARED ALL ROWS? 06027 *THISRW==0? 06028 *AR=COUNT 06029 MA(COUNT), RAM>AR, 06030 JZ(VPP225F,VPP225T); ----- ----- 8A5 00022282 78000000 ----- 06031 .ORG VPP225F, *CALL MASK0 AND RETURN FOR NEXT ROW 06032 *RETURN=0, RETURN TO VPP215Y 06033 *AR=THISRW 06034 MA(THISRW), RAM>AR, 06035 JUMP(MASK0); ----- ----- 282 000207F9 7D000000 ----- 06036 * 06037 .ORG VPP225T, *PR=LAFx INDEX 06038 AR>A, B(LAF0), ADD, 06039 Y>PR, 06040 JUMP(VPP202T); ----- ----- 283 00000277 80400010 ----- 06041 *LAFx PROCESSING 06042 * PR=LAFx INDEX 06043 .ORG VPP202T, *BR=LAFx 06044 PR>MA, RAM>BR, 06045 JUMP(VPP102); ----- ----- 277 001108A6 00000000 ----- 06046 .ORG VPP102, *Y=VBICAP 06047 *AR=COUNT 06048 MA(COUNT), RAM>AR, 06049 A(VBICAP), BR>B, AND, 06050 JUMP(VPP103); ----- ----- 8A6 000208A7 78400801 ----- 06051 .ORG VPP103, *VBICAP=0, VBICAP? 06052 PR>MA, 06053 A(>FF-VBICAP), BR>B, AND, 06054 Y>RAM, 06055 JZ(VPP104F,VPP104T); ----- ----- 8A7 00102284 00BF0901 ----- 06056 *VBICAP SET, PROCESS PAGE CAPTURED DURING LAST VBI 06057 * 06058 * First update inventory table. There is not enough time to do 06059 * this in LPP for pages which are in a latch. 06060 * 06061 .ORG VPP104F, *CALL UPI0B TO UPDATE PAGE INVENTORY 06062 *RET2=1, RETURN TO VPP104AF 06063 *A=THIS LATCH 06064 MA(RET2), 06065 Y(1), 06066 Y>RAM, 06067 JUMP(UPI0B); ----- ----- 284 000008A8 7B011100 ----- 06068 * B= STOR0 06069 .ORG VPP104AF, *A=THIS LATCH 06070 MA(COUNT), RAM>AR, 06071 JUMP(VPP104B); ----- ----- 1FA 000208A9 78000000 ----- 06072 .ORG VPP104B, *PR=LAFx INDEX 06073 AR>A, B(LAF0), ADD, 06074 Y>PR, 06075 JUMP(VPP104C); ----- ----- 8A9 000008AA 80400010 ----- 06076 .ORG VPP104C, *Y=THIS LATCH XOR DISPLAY LATCH 06077 *A=LAFx 06078 PR>MA, RAM>AR, 06079 AR>A, BRHI>B, XOR, 06080 JUMP(VPP105); ----- ----- 8AA 001208AB 0000181C ----- 06081 .ORG VPP105, *JUST CAPTURED DISPLAY PAGE? 06082 *B=SYS1 06083 MA(SYS1), RAM>BR, 06084 JZ(VPP105AF,VPP105AT); ----- ----- 8AB 00012286 08000000 ----- 06085 *JUST CAPTURED THE DISPLAY PAGE 06086 .ORG VPP105AT, *Y=PCM-2 06087 *B=VPPRG1 06088 MA(VPPRG1), RAM>BR, 06089 A(-2), BRHI>B, ADD, 06090 JUMP(VPP105AA); ----- ----- 287 000108AC 61FE000C ----- 06091 .ORG VPP105AA, *Y=CAP 06092 *FLOF MODE? 06093 *A=VPPRG2 06094 MA(VPPRG2), RAM>AR, 06095 AR>A, B(CAP), AND, 06096 JZ(VPP106F,VPP106T); ----- ----- 8AC 00022288 62800810 ----- 06097 .ORG VPP106T, *FLOF MODE, SORT BACKGROUND LATCHES 06098 *SBL=1, CSVDP=1 06099 *FIRST CAPTURE? 06100 MA(VPPRG1), 06101 A(SBL+CSVDP), BR>B, OR, 06102 Y>RAM, 06103 JZ(VPP106AF,VPP106AT); ----- ----- 289 0000228A 61901101 ----- 06104 .ORG VPP106F, *NOT FLOF MODE 06105 *CSVDP=1 06106 *FIRST CAPTURE? 06107 MA(VPPRG1), 06108 A(CSVDP), BR>B, OR, 06109 Y>RAM, 06110 JZ(VPP106AF,VPP106AT); ----- ----- 288 0000228A 61101101 ----- 06111 *FIRST CAPTURE 06112 .ORG VPP106AT, *SET DPC AND DPFC 06113 MA(VPPRG2), 06114 AR>A, B(DPC+DPFC), OR, 06115 Y>RAM, 06116 JUMP(VPP105AF); ----- ----- 28B 00000286 62121110 ----- 06117 *NOT FIRST CAPTURE 06118 .ORG VPP106AF, *SET DPC ONLY 06119 MA(VPPRG2), 06120 AR>A, B(DPC), OR, 06121 Y>RAM, 06122 JUMP(VPP105AF); ----- ----- 28A 00000286 62021110 ----- 06123 *LAFx PROCESSING 06124 .ORG VPP105AF, *A=LAFx 06125 PR>MA, RAM>AR, 06126 JUMP(VPP105AB); ----- ----- 286 001208AD 00000000 ----- 06127 .ORG VPP105AB, *CAP=1 06128 PR>MA, 06129 AR>A, B(CAP), OR, 06130 Y>RAM, Y>AR, 06131 JUMP(VPP107A); ----- ----- 8AD 003208AE 00801110 ----- 06132 .ORG VPP107A, *Y=AITL+BTTL 06133 *B=AITCNT 06134 MA(AITCNT), RAM>BR, 06135 AR>A, B(AITL+BTTL), AND, 06136 JUMP(VPP107B); ----- ----- 8AE 000108AF 4C030810 ----- 06137 .ORG VPP107B, *Y=BTTL, A=TOPRG1 06138 *CAPTURED A TOP TABLE? 06139 MA(TOPRG1), RAM>AR, 06140 AR>A, B(BTTL), AND, 06141 JZ(VPP107CF,VPP107CT); ----- ----- 8AF 0002228C 37020810 ----- 06142 .ORG VPP107CF, *CAPTURED A TOP TABLE 06143 *Y=AITCNT 06144 *BTTL? 06145 A(0), BR.0F>B, OR, 06146 JZ(VPP107DF,VPP107DT); ----- ----- 28C 0000228E 00001002 ----- 06147 *CAPTURED A BTT 06148 .ORG VPP107DF, *CAPTURED A BTT 06149 *BTTP=1, BTTCAP=1 06150 MA(TOPRG1), 06151 AR>A, B(BTTP+BTTCAP), OR, 06152 Y>RAM, 06153 JUMP(VPP107DA); ----- ----- 28E 000008B0 37601110 ----- 06154 .ORG VPP107DA, *A=STSWD0 06155 MA(STSWD0), RAM>AR, 06156 JUMP(VPP107DB); ----- ----- 8B0 000208B1 64000000 ----- 06157 .ORG VPP107DB, *TFLG=1 06158 MA(STSWD0), 06159 AR>A, B(TFLG), OR, 06160 Y>RAM, 06161 JUMP(VPP107CT); ----- ----- 8B1 0000028D 64801110 ----- 06162 *CAPTURED AN AIT 06163 .ORG VPP107DT, *A=EXPREG, AITCNT=0? 06164 MA(EXPREG), RAM>AR, 06165 JZ(VPP107EF,VPP107ET); ----- ----- 28F 00022296 63000000 ----- 06166 .ORG VPP107EF, *AITCNT<>0, WAIT FOR ALL AITS BEFORE GENERATING A PROMPT 06167 *AITCNT-- 06168 MA(AITCNT), 06169 A(-1), BR>B, ADD, 06170 Y>RAM, 06171 JUMP(VPP107CT); ----- ----- 296 0000028D 4CFF0101 ----- 06172 .ORG VPP107ET, *OK TO GENERATE A PROMPT 06173 MA(EXPREG), 06174 AR>A, B(CGAP), OR, 06175 Y>RAM, 06176 JUMP(VPP107CT); ----- ----- 297 0000028D 63081110 ----- 06177 *CLEAR PACKET 26 MARKERS 06178 .ORG VPP107CT, *P=-24 06179 *A=THIS LATCH 06180 MA(COUNT), RAM>AR, 06181 Y(-24), 06182 Y>PR, 06183 JUMP(VPP107E); ----- ----- 28D 000208B2 F8E81000 ----- 06184 .ORG VPP107E, *B=-24 06185 *RWL= THIS LATCH 06186 PR>BR, 06187 MA(RWL), 06188 AR>A, B(0), OR, 06189 Y>RAM, Y>IO, 06190 JUMP(VPP110); ----- ----- 8B2 004108B3 0B005110 ----- 06191 *LOOP START 06192 .ORG VPP110, *PR=BR-1 06193 A(-1), BR>B, ADD, 06194 Y>PR, 06195 JUMP(VPP108); ----- ----- 8B3 000008B4 80FF0001 ----- 06196 .ORG VPP108, *FINISHED? 06197 *READ MEMORY 06198 RVDP, 06199 JZ(VPP109F,VPP109T); ----- ----- 8B4 0000229A 00008000 ----- 06200 .ORG VPP109F, *NOT YET 06201 *WRITE BACK TO MEMORY 06202 *CLEAR P26 MARKER 06203 PR>BR, 06204 TPD>A, B(0), OR, 06205 Y>DCLR, 06206 JUMP(VPP110); ----- ----- 29A 004118B3 00001490 ----- 06207 * 06208 .ORG VPP109T, *LAST LOC 06209 *WRITE BACK TO MEMORY 06210 *AR=COUNT 06211 MA(COUNT), RAM>AR, 06212 TPD>A, B(0), OR, 06213 Y>DCLR, 06214 JUMP(VPP104T); ----- ----- 29B 00021285 78001490 ----- 06215 *BACK TO LAFx LOOP 06216 * AR=COUNT 06217 .ORG VPP104T, *COUNT--, AR-- 06218 MA(COUNT), 06219 AR>A, B(-1), ADD, 06220 Y>RAM, Y>AR, 06221 JUMP(VPP111); ----- ----- 285 00220899 78FF0110 ----- 06222 * 06223 *END OF VBICAP, CAP AND CLEAR PROCESSING 06224 * 06225 * 06226 *+++TOP POST PROCESSING 06227 * 06228 .ORG TPP0, *A=TOPRG1 06229 MA(TOPRG1), RAM>AR, 06230 JUMP(TPP14); ----- ----- 622 000208B5 37000000 ----- 06231 .ORG TPP14, *Y=BTTUP 06232 AR>A, B(BTTUP), AND, 06233 JUMP(TPP20); ----- ----- 8B5 000008B6 00100810 ----- 06234 .ORG TPP20, *BTTUP? 06235 *BTTP=0 06236 MA(TOPRG1), 06237 AR>A, B(>FF-BTTP), AND, 06238 Y>RAM, Y>AR, 06239 JZ(TPP21F,TPP21T); ----- ----- 8B6 0022229C 37DF0910 ----- 06240 * BTT UPDATED, INITIALISE AIT LATCHES 06241 .ORG TPP21F, *INIT LOOP VARIABLE 06242 *COUNT=0 06243 MA(COUNT), 06244 Y(0), 06245 Y>RAM, 06246 JUMP(TPP30Y); ----- ----- 29C 00000648 78001100 ----- 06247 * 06248 *^^^ start of fix for single AITs 06249 * 06250 .ORG TPP21A, *P=INDEX TO STORx MAGS 06251 A(M0), BRHI>B, ADD, 06252 Y>PR, 06253 JUMP(TPP21AA); ----- ----- 8BD 000008B7 8010000C ----- 06254 .ORG TPP21AA, *A=STORx MAGS 06255 PR>MA, RAM>AR, 06256 JUMP(TPP21AB); ----- ----- 8B7 001208B8 00000000 ----- 06257 .ORG TPP21AB, *SET NULL MAGS (IN CASE AIT NOT FOUND IN TABLE) 06258 PR>MA, 06259 AR>A, B(>0F), OR, 06260 Y>RAM, Y>IO, 06261 JUMP(TPP21AC); ----- ----- 8B8 001008B9 000F5110 ----- 06262 .ORG TPP21AC, *P=INDEX TO STORx LATCH 06263 *A=COUNT 06264 MA(COUNT), RAM>AR, 06265 A(LAF0), BRHI>B, ADD, 06266 Y>PR, 06267 JUMP(TPP21B); ----- ----- 8B9 000208BA F840000C ----- 06268 * 06269 *^^^ end of fix for single AITs 06270 * 06271 *SET LATCH FLAGS IN STORES 2 AND 3 06272 .ORG TPP21B, *CAP=VBICAP=CLR=OPN=MPG=BTTL=0 06273 *AITL=1 06274 *INIT LAFx 06275 PR>MA, 06276 Y(AITL), 06277 Y>RAM, 06278 JUMP(TPP22); ----- ----- 8BA 001008BB 00011100 ----- 06279 .ORG TPP22, *COUNT++ 06280 MA(COUNT), 06281 AR>A, B(1), ADD, 06282 Y>RAM, 06283 JUMP(TPP29); ----- ----- 8BB 000008BC 78010110 ----- 06284 .ORG TPP29, *CASE LOOP? 06285 *B=SCREEN 06286 MA(SCREEN), RAM>BR, 06287 JY(TPP30Y); ----- ----- 8BC 0001C648 60000000 ----- 06288 .ORG TPP30Y, *B=STOR2 06289 MA(STOR2), RAM>BR, 06290 JUMP(TPP21A); ----- ----- 648 000108BD 22000000 ----- 06291 .ORG TPP31, *B=STOR3 06292 MA(STOR3), RAM>BR, 06293 JUMP(TPP21A); ----- ----- 649 000108BD 23000000 ----- 06294 .ORG TPP32, *Y=MENM 06295 *A=VPPRG1 06296 MA(VPPRG1), RAM>AR, 06297 A(MENM), BR>B, AND, 06298 JUMP(TPP32A); ----- ----- 64A 000208BE 61080801 ----- 06299 .ORG TPP32A, *B=STOR7 06300 *MENU MODE? 06301 MA(STOR7), RAM>BR, 06302 JZ(TPP21BF,TPP21BT); ----- ----- 8BE 0001229E 27000000 ----- 06303 .ORG TPP21BT, *NOT MENU MODE 06304 *P=INDEX TO STOR7 LATCH 06305 A(LAF0), BRHI>B, ADD, 06306 Y>PR, 06307 JUMP(TPP21C); ----- ----- 29F 000008BF 8040000C ----- 06308 .ORG TPP21C, *INIT STOR7 06309 *CAP=VBICAP=CLR=OPN=MPG=AITL=BTTL=0 06310 *THIS STORE ONLY SET FOR AN AIT 06311 *IF A THIRD AIT IS PRESENT IN THE BTT 06312 *INIT LAFx 06313 PR>MA, 06314 Y(0), 06315 Y>RAM, 06316 JUMP(TPP33); ----- ----- 8BF 0010064B 00001100 ----- 06317 * 06318 .ORG TPP21BF, *MENU MODE, EXIT 06319 *SORT BACKGROUND LATCHES 06320 *SBL=1 06321 MA(VPPRG1), 06322 AR>A, B(SBL), OR, 06323 Y>RAM, 06324 JUMP(TPP21T); ----- ----- 29E 0000029D 61801110 ----- 06325 * 06326 .ORG TPP33, *CASE EXIT 06327 *A=VPPRG1 06328 MA(VPPRG1), RAM>AR, 06329 JUMP(TPP21BF); ----- ----- 64B 0002029E 61000000 ----- 06330 * 06331 *LOAD LATCHES FROM PLT 06332 * 06333 .ORG TPP21T, *COUNT=0 06334 *CALL INSPRG0 TO INIT SUB-PAGE LATCHES 06335 *A=0, RETURN TO TPP50Y 06336 MA(COUNT), 06337 Y(0), 06338 Y>RAM, Y>AR, 06339 JUMP(INSPRG0); ----- ----- 29D 002208C0 78001100 ----- 06340 .ORG TPP50Y, *BR=STOR1 06341 MA(STOR1), RAM>BR, 06342 JUMP(TPP51); ----- ----- 6B0 000108C1 21000000 ----- 06343 .ORG TPP51, *RWL=BTT LATCH 06344 MA(RWL), 06345 A(0), BRHI>B, OR, 06346 Y>RAM, Y>IO, 06347 JUMP(TPP52); ----- ----- 8C1 000008C2 0B00510C ----- 06348 .ORG TPP52, *INIT OFFSET 06349 MA(THISRW), 06350 Y(-80), 06351 Y>RAM, Y>AR, 06352 JUMP(TPP60F); ----- ----- 8C2 002202B8 7DB01100 ----- 06353 *PROCESS A PLT FIELD 06354 * A=THISRW 06355 .ORG TPP60F, *POINT TO THIS FIELD 06356 AR>A, B(-104), ADD, 06357 Y>PR, 06358 JUMP(TPP60A); ----- ----- 2B8 000008C3 80980010 ----- 06359 .ORG TPP60A, *TPD=MAG BYTE 06360 *P=POINTER 06361 PR>BR, 06362 RVDP, 06363 JUMP(TPP61); ----- ----- 8C3 004108C4 00008000 ----- 06364 .ORG TPP61, *Y=MAG BYTE-9 06365 TPD.0F>A, B(-9), ADD, 06366 JUMP(TPP62); ----- ----- 8C4 000008C5 00F700A0 ----- 06367 .ORG TPP62, *MAG>8? 06368 *Y=MAG-8 06369 TPD.0F>A, B(-8), ADD, 06370 JN(TPP63F,TPP63T); ----- ----- 8C5 000042A0 00F800A0 ----- 06371 *MAG IS IN RANGE 9-F 06372 .ORG TPP63F, *Y=MAG->F 06373 TPD.0F>A, B(->F), ADD, 06374 JUMP(TPP63A); ----- ----- 2A0 000008C6 00F100A0 ----- 06375 .ORG TPP63A, *END CODE? 06376 JZ(TPP63BF,TPP63BT); ----- ----- 8C6 000022A2 00000000 ----- 06377 .ORG TPP63BT, *END CODE, DON'T LOOK AT ANY MORE PLT FIELDS 06378 *B=TOPRG1 06379 MA(TOPRG1), RAM>BR, 06380 JUMP(TPP300); ----- ----- 2A3 000108C7 37000000 ----- 06381 .ORG TPP63BF, *MAG IN THE RANGE 9->E, EXIT TO NEXT FIELD 06382 *AR=OFFSET 06383 MA(THISRW), RAM>AR, 06384 JUMP(TPP200); ----- ----- 2A2 000208C8 7D000000 ----- 06385 *MAG IS IN RANGE 0-8 06386 .ORG TPP63T, *MAG=8? 06387 *AR=MAG 06388 TPD.0F>A, B(0), OR, 06389 Y>AR, 06390 JZ(TPP64F,TPP64T); ----- ----- 2A1 002222A4 000010A0 ----- 06391 .ORG TPP64T, *MAG=8, SET PM=0 06392 MA(PM), 06393 Y(0), 06394 Y>RAM, 06395 JUMP(TPP64AF); ----- ----- 2A5 000002A6 74001100 ----- 06396 .ORG TPP64F, *MAG=0? 06397 *PM=MAG<<4 06398 MA(PM), 06399 AR<<4>A, B(0), ADD, 06400 Y>RAM, 06401 JZ(TPP64AF,TPP64AT); ----- ----- 2A4 000022A6 74000130 ----- 06402 .ORG TPP64AT, *INVALID MAG, EXIT TO NEXT FIELD 06403 *AR=OFFSET 06404 MA(THISRW), RAM>AR, 06405 JUMP(TPP200); ----- ----- 2A7 000208C8 7D000000 ----- 06406 .ORG TPP64AF, *P=POINTER TO TABLE IDENT BYTE 06407 A(7), BR>B, ADD, 06408 Y>PR, 06409 JUMP(TPP65); ----- ----- 2A6 000008C9 80070001 ----- 06410 .ORG TPP65, *TPD=TABLE IDENT BYTE 06411 RVDP, 06412 JUMP(TPP66); ----- ----- 8C9 000008CA 00008000 ----- 06413 .ORG TPP66, *Y=TABLE IDENT-2 06414 TPD.0F>A, B(-2), ADD, 06415 JUMP(TPP67); ----- ----- 8CA 000008CB 00FE00A0 ----- 06416 .ORG TPP67, *AIT FIELD? 06417 *B=POINTER 06418 *A=COUNT 06419 PR>BR, 06420 MA(COUNT), RAM>AR, 06421 JZ(TPP68F,TPP68T); ----- ----- 8CB 004322A8 78000000 ----- 06422 .ORG TPP68F, *NOT AN AIT, EXIT TO NEXT FIELD 06423 *AR=OFFSET 06424 MA(THISRW), RAM>AR, 06425 JUMP(TPP200); ----- ----- 2A8 000208C8 7D000000 ----- 06426 *PROCESS AIT FIELD 06427 * A=COUNT, P=POINTER TO TABLE IDENT 06428 .ORG TPP68T, *Y=COUNT 06429 *B=SCREEN 06430 MA(SCREEN), RAM>BR, 06431 AR>A, B(0), OR, 06432 JUMP(TPP69); ----- ----- 2A9 000108CC 60001010 ----- 06433 .ORG TPP69, *CASE COUNT=? 06434 JY(TPP70Y); ----- ----- 8CC 0000C678 00000000 ----- 06435 .ORG TPP70Y, *1ST AIT 06436 *A=STOR2 06437 *P=POINTER 06438 PR>BR, 06439 MA(STOR2), RAM>AR, 06440 JUMP(TPP80); ----- ----- 678 004308CD 22000000 ----- 06441 .ORG TPP71, *2ND AIT 06442 *A=STOR3 06443 *P=POINTER 06444 PR>BR, 06445 MA(STOR3), RAM>AR, 06446 JUMP(TPP80); ----- ----- 679 004308CD 23000000 ----- 06447 .ORG TPP72, *3RD AIT 06448 *Y=MENM 06449 A(MENM), BR>B, AND, 06450 JUMP(TPP72A); ----- ----- 67A 000008CE 00080801 ----- 06451 .ORG TPP72A, *MENU MODE? 06452 *IF YES, EXIT (NO ROOM FOR 3RD AIT) 06453 JZ(TPP72BF,TPP72BT); ----- ----- 8CE 000022AA 00000000 ----- 06454 .ORG TPP72BT, *A=STOR7 06455 *P=POINTER 06456 PR>BR, 06457 MA(STOR7), RAM>AR, 06458 JUMP(TPP80); ----- ----- 2AB 004308CD 27000000 ----- 06459 * A=STORx, B=POINTER 06460 *FIRST PUT NULL VALUE IN LATCH MAG 06461 .ORG TPP80, *STORE=A=LATCH, 06462 MA(STORE), 06463 ARHI>A, B(0), OR, 06464 Y>RAM, Y>AR, 06465 JUMP(TPP81); ----- ----- 8CD 002208CF 77001120 ----- 06466 *IS IT NECESSARY TO INITIALISE STORE 7 FOR THE THIRD AIT? 06467 *(MUST BE STORE 7 IF AITL IS NOT SET) 06468 .ORG TPP81, *P=POINTER TO LAFx 06469 AR>A, B(LAF0), ADD, 06470 Y>PR, 06471 JUMP(TPP82); ----- ----- 8CF 000008D0 80400010 ----- 06472 .ORG TPP82, *A=LAFx 06473 PR>MA, RAM>AR, 06474 JUMP(TPP83); ----- ----- 8D0 001208D1 00000000 ----- 06475 .ORG TPP83, *Y=AITL 06476 AR>A, B(AITL), AND, 06477 JUMP(TPP84); ----- ----- 8D1 000008D2 00010810 ----- 06478 .ORG TPP84, *AITL SET? 06479 *A= VPPRG1 06480 MA(VPPRG1), RAM>AR, 06481 JZ(TPP84AF,TPP84AT); ----- ----- 8D2 000222B0 61000000 ----- 06482 *INITIALISE STORE 7 FOR THE THIRD AIT 06483 .ORG TPP84AT, *LAFx= AITL 06484 PR>MA, 06485 Y(AITL), 06486 Y>RAM, 06487 JUMP(TPP84B); ----- ----- 2B1 001008D3 00011100 ----- 06488 .ORG TPP84B, *SBL=1 06489 MA(VPPRG1), 06490 AR>A, B(SBL), OR, 06491 Y>RAM, 06492 JUMP(TPP84AF); ----- ----- 8D3 000002B0 61801110 ----- 06493 *READ TENS AND UNITS INTO PT AND PU 06494 .ORG TPP84AF, *P=POINTER TO TENS 06495 A(-6), BR>B, ADD, 06496 Y>PR, 06497 JUMP(TPP85); ----- ----- 2B0 000008D4 80FA0001 ----- 06498 .ORG TPP85, *TPD=TENS, B=POINTER 06499 RVDP, 06500 PR>BR, 06501 JUMP(TPP86); ----- ----- 8D4 004108D5 00008000 ----- 06502 .ORG TPP86, *P=POINTER TO UNITS 06503 A(1), BR>B, ADD, 06504 Y>PR, 06505 JUMP(TPP87); ----- ----- 8D5 000008D6 80010001 ----- 06506 .ORG TPP87, *AR=TENS 06507 TPD.0F>A, B(0), OR, 06508 Y>AR, 06509 JUMP(TPP88); ----- ----- 8D6 002208D7 000010A0 ----- 06510 .ORG TPP88, *PT=TENS<<4, TPD=UNITS 06511 RVDP, 06512 MA(PT), 06513 AR<<4>A, B(0), OR, 06514 Y>RAM, 06515 JUMP(TPP89); ----- ----- 8D7 000008D8 75009130 ----- 06516 .ORG TPP89, *AR=UNITS 06517 *BR=COUNT 06518 MA(COUNT), RAM>BR, 06519 TPD.0F>A, B(0), OR, 06520 Y>AR, 06521 JUMP(TPP90); ----- ----- 8D8 002308D9 780010A0 ----- 06522 .ORG TPP90, *PU=UNITS<<4 06523 MA(PU), 06524 AR<<4>A, B(0), OR, 06525 Y>RAM, 06526 JUMP(TPP91); ----- ----- 8D9 000008DA 76001130 ----- 06527 *LOAD SUB-PAGE LATCHES FOR AITS 06528 * BR=COUNT, P=PLT INDEX 06529 .ORG TPP91, *Y=COUNT 06530 *A=LATCH 06531 MA(STORE), RAM>AR, 06532 A(0), BR>B, OR, 06533 JUMP(TPP91A); ----- ----- 8DA 000208DB 77001001 ----- 06534 .ORG TPP91A, *COUNT++ 06535 *CASE COUNT=? 06536 MA(COUNT), 06537 A(1), BR>B, ADD, 06538 Y>RAM, 06539 JY(TPP92Y); ----- ----- 8DB 0000C694 78010101 ----- 06540 * 06541 .ORG TPP92Y, *CASE COUNT=0 06542 *MASK=SP0I-1 06543 MA(MASK), 06544 Y(SP0I-1), 06545 Y>RAM, 06546 JUMP(TPP92A); ----- ----- 694 000008DC 73471100 ----- 06547 .ORG TPP92A, *B=LFSP0 06548 MA(LFSP0), RAM>BR, 06549 JUMP(TPP92B); ----- ----- 8DC 000108DD 48000000 ----- 06550 .ORG TPP92B, *UPDATE LFSP0 WITH AIT LATCH 06551 MA(LFSP0), 06552 AR.0F>A, BR.F0>B, OR, 06553 Y>RAM, 06554 JUMP(TPP92C); ----- ----- 8DD 000008DE 480011C3 ----- 06555 .ORG TPP92C, *B=VPPRG2 06556 MA(VPPRG2), RAM>BR, 06557 JUMP(TPP92J); ----- ----- 8DE 000108DF 62000000 ----- 06558 .ORG TPP92J, *CALL UPDATE OF SUB-PAGE REGISTERS 06559 *USPR=1 06560 MA(VPPRG2), 06561 A(USPR), BR>B, OR, 06562 Y>RAM, 06563 JUMP(TPP95); ----- ----- 8DF 000008E0 62081101 ----- 06564 * 06565 .ORG TPP93, *CASE COUNT=1 06566 *MASK=SP1I-1 06567 MA(MASK), 06568 Y(SP1I-1), 06569 Y>RAM, 06570 JUMP(TPP93A); ----- ----- 695 000008E1 734B1100 ----- 06571 .ORG TPP93A, *B=LFSP1 06572 MA(LFSP1), RAM>BR, 06573 JUMP(TPP93B); ----- ----- 8E1 000108E2 49000000 ----- 06574 .ORG TPP93B, *UPDATE LFSP0 WITH AIT LATCH 06575 MA(LFSP1), 06576 AR.0F>A, BR.F0>B, OR, 06577 Y>RAM, 06578 JUMP(TPP95); ----- ----- 8E2 000008E0 490011C3 ----- 06579 * 06580 .ORG TPP94, *CASE COUNT=2 06581 *MASK=SP2I-1 06582 MA(MASK), 06583 Y(SP2I-1), 06584 Y>RAM, 06585 JUMP(TPP94A); ----- ----- 696 000008E3 734F1100 ----- 06586 .ORG TPP94A, *B=LFSP2 06587 MA(LFSP2), RAM>BR, 06588 JUMP(TPP94B); ----- ----- 8E3 000108E4 4A000000 ----- 06589 .ORG TPP94B, *UPDATE LFSP2 WITH AIT LATCH 06590 MA(LFSP2), 06591 AR.0F>A, BR.F0>B, OR, 06592 Y>RAM, 06593 JUMP(TPP95); ----- ----- 8E4 000008E0 4A0011C3 ----- 06594 * 06595 .ORG TPP95, *INIT LOOP VARIABLE 06596 MA(RET2), 06597 Y(3), 06598 Y>RAM, 06599 JUMP(TPP95A); ----- ----- 8E0 000008E5 7B031100 ----- 06600 *LOOP START 06601 .ORG TPP95A, *A=PLT FIELD OFFSET 06602 MA(THISRW), RAM>AR, 06603 JUMP(TPP96); ----- ----- 8E5 000208E6 7D000000 ----- 06604 .ORG TPP96, *P=INDEX TO PLT SUB PAGE THOU'S 06605 AR>A, B(-101), ADD, 06606 Y>PR, 06607 JUMP(TPP97); ----- ----- 8E6 000008E7 809B0010 ----- 06608 .ORG TPP97, *B=INDEX TO PLT SUB-PAGE THOU'S 06609 *A=LOOP VARIABLE 06610 MA(RET2), RAM>AR, 06611 PR>BR, 06612 JUMP(TPP98); ----- ----- 8E7 004308E8 7B000000 ----- 06613 .ORG TPP98, *P=INDEX TO PLT SUB-PAGE DIGIT 06614 *B=INDEX TO LAST SP STORE 06615 *(SP0I-1, SP1I-1 OR SP2I-1) 06616 MA(MASK), RAM>BR, 06617 AR>A, BR>B, ADD, 06618 Y>PR, 06619 JUMP(TPP98A); ----- ----- 8E8 000108E9 F3000011 ----- 06620 .ORG TPP98A, *TPD=PLT SUB-PAGE DIGIT 06621 *P=INDEX TO THIS SP STORE 06622 RVDP, 06623 MA(MASK), 06624 A(1), BR>B, ADD, 06625 Y>RAM, Y>PR, 06626 JUMP(TPP98C); ----- ----- 8E9 000008EA F3018101 ----- 06627 .ORG TPP98C, *DEC LOOP COUNT 06628 MA(RET2), 06629 AR>A, B(-1), ADD, 06630 Y>RAM, 06631 JUMP(TPP98D); ----- ----- 8EA 000008EB 7BFF0110 ----- 06632 .ORG TPP98D, *EXIT LOOP? 06633 *A= PLT SUB-PAGE DIGIT 06634 *B= THIS SUB-PAGE STORE 06635 PR>MA, RAM>BR, 06636 TPD.0F>A, B(0), OR, 06637 Y>AR, 06638 JN(TPP100F,TPP100T); ----- ----- 8EB 003342B2 000010A0 ----- 06639 .ORG TPP100F, *MORE DIGITS 06640 *UPDATE SP STORE WITH PLT SUB-PAGE DIGIT 06641 PR>MA, 06642 AR<<4>A, BR.0F>B, OR, 06643 Y>RAM, 06644 JUMP(TPP95A); ----- ----- 2B2 001008E5 00001132 ----- 06645 .ORG TPP100T, *LAST DIGIT 06646 *UPDATE SP STORE WITH PLT SUB-PAGE DIGIT 06647 PR>MA, 06648 AR<<4>A, BR.0F>B, OR, 06649 Y>RAM, 06650 JUMP(TPP101); ----- ----- 2B3 001008EC 00001132 ----- 06651 *LOAD LATCH WITH PM, PT AND PU 06652 *ENTRY POINT AFTER SUB-PAGE SKIP WHEN IN SUB-PAGE MODE 06653 .ORG TPP101, *A=LATCH 06654 MA(STORE), RAM>AR, 06655 JUMP(TPP101A); ----- ----- 8EC 000208ED 77000000 ----- 06656 .ORG TPP101A, *CALL PXTOLA0T, 06657 *RETURN=3, RETURN TO TPP102T, 06658 MA(RETURN), 06659 Y(3), 06660 Y>RAM, 06661 JUMP(PXTOLA0T); ----- ----- 8ED 000003A7 7C031100 ----- 06662 .ORG TPP102T, *AR=THISRW 06663 MA(THISRW), RAM>AR, 06664 JUMP(TPP200); ----- ----- 3A9 000208C8 7D000000 ----- 06665 *MORE FIELDS TO PROCESS? 06666 * A=OFFSET 06667 .ORG TPP200, *UPDATE OFFSET 06668 MA(THISRW), 06669 AR>A, B(8), ADD, 06670 Y>RAM, Y>AR, 06671 JUMP(TPP201); ----- ----- 8C8 002208EE 7D080110 ----- 06672 .ORG TPP201, *LAST FIELD? 06673 JZ(TPP60F,TPP60T); ----- ----- 8EE 000022B8 00000000 ----- 06674 *PROCESSED LAST FIELD IN PLT, EXIT 06675 .ORG TPP60T, *B=TOPRG1 06676 MA(TOPRG1), RAM>BR, 06677 JUMP(TPP300); ----- ----- 2B9 000108C7 37000000 ----- 06678 *MENU MODE, NO ROOM FOR THIRD AIT, EXIT 06679 .ORG TPP72BF, *B=TOPRG1 06680 MA(TOPRG1), RAM>BR, 06681 JUMP(TPP300); ----- ----- 2AA 000108C7 37000000 ----- 06682 *NO ROOM FOR FOURTH AIT, EXIT 06683 .ORG TPP73, *CASE COUNT=3 06684 *B=TOPRG1 06685 MA(TOPRG1), RAM>BR, 06686 JUMP(TPP300); ----- ----- 67B 000108C7 37000000 ----- 06687 *INIT AITCNT TO COUNT AITS RCVD BEFORE MENU UPDATE 06688 * B=TOPRG1 06689 .ORG TPP300, *Y=BTTUP, A=COUNT 06690 MA(COUNT), RAM>AR, 06691 A(BTTUP), BR>B, AND, 06692 JUMP(TPP301); ----- ----- 8C7 000208EF 78100801 ----- 06693 .ORG TPP301, *P=Y=COUNT, BTT JUST UPDATED? 06694 *A=AITCNT 06695 MA(AITCNT), RAM>AR, 06696 AR>A, B(0), OR, 06697 Y>PR, 06698 JZ(TPP302F,TPP302T); ----- ----- 8EF 000222BA CC001010 ----- 06699 .ORG TPP302T, *BTT NOT UPDATED 06700 JUMP(PPP100); ----- ----- 2BB 00000623 00000000 ----- 06701 .ORG TPP302F, *BTTUP=0, ANY AITS FOUND? 06702 *B=COUNT 06703 PR>BR, 06704 MA(TOPRG1), 06705 A(>FF-BTTUP), BR>B, AND, 06706 Y>RAM, 06707 JZ(TPP303F,TPP303T); ----- ----- 2BA 004122BC 37EF0901 ----- 06708 *NO AITS FOUND 06709 .ORG TPP303T, *AITCNT=0 06710 MA(AITCNT), 06711 AR.F0>A, B(0), OR, 06712 Y>RAM, 06713 JUMP(PPP100); ----- ----- 2BD 00000623 4C0011D0 ----- 06714 *AITS HAVE BEEN FOUND 06715 .ORG TPP303F, *A=COUNT-1 06716 *B=AITCNT 06717 MA(AITCNT), RAM>BR, 06718 A(-1), BR>B, ADD, 06719 Y>AR, 06720 JUMP(TPP304); ----- ----- 2BC 002308F0 4CFF0001 ----- 06721 .ORG TPP304, *AITCNT=COUNT-1 06722 MA(AITCNT), 06723 AR.0F>A, BR.F0>B, OR, 06724 Y>RAM, 06725 JUMP(PPP100); ----- ----- 8F0 00000623 4C0011C3 ----- 06726 * 06727 *END OF TOP POST PROCESSING 06728 * 06729 *+++LOOK AT INVENTORY COUNT 06730 * 06731 .ORG VPP230T, *A=INVCNT 06732 MA(INVCNT), RAM>AR, 06733 JUMP(VPP231); ----- ----- 275 000208F1 38000000 ----- 06734 .ORG VPP231, *Y=INVENTORY COUNT- 50 06735 AR>>1>A, B(-50), ADD, 06736 JUMP(VPP232); ----- ----- 8F1 000008F2 00CE00E0 ----- 06737 .ORG VPP232, *INVENTORY COUNT <50? 06738 JN(VPP233F,VPP233T); ----- ----- 8F2 000042BE 00000000 ----- 06739 * 06740 * TCJ Jan 94 06741 * Once set, stop the inventory complete flag from being 06742 * reset, and when it is set for the first time, force 06743 * a new row24 to be generated. 06744 * 06745 .ORG VPP233F, *COUNT IS COMPLETE 06746 *SET COMPLETE FLAG, KEEP COUNT AT 50 06747 MA(INVCNT), 06748 Y(101), 06749 Y>RAM, 06750 JUMP(TCJVPP233A); ----- ----- 2BE 000008F3 38651100 ----- 06751 * 06752 .ORG TCJVPP233A, * AR = NMOFF flag 06753 MA(MREG2), RAM>AR, 06754 JUMP(TCJVPP233E); ----- ----- 8F3 000208F4 6E000000 ----- 06755 * 06756 .ORG TCJVPP233E, * Y = NMOFF flag 06757 AR>A, B(NMOFF), AND, 06758 JUMP(TCJVPP233G); ----- ----- 8F4 000008F5 00040810 ----- 06759 * 06760 .ORG TCJVPP233G, * Is NMOFF set ? 06761 MA(EXPREG),RAM>AR, 06762 JZ(TCJVPP233BF,TCJVPP233BT); ----- ----- 8F5 000222C2 63000000 ----- 06763 * 06764 .ORG TCJVPP233BT, * NMOFF is not set, don't update row 24 06765 JUMP(PPP0); ----- ----- 2C3 000008F6 00000000 ----- 06766 * 06767 .ORG TCJVPP233BF, * NMOFF is set, update row 24 06768 MA(EXPREG), 06769 AR>A, B(CGAP), OR, 06770 Y>RAM, 06771 JUMP(TCJVPP233C); ----- ----- 2C2 000008F7 63081110 ----- 06772 * 06773 .ORG TCJVPP233C, 06774 MA(VPPRG1), RAM>AR, 06775 JUMP(TCJVPP233D); ----- ----- 8F7 000208F8 61000000 ----- 06776 * 06777 .ORG TCJVPP233D, 06778 MA(VPPRG1), 06779 AR>A, B(SBL), OR, 06780 Y>RAM, 06781 JUMP(PPP0); ----- ----- 8F8 000008F6 61801110 ----- 06782 * 06783 .ORG VPP233T, *COUNT INCOMPLETE 06784 *CLR COMPLETE FLAG 06785 * MA(INVCNT), 06786 * AR>A, B(>FE), AND, 06787 * Y>RAM, 06788 JUMP(PPP0); ----- ----- 2BF 000008F6 00000000 ----- 06789 * 06790 *+++PAGE CAPTURE MODE POST PROCESSING 06791 * 06792 .ORG PPP0, *A=PEN 06793 MA(PEN), RAM>AR, 06794 JUMP(PPP7); ----- ----- 8F6 000208F9 1B000000 ----- 06795 .ORG PPP7, *B=SYS1 06796 *Y=PEN 06797 MA(SYS1), RAM>BR, 06798 ARHI>A, B(0), OR, 06799 JUMP(PPP8); ----- ----- 8F9 000108FA 08001020 ----- 06800 .ORG PPP8, *INCOMPLETE MAIN PAGE OR SUB-PAGE MODE? 06801 *IF YES, DELAY PCM PROCESSING 06802 A(-3), BRHI>B, ADD, 06803 JZ(PPP9F,PPP9T); ----- ----- 8FA 000022C4 00FD000C ----- 06804 .ORG PPP9F, *INCOMPLETE MAIN PAGE OR SUB-PAGE MODE 06805 JUMP(PPP100); ----- ----- 2C4 00000623 00000000 ----- 06806 .ORG PPP9T, *Y=FNRM, FAVP MODE? 06807 A(FNRM), BR>B, AND, 06808 JZ(PPP10F,PPP10T); ----- ----- 2C5 000022C6 00040801 ----- 06809 .ORG PPP10T, *FAVP MODE 06810 JUMP(PPP100); ----- ----- 2C7 00000623 00000000 ----- 06811 .ORG PPP10F, *Y=FFLF, NORMAL MODE FORCED? 06812 *A=BTT STORE 06813 MA(STOR1), RAM>AR, 06814 A(FFLF), BR>B, AND, 06815 JZ(PPP11F,PPP11T); ----- ----- 2C6 000222C8 21010801 ----- 06816 .ORG PPP11F, *NORMAL MODE FORCED, SKIP PCM PROCESSING 06817 JUMP(PPP100); ----- ----- 2C8 00000623 00000000 ----- 06818 .ORG PPP11T, *Y=BTTERR 06819 *FLOF MODE FORCED? 06820 *P=POINTER TO BTT LATCH FLAGS 06821 ARHI>A, B(LAF0), ADD, 06822 Y>PR, 06823 JZ(PPP12F,PPP12T); ----- ----- 2C9 000022CA 80400020 ----- 06824 .ORG PPP12F, *FLOF FORCED 06825 *A=VPPRG2 06826 MA(VPPRG2), RAM>AR, 06827 JUMP(PPP22T); ----- ----- 2CA 000202E5 62000000 ----- 06828 * Check if BTT latch is closed (ie TOP flags are valid) and call 06829 * TOP processing if appropriate. 06830 * B=SYS1, P=POINTER TO BTT LAFx 06831 .ORG PPP12T, *A=BTT LAFx 06832 PR>MA, RAM>AR, 06833 JUMP(PPP12A); ----- ----- 2CB 001208FB 00000000 ----- 06834 .ORG PPP12A, *Y=OPN, A=TOPRG1 06835 MA(TOPRG1), RAM>AR, 06836 AR>A, B(OPN), AND, 06837 JUMP(PPP12B); ----- ----- 8FB 000208FC 37100810 ----- 06838 .ORG PPP12B, *Y=BTTERR 06839 *LATCH OPEN? 06840 AR>A, B(BTTERR), AND, 06841 JZ(PPP12CF,PPP12CT); ----- ----- 8FC 000022CC 00800810 ----- 06842 .ORG PPP12CF, *LATCH IS OPEN, DO NOT PROCESS YET 06843 JUMP(PPP14T); ----- ----- 2CC 000002D3 00000000 ----- 06844 .ORG PPP12CT, *LATCH IS CLOSED, BTT ERROR? 06845 *Y=PCM-1 06846 A(-1), BRHI>B, ADD, 06847 JZ(PPP13F,PPP13T); ----- ----- 2CD 000022CE 00FF000C ----- 06848 .ORG PPP13F, *BTT ERROR 06849 JUMP(PPP14T); ----- ----- 2CE 000002D3 00000000 ----- 06850 .ORG PPP13T, *IN TOP MODE? 06851 *Y=BTTP 06852 AR>A, B(BTTP), AND, 06853 JZ(PPP13AF,PPP13AT); ----- ----- 2CF 000022D0 00200810 ----- 06854 *TOP MODE 06855 .ORG PPP13AT, *TOP MODE, BTT PROCESSING TO DO? 06856 JZ(PPP14F,PPP14T); ----- ----- 2D1 000022D2 00000000 ----- 06857 *BTT RECEIVED AND READY TO PROCESS 06858 .ORG PPP14F, *JUMP TO TOP POST PROCESSING 06859 JUMP(TPP0); ----- ----- 2D2 00000622 00000000 ----- 06860 *NOT TOP 06861 .ORG PPP13AF, *Y=FIND 06862 A(FIND), BR>B, AND, 06863 JUMP(PPP15); ----- ----- 2D0 000008FD 00080801 ----- 06864 .ORG PPP15, *Y=BTTCAP, FIND? 06865 AR>A, B(BTTCAP), AND, 06866 JZ(PPP15AF,PPP15AT); ----- ----- 8FD 000022D4 00400810 ----- 06867 .ORG PPP15AT, *FIND=0 06868 JUMP(PPP14T); ----- ----- 2D5 000002D3 00000000 ----- 06869 .ORG PPP15AF, *FIND, BTTCAP? 06870 JZ(PPP16F,PPP16T); ----- ----- 2D4 000022D6 00000000 ----- 06871 .ORG PPP16T, *BTTCAP=0 06872 JUMP(PPP14T); ----- ----- 2D7 000002D3 00000000 ----- 06873 *NOT TOP AND FIND AND A BTT HAS BEEN CAPTURED, SET TOP MODE 06874 .ORG PPP16F, *B=TOPRG1, A=SYS1 06875 MA(TOPRG1), RAM>BR, 06876 A(0), BR>B, OR, 06877 Y>AR, 06878 JUMP(PPP16A); ----- ----- 2D6 002308FE 37001001 ----- 06879 .ORG PPP16A, *PCM=1 06880 MA(SYS1), 06881 AR.0F>A, B(>10), OR, 06882 Y>RAM, 06883 JUMP(PPP16B); ----- ----- 8FE 000008FF 081011C0 ----- 06884 * Set BTTUP to ensure that AITs are initialised (parity errors 06885 * can prevent BTTUP from being set even though a BTT with no 06886 * errors has been captured. 06887 .ORG PPP16B, *BTTUP=1 06888 MA(TOPRG1), 06889 A(BTTUP), BR>B, OR, 06890 Y>RAM, 06891 JUMP(PPP17); ----- ----- 8FF 00000900 37101101 ----- 06892 .ORG PPP17, *CALL INPCM0 06893 *RETURN=2, RETURN TO TPP0 06894 MA(RETURN), 06895 Y(2), 06896 Y>RAM, 06897 JUMP(INPCM0); ----- ----- 900 00000901 7C021100 ----- 06898 * 06899 *NO BTT READY TO PROCESS 06900 * B=SYS1 06901 *ENTRY POINT FROM PPP16T 06902 .ORG PPP14T, *Y=FTOP 06903 A(FTOP), BR>B, AND, 06904 JUMP(PPP21); ----- ----- 2D3 00000902 00020801 ----- 06905 .ORG PPP21, *FTOP? 06906 *A=VPPRG2 06907 MA(VPPRG2), RAM>AR, 06908 JZ(PPP22F,PPP22T); ----- ----- 902 000222E4 62000000 ----- 06909 .ORG PPP22F, *FORCE TOP, DO NOT INIT FLOF! 06910 JUMP(PPP100); ----- ----- 2E4 00000623 00000000 ----- 06911 *ENTRY POINT FROM FLOF FORCED 06912 * A=VPPRG2 06913 .ORG PPP22T, *Y=DPC 06914 AR>A, B(DPC), AND, 06915 JUMP(PPP23); ----- ----- 2E5 00000903 00020810 ----- 06916 .ORG PPP23, *DISPLAY PAGE CAPTURED? 06917 *DPC=0 06918 MA(VPPRG2), 06919 AR>A, B(>FF-DPC), AND, 06920 Y>RAM, 06921 JZ(PPP24F,PPP24T); ----- ----- 903 000022E6 62FD0910 ----- 06922 .ORG PPP24T, *NO PROCESSING TO DO, EXIT 06923 JUMP(PPP100); ----- ----- 2E7 00000623 00000000 ----- 06924 *UPDATE DPP27 AND DPP24 FLAGS 06925 .ORG PPP24F, *A=STOR0, P=POINTER TO FLOF FLAGS 06926 MA(STOR0), RAM>AR, 06927 Y(-16), 06928 Y>PR, 06929 JUMP(PPP25); ----- ----- 2E6 00020904 A0F01000 ----- 06930 .ORG PPP25, *RWL=LATCH FOR DISPLAY PAGE 06931 MA(RWL), 06932 ARHI>A, B(0), OR, 06933 Y>RAM, Y>IO, 06934 JUMP(PPP26); ----- ----- 904 00000905 0B005120 ----- 06935 .ORG PPP26, *TPD=FLOF FLAGS 06936 RVDP, 06937 JUMP(PPP27); ----- ----- 905 00000906 00008000 ----- 06938 .ORG PPP27, *A=TPD WITH P24R, P27R, AMD DR24 INVERTED 06939 TPD>A, B(%11001000), XOR, 06940 Y>AR, 06941 JUMP(PPP28); ----- ----- 906 00220907 00C81890 ----- 06942 .ORG PPP28, *Y=!P24R+!P27R+!DR24 06943 *A=SYS1 06944 MA(SYS1), RAM>AR, 06945 AR>A, B(%11001000), AND, 06946 JUMP(PPP29); ----- ----- 907 00020908 08C80810 ----- 06947 .ORG PPP29, *FULL FLOF? 06948 *Y=P27R 06949 *B=FLFREG 06950 MA(FLFREG), RAM>BR, 06951 TPD>A, B(%10000000), AND, 06952 JZ(PPP30F,PPP30T); ----- ----- 908 000122EC 12800890 ----- 06953 .ORG PPP30F, *PACKET 27 FLOF? 06954 *Y=FIND 06955 AR>A, B(FIND), AND, 06956 JZ(PPP31F,PPP31T); ----- ----- 2EC 000022EE 00080810 ----- 06957 *FULL FLOF 06958 .ORG PPP30T, *SET FULFLF, CLEAR P27FLF 06959 MA(FLFREG), 06960 A(FULFLF), BR.0F>B, OR, 06961 Y>RAM, 06962 JUMP(PPP32); ----- ----- 2ED 00000909 12801102 ----- 06963 *PACKET 27 FLOF 06964 .ORG PPP31F, *SET P27FLF, CLEAR FULFLF 06965 MA(FLFREG), 06966 A(P27FLF), BR.0F>B, OR, 06967 Y>RAM, 06968 JUMP(PPP31A); ----- ----- 2EE 0000090A 12401102 ----- 06969 .ORG PPP31A, *B=EXPREG 06970 MA(EXPREG), RAM>BR, 06971 JUMP(PPP31B); ----- ----- 90A 0001090B 63000000 ----- 06972 .ORG PPP31B, *CGAP=CPRF=1 TO GENERATE PAGE NUMBER MENU DISPLAY 06973 MA(EXPREG), 06974 A(CGAP+CPRF), BR>B, OR, 06975 Y>RAM, 06976 JUMP(PPP32); ----- ----- 90B 00000909 630C1101 ----- 06977 *INIT FLOF MODE 06978 * A=SYS1 06979 .ORG PPP32, *FIND=0 06980 *B=STSWD0 06981 MA(STSWD0), RAM>BR, 06982 AR>A, B(>FF-FIND), AND, 06983 Y>AR, 06984 JUMP(PPP33); ----- ----- 909 0023090C 64F70810 ----- 06985 .ORG PPP33, *PCM=2 06986 MA(SYS1), 06987 AR.0F>A, B(>20), OR, 06988 Y>RAM, 06989 JUMP(PPP34); ----- ----- 90C 0000090D 082011C0 ----- 06990 .ORG PPP34, *FFLG=1 06991 MA(STSWD0), 06992 A(FFLG), BR>B, OR, 06993 Y>RAM, 06994 JUMP(PPP40); ----- ----- 90D 0000090E 64201101 ----- 06995 *INIT NORMAL MODE IF FIND=0 (DO NOT OVERRIDE TOP IF FIND=1) 06996 * A=SYS1, B=FLFREG, LAST Y WAS FIND 06997 .ORG PPP31T, *FIND? 06998 JZ(PPP35F,PPP35T); ----- ----- 2EF 000022F0 00000000 ----- 06999 .ORG PPP35F, *FIND=1 07000 JUMP(PPP100); ----- ----- 2F0 00000623 00000000 ----- 07001 .ORG PPP35T, *FIND=0, INIT NORM MODE 07002 *PCM=0 07003 MA(SYS1), 07004 AR.0F>A, B(0), OR, 07005 Y>RAM, 07006 JUMP(PPP40); ----- ----- 2F1 0000090E 080011C0 ----- 07007 *INIT NORMAL AND FLOF MERGE HERE 07008 .ORG PPP40, *CALL INPCM0 07009 *RETURN=3, RETURN TO PPP100 07010 MA(RETURN), 07011 Y(3), 07012 Y>RAM, 07013 JUMP(INPCM0); ----- ----- 90E 00000901 7C031100 ----- 07014 *+++UPDATE RP24 FLAG (ENABLE OR DISABLE PACKET 24 RECEPTION) 07015 * 07016 .ORG PPP100, *AR=SYS2 07017 MA(SYS2), RAM>AR, 07018 JUMP(PPP181); ----- ----- 623 0002090F 09000000 ----- 07019 .ORG PPP181, *Y=APIN 07020 AR>A, B(APIN), AND, 07021 JUMP(PPP182); ----- ----- 90F 00000910 00010810 ----- 07022 .ORG PPP182, *APIN? 07023 *Y=R24EN 07024 *B=EXPREG 07025 MA(EXPREG), RAM>BR, 07026 AR>A, B(R24EN), AND, 07027 JZ(PPP183F,PPP183T); ----- ----- 910 000122F2 63800810 ----- 07028 *AUTOMATIC PROMPTS INHIBITED 07029 * A=SYS2 07030 .ORG PPP183F, *R24EN? 07031 *USER SET PACKET 24 RECEPTION? 07032 JZ(PPP184F,PPP184T); ----- ----- 2F2 000022F4 00000000 ----- 07033 .ORG PPP184F, *GO AND ENABLE ROW 24 RECEPTION 07034 JUMP(PPP200T); ----- ----- 2F4 000002FD 00000000 ----- 07035 .ORG PPP184T, *NO, RP24=0 07036 MA(SYS2), 07037 AR>A, B(>FF-RP24), AND, 07038 Y>RAM, 07039 JUMP(VPP234); ----- ----- 2F5 000002FC 09F70910 ----- 07040 *AUTOMATIC PROMPTS ENABLED 07041 * B=EXPREG 07042 .ORG PPP183T, *Y=USM 07043 *B=SYS1 07044 MA(SYS1), RAM>BR, 07045 A(USM), BR>B, AND, 07046 JUMP(PPP185); ----- ----- 2F3 00010911 08020801 ----- 07047 .ORG PPP185, *Y=PCM-2 07048 *B=FLFREG 07049 MA(FLFREG), RAM>BR, 07050 A(-2), BRHI>B, ADD, 07051 JZ(PPP186F,PPP186T); ----- ----- 911 000122F6 12FE000C ----- 07052 .ORG PPP186F, *USER STATUS MODE 07053 *RP24=0 07054 MA(SYS2), 07055 AR>A, B(>FF-RP24), AND, 07056 Y>RAM, 07057 JUMP(VPP234); ----- ----- 2F6 000002FC 09F70910 ----- 07058 .ORG PPP186T, *FLOF MODE? 07059 *Y=FULFLF 07060 *B=PEN 07061 MA(PEN), RAM>BR, 07062 A(FULFLF), BR>B, AND, 07063 JZ(PPP187F,PPP187T); ----- ----- 2F7 000122F8 1B800801 ----- 07064 .ORG PPP187F, *NOT FLOF MODE 07065 *DISABLE ROW 24 COPY 07066 *RP24=0 07067 MA(SYS2), 07068 AR>A, B(>FF-RP24), AND, 07069 Y>RAM, 07070 JUMP(VPP234); ----- ----- 2F8 000002FC 09F70910 ----- 07071 .ORG PPP187T, *FLOF MODE 07072 *FULFLF? 07073 *Y=PEN-4 07074 A(-4), BRHI>B, ADD, 07075 JZ(PPP188F,PPP188T); ----- ----- 2F9 000022FA 00FC000C ----- 07076 .ORG PPP188T, *PACKET 27 FLOF, RP24=0 BECAUSE MENU IS GENERATED 07077 *DISABLE ROW 24 COPY 07078 *RP24=0 07079 MA(SYS2), 07080 AR>A, B(>FF-RP24), AND, 07081 Y>RAM, 07082 JUMP(VPP234); ----- ----- 2FB 000002FC 09F70910 ----- 07083 .ORG PPP188F, *FULL FLOF, SUB-PAGE MODE? 07084 *IF YES, DISABLE ROW 24 COPY 07085 *RP24=0 07086 MA(SYS2), 07087 AR>A, B(>FF-RP24), AND, 07088 Y>RAM, 07089 JN(VPP234,PPP200T); ----- ----- 2FA 000042FC 09F70910 ----- 07090 *ENABLE PACKET 24 COPY 07091 * A=SYS2 07092 .ORG PPP200T, *Y=RP24 07093 AR>A, B(RP24), AND, 07094 JUMP(PPP201); ----- ----- 2FD 00000912 00080810 ----- 07095 .ORG PPP201, *WAS IT ZERO? 07096 *B=EXPREG 07097 MA(EXPREG), RAM>BR, 07098 JZ(PPP202F,PPP202T); ----- ----- 912 000122FE 63000000 ----- 07099 .ORG PPP202F, *ALREADY SET, RESTORE IT 07100 *RP24=1 07101 MA(SYS2), 07102 AR>A, B(RP24), OR, 07103 Y>RAM, 07104 JUMP(VPP234); ----- ----- 2FE 000002FC 09081110 ----- 07105 .ORG PPP202T, *YES, COPY IT TO DISPLAY PAGE IF R24RTC=1 07106 *RP24=1, CPYR24=1 07107 MA(SYS2), 07108 AR>A, B(RP24+CPYR24), OR, 07109 Y>RAM, 07110 JUMP(PPP204); ----- ----- 2FF 00000913 090C1110 ----- 07111 .ORG PPP204, *CLEAR ROW 24 FIRST 07112 *CGAP=1, CPRF=1 07113 MA(EXPREG), 07114 A(CGAP+CPRF), BR>B, OR, 07115 Y>RAM, 07116 JUMP(VPP234); ----- ----- 913 000002FC 630C1101 ----- 07117 * 07118 *+++DO VBI POST PROCESSING POINTED TO BY VPPRG1 FLAGS 07119 * 07120 *PMPN: PROCESS NEW PAGE NUMBER 07121 .ORG VPP234, *MOVE DPM/T/U TO PM/T/U FOR PIL AND SST ROUTINES 07122 *CALL DPTP0 07123 *AR=0, RETURN TO VPP250Y 07124 Y(0), 07125 Y>AR, 07126 JUMP(DPTP0); ----- ----- 2FC 00220914 00001000 ----- 07127 *UPDATE OLDSTR SO WE CAN SORT OUT ROW 24 AFTER THE LATCHES HAVE BEEN 07128 *SHUFFLED 07129 .ORG VPP250Y, *A=ROTATE 07130 MA(ROTATE), RAM>AR, 07131 JUMP(VPP250A); ----- ----- 3F0 00020915 15000000 ----- 07132 .ORG VPP250A, *B=STOR7 07133 *NBY=1 07134 MA(STOR7), RAM>BR, 07135 AR>A, B(NBY), OR, 07136 Y>AR, 07137 JUMP(VPP250B); ----- ----- 915 00230916 27201010 ----- 07138 .ORG VPP250B, *ROTT=0 07139 MA(ROTATE), 07140 AR>A, B(>FF-ROTT), AND, 07141 Y>RAM, 07142 JUMP(VPP250C); ----- ----- 916 00000917 15EF0910 ----- 07143 .ORG VPP250C, *A=STOR0 07144 MA(STOR0), RAM>AR, 07145 JUMP(VPP250D); ----- ----- 917 00020918 20000000 ----- 07146 .ORG VPP250D, *UPDATE OLDSTR 07147 MA(OLDSTR), 07148 AR.F0>A, BRHI>B, OR, 07149 Y>RAM, 07150 JUMP(VPP250E); ----- ----- 918 00000919 710011DC ----- 07151 .ORG VPP250E, *AR=VPPRG1 07152 MA(VPPRG1), RAM>AR, 07153 JUMP(VPP251); ----- ----- 919 0002091A 61000000 ----- 07154 .ORG VPP251, *Y=PMPN 07155 AR>A, B(PMPN), AND, 07156 JUMP(VPP251A); ----- ----- 91A 0000091B 00200810 ----- 07157 .ORG VPP251A, *PMPN=0, PMPN? 07158 *AR=VPPRG1 07159 MA(VPPRG1), 07160 AR>A, B(>FF-PMPN), AND, 07161 Y>RAM, Y>AR, 07162 JZ(VPP252F,VPP252T); ----- ----- 91B 00222300 61DF0910 ----- 07163 *PMPN=0 07164 .ORG VPP252T, * 07165 JUMP(VPP300); ----- ----- 301 0000091C 00000000 ----- 07166 *PMPN=1 07167 *INITIALISE BROWSE? 07168 .ORG VPP252F, *Y=SLFB 07169 *BR=DHREG 07170 MA(DHREG), RAM>BR, 07171 AR>A, B(SLFB), AND, 07172 JUMP(VPP253B); ----- ----- 300 0001091D 32400810 ----- 07173 .ORG VPP253B, *SLFB? SLFB=0 07174 MA(VPPRG1), 07175 AR>A, B(>FF-SLFB), AND, 07176 Y>RAM, 07177 JZ(VPP253CF,VPP253CT); ----- ----- 91D 00002302 61BF0910 ----- 07178 *INITIALISE BROWSE 07179 .ORG VPP253CF, *BWSE=1 07180 MA(DHREG), 07181 A(BWSE), BR>B, OR, 07182 Y>RAM, 07183 JUMP(VPP256F); ----- ----- 302 00000304 32011101 ----- 07184 *NO BROWSE 07185 .ORG VPP253CT, *TEST IF PAGE IN A LATCH 07186 *CALL PIL 07187 *RETURN=1, RETURN TO VPP254 07188 MA(RETURN), 07189 Y(1), 07190 Y>RAM, 07191 JUMP(PIL0); ----- ----- 303 0000091E 7C011100 ----- 07192 *AR=RETURN DATA FROM PIL 07193 .ORG VPP254, *Y=PAGE NOT IN LATCH FLAG 07194 AR>A, B(>08), AND, 07195 JUMP(VPP255); ----- ----- 291 0000091F 00080810 ----- 07196 .ORG VPP255, *PAGE IN A LATCH? 07197 *Y=CAP FLAG 07198 AR>A, B(CAP), AND, 07199 JZ(VPP256F,VPP256T); ----- ----- 91F 00002304 00800810 ----- 07200 .ORG VPP256T, *PAGE IN A LATCH 07201 *HAS IT BEEN CAPTURED? 07202 *BR=DHREG 07203 MA(DHREG), RAM>BR, 07204 JZ(VPP257F,VPP257T); ----- ----- 305 00012306 32000000 ----- 07205 *PAGE IN A LATCH AND CAPTURED, GO AND SORT ALL LATCHES TO DISPLAY IT 07206 .ORG VPP257F, *STOP ROLLING THE HEADER 07207 MA(DHREG), 07208 A(NRH), BR>B, OR, 07209 Y>RAM, 07210 JUMP(VPP258); ----- ----- 306 00000920 32101101 ----- 07211 .ORG VPP258, *AR=VPPRG1 07212 MA(VPPRG1), RAM>AR, 07213 JUMP(VPP259); ----- ----- 920 00020921 61000000 ----- 07214 .ORG VPP259, *SBL=0 07215 MA(VPPRG1), 07216 AR>A, B(>FF-SBL), AND, 07217 Y>RAM, 07218 JUMP(VPP259A); ----- ----- 921 00000922 617F0910 ----- 07219 .ORG VPP259A, *A=VPPRG2 07220 MA(VPPRG2), RAM>AR, 07221 JUMP(VPP259B); ----- ----- 922 00020923 62000000 ----- 07222 .ORG VPP259B, *SET DPC TO INIT FLOF/NORM IN PPP100 IF NECESSARY 07223 *SET DPFC TO CAUSE A TOD ON BOXED PAGES 07224 MA(VPPRG2), 07225 AR>A, B(DPC+DPFC), OR, 07226 Y>RAM, 07227 JUMP(VPP259C); ----- ----- 923 00000924 62121110 ----- 07228 .ORG VPP259C, *A=VDPTXT 07229 MA(VDPTXT), RAM>AR, 07230 JUMP(VPP259D); ----- ----- 924 00020925 2B000000 ----- 07231 .ORG VPP259D, *CLEAR URVL 07232 MA(VDPTXT), 07233 AR>A, B(>FF-URVL), AND, 07234 Y>RAM, 07235 JUMP(VPP259E); ----- ----- 925 00000926 2BF70910 ----- 07236 .ORG VPP259E, *A=SYS2 07237 MA(SYS2), RAM>AR, 07238 JUMP(VPP259G); ----- ----- 926 00020927 09000000 ----- 07239 .ORG VPP259G, *R24RTC=0 07240 MA(SYS2), 07241 AR>A, B(>FF-R24RTC), AND, 07242 Y>AR, 07243 JUMP(VPP259H); ----- ----- 927 00220928 09FD0810 ----- 07244 .ORG VPP259H, *RP24=1 FOR PPP100 CODE 07245 MA(SYS2), 07246 AR>A, B(RP24), OR, 07247 Y>RAM, 07248 JUMP(VPP259J); ----- ----- 928 00000929 09081110 ----- 07249 *INIT PDC REGISTERS 07250 .ORG VPP259J, *PDCRG1=0 07251 MA(PDCRG1), 07252 Y(0), 07253 Y>RAM, 07254 JUMP(VPP259K); ----- ----- 929 0000092A 6C001100 ----- 07255 .ORG VPP259K, *PDCRG2=0 07256 MA(PDCRG2), 07257 Y(0), 07258 Y>RAM, 07259 JUMP(SST0A); ----- ----- 92A 0000092B 6D001100 ----- 07260 *PAGE NOT IN A LATCH 07261 *ENTRY POINT FROM BROWSE INIT 07262 *ENTRY POINT FROM PAGE IN A LATCH BUT NOT CAPTURED 07263 .ORG VPP256F, *AR=STOR0 07264 MA(STOR0), RAM>AR, 07265 JUMP(VPP260); ----- ----- 304 0002092C 20000000 ----- 07266 .ORG VPP260, *STORE=0 07267 *(I/P PAR FOR INLA0) 07268 MA(STORE), 07269 Y(0), 07270 Y>RAM, 07271 JUMP(VPP261); ----- ----- 92C 0000092D 77001100 ----- 07272 .ORG VPP261, *AR=LATCH FOR INIT 07273 *(I/P PAR FOR INLA0) 07274 ARHI>A, B(7), AND, 07275 Y>AR, 07276 JUMP(VPP262); ----- ----- 92D 0022092E 00070820 ----- 07277 .ORG VPP262, *INITILAISE STORE 0 07278 *CALL INLA0 07279 *RETURN=1, RETURN TO VPP263 07280 MA(RETURN), 07281 Y(1), 07282 Y>RAM, 07283 JUMP(INLA0); ----- ----- 92E 0000092F 7C011100 ----- 07284 .ORG VPP263, *BR=DHREG 07285 MA(DHREG), RAM>BR, 07286 JUMP(VPP263A); ----- ----- 299 00010930 32000000 ----- 07287 .ORG VPP263A, *ROLL THE HEADER 07288 *NRH=0 07289 MA(DHREG), 07290 A(>FF-NRH), BR>B, AND, 07291 Y>RAM, 07292 JUMP(VPP263B); ----- ----- 930 00000931 32EF0901 ----- 07293 .ORG VPP263B, *BR=SYS1 07294 MA(SYS1), RAM>BR, 07295 JUMP(VPP264); ----- ----- 931 00010932 08000000 ----- 07296 .ORG VPP264, *Y=PCM-2 07297 A(-2), BRHI>B, ADD, 07298 JUMP(VPP265); ----- ----- 932 00000933 00FE000C ----- 07299 .ORG VPP265, *FLOF MODE? 07300 *AR=VPPRG1 07301 MA(VPPRG1), RAM>AR, 07302 JZ(VPP266F,VPP266T); ----- ----- 933 00022308 61000000 ----- 07303 .ORG VPP266F, *NOT FLOF, SORT BACKGROUND LATCHES NOW 07304 *SBL=1 07305 MA(VPPRG1), 07306 AR>A, B(SBL), OR, 07307 Y>RAM, 07308 JUMP(VPP290); ----- ----- 308 00000397 61801110 ----- 07309 .ORG VPP266T, *FLOF, SORT BACKGROUND WHEN DISPLAY PAGE RCVD 07310 JUMP(VPP290); ----- ----- 309 00000397 00000000 ----- 07311 *PAGE NOT CAPTURED BUT IN A LATCH 07312 * AR=RETURN DATA FROM PIL 07313 .ORG VPP257T, *PR=INDEX TO MAG OF LATCH OF THIS PAGE 07314 *CAP=0 SO NO NEED TO MASK 07315 AR.0F>A, B(M0), ADD, 07316 Y>PR, 07317 JUMP(VPP270); ----- ----- 307 00000934 801000C0 ----- 07318 .ORG VPP270, *BR=Mx 07319 PR>MA, RAM>BR, 07320 JUMP(VPP271); ----- ----- 934 00110935 00000000 ----- 07321 .ORG VPP271, *PUT NULL VALUE IN LATCH 07322 PR>MA, 07323 A(>0F), BR.F0>B, OR, 07324 Y>RAM, Y>IO, 07325 JUMP(VPP256F); ----- ----- 935 00100304 000F5103 ----- 07326 *COMMON EXIT FROM PMPN ROUTINE 07327 .ORG VPP290, *AR=VPPRG1 07328 MA(VPPRG1), RAM>AR, 07329 JUMP(VPP291); ----- ----- 397 00020936 61000000 ----- 07330 .ORG VPP291, *CSVDP=1 07331 MA(VPPRG1), 07332 AR>A, B(CSVDP), OR, 07333 Y>RAM, Y>AR, 07334 JUMP(VPP300); ----- ----- 936 0022091C 61101110 ----- 07335 *NEED TO SORT BACKGROUND LATCHES? 07336 * AR=VPPRG1 07337 .ORG VPP300, *Y=SBL 07338 *B=PEN 07339 MA(PEN), RAM>BR, 07340 AR>A, B(SBL), AND, 07341 JUMP(VPP301); ----- ----- 91C 00010937 1B800810 ----- 07342 .ORG VPP301, * SBL? 07343 *Y=PEN-4 07344 A(-4), BRHI>B, ADD, 07345 JZ(VPP302F,VPP310); ----- ----- 937 0000230A 00FC000C ----- 07346 .ORG VPP302F, *SBL, SUB-PAGE MODE? 07347 *IF NO, CALL SST0B TO SORT BACKGROUND LATCHES 07348 *RETURNS TO VPP310 07349 JN(VPP303F,SST0B); ----- ----- 30A 0000430C 00000000 ----- 07350 .ORG VPP303F, *SUB-PAGE MODE, INHIBIT LATCH SORT 07351 JUMP(VPP310); ----- ----- 30C 0000030B 00000000 ----- 07352 * AR=VPPRG1 07353 .ORG VPP310, *Y=HOSP+PCSP+SPIN 07354 AR>A, B(HOSP+PCSP+SPIN), AND, 07355 JUMP(VPP311); ----- ----- 30B 00000938 00070810 ----- 07356 .ORG VPP311, *SUB-PAGE LATCH MANAGEMENT TO DO? 07357 *IF YES, CALL FSP0T 07358 *RETURN=0, RETURN TO SPLM0.0 -> VPP330T 07359 MA(RETURN), 07360 Y(0), 07361 Y>RAM, 07362 JZ(FSP0F,VPP330T); ----- ----- 938 0000230E 7C001100 ----- 07363 * 07364 *+++ SUB-PAGE LATCH MANAGEMENT 07365 * PM= STOR0 SP LATCH, PT= STOR4 SP LATCH, PU= STOR5 SP LATCH 07366 * A=VPPRG1 07367 .ORG SPLM0.0, *Y=HOSP+SPIN 07368 *B=STOR0 07369 MA(STOR0), RAM>BR, 07370 AR>A, B(HOSP+SPIN), AND, 07371 JUMP(SPLM10); ----- ----- 430 00010939 20050810 ----- 07372 .ORG SPLM10, *INIT ALL SP LATCHES? 07373 *A= POINTER TO STORE 5 SUB-PAGE LATCH 07374 MA(PU), RAM>AR, 07375 JZ(SPLM100F,SPLM20T); ----- ----- 939 00022310 76000000 ----- 07376 *ROUTINE TO SEE IF SUB-PAGE CAPTURED 07377 *IS USP IN STORE 5? 07378 * A= POINTER TO STORE 5 SUB-PAGE LATCH 07379 .ORG SPLM20T, *PCSP=1 07380 *CALL CSP0 TO COMPARE USP 07381 *RETURN=0, RETURN TO SPLM22Y 07382 MA(RETURN), 07383 Y(0), 07384 Y>RAM, 07385 JUMP(CSP0); ----- ----- 311 0000093A 7C001100 ----- 07386 * LAST Y WAS COMPARE TRUE FLAG 07387 .ORG SPLM22Y, *B=STOR5 07388 MA(STOR5), RAM>BR, 07389 JZ(SPLM23F,SPLM23T); ----- ----- 2C0 00012312 25000000 ----- 07390 .ORG SPLM23T, *USP NOT IN STORE 5 07391 JUMP(SPLM40T); ----- ----- 313 00000315 00000000 ----- 07392 .ORG SPLM23F, *USP IS IN STORE 5 07393 *P=LAFx POINTER FOR STORE 5 07394 A(LAF0), BRHI>B, ADD, 07395 Y>PR, 07396 JUMP(SPLM24); ----- ----- 312 0000093B 8040000C ----- 07397 .ORG SPLM24, *B=LAFx FOR STORE 5 07398 PR>MA, RAM>BR, 07399 JUMP(SPLM25); ----- ----- 93B 0011093C 00000000 ----- 07400 .ORG SPLM25, *Y=CAP 07401 *A=STOR0 07402 MA(STOR0), RAM>AR, 07403 A(CAP), BR>B, AND, 07404 JUMP(SPLM26); ----- ----- 93C 0002093D 20800801 ----- 07405 .ORG SPLM26, *HAS IT BEEN CAPTURED? 07406 *B=STOR5 07407 MA(STOR5), RAM>BR, 07408 JZ(SPLM27F,SPLM40T); ----- ----- 93D 00012314 25000000 ----- 07409 .ORG SPLM27F, *USP IS IN STORE 5 07410 *PUT STOR0 IN STOR5 07411 MA(STOR5), 07412 AR.F0>A, BR.0F>B, OR, 07413 Y>RAM, 07414 JUMP(SPLM28); ----- ----- 314 0000093E 250011D2 ----- 07415 .ORG SPLM28, *PUT STOR5 IN STOR0 07416 MA(STOR0), 07417 AR.0F>A, BR.F0>B, OR, 07418 Y>RAM, 07419 JUMP(SPLM30); ----- ----- 93E 0000093F 200011C3 ----- 07420 .ORG SPLM30, *A=PM 07421 MA(PM), RAM>AR, 07422 JUMP(SPLM31); ----- ----- 93F 00020940 74000000 ----- 07423 .ORG SPLM31, *PU MUST POINT TO LATCH FOR NEW STORE 5 07424 *FOR SPLM300 CODE 07425 *EXIT TO INIT STORE 4 AND STORE 5 07426 MA(PU), 07427 AR>A, B(0), OR, 07428 Y>RAM, 07429 JUMP(SPLM32); ----- ----- 940 00000941 76001110 ----- 07430 .ORG SPLM32, *A=DHREG 07431 MA(DHREG), RAM>AR, 07432 JUMP(SPLM33); ----- ----- 941 00020942 32000000 ----- 07433 .ORG SPLM33, *NRH=1 07434 MA(DHREG), 07435 AR>A, B(NRH), OR, 07436 Y>RAM, 07437 JUMP(SPLM34); ----- ----- 942 00000943 32101110 ----- 07438 .ORG SPLM34, *A=VDPTXT 07439 MA(VDPTXT), RAM>AR, 07440 JUMP(SPLM35); ----- ----- 943 00020944 2B000000 ----- 07441 .ORG SPLM35, *CLEAR URVL 07442 MA(VDPTXT), 07443 AR>A, B(>FF-URVL), AND, 07444 Y>RAM, 07445 JUMP(SPLM200T); ----- ----- 944 0000031D 2BF70910 ----- 07446 *IS USP IN STORE 4? 07447 .ORG SPLM40T, *A= POINTER TO STORE 4 SUB-PAGE LATCH 07448 MA(PT), RAM>AR, 07449 JUMP(SPLM41); ----- ----- 315 00020945 75000000 ----- 07450 .ORG SPLM41, *CALL CSP0 TO COMPARE USP 07451 *RETURN=1, RETURN TO SPLM42 07452 MA(RETURN), 07453 Y(1), 07454 Y>RAM, 07455 JUMP(CSP0); ----- ----- 945 0000093A 7C011100 ----- 07456 * LAST Y WAS COMPARE TRUE FLAG 07457 .ORG SPLM42, *B=STOR4 07458 MA(STOR4), RAM>BR, 07459 JZ(SPLM43F,SPLM43T); ----- ----- 2C1 00012316 24000000 ----- 07460 .ORG SPLM43T, *USP NOT IN STORE 4 07461 JUMP(SPLM60T); ----- ----- 317 00000319 00000000 ----- 07462 .ORG SPLM43F, *USP IS IN STORE 4 07463 *P=LAFx POINTER FOR STORE 4 07464 *A=STOR0 07465 MA(STOR0), RAM>AR, 07466 A(LAF0), BRHI>B, ADD, 07467 Y>PR, 07468 JUMP(SPLM44); ----- ----- 316 00020946 A040000C ----- 07469 .ORG SPLM44, *B=LAFx FOR STORE 4 07470 *PR=STOR0 07471 PR>MA, RAM>BR, 07472 AR>A, B(0), OR, 07473 Y>PR, 07474 JUMP(SPLM45); ----- ----- 946 00110947 80001010 ----- 07475 .ORG SPLM45, *Y=CAP 07476 *B=STOR4 07477 MA(STOR4), RAM>BR, 07478 A(CAP), BR>B, AND, 07479 JUMP(SPLM46); ----- ----- 947 00010948 24800801 ----- 07480 .ORG SPLM46, *HAS IT BEEN CAPTURED? 07481 JZ(SPLM47F,SPLM60T); ----- ----- 948 00002318 00000000 ----- 07482 *USP IS IN STORE 5, SHUFFLE STORES 07483 * A=P=STOR0, B=STOR4, 07484 .ORG SPLM47F, *STOR4->STOR0 07485 MA(STOR0), 07486 AR.0F>A, BR.F0>B, OR, 07487 Y>RAM, 07488 JUMP(SPLM48); ----- ----- 318 00000949 200011C3 ----- 07489 .ORG SPLM48, *A=STOR5 07490 MA(STOR5), RAM>AR, 07491 JUMP(SPLM49); ----- ----- 949 0002094A 25000000 ----- 07492 .ORG SPLM49, *STOR5->STOR4 07493 *B=STOR0 07494 PR>BR, 07495 MA(STOR4), 07496 AR.F0>A, BR.0F>B, OR, 07497 Y>RAM, 07498 JUMP(SPLM50); ----- ----- 94A 0041094B 240011D2 ----- 07499 .ORG SPLM50, *STOR0->STOR5 07500 MA(STOR5), 07501 AR.0F>A, BR.F0>B, OR, 07502 Y>RAM, 07503 JUMP(SPLM51); ----- ----- 94B 0000094C 250011C3 ----- 07504 .ORG SPLM51, *A=PU 07505 MA(PU), RAM>AR, 07506 JUMP(SPLM52); ----- ----- 94C 0002094D 76000000 ----- 07507 .ORG SPLM52, *PT MUST POINT TO LATCH FOR NEW STORE 4 07508 *FOR SPLM200T CODE 07509 MA(PT), 07510 AR>A, B(0), OR, 07511 Y>RAM, 07512 JUMP(SPLM53); ----- ----- 94D 0000094E 75001110 ----- 07513 .ORG SPLM53, *A=PM 07514 MA(PM), RAM>AR, 07515 JUMP(SPLM54); ----- ----- 94E 0002094F 74000000 ----- 07516 .ORG SPLM54, *PU MUST POINT TO LATCH FOR NEW STORE 5 07517 *FOR SPLM300 CODE 07518 MA(PU), 07519 AR>A, B(0), OR, 07520 Y>RAM, 07521 JUMP(SPLM55); ----- ----- 94F 00000950 76001110 ----- 07522 .ORG SPLM55, *A=DHREG 07523 MA(DHREG), RAM>AR, 07524 JUMP(SPLM56); ----- ----- 950 00020951 32000000 ----- 07525 .ORG SPLM56, *NRH=1 07526 MA(DHREG), 07527 AR>A, B(NRH), OR, 07528 Y>RAM, 07529 JUMP(SPLM57); ----- ----- 951 00000952 32101110 ----- 07530 .ORG SPLM57, *A=VDPTXT 07531 MA(VDPTXT), RAM>AR, 07532 JUMP(SPLM58); ----- ----- 952 00020953 2B000000 ----- 07533 .ORG SPLM58, *CLEAR URVL 07534 MA(VDPTXT), 07535 AR>A, B(>FF-URVL), AND, 07536 Y>RAM, 07537 JUMP(SPLM300); ----- ----- 953 00000442 2BF70910 ----- 07538 *USP IS NOT HAS NOT BEEN CAPTURED IN STORE 4 OR 5 07539 .ORG SPLM60T, *GO AND INIT ALL SUB-PAGE LATCHES 07540 *B= STOR0 07541 MA(STOR0), RAM>BR, 07542 JUMP(SPLM100F); ----- ----- 319 00010310 20000000 ----- 07543 *ENTRY POINT TO INIT ALL SUB-PAGE LATCHES 07544 *INIT STORE 0 SP LATCH 07545 * B= STOR0 07546 .ORG SPLM100F, *P= POINTER TO STORE 0 LAFx 07547 *B= POINTER TO SP LATCH FOR STORE 0 07548 MA(PM), RAM>BR, 07549 A(LAF0), BRHI>B, ADD, 07550 Y>PR, 07551 JUMP(SPLM100A); ----- ----- 310 00010954 F440000C ----- 07552 .ORG SPLM100A, *CLEAR LAFx FOR STORE 0 07553 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 07554 PR>MA, 07555 Y(0), 07556 Y>RAM, 07557 JUMP(SPLM100B); ----- ----- 954 00100955 00001100 ----- 07558 * B= PM 07559 .ORG SPLM100B, *RET2= POINTER TO SOURCE 07560 MA(RET2), 07561 Y(USPI-1), 07562 Y>RAM, 07563 JUMP(SPLM101); ----- ----- 955 00000956 7B571100 ----- 07564 .ORG SPLM101, *RET3= POINTER TO DEST 07565 MA(RET3), 07566 A(0), BR>B, OR, 07567 Y>RAM, 07568 JUMP(SPLM102); ----- ----- 956 00000957 7A001101 ----- 07569 .ORG SPLM102, *RET4= ZERO OFFSET TO COPY WITHOUT ADDING 07570 MA(RET4), 07571 Y(0), 07572 Y>RAM, 07573 JUMP(SPLM103); ----- ----- 957 00000958 79001100 ----- 07574 .ORG SPLM103, *CALL DISP0 TO COPY USP0 TO SP LATCH FOR STORE 0 07575 *RETURN=1, RETURN TO SPLM110 07576 MA(RETURN), 07577 Y(1), 07578 Y>RAM, 07579 JUMP(DISP0); ----- ----- 958 00000959 7C011100 ----- 07580 * B=VPPRG1 07581 .ORG SPLM110, *Y=HOSP+SPIN 07582 *A= POINTER TO STORE 0 SUB-PAGE LATCH 07583 MA(PM), RAM>AR, 07584 A(HOSP+SPIN), BR>B, AND, 07585 JUMP(SPLM111); ----- ----- 441 0002095A 74050801 ----- 07586 .ORG SPLM111, *P= POINTER TO STORE 0 SUB-PAGE LATCH THOUSANDS 07587 *HOSP OR SPIN? 07588 *A=DHREG 07589 MA(DHREG), RAM>AR, 07590 AR>A, B(4), ADD, 07591 Y>PR, 07592 JZ(SPLM112F,SPLM112T); ----- ----- 95A 0002231A B2040010 ----- 07593 .ORG SPLM112T, *DO NOT NULLIFY LATCH 07594 JUMP(SPLM200T); ----- ----- 31B 0000031D 00000000 ----- 07595 *NULLIFY SUB-PAGE LATCH (DO NOT RECEIVE DISPLAY PAGE) 07596 .ORG SPLM112F, *NRH=1 (STOP THE HEADER ROLLING) 07597 MA(DHREG), 07598 AR>A, B(NRH), OR, 07599 Y>RAM, 07600 JUMP(SPLM112A); ----- ----- 31A 0000095B 32101110 ----- 07601 .ORG SPLM112A, *A=SPxM, Y=HOSP 07602 PR>MA, RAM>AR, 07603 A(HOSP), BR>B, AND, 07604 JUMP(SPLM120); ----- ----- 95B 0012095C 00040801 ----- 07605 .ORG SPLM120, *NULLIFY LATCH 07606 *HOSP? 07607 PR>MA, 07608 AR.0F>A, B(>F0), OR, 07609 Y>RAM, 07610 JZ(SPLM121F,SPLM200T); ----- ----- 95C 0010231C 00F011C0 ----- 07611 .ORG SPLM121F, *INCOMPLETE SUB-PAGE, LEAVE OTHER LATCHES 07612 JUMP(SPLM400); ----- ----- 31C 00000443 00000000 ----- 07613 *INIT STORE 4 SP LATCH 07614 * 07615 * TCJ Jan 93 07616 * If we are in the force capture subpage mode we need 07617 * to leave any page we have already captured in the store. So all 07618 * we need todo is to set CLR, clear VBICAP+OPN+MPG+BTTL+AITL 07619 * and leave CAP as it is. 07620 * 07621 .ORG SPLM200T, * BR = MREG2 for SPALT flag 07622 MA(MREG2), RAM>BR, 07623 JUMP(TCJSPLM01); ----- ----- 31D 0001095D 6E000000 ----- 07624 * 07625 .ORG TCJSPLM01, * Y = SPALT set ? 07626 MA(STOR4), RAM>BR, 07627 A(SPALT), BR>B, AND, 07628 JUMP(TCJSPLM02); ----- ----- 95D 0001095E 24010801 ----- 07629 * 07630 .ORG TCJSPLM02, *P= POINTER TO STORE 4 LAFx 07631 *B= POINTER TO SP LATCH FOR STORE 4 07632 MA(PT), RAM>BR, 07633 A(LAF0), BRHI>B, ADD, 07634 Y>PR, 07635 JZ(TCJSPLM03F,TCJSPLM03T); ----- ----- 95E 0001231E F540000C ----- 07636 * 07637 .ORG TCJSPLM03F,* Fetch the page flag for this store 07638 PR>MA, RAM>AR, 07639 JUMP(TCJSPLM04); ----- ----- 31E 0012095F 00000000 ----- 07640 * 07641 .ORG TCJSPLM04, * Leave only the CAP flag 07642 AR>A, B(CAP), AND, 07643 Y>AR, 07644 JUMP(TCJSPLM05); ----- ----- 95F 00220960 00800810 ----- 07645 * 07646 .ORG TCJSPLM05, * Set CLR to force page clear 07647 PR>MA, 07648 AR>A, B(CLR), OR, 07649 Y>RAM, 07650 JUMP(SPLM300); ----- ----- 960 00100442 00201110 ----- 07651 * 07652 .ORG TCJSPLM03T,*CLEAR LAFx FOR STORE 4 07653 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 07654 PR>MA, 07655 Y(0), 07656 Y>RAM, 07657 JUMP(SPLM200C); ----- ----- 31F 00100961 00001100 ----- 07658 * 07659 .ORG SPLM200C, *RET2= POINTER TO SOURCE 07660 MA(RET2), 07661 Y(USPI-1), 07662 Y>RAM, 07663 JUMP(SPLM201); ----- ----- 961 00000962 7B571100 ----- 07664 .ORG SPLM201, *RET3= POINTER TO DEST 07665 MA(RET3), 07666 A(0), BR>B, OR, 07667 Y>RAM, 07668 JUMP(SPLM202); ----- ----- 962 00000963 7A001101 ----- 07669 .ORG SPLM202, *RET4= OFFSET TO INCREMENT USP 07670 MA(RET4), 07671 Y(1), 07672 Y>RAM, 07673 JUMP(SPLM203); ----- ----- 963 00000964 79011100 ----- 07674 .ORG SPLM203, *CALL DISP0 TO COPY USP0+1 TO SP LATCH FOR STORE 4 07675 *RETURN=2, RETURN TO SPLM300 07676 MA(RETURN), 07677 Y(2), 07678 Y>RAM, 07679 JUMP(DISP0); ----- ----- 964 00000959 7C021100 ----- 07680 *INIT STORE 5 SP LATCH 07681 .ORG SPLM300, * BR = MREG2 for SPALT flag 07682 MA(MREG2), RAM>BR, 07683 JUMP(TCJSPLM11); ----- ----- 442 00010965 6E000000 ----- 07684 * 07685 .ORG TCJSPLM11, * Y = SPALT set ? 07686 MA(STOR5), RAM>BR, 07687 A(SPALT), BR>B, AND, 07688 JUMP(TCJSPLM12); ----- ----- 965 00010966 25010801 ----- 07689 * 07690 .ORG TCJSPLM12, *P= POINTER TO STORE 5 LAFx 07691 *B= POINTER TO SP LATCH FOR STORE 5 07692 MA(PU), RAM>BR, 07693 A(LAF0), BRHI>B, ADD, 07694 Y>PR, 07695 JZ(TCJSPLM13F,TCJSPLM13T); ----- ----- 966 00012320 F640000C ----- 07696 * 07697 .ORG TCJSPLM13F,* Fetch the page flag for this store 07698 PR>MA, RAM>AR, 07699 JUMP(TCJSPLM14); ----- ----- 320 00120967 00000000 ----- 07700 * 07701 .ORG TCJSPLM14, * Leave only the CAP flag 07702 AR>A, B(CAP), AND, 07703 Y>AR, 07704 JUMP(TCJSPLM15); ----- ----- 967 00220968 00800810 ----- 07705 * 07706 .ORG TCJSPLM15, * Set CLR to force page clear 07707 PR>MA, 07708 AR>A, B(CLR), OR, 07709 Y>RAM, 07710 JUMP(SPLM400); ----- ----- 968 00100443 00201110 ----- 07711 * 07712 .ORG TCJSPLM13T,*CLEAR LAFx FOR STORE 4 07713 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 07714 PR>MA, 07715 Y(0), 07716 Y>RAM, 07717 JUMP(SPLM300C); ----- ----- 321 00100969 00001100 ----- 07718 .ORG SPLM300C, *A= POINTER TO SP LATCH FOR STORE 4 07719 MA(PT), RAM>AR, 07720 JUMP(SPLM300D); ----- ----- 969 0002096A 75000000 ----- 07721 .ORG SPLM300D, *RET2= POINTER TO SOURCE 07722 MA(RET2), 07723 AR>A, B(0), OR, 07724 Y>RAM, 07725 JUMP(SPLM301); ----- ----- 96A 0000096B 7B001110 ----- 07726 .ORG SPLM301, *RET3= POINTER TO DEST 07727 MA(RET3), 07728 A(0), BR>B, OR, 07729 Y>RAM, 07730 JUMP(SPLM302); ----- ----- 96B 0000096C 7A001101 ----- 07731 .ORG SPLM302, *RET4= OFFSET TO INCREMENT USP 07732 MA(RET4), 07733 Y(1), 07734 Y>RAM, 07735 JUMP(SPLM303); ----- ----- 96C 0000096D 79011100 ----- 07736 .ORG SPLM303, *CALL DISP0 TO COPY SP IN LATCH 4 TO LATCH 5 WITH 07737 *INCREMENT 07738 *RETURN=3, RETURN TO SPLM400 07739 MA(RETURN), 07740 Y(3), 07741 Y>RAM, 07742 JUMP(DISP0); ----- ----- 96D 00000959 7C031100 ----- 07743 *SUB-PAGE LATCH INITIALISATION COMPLETED 07744 *COMMON EXIT FROM SUB-PAGE PROCESSING 07745 * 07746 * TCJ Jan 93 07747 * We have reinitalised the subpage store so, clear the 07748 * SPFRC flags to abort any subpage capture that is in 07749 * progress. 07750 * 07751 .ORG SPLM400, * Abort forced subpage capture 07752 MA(SPFRC), 07753 Y(0), 07754 Y>RAM, 07755 JUMP(TCJSPLM400); ----- ----- 443 0000096E 57001100 ----- 07756 * 07757 .ORG TCJSPLM400, 07758 MA(VPPRG1), RAM>BR, 07759 JUMP(SPLM401); ----- ----- 96E 0001096F 61000000 ----- 07760 * 07761 .ORG SPLM401, *HOSP=0, PCSP=0, SPIN=0 07762 A(0), BR.F0>B, OR, 07763 Y>AR, 07764 JUMP(SPLM402); ----- ----- 96F 00220970 00001003 ----- 07765 .ORG SPLM402, *CSVDP=1 07766 MA(VPPRG1), 07767 AR>A, B(CSVDP), OR, 07768 Y>RAM, 07769 JUMP(VPP330T); ----- ----- 970 0000030F 61101110 ----- 07770 *NEWSFLASH AND SUBTITLE PROCESSING 07771 * This routine updates the SUBT and NWSF flags in VPPRG2 ready 07772 * for the SVDP routine. It also initiates a timed out display 07773 * of row 0 and 24 if a SUBT or NWSF page is being newly 07774 * displayed. 07775 .ORG VPP330T, *A=STOR0 07776 *P=-14 07777 MA(STOR0), RAM>AR, 07778 Y(-14), 07779 Y>PR, 07780 JUMP(VPP330A); ----- ----- 30F 00020971 A0F21000 ----- 07781 .ORG VPP330A, *SET RWL FOR STORE 0 07782 MA(RWL), 07783 ARHI>A, B(0), OR, 07784 Y>RAM, Y>IO, 07785 JUMP(VPP331); ----- ----- 971 00000972 0B005120 ----- 07786 .ORG VPP331, *TPD=SPM+SPC 07787 *A=VPPRG2 07788 RVDP, 07789 MA(VPPRG2), RAM>AR, 07790 JUMP(VPP332); ----- ----- 972 00020973 62008000 ----- 07791 .ORG VPP332, *CLEAR OLD SUBT AND NWSF FLAGS 07792 MA(VPPRG2), 07793 AR>A, B(>FF-SUBT-NWSF), AND, 07794 Y>RAM, 07795 JUMP(VPP333); ----- ----- 973 00000974 623F0910 ----- 07796 .ORG VPP333, *B=SCREEN 07797 *A=SUBT AND NWSF BITS 07798 MA(SCREEN), RAM>BR, 07799 TPD>A, B(SUBT+NWSF), AND, 07800 Y>AR, 07801 JUMP(VPP334); ----- ----- 974 00230975 60C00890 ----- 07802 .ORG VPP334, *Y=TDISP 07803 *B=VPPRG2 07804 MA(VPPRG2), RAM>BR, 07805 A(TDISP), BR>B, AND, 07806 JUMP(VPP335); ----- ----- 975 00010976 62040801 ----- 07807 .ORG VPP335, *TELETEXT DISPLAYED? 07808 *UPDATE SUBT AND NWSF 07809 MA(VPPRG2), 07810 AR>A, BR>B, OR, 07811 Y>RAM, Y>AR, 07812 JZ(VPP336F,VPP336T); ----- ----- 976 00222322 62001111 ----- 07813 .ORG VPP336T, *TELETEXT NOT DISPLAYED 07814 *DPFC=0 07815 MA(VPPRG2), 07816 AR>A, B(>FF-DPFC), AND, 07817 Y>RAM, 07818 JUMP(VPP350); ----- ----- 323 00000325 62EF0910 ----- 07819 *TELETEXT DISPLAYED 07820 .ORG VPP336F, *Y=DPFC 07821 AR>A, B(DPFC), AND, 07822 JUMP(VPP337); ----- ----- 322 00000977 00100810 ----- 07823 .ORG VPP337, *Y=SUBT+NWSF, DPFC? 07824 *B=DHREG 07825 MA(DHREG), RAM>BR, 07826 AR>A, B(SUBT+NWSF), AND, 07827 JZ(VPP338F,VPP350); ----- ----- 977 00012324 32C00810 ----- 07828 *DISPLAY PAGE CAPTURED FOR THE FIRST TIME 07829 .ORG VPP338F, *DPFC=0, NWSF OR SUBT? 07830 MA(VPPRG2), 07831 AR>A, B(>FF-DPFC), AND, 07832 Y>RAM, 07833 JZ(VPP339F,VPP339T); ----- ----- 324 00002326 62EF0910 ----- 07834 .ORG VPP339T, *NOT NWSF OR SUBT, TERMINATE TOD AND POOCD 07835 MA(DHREG), 07836 A(>FF-TOD-POOCD), BR>B, AND, 07837 Y>RAM, 07838 JUMP(VPP350); ----- ----- 327 00000325 32D70901 ----- 07839 *NEWLY DISPLAYED SUBT OR NWSF, TIME OUT DISPLAY 07840 * B=DHREG 07841 .ORG VPP339F, *SET TOD 07842 *B=VPPRG1 07843 MA(VPPRG1), RAM>BR, 07844 A(TOD), BR>B, OR, 07845 Y>AR, 07846 JUMP(VPP345); ----- ----- 326 00230978 61081001 ----- 07847 .ORG VPP345, *CLEAR POOCD 07848 MA(DHREG), 07849 AR>A, B(>FF-POOCD), AND, 07850 Y>RAM, Y>AR, 07851 JUMP(VPP346); ----- ----- 978 00220979 32DF0910 ----- 07852 .ORG VPP346, *SET 5S TIME OUT 07853 MA(TIMOUT), 07854 Y(>FF), 07855 Y>RAM, 07856 JUMP(VPP347); ----- ----- 979 0000097A 3BFF1100 ----- 07857 .ORG VPP347, *CSVDP=1 07858 MA(VPPRG1), 07859 A(CSVDP), BR>B, OR, 07860 Y>RAM, 07861 JUMP(VPP350); ----- ----- 97A 00000325 61101101 ----- 07862 *SUB-PAGE PROCESSING FOR TOP 07863 .ORG VPP350, *A=VPPRG2 07864 MA(VPPRG2), RAM>AR, 07865 JUMP(VPP350A); ----- ----- 325 0002097B 62000000 ----- 07866 .ORG VPP350A, *Y=USPR 07867 AR>A, B(USPR), AND, 07868 JUMP(VPP351); ----- ----- 97B 0000097C 00080810 ----- 07869 .ORG VPP351, *USPR=0, USPR? 07870 MA(VPPRG2), 07871 AR>A, B(>FF-USPR), AND, 07872 Y>RAM, 07873 JZ(VPP352F,VPP400T); ----- ----- 97C 00002328 62F70910 ----- 07874 *UPDATE LFPCLx IN SPREGx 07875 .ORG VPP352F, *INIT LOOP VARIABLE 07876 *STORE=3 07877 MA(STORE), 07878 Y(3), 07879 Y>RAM, 07880 JUMP(VPP359T); ----- ----- 328 0000032D 77031100 ----- 07881 *START OF LOOP 07882 .ORG VPP359T, *A=LOOP VARIABLE 07883 MA(STORE), RAM>AR, 07884 JUMP(VPP354); ----- ----- 32D 0002097D 77000000 ----- 07885 .ORG VPP354, *DEC LOOP 07886 MA(STORE), 07887 AR>A, B(-1), ADD, 07888 Y>RAM, Y>AR, 07889 JUMP(VPP355); ----- ----- 97D 0022097E 77FF0110 ----- 07890 .ORG VPP355, *P=INDEX TO LFSPx 07891 *EXIT LOOP? 07892 AR>A, B(LFSP0), ADD, 07893 Y>PR, 07894 JN(VPP356F,VPP356T); ----- ----- 97E 0000432A 80480010 ----- 07895 .ORG VPP356F, *B=LFSPx 07896 PR>MA, RAM>BR, 07897 JUMP(VPP357); ----- ----- 32A 0011097F 00000000 ----- 07898 .ORG VPP357, *Y=LFSPx->F 07899 A(->0F), BR.0F>B, ADD, 07900 JUMP(VPP358); ----- ----- 97F 00000980 00F10002 ----- 07901 .ORG VPP358, *NULL LFSPx? 07902 *Y=LOOP 07903 AR>A, B(0), OR, 07904 JZ(VPP359F,VPP359T); ----- ----- 980 0000232C 00001010 ----- 07905 .ORG VPP359F, *NO NULL 07906 *CASE LOOP=? 07907 *B=STOR7 07908 MA(STOR7), RAM>BR, 07909 JY(VPP360Y); ----- ----- 32C 0001C6C0 27000000 ----- 07910 .ORG VPP360Y, *CASE LFSP0 07911 *B=STOR2 07912 MA(STOR2), RAM>BR, 07913 JUMP(VPP362); ----- ----- 6C0 000106C2 22000000 ----- 07914 .ORG VPP361, *CASE LFSP2 07915 *B=STOR3 07916 MA(STOR3), RAM>BR, 07917 JUMP(VPP362); ----- ----- 6C1 000106C2 23000000 ----- 07918 * B=STORx 07919 .ORG VPP362, *CASE LFSP2 07920 *P=INDEX TO Mx 07921 A(M0), BRHI>B, ADD, 07922 Y>PR, 07923 JUMP(VPP363); ----- ----- 6C2 00000981 8010000C ----- 07924 .ORG VPP363, *AR=Mx 07925 *P=INDEX TO Tx 07926 PR>MA, RAM>AR, 07927 A(T0), BRHI>B, ADD, 07928 Y>PR, 07929 JUMP(VPP364); ----- ----- 981 00120982 8018000C ----- 07930 .ORG VPP364, *PM=Mx 07931 MA(PM), 07932 AR<<4>A, B(0), OR, 07933 Y>RAM, 07934 JUMP(VPP365); ----- ----- 982 00000983 74001130 ----- 07935 .ORG VPP365, *AR=Tx 07936 *P=INDEX TO Ux 07937 PR>MA, RAM>AR, 07938 A(U0), BRHI>B, ADD, 07939 Y>PR, 07940 JUMP(VPP366); ----- ----- 983 00120984 8020000C ----- 07941 .ORG VPP366, *PT=Tx 07942 MA(PT), 07943 AR<<4>A, B(0), OR, 07944 Y>RAM, 07945 JUMP(VPP367); ----- ----- 984 00000985 75001130 ----- 07946 .ORG VPP367, *AR=Ux 07947 PR>MA, RAM>AR, 07948 JUMP(VPP368); ----- ----- 985 00120986 00000000 ----- 07949 .ORG VPP368, *PU=Ux 07950 MA(PU), 07951 AR<<4>A, B(0), OR, 07952 Y>RAM, 07953 JUMP(VPP369); ----- ----- 986 00000987 76001130 ----- 07954 .ORG VPP369, *CALL PIL TO FIND LFPCLx 07955 *RETURN=2, RETURN TO VPP370 07956 MA(RETURN), 07957 Y(2), 07958 Y>RAM, 07959 JUMP(PIL0); ----- ----- 987 0000091E 7C021100 ----- 07960 * A=LFPCL 07961 .ORG VPP370, *B=LOOP 07962 MA(STORE), RAM>BR, 07963 JUMP(VPP371); ----- ----- 292 00010988 77000000 ----- 07964 .ORG VPP371, *P=INDEX TO SPREGx 07965 A(SPREG0), BR>B, ADD, 07966 Y>PR, 07967 JUMP(VPP372); ----- ----- 988 00000989 80540001 ----- 07968 .ORG VPP372, *UPDATE LFPCLx AND RETURN TO BEGINNING OF LOOP 07969 *SPREGx=LFPCL 07970 PR>MA, 07971 AR<<4>A, B(0), OR, 07972 Y>RAM, 07973 JUMP(VPP359T); ----- ----- 989 0010032D 00001130 ----- 07974 *UPDATE MSPx IN SPREGx 07975 .ORG VPP356T, *INIT LOOP VARIABLE 07976 *A=3 07977 Y(3), 07978 Y>AR, 07979 JUMP(VPP374); ----- ----- 32B 0022098A 00031000 ----- 07980 *START OF LOOP 07981 * A=COUNT 07982 .ORG VPP374, *DEC LOOP VARIABLE 07983 *COUNT=A=A-1 07984 MA(COUNT), 07985 AR>A, B(-1), ADD, 07986 Y>RAM, Y>AR, 07987 JUMP(VPP375); ----- ----- 98A 0022098B 78FF0110 ----- 07988 .ORG VPP375, *B=SPREG0 07989 *P=INDEX TO SPREGx 07990 *EXIT LOOP? 07991 MA(SPREG0), RAM>BR, 07992 AR>A, B(SPREG0), ADD, 07993 Y>PR, 07994 JN(VPP376F,VPP376T); ----- ----- 98B 0001432E D4540010 ----- 07995 .ORG VPP376F, *A=SPREGx 07996 PR>MA, RAM>AR, 07997 JUMP(VPP377); ----- ----- 32E 0012098C 00000000 ----- 07998 .ORG VPP377, *COMPARE LFPCLx AND LFPCL0 07999 ARHI>A, BRHI>B, XOR, 08000 JUMP(VPP378); ----- ----- 98C 0000098D 0000182C ----- 08001 .ORG VPP378, *LFPCLx=LFPCL0? 08002 *B=SPREG1 08003 MA(SPREG1), RAM>BR, 08004 JZ(VPP379F,VPP379T); ----- ----- 98D 00012330 55000000 ----- 08005 .ORG VPP379T, *LFPCLx=LFPCL0 08006 *SET MSP0 IN SPREGx 08007 PR>MA, 08008 AR>A, B(MSP0), OR, 08009 Y>RAM, 08010 JUMP(VPP379F); ----- ----- 331 00100330 00011110 ----- 08011 .ORG VPP379F, *COMPARE LFPCLx AND LFPCL1 08012 *A=UPDATED SPREGx 08013 PR>MA, RAM>AR, 08014 ARHI>A, BRHI>B, XOR, 08015 JUMP(VPP380); ----- ----- 330 0012098E 0000182C ----- 08016 .ORG VPP380, *LFPCLx=LFPCL1? 08017 *B=SPREG2 08018 MA(SPREG2), RAM>BR, 08019 JZ(VPP381F,VPP381T); ----- ----- 98E 00012332 56000000 ----- 08020 .ORG VPP381T, *LFPCLx=LFPCL1 08021 *SET MSP1 IN SPREGx 08022 PR>MA, 08023 AR>A, B(MSP1), OR, 08024 Y>RAM, 08025 JUMP(VPP381F); ----- ----- 333 00100332 00021110 ----- 08026 .ORG VPP381F, *COMPARE LFPCLx AND LFPCL2 08027 *A=UPDATED SPREGx 08028 PR>MA, RAM>AR, 08029 ARHI>A, BRHI>B, XOR, 08030 JUMP(VPP382); ----- ----- 332 0012098F 0000182C ----- 08031 .ORG VPP382, *LFPCLx=LFPCL2? 08032 JZ(VPP383F,VPP383T); ----- ----- 98F 00002334 00000000 ----- 08033 .ORG VPP383T, *LFPCLx=LFPCL0 08034 *SET MSP2 IN SPREGx 08035 PR>MA, 08036 AR>A, B(MSP2), OR, 08037 Y>RAM, 08038 JUMP(VPP383F); ----- ----- 335 00100334 00041110 ----- 08039 .ORG VPP383F, *AR=COUNT 08040 *RETURN TO START OF LOOP 08041 MA(COUNT), RAM>AR, 08042 JUMP(VPP374); ----- ----- 334 0002098A 78000000 ----- 08043 .ORG VPP376T, * 08044 JUMP(VPP400T); ----- ----- 32F 00000329 00000000 ----- 08045 *CHECK CGAP. IF SET, CALL GENERATE A PROMPT ROUTINE 08046 .ORG VPP400T, *AR=EXPREG 08047 MA(EXPREG), RAM>AR, 08048 JUMP(VPP401); ----- ----- 329 00020990 63000000 ----- 08049 .ORG VPP401, *Y=CGAP 08050 *BR=STOR0 FOR GAP0 08051 MA(STOR0), RAM>BR, 08052 AR>A, B(CGAP), AND, 08053 JUMP(VPP402); ----- ----- 990 00010991 20080810 ----- 08054 .ORG VPP402, *CGAP=0, GENERATE A PROMPT? 08055 *JUMP TO GAP0, RETURN TO VPP450 08056 MA(EXPREG), 08057 AR>A, B(>FF-CGAP), AND, 08058 Y>RAM, 08059 JZ(GAP0,VPP450); ----- ----- 991 00002336 63F70910 ----- 08060 *NEED TO COPY DISPLAY PAGE ROW 24 FROM STORE 6? 08061 .ORG VPP450, *B=SYS2 08062 MA(SYS2), RAM>BR, 08063 JUMP(VPP451); ----- ----- 337 00010992 09000000 ----- 08064 .ORG VPP451, *A=SYS2 WITH RP24, CPYR24 AND R24RTC INVERTED 08065 A(RP24+CPYR24+R24RTC), BR>B, XOR, 08066 Y>AR, 08067 JUMP(VPP452); ----- ----- 992 00220993 000E1801 ----- 08068 .ORG VPP452, *Y=!RP24+!CPYR24+!R24RTC 08069 *A=STOR0 08070 MA(STOR0), RAM>AR, 08071 AR>A, B(RP24+CPYR24+R24RTC), AND, 08072 JUMP(VPP453); ----- ----- 993 00020994 200E0810 ----- 08073 .ORG VPP453, *NEED TO COPY ACROSS? 08074 *CPYR24=0 08075 MA(SYS2), 08076 A(>FF-CPYR24), BR>B, AND, 08077 Y>RAM, 08078 JZ(VPP454F,VPP454T); ----- ----- 994 00002338 09FB0901 ----- 08079 .ORG VPP454T, *YES, B=STOR7 FOR CBR0 08080 MA(STOR7), RAM>BR, 08081 JUMP(VPP455); ----- ----- 339 00010995 27000000 ----- 08082 .ORG VPP455, *CALL CBR0 TO COPY ACROSS ROW 24 08083 *RETURN=0, RETURN TO VPP500Y; 08084 MA(RETURN), 08085 Y(0), 08086 Y>RAM, 08087 JUMP(CBR0); ----- ----- 995 00000996 7C001100 ----- 08088 .ORG VPP454F, *A=VPPRG1 08089 MA(VPPRG1), RAM>AR, 08090 JUMP(VPP500Y); ----- ----- 338 000200A0 61000000 ----- 08091 * 08092 *+++ CBR: COPY BOTTOM ROW ROUTINE 08093 * 08094 * This routine copies the row 24 of the latch pointed to by B 08095 * MSN to the latch pointed to by A MSN. 08096 * 08097 * input pars are:- 08098 * A: MSN points to destination latch 08099 * B: MSN points to source latch 08100 * RETURN: return pointer 08101 * 08102 .ORG CBR0, *P=POINTER TO START OF ROW 24 08103 Y(-65), 08104 Y>PR, 08105 JUMP(CBR1); ----- ----- 996 00000997 80BF1000 ----- 08106 .ORG CBR1, *B=POINTER TO START OF ROW 24 08107 *STORE=SOURCE LATCH 08108 PR>BR, 08109 MA(STORE), 08110 A(0), BR>B, OR, 08111 Y>RAM, 08112 JUMP(CBR10); ----- ----- 997 00410998 77001101 ----- 08113 *COPY CHARACTER LOOP 08114 .ORG CBR10, *B=SOURCE LATCH 08115 *INCREMENT SCREEN POINTER 08116 MA(STORE), RAM>BR, 08117 A(1), BR>B, ADD, 08118 Y>PR, 08119 JUMP(CBR11); ----- ----- 998 00010999 F7010001 ----- 08120 .ORG CBR11, *RWL=SOURCE LATCH 08121 *BR=SCREEN POINTER 08122 PR>BR, 08123 MA(RWL), 08124 A(7), BRHI>B, AND, 08125 Y>RAM, Y>IO, 08126 JUMP(CBR12); ----- ----- 999 0041099A 0B07490C ----- 08127 .ORG CBR12, *TPD=CHARACTER TO COPY 08128 *Y=POINTER+25 08129 *B=RETURN 08130 RVDP, 08131 MA(RETURN), RAM>BR, 08132 A(25), BR>B, ADD, 08133 JUMP(CBR13); ----- ----- 99A 0001099B 7C198001 ----- 08134 .ORG CBR13, *RWL=DESTINATION STORE 08135 *LAST CHARACTER? 08136 MA(RWL), 08137 ARHI>A, B(7), AND, 08138 Y>RAM, Y>IO, 08139 JZ(CBR20F,CBR20T); ----- ----- 99B 0000233A 0B074920 ----- 08140 .ORG CBR20F, *COPY CHARACTER TO DESTINATION LATCH AND REPEAT 08141 *BR=SCREEN POINTER 08142 PR>BR, 08143 TPD>A, B(0), OR, 08144 Y>DR, 08145 JUMP(CBR10); ----- ----- 33A 00411998 00001090 ----- 08146 *END OF LOOP 08147 .ORG CBR20T, *Y=RETURN 08148 *B=STOR0 FOR FPFS CODE 08149 MA(STOR0), RAM>BR, 08150 A(3), BR>B, AND, 08151 JUMP(CBR21); ----- ----- 33B 0001099C 20030801 ----- 08152 .ORG CBR21, *COPY LAST CHARACTER 08153 *CASE RETURN=? 08154 *AR=VPPRG1 FOR VPP500Y CODE 08155 MA(VPPRG1), RAM>AR, 08156 TPD>A, B(0), OR, 08157 Y>DR, 08158 JY(VPP500Y); ----- ----- 99C 0002D0A0 61001090 ----- 08159 *CALL SVDP0 TO SET VDP REGISTERS 08160 * A=VPPRG1 08161 .ORG VPP500Y, *Y=CSVDP 08162 AR>A, B(CSVDP), AND, 08163 JUMP(VPP502); ----- ----- 0A0 0000099D 00100810 ----- 08164 .ORG VPP502, *CSVDP? 08165 *IF YES, JUMP TO CSVDP0 TO UDATE VDP REGISTERS 08166 *RETURN TO VPP600T 08167 *CLEAR CSVDP 08168 MA(VPPRG1), 08169 AR>A, B(>FF-CSVDP), AND, 08170 Y>RAM, 08171 JZ(SVDP0,VPP600T); ----- ----- 99D 0000233C 61EF0910 ----- 08172 *RUN QUALITY ALGORITHM 08173 .ORG VPP600T, *Y=QUALITY 08174 *A=HYSREG 08175 MA(HYSREG), RAM>AR, 08176 A(%00000100), PLL>B, AND, 08177 JUMP(VPP610); ----- ----- 33D 0002099E 6704080E ----- 08178 .ORG VPP610, *Y=HYSTERISIS COUNT 08179 *QUALITY GOOD? 08180 *B=HYSREG 08181 MA(HYSREG), RAM>BR, 08182 AR.0F>A, B(0), OR, 08183 JZ(VPP611F,VPP611T); ----- ----- 99E 0001233E 670010C0 ----- 08184 *GOOD QUALITY 08185 .ORG VPP611F, *INC HYS COUNT 08186 MA(HYSREG), 08187 AR>A, B(>01), ADD, 08188 Y>RAM, 08189 JUMP(VPP619); ----- ----- 33E 0000099F 67010110 ----- 08190 .ORG VPP619, *B=NEW HYS COUNT 08191 *A LO NIB= END STOP 08192 MA(HYSREG), RAM>BR, 08193 ARHI>A, B(0), OR, 08194 Y>AR, 08195 JUMP(VPP620); ----- ----- 99F 002309A0 67001020 ----- 08196 .ORG VPP620, *Y=NEW HYS COUNT - END STOP 08197 *B=STSWD0 08198 MA(STSWD0), RAM>BR, 08199 NAR>A, BR.0F>B, O>CIN, ADD, 08200 JUMP(VPP621); ----- ----- 9A0 000109A1 64000442 ----- 08201 .ORG VPP621, *REACHED END STOP? 08202 *Y=BADFLG 08203 *B=HYSREG 08204 MA(HYSREG), RAM>BR, 08205 A(BADFLG), BR>B, AND, 08206 JN(VPP622F,VPP622T); ----- ----- 9A1 00014340 67100801 ----- 08207 .ORG VPP622T, *NOT REACHED END STOP, EXIT 08208 JUMP(VPP660T); ----- ----- 341 00000343 00000000 ----- 08209 .ORG VPP622F, *REACHED END STOP 08210 *BADFLG? 08211 *HYS COUNT =END STOP 08212 MA(HYSREG), 08213 AR.0F>A, BR.F0>B, OR, 08214 Y>RAM, 08215 JZ(VPP623F,VPP660T); ----- ----- 340 00002342 670011C3 ----- 08216 *BAD->GOOD 08217 .ORG VPP623F, *B=STSWD0 08218 MA(STSWD0), RAM>BR, 08219 JUMP(VPP624); ----- ----- 342 000109A2 64000000 ----- 08220 .ORG VPP624, *BADFLG=0 08221 *GO AND SET CSPLL 08222 MA(STSWD0), 08223 A(>FF-BADFLG), BR>B, AND, 08224 Y>RAM, 08225 JUMP(VPP633T); ----- ----- 9A2 0000034D 64EF0901 ----- 08226 *BAD QUALITY 08227 * A=HYSREG, B=HYSREG, LAST Y WAS HYS COUNT 08228 .ORG VPP611T, *DEC HYS COUNT 08229 *COUNT REACHED BOTTOM STOP? 08230 MA(HYSREG), 08231 AR>A, B(->01), ADD, 08232 Y>RAM, Y>AR, 08233 JZ(VPP630F,VPP630T); ----- ----- 33F 00222344 67FF0110 ----- 08234 .ORG VPP630T, *ALREADY REACHED BOTTOM 08235 *RESTORE OLD COUNT AND EXIT 08236 MA(HYSREG), 08237 A(0), BR>B, OR, 08238 Y>RAM, 08239 JUMP(VPP660T); ----- ----- 345 00000343 67001101 ----- 08240 .ORG VPP630F, *Y=NEW COUNT 08241 *B=STSWD0 08242 MA(STSWD0), RAM>BR, 08243 AR.0F>A, B(0), OR, 08244 JUMP(VPP631); ----- ----- 344 000109A3 640010C0 ----- 08245 .ORG VPP631, *REACHED BOTTOM THIS TIME? 08246 *Y=BADFLG 08247 A(BADFLG), BR>B, AND, 08248 JZ(VPP632F,VPP632T); ----- ----- 9A3 00002346 00100801 ----- 08249 .ORG VPP632F, *NO, EXIT 08250 JUMP(VPP660T); ----- ----- 346 00000343 00000000 ----- 08251 .ORG VPP632T, *REACHED THE BOTTOM THIS TIME 08252 *BADFLG=1, BADFLG? 08253 MA(STSWD0), 08254 A(BADFLG), BR>B, OR, 08255 Y>RAM, 08256 JZ(VPP633F,VPP633T); ----- ----- 347 0000234C 64101101 ----- 08257 .ORG VPP633F, *ALREADY BAD 08258 JUMP(VPP660T); ----- ----- 34C 00000343 00000000 ----- 08259 *GOOD->BAD 08260 *ENTRY POINT FROM BAD->GOOD 08261 .ORG VPP633T, *B=VPPRG2 08262 MA(VPPRG2), RAM>BR, 08263 JUMP(VPP634); ----- ----- 34D 000109A4 62000000 ----- 08264 .ORG VPP634, *CSPLL=1 08265 MA(VPPRG2), 08266 A(CSPLL), BR>B, OR, 08267 Y>RAM, 08268 JUMP(VPP660T); ----- ----- 9A4 00000343 62041101 ----- 08269 *MAINTAIN AUTO TELETEXT RECEPTION THRESHOLD 08270 .ORG VPP660T, *A=STSWD0 08271 MA(STSWD0), RAM>AR, 08272 JUMP(VPP661); ----- ----- 343 000209A5 64000000 ----- 08273 .ORG VPP661, *A=MREG1 08274 *Y=BADFLG 08275 MA(MREG1), RAM>AR, 08276 AR>A, B(BADFLG), AND, 08277 JUMP(VPP662); ----- ----- 9A5 000209A6 65100810 ----- 08278 .ORG VPP662, *GOOD OR BAD? 08279 *Y=THRSH 08280 *A=RCM 08281 MA(RCM), RAM>AR, 08282 AR>A, B(THRSH), AND, 08283 JZ(VPP663F,VPP663T); ----- ----- 9A6 0002234E 28100810 ----- 08284 .ORG VPP663T, *GOOD, CLEAR AOFF 08285 MA(RCM), 08286 AR>A, B(>FF-AOFF), AND, 08287 Y>RAM, 08288 JUMP(VPP700T); ----- ----- 34F 00000351 28BF0910 ----- 08289 .ORG VPP663F, *BAD, RETURN=1 08290 *AUTO RECEPTION THRESHOLD ENABLED? 08291 MA(RETURN), 08292 Y(1), 08293 Y>RAM, 08294 JZ(VPP664F,VPP700T); ----- ----- 34E 00002350 7C011100 ----- 08295 .ORG VPP664F, *YES, INHIBIT TEXT 08296 *AOFF=1 08297 *CALL CDTXT0 TO TERMINATE PAGES 08298 *RETURN=1, RETURN TO VPP665F 08299 MA(RCM), 08300 AR>A, B(AOFF), OR, 08301 Y>RAM, 08302 JUMP(CDTXT0); ----- ----- 350 000009A7 28401110 ----- 08303 .ORG VPP665F, * 08304 JUMP(VPP700T); ----- ----- 65E 00000351 00000000 ----- 08305 *CALL SPLL0 TO SET VDP REGISTERS 08306 .ORG VPP700T, *A=VPPRG2 08307 MA(VPPRG2), RAM>AR, 08308 JUMP(VPP701); ----- ----- 351 000209A8 62000000 ----- 08309 .ORG VPP701, *Y=CSPLL 08310 *B=UPLL 08311 MA(UPLL), RAM>BR, 08312 AR>A, B(CSPLL), AND, 08313 JUMP(VPP702); ----- ----- 9A8 000109A9 6F040810 ----- 08314 .ORG VPP702, *CSPLL=0, CSPLL? 08315 *IF YES, JUMP TO SPLL0 08316 *RETURN TO VPP703F 08317 MA(VPPRG2), 08318 AR>A, B(>FF-CSPLL), AND, 08319 Y>RAM, 08320 JZ(SPLL0,VPP703F); ----- ----- 9A9 00002352 62FB0910 ----- 08321 *END OF VBI POST PROCESSING 08322 .ORG VPP703F, 08323 JUMP(ST0F); ----- ----- 353 00000001 00000000 ----- 08324 * 08325 *+++SORT STORE TABLE ROUTINE 08326 * 08327 * This routine is called by VPP when store table (the table 08328 * which relates stores to latch numbers) must be re-configured 08329 * ie when:- 08330 * 1) new display page entered (if not in FLOF mode) 08331 * 2) FLOF display page has been captured 08332 * 3) TOP table has been captured 08333 * If a page has not been captured, this routine calls INLA to 08334 * initialise a latch. 08335 * PU, PT, PM== (base page for store allocation algorithm) 08336 * 08337 * OLDSTR= contains pointers for store 0 and 6 to sort out row 24 08338 * 08339 *entry point to sort background latches 08340 .ORG SST0B, *INIT LOOP VARIABLE, STORE=0 08341 *GO STRAIGHT TO FPFS ROUTINE 08342 MA(STORE), 08343 Y(0), 08344 Y>RAM, Y>AR, 08345 JUMP(FPFS0F); ----- ----- 30D 00220362 77001100 ----- 08346 *entry point to sort all latches 08347 .ORG SST0A, *INIT LOOP VARIABLE, STORE=0 08348 MA(STORE), 08349 Y(0), 08350 Y>RAM, 08351 JUMP(SST1); ----- ----- 92B 000009AA 77001100 ----- 08352 .ORG SST1, *CALL PIL0 08353 *RETURN=0, RETURN TO SST2Y 08354 MA(RETURN), 08355 A(0), B(0), AND, 08356 Y>RAM, 08357 JUMP(PIL0); ----- ----- 9AA 0000091E 7C000900 ----- 08358 *START OF STORE LOOP (FIND PAGE FOR STORE RETURNS HERE) 08359 * A=RETURN DATA FROM PIL, PU/T/M=CURRENT PAGE 08360 .ORG SST2Y, *AR==RETURN DATA FROM PIL0 08361 *Y= PAGE NOT IN A LATCH FLAG 08362 *BR=SCREEN 08363 MA(SCREEN), RAM>BR, 08364 AR>A, B(>08), AND, 08365 JUMP(SST3); ----- ----- 290 000109AB 60080810 ----- 08366 .ORG SST3, *PAGE IN A LATCH? 08367 *PR=STORE CONTAINING LATCH 08368 ARHI>A, B(7), AND, 08369 Y>PR, 08370 JZ(SST4F,SST4T); ----- ----- 9AB 00002354 80070820 ----- 08371 *PAGE IS NOT IN A LATCH 08372 .ORG SST4F, *Y=MENM 08373 *BR=LATCH IN STORE 7 08374 MA(STOR7), RAM>BR, 08375 A(MENM), BR>B, AND, 08376 JUMP(SST4A); ----- ----- 354 000109AC 27080801 ----- 08377 .ORG SST4A, *MENM? 08378 *P= INDEX TO LAFx FOR STORE 7 08379 A(LAF0), BRHI>B, ADD, 08380 Y>PR, 08381 JZ(SST4BF,SST4BT); ----- ----- 9AC 00002356 8040000C ----- 08382 * 08383 .ORG SST4BT, *NOT MENU MODE 08384 *A= LAFx FOR STORE 7 08385 PR>MA, RAM>AR, 08386 JUMP(SST4BA); ----- ----- 357 001209AD 00000000 ----- 08387 .ORG SST4BA, *Y=AITL 08388 AR>A, B(AITL), AND, 08389 JUMP(SST4BB); ----- ----- 9AD 000009AE 00010810 ----- 08390 .ORG SST4BB, *STORE 7 BEING USED FOR AN AIT? 08391 *RET3= LOWEST PRIORITY STORE 08392 MA(RET3), 08393 Y(7), 08394 Y>RAM, 08395 JZ(SST4BCF,SST4DT); ----- ----- 9AE 00002358 7A071100 ----- 08396 .ORG SST4BCF, *YES, STORE 6 IS LOWEST PRIORITY 08397 MA(STOR6), RAM>BR, 08398 JUMP(SST4BD); ----- ----- 358 000109AF 26000000 ----- 08399 .ORG SST4BD, *RET3= LOWEST PRIORITY STORE 08400 MA(RET3), 08401 Y(6), 08402 Y>RAM, 08403 JUMP(SST4DT); ----- ----- 9AF 00000359 7A061100 ----- 08404 * 08405 .ORG SST4BF, *MENU MODE, LOWEST PRIORITY LATCH IS 5 08406 *BR=LATCH IN STORE 5 08407 MA(STOR5), RAM>BR, 08408 JUMP(SST4C); ----- ----- 356 000109B0 25000000 ----- 08409 .ORG SST4C, *RET3= LOWEST PRIORITY STORE 08410 MA(RET3), 08411 Y(5), 08412 Y>RAM, 08413 JUMP(SST4DT); ----- ----- 9B0 00000359 7A051100 ----- 08414 * B= STORx WHERE x IS THE LOWEST PRIORITY STORE 08415 * RET3= LOWEST PRIORITY STORE 08416 .ORG SST4DT, *AR==LATCH FOR INIT 08417 A(0), BRHI>B, OR, 08418 Y>AR, 08419 JUMP(SST4E); ----- ----- 359 002209B1 0000100C ----- 08420 .ORG SST4E, *CALL INLA0 TO INITIALISE THE LATCH WHICH IS THE 08421 *LOWEST PRIORITY STORE AT THE MOMENT 08422 *RETURN=0, RETURN TO SST5Y 08423 *PU,PT,PM==PAGE FOR LATCH 08424 *RETURN=0 08425 MA(RETURN), 08426 Y(0), 08427 Y>RAM, 08428 JUMP(INLA0); ----- ----- 9B1 0000092F 7C001100 ----- 08429 .ORG SST5Y, *A=RET3 (LOWST PRIORITY STORE FOR SHUFFLE) 08430 MA(RET3), RAM>AR, 08431 JUMP(SST8); ----- ----- 298 000209B2 7A000000 ----- 08432 *PAGE IS IN A LATCH 08433 .ORG SST4T, *PAGE HAS BEEN CAPTURED 08434 *BR=STORE CONTAINING LATCH 08435 *PR=RETURN DATA FROM PIL 08436 PR>BR, 08437 AR>A, B(0), OR, 08438 Y>PR, 08439 JUMP(SST7); ----- ----- 355 004109B3 80001010 ----- 08440 .ORG SST7, *AR=RET3=STORE CONTAINING LATCH 08441 MA(RET3), 08442 A(0), BR>B, OR, 08443 Y>AR, Y>RAM, 08444 JUMP(SST8); ----- ----- 9B3 002209B2 7A001101 ----- 08445 *SHUFFLE LATCH TABLE (MISSING TOP TABLES) 08446 * AR=RET3=STORE CONTAINING LATCH TO BE MOVED 08447 * STORE=DESTINATION STORE FOR LATCH 08448 .ORG SST8, *PR=INDEX TO LATCH TO BE MOVED 08449 AR>A, B(STOR0), ADD, 08450 Y>PR, 08451 JUMP(SST9A); ----- ----- 9B2 000009B4 80200010 ----- 08452 .ORG SST9A, *BR=LATCH TO BE MOVED 08453 PR>MA, RAM>BR, 08454 JUMP(SST10); ----- ----- 9B4 001109B5 00000000 ----- 08455 .ORG SST10, *COUNT= LATCH TO BE MOVED 08456 MA(COUNT), 08457 A(0), BRHI>B, OR, 08458 Y>RAM, 08459 JUMP(SST10A); ----- ----- 9B5 000009B6 7800110C ----- 08460 *ENTRY TO SHUFFLE LOOP 08461 *INPUT PARS:- 08462 * AR=RET3=STORE CONTAINING LATCH TO BE MOVED 08463 * STORE=DESTINATION STORE FOR LATCH 08464 * COUNT=LATCH TO BE MOVED 08465 *VARS:- 08466 * AR=RET3=DESTINATION STORE FOR EACH COPY DOWN 08467 * RET4=SOURCE STORE FOR EACH COPY DOWN 08468 .ORG SST10A, *BR=STORE 08469 MA(STORE), RAM>BR, 08470 JUMP(SST11); ----- ----- 9B6 000109B7 77000000 ----- 08471 .ORG SST11, *Y=STORE-RET3 08472 NAR>A, BR>B, ADD, O>CIN, 08473 JUMP(SST11A); ----- ----- 9B7 000009B8 00000441 ----- 08474 .ORG SST11A, *Y=STORE-RET3 08475 *RET3=STORE? 08476 NAR>A, BR>B, ADD, O>CIN, 08477 JZ(SST11CF,SST11CT); ----- ----- 9B8 0000235A 00000441 ----- 08478 *SHUFFLE COMPLETE, LOAD STORE WITH LATCH BEING MOVED AND EXIT 08479 .ORG SST11CT, *STORES THE SAME 08480 *P=INDEX TO DESINATION STORE 08481 *A=LATCH BEING MOVED 08482 MA(COUNT), RAM>AR, 08483 A(STOR0), BR>B, ADD, 08484 Y>PR, 08485 JUMP(SST11D); ----- ----- 35B 000209B9 F8200001 ----- 08486 .ORG SST11D, *B=STOREx 08487 PR>MA, RAM>BR, 08488 JUMP(SST11E); ----- ----- 9B9 001109BA 00000000 ----- 08489 .ORG SST11E, *MOVE LATCH AND EXIT 08490 PR>MA, 08491 AR<<4>A, BR.0F>B, OR, 08492 Y>RAM, 08493 JUMP(FPFS0F); ----- ----- 9BA 00100362 00001132 ----- 08494 *SHUFFLE NOT COMPLETE, FIND NEXT STORE UP (SKIP TOP TABLES) 08495 * AR=RET4 (OR RET3 ON FIRST ENTRY FROM SST11A) 08496 .ORG SST11CF, *RET4-- 08497 MA(RET4), 08498 AR>A, B(-1), ADD, 08499 Y>RAM, Y>AR, 08500 JUMP(SST12); ----- ----- 35A 002209BB 79FF0110 ----- 08501 .ORG SST12, *P=INDEX TO RET4 STORE 08502 AR>A, B(STOR0), ADD, 08503 Y>PR, 08504 JUMP(SST13); ----- ----- 9BB 000009BC 80200010 ----- 08505 .ORG SST13, *A=LATCH IN RET4 STORE 08506 PR>MA, RAM>AR, 08507 JUMP(SST13A); ----- ----- 9BC 001209BD 00000000 ----- 08508 .ORG SST13A, *P=INDEX TO LAFx 08509 ARHI>A, B(LAF0), ADD, 08510 Y>PR, 08511 JUMP(SST13B); ----- ----- 9BD 000009BE 80400020 ----- 08512 .ORG SST13B, *B=LAFx 08513 PR>MA, RAM>BR, 08514 JUMP(SST13C); ----- ----- 9BE 001109BF 00000000 ----- 08515 .ORG SST13C, *Y=BTTL+AITL 08516 *B=RET3 08517 MA(RET3), RAM>BR, 08518 A(AITL+BTTL), BR>B, AND, 08519 JUMP(SST13D); ----- ----- 9BF 000109C0 7A030801 ----- 08520 .ORG SST13D, *TOP TABLE? 08521 *P=INDEX TO DESTINATION STORE FOR COPY DOWN 08522 A(STOR0), BR>B, ADD, 08523 Y>PR, 08524 JZ(SST13EF,SST13ET); ----- ----- 9C0 0000235C 80200001 ----- 08525 .ORG SST13EF, *RETURN FOR NEXT STORE 08526 *AR=RET4 08527 MA(RET4), RAM>AR, 08528 JUMP(SST11CF); ----- ----- 35C 0002035A 79000000 ----- 08529 *NOT A TOP TABLE, COPY DOWN LATCH 08530 .ORG SST13ET, *BR=STORx 08531 PR>MA, RAM>BR, 08532 JUMP(SST14); ----- ----- 35D 001109C1 00000000 ----- 08533 .ORG SST14, *COMPLETE COPY DOWN 08534 PR>MA, 08535 AR.F0>A, BR.0F>B, OR, 08536 Y>RAM, 08537 JUMP(SST14A); ----- ----- 9C1 001009C2 000011D2 ----- 08538 .ORG SST14A, *AR=RET4 08539 MA(RET4), RAM>AR, 08540 JUMP(SST14B); ----- ----- 9C2 000209C3 79000000 ----- 08541 .ORG SST14B, *AR=RET3=RET4 08542 MA(RET3), 08543 AR>A, B(0), OR, 08544 Y>RAM, 08545 JUMP(SST10A); ----- ----- 9C3 000009B6 7A001110 ----- 08546 *SHUFFLE COMPLETE, FIND PAGE FOR STORE 08547 .ORG FPFS0F, *AR=STORE 08548 MA(STORE), RAM>AR, 08549 JUMP(FPFS1); ----- ----- 362 000209C4 77000000 ----- 08550 .ORG FPFS1, *Y=STORE-7 08551 *B=SYS2 08552 MA(SYS2), RAM>BR, 08553 AR>A, B(-7), ADD, 08554 JUMP(FPFS2); ----- ----- 9C4 000109C5 09F90010 ----- 08555 .ORG FPFS2, *STORE++ 08556 *LAST STORE? 08557 MA(STORE), 08558 AR>A, B(1), ADD, 08559 Y>RAM, Y>AR, 08560 JZ(FPFS3F,FPFS3T); ----- ----- 9C5 0022235E 77010110 ----- 08561 *INITIALISE THIS STORE 08562 * A=STORE 08563 .ORG FPFS3F, *P=INDEX TO STORx 08564 AR>A, B(STOR0), ADD, 08565 Y>PR, 08566 JUMP(FPFS4); ----- ----- 35E 000009C6 80200010 ----- 08567 .ORG FPFS4, *B=STORx 08568 PR>MA, RAM>BR, 08569 JUMP(FPFS5); ----- ----- 9C6 001109C7 00000000 ----- 08570 .ORG FPFS5, *P=INDEX TO LAFx 08571 *B=SCREEN 08572 MA(SCREEN), RAM>BR, 08573 A(LAF0), BRHI>B, ADD, 08574 Y>PR, 08575 JUMP(FPFS10); ----- ----- 9C7 000109C8 E040000C ----- 08576 .ORG FPFS10, *B=LAFx 08577 *Y=MENM 08578 PR>MA, RAM>BR, 08579 A(MENM), BR>B, AND, 08580 JUMP(FPFS11); ----- ----- 9C8 001109C9 00080801 ----- 08581 .ORG FPFS11, *MENU MODE? 08582 JZ(FPFS11AF,FPFS11AT); ----- ----- 9C9 00002360 00000000 ----- 08583 .ORG FPFS11AF, *MENU MODE, CHECK IF STORE IS A MENU PAGE OR A TOP TABLE 08584 *Y=AITL+BTTL+MPG 08585 *B=SYS1 08586 MA(SYS1), RAM>BR, 08587 A(AITL+BTTL+MPG), BR>B, AND, 08588 JUMP(FPFS12); ----- ----- 360 000109CA 08070801 ----- 08589 .ORG FPFS11AT, *NOT MENU MODE, CHECK IF STORE IS A TOP TABLE ONLY 08590 *Y=AITL+BTTL 08591 *B=SYS1 08592 MA(SYS1), RAM>BR, 08593 A(AITL+BTTL), BR>B, AND, 08594 JUMP(FPFS12); ----- ----- 361 000109CA 08030801 ----- 08595 .ORG FPFS12, *SKIP THIS STORE? 08596 *Y=PCM 08597 A(3), BRHI>B, AND, 08598 JZ(FPFS0F,FPFS19T); ----- ----- 9CA 00002362 0003080C ----- 08599 .ORG FPFS19T, *Y=STORE-6 08600 *CASE PCM=? 08601 AR>A, B(-6), ADD, 08602 JY(FPFS30Y); ----- ----- 363 0000C2AC 00FA0010 ----- 08603 *CASE NORMAL 08604 .ORG FPFS30Y, *Y=STORE-6, STORE<6? 08605 AR>A, B(-6), ADD, 08606 JN(FPFS101F,FPFS101T); ----- ----- 2AC 00004364 00FA0010 ----- 08607 *CASE TOP 08608 .ORG FPFS31, *A=DPM (POINT TO DISPLAY PAGE) 08609 *CALL PNTIN0 TO RETURN DBB DATA FOR DISPLAY PAGE 08610 Y(DPM), 08611 Y>AR, 08612 JUMP(FPFS40); ----- ----- 2AD 002209CB 00681000 ----- 08613 *CASE FLOF 08614 .ORG FPFS32, *Y=STORE-6, STORE<6? 08615 *RETURN=2 08616 MA(RETURN), 08617 Y(2), 08618 Y>RAM, 08619 JN(FPFS32AF,FPFS200T); ----- ----- 2AE 00004366 7C021100 ----- 08620 .ORG FPFS32AF, *STORE 6 OR 7, DO THE SAME AS NORMAL 08621 AR>A, B(-6), ADD, 08622 JUMP(FPFS101F); ----- ----- 366 00000364 00FA0010 ----- 08623 *CASE FAVP 08624 .ORG FPFS33, *Y=STORE-6, STORE<6? 08625 *IF STORE 2, 3, 4 OR 5, CALL GFP0T 08626 *RETURN=0, RETURN TO FPFS60Y 08627 MA(RETURN), 08628 Y(0), 08629 Y>RAM, 08630 JN(FPFS33AF,GFP0T); ----- ----- 2AF 00004368 7C001100 ----- 08631 .ORG FPFS33AF, *STORE 6 OR 7, DO THE SAME AS NORMAL 08632 AR>A, B(-6), ADD, 08633 JUMP(FPFS101F); ----- ----- 368 00000364 00FA0010 ----- 08634 * 08635 .ORG FPFS40, *CALL PNTIN0 TO RETURN DBB DATA FOR DISPLAY PAGE 08636 *RETURN=3, RETURN TO FPFS41 08637 MA(RETURN), 08638 Y(3), 08639 Y>RAM, 08640 JUMP(PNTIN0); ----- ----- 9CB 00000857 7C031100 ----- 08641 * AR=DBB RETURN DATA 08642 .ORG FPFS41, *B=STORE 08643 MA(STORE), RAM>BR, 08644 JUMP(FPFS42); ----- ----- 793 000109CC 77000000 ----- 08645 .ORG FPFS42, *Y=STORE-7 08646 *B=MREG1 08647 MA(MREG1), RAM>BR, 08648 A(-7), BR>B, ADD, 08649 JUMP(FPFS43); ----- ----- 9CC 000109CD 65F90001 ----- 08650 .ORG FPFS43, *STORE 7? 08651 *Y=RKM 08652 A(RKM), BR>B, AND, 08653 JZ(FPFS44F,FPFS44T); ----- ----- 9CD 0000236A 00020801 ----- 08654 * STORE 7 08655 .ORG FPFS44T, *SIMPLE RED KEY MODE? 08656 *Y= BLOCK PAGE FLAG 08657 AR>A, B(4), AND, 08658 JZ(FPFS44AF,FPFS44AT); ----- ----- 36B 0000236C 00040810 ----- 08659 .ORG FPFS44AF, *SIMPLE RED KEY MODE 08660 *LOOK FOR ANY PAGE 08661 *MASK=7 08662 MA(MASK), 08663 Y(7), 08664 Y>RAM, 08665 JUMP(FPFS46T); ----- ----- 36C 0000037D 73071100 ----- 08666 .ORG FPFS44AT, *Y= GROUP PAGE FLAG 08667 *DISPLAY PAGE A BLOCK PAGE? 08668 AR>A, B(2), AND, 08669 JZ(FPFS45F,FPFS45T); ----- ----- 36D 0000236E 00020810 ----- 08670 .ORG FPFS45F, *BLOCK PAGE, LOOK FOR LAST BLOCK 08671 *MASK=4 08672 MA(MASK), 08673 Y(4), 08674 Y>RAM, 08675 JUMP(FPFS46T); ----- ----- 36E 0000037D 73041100 ----- 08676 .ORG FPFS45T, *DISPLAY PAGE A GROUP PAGE? 08677 *ELSE, LOOK FOR ANY PAGE 08678 *MASK=7 08679 MA(MASK), 08680 Y(7), 08681 Y>RAM, 08682 JZ(FPFS46F,FPFS46T); ----- ----- 36F 0000237C 73071100 ----- 08683 .ORG FPFS46F, *GROUP PAGE, LOOK FOR LAST GROUP OR BLOCK 08684 *MASK=6 08685 MA(MASK), 08686 Y(6), 08687 Y>RAM, 08688 JUMP(FPFS46T); ----- ----- 37C 0000037D 73061100 ----- 08689 *ENTRY POINT FROM STORE 7 IN NORMAL MODE 08690 .ORG FPFS46T, *CALL SBT0B, 08691 *RETURN=1, RETURN TO FPFS331 08692 MA(RETURN), 08693 Y(1), 08694 Y>RAM, 08695 JUMP(SBT0B); ----- ----- 37D 000004C9 7C011100 ----- 08696 * NOT STORE 7 08697 * A=DBB RETURN DATA 08698 .ORG FPFS44F, *Y=TV PAGE FLAG 08699 *B=LTK 08700 MA(LTK), RAM>BR, 08701 AR>A, B(>08), AND, 08702 JUMP(FPFS47); ----- ----- 36A 000109CE 11080810 ----- 08703 .ORG FPFS47, *TV PAGE? 08704 *Y=LAST TOP KEY 08705 *A=STORE 08706 MA(STORE), RAM>AR, 08707 A(3), BRHI>B, AND, 08708 JZ(FPFS48F,FPFS48T); ----- ----- 9CE 0002237E 7703080C ----- 08709 .ORG FPFS48F, *TV PAGE 08710 *Y=STORE 08711 AR>A, B(7), AND, 08712 JUMP(FPFS51); ----- ----- 37E 000002B5 00070810 ----- 08713 .ORG FPFS48T, *NOT A TV PAGE 08714 *CASE LAST TOP KEY=? 08715 *STORE MUST BE GREATER THAN 3 08716 *Y=STORE-4 08717 AR.0F>A, B(-4), ADD, 08718 JY(FPFS50Y); ----- ----- 37F 0000C2B4 00FC00C0 ----- 08719 .ORG FPFS50Y, *CASE LTK=RED 08720 *CASE STORE-4=? 08721 JY(FPFS110Y); ----- ----- 2B4 0000C768 00000000 ----- 08722 *ENTRY POINT IF TV PAGE 08723 .ORG FPFS51, *CASE LTK=GREEN 08724 *SET MASK FOR NEXT N, G OR B 08725 *MASK=7 08726 MA(MASK), 08727 Y(7), 08728 Y>RAM, 08729 JUMP(FPFS300B); ----- ----- 2B5 00000391 73071100 ----- 08730 .ORG FPFS52, *CASE LTK=YELLOW 08731 *SET MASK FOR NEXT G OR B 08732 *MASK=6 08733 MA(MASK), 08734 Y(6), 08735 Y>RAM, 08736 JUMP(FPFS300B); ----- ----- 2B6 00000391 73061100 ----- 08737 .ORG FPFS53, *CASE LTK=BLUE 08738 *SET MASK FOR NEXT B 08739 *MASK=4 08740 MA(MASK), 08741 Y(4), 08742 Y>RAM, 08743 JUMP(FPFS300B); ----- ----- 2B7 00000391 73041100 ----- 08744 *FAVOURITE PAGE MODE STORES 2, 3, 4, 5 08745 * B=PU, PM,PT,PU=FAV PAGE 08746 .ORG FPFS60Y, *Y=PU LSB (NON-ZERO INDICATES NUMBER NOT PROGRAMMED) 08747 A(1), BR>B, AND, 08748 JUMP(FPFS61); ----- ----- 270 000009CF 00010801 ----- 08749 .ORG FPFS61, *HAS THIS FAV PAGE NUMBER BEEN PROGRAMMED? 08750 JZ(FPFS62F,FPFS62T); ----- ----- 9CF 00002380 00000000 ----- 08751 .ORG FPFS62T, *YES, SEE IF THE PAGE IS IN A LATCH 08752 JUMP(FPFS332); ----- ----- 381 00000731 00000000 ----- 08753 .ORG FPFS62F, *NO, SET MASK TO LOOK FOR NEXT PAGE IN INVENTORY 08754 MA(MASK), 08755 Y(>80), 08756 Y>RAM, 08757 JUMP(FPFS300A); ----- ----- 380 00000390 73801100 ----- 08758 *NORMAL MODE AND TOP MODE IF BTT NOT CAPTURED 08759 * LAST Y WAS STORE-6, A=STORE 08760 *ENTRY POINT FOR STORES 2,3,4 OR 5 08761 .ORG FPFS101T, *STORE 2,3,4 OR 5 08762 *SET MASK TO LOOK FOR NEXT PAGE IN INVENTORY 08763 MA(MASK), 08764 Y(>80), 08765 Y>RAM, 08766 JUMP(FPFS300B); ----- ----- 365 00000391 73801100 ----- 08767 *ENTRY POINT FOR STORES 6 OR 7 08768 *ENTRY POINT FROM FLOF CODE 08769 *ENTRY POINT FROM FAVOURITE PAGE MODE 08770 * LAST Y WAS STORE-6 08771 .ORG FPFS101F, *STORE 6 OR 7, STORE 6? 08772 *A=DPM 08773 MA(DPM), RAM>AR, 08774 JZ(FPFS102F,FPFS102T); ----- ----- 364 00022382 68000000 ----- 08775 *STORE 6 IN NORMAL OR FLOF 08776 * A=DPM 08777 .ORG FPFS102T, *PM=LAST PAGE MAG 08778 MA(PM), 08779 AR<<4>A, B(0), OR, 08780 Y>RAM, 08781 JUMP(FPFS103); ----- ----- 383 000009D0 74001130 ----- 08782 .ORG FPFS103, *A=DPT 08783 MA(DPT), RAM>AR, 08784 JUMP(FPFS103A); ----- ----- 9D0 000209D1 69000000 ----- 08785 .ORG FPFS103A, *PT=LAST PAGE TENS 08786 MA(PT), 08787 AR<<4>A, B(0), OR, 08788 Y>RAM, 08789 JUMP(FPFS103B); ----- ----- 9D1 000009D2 75001130 ----- 08790 .ORG FPFS103B, *A=DPU 08791 MA(DPU), RAM>AR, 08792 JUMP(FPFS103C); ----- ----- 9D2 000209D3 6A000000 ----- 08793 .ORG FPFS103C, *PU=LAST PAGE UNITS 08794 MA(PU), 08795 AR<<4>A, B(0), OR, 08796 Y>RAM, 08797 JUMP(FPFS103D); ----- ----- 9D3 000009D4 76001130 ----- 08798 .ORG FPFS103D, *SET MASK TO RETURN NEXT PAGE IF ALREADY IN A LATCH 08799 MA(MASK), 08800 Y(0), 08801 Y>RAM, 08802 JUMP(FPFS332); ----- ----- 9D4 00000731 73001100 ----- 08803 *STORE 7 IN NORMAL OR FLOF 08804 * A=DPM 08805 .ORG FPFS102F, *A=DPM 08806 Y(DPM), 08807 Y>AR, 08808 JUMP(FPFS104); ----- ----- 382 002209D5 00681000 ----- 08809 .ORG FPFS104, *CALL PNTIN0 08810 *RETURN=8, RETURN TO FPFS105 08811 MA(RETURN), 08812 Y(8), 08813 Y>RAM, 08814 JUMP(PNTIN0); ----- ----- 9D5 00000857 7C081100 ----- 08815 .ORG FPFS105, *SET MASK TO LOOK FOR LAST PAGE IN INVENTORY 08816 *JUMP TO TOP CODE 08817 MA(MASK), 08818 Y(>80), 08819 Y>RAM, 08820 JUMP(FPFS46T); ----- ----- 798 0000037D 73801100 ----- 08821 *TOP MODE WITH BTT CAPTURED, LAST TOP KEY WAS RED 08822 .ORG FPFS110Y, *CASE STORE 4 IN TOP 08823 *SET MASK FOR NEXT N, G OR B 08824 *MASK=7 08825 MA(MASK), 08826 Y(7), 08827 Y>RAM, 08828 JUMP(FPFS300B); ----- ----- 768 00000391 73071100 ----- 08829 .ORG FPFS111, *CASE STORE 5 IN TOP 08830 *SET MASK FOR NEXT G OR B 08831 *MASK=6 08832 MA(MASK), 08833 Y(6), 08834 Y>RAM, 08835 JUMP(FPFS300B); ----- ----- 769 00000391 73061100 ----- 08836 .ORG FPFS112, *CASE STORE 6 IN TOP 08837 *SET MASK FOR NEXT B 08838 *MASK=4 08839 MA(MASK), 08840 Y(4), 08841 Y>RAM, 08842 JUMP(FPFS300B); ----- ----- 76A 00000391 73041100 ----- 08843 .ORG FPFS113, *CASE STORE 7 IN TOP 08844 *SET MASK FOR NEXT B 08845 *MASK=4 08846 MA(MASK), 08847 Y(4), 08848 Y>RAM, 08849 JUMP(FPFS300B); ----- ----- 76B 00000391 73041100 ----- 08850 *STORES 1-5 IN FLOF MODE 08851 * RETURN=2, A=STORE 08852 .ORG FPFS200T, *A=POINTER TO FLOF LINK 08853 *CALL GFL0 08854 *RETURN=2, RETURN TO FPFS210 08855 AR>A, B(-1), ADD, 08856 Y>AR, 08857 JUMP(GFL0); ----- ----- 367 002209D6 00FF0010 ----- 08858 .ORG FPFS210, * 08859 JUMP(FPFS332); ----- ----- 062 00000731 00000000 ----- 08860 *FIND PAGE 08861 * This routine finds the next page of the type defined by MASK. 08862 * 08863 *ENTRY POINT TO SEARCH FROM THE PAGE IN PM/PT/PU 08864 .ORG FPFS300B, *POINT TO PAGE NUMBER IN PU,PT,PM 08865 *A=PM 08866 Y(PM), 08867 Y>AR, 08868 JUMP(FPFS301); ----- ----- 391 002209D7 00741000 ----- 08869 *ENTRY POINT TO SEARCH FROM THE DISPLAY PAGE 08870 .ORG FPFS300A, *POINT TO PAGE NUMBER IN DPU,DPT,DPM 08871 *A=DPM 08872 Y(DPM), 08873 Y>AR, 08874 JUMP(FPFS301); ----- ----- 390 002209D7 00681000 ----- 08875 * A=POINTER TO BASE PAGE NUMBER IN SCRATCH RAM 08876 .ORG FPFS301, *FIND BTT POINTER 08877 *CALL PNTIN0 08878 *RETURN=1, RETURN TO FPFS320); 08879 MA(RETURN), 08880 Y(1), 08881 Y>RAM, 08882 JUMP(PNTIN0); ----- ----- 9D7 00000857 7C011100 ----- 08883 *CHECK IF IT IS NECESSARY TO ROTATE IN BLOCK 08884 .ORG FPFS320, *B=MREG1 08885 MA(MREG1), RAM>BR, 08886 JUMP(FPFS321); ----- ----- 791 000109D8 65000000 ----- 08887 .ORG FPFS321, *B=ROTATE 08888 *Y=RIB 08889 MA(ROTATE), RAM>BR, 08890 A(RIB), BR>B, AND, 08891 JUMP(FPFS322); ----- ----- 9D8 000109D9 15010801 ----- 08892 .ORG FPFS322, *Y=NBY AND ROTT 08893 *ROTATE IN BLOCK ENABLED? 08894 *A=MASK 08895 MA(MASK), RAM>AR, 08896 A(NBY+ROTT), BR>B, AND, 08897 JZ(FPFS323F,FPFS330T); ----- ----- 9D9 00022384 73300801 ----- 08898 .ORG FPFS323F, *BLOCK NOT FOUND OR ROTATED ALREADY? 08899 *Y=NORMAL AND GROUP FLAGS 08900 AR>A, B(>03), AND, 08901 JZ(FPFS324F,FPFS324T); ----- ----- 384 00002386 00030810 ----- 08902 .ORG FPFS324F, *BLOCK NOT FOUND OR ROTATED ALREADY 08903 JUMP(FPFS330T); ----- ----- 386 00000385 00000000 ----- 08904 .ORG FPFS324T, *SEARCHING FOR BLOCKS ONLY? 08905 *RETURN=8 08906 MA(RETURN), 08907 Y(8), 08908 Y>RAM, 08909 JZ(FPFS325F,FPFS325T); ----- ----- 387 00002388 7C081100 ----- 08910 .ORG FPFS325T, *SEARCHING FOR BLOCKS ONLY, DO NOT ROTATE 08911 JUMP(FPFS330T); ----- ----- 389 00000385 00000000 ----- 08912 *ROTATE IN BLOCK 08913 * A=MASK, B=ROTATE 08914 .ORG FPFS325F, *USE TEST FOR TEMP STORE FOR MASK 08915 MA(TEST), 08916 AR>A, B(0), OR, 08917 Y>RAM, 08918 JUMP(FPFS326); ----- ----- 388 000009DA 70001110 ----- 08919 .ORG FPFS326, *SET MASK TO LOOK FOR BLOCK 08920 MA(MASK), 08921 Y(>04), 08922 Y>RAM, 08923 JUMP(FPFS326A); ----- ----- 9DA 000009DB 73041100 ----- 08924 .ORG FPFS326A, *SET ROTT 08925 *CALL SBT0B TO SEARCH BACK TO LAST BLOCK 08926 *RETURN=8, RETURN TO FPFS327 08927 MA(ROTATE), 08928 A(ROTT), BR>B, OR, 08929 Y>RAM, 08930 JUMP(SBT0B); ----- ----- 9DB 000004C9 15101101 ----- 08931 .ORG FPFS327, *A=TEST 08932 MA(TEST), RAM>AR, 08933 JUMP(FPFS328); ----- ----- 7A8 000209DC 70000000 ----- 08934 .ORG FPFS328, *RESTORE ORIGINAL MASK 08935 MA(MASK), 08936 AR>A, B(0), OR, 08937 Y>RAM, 08938 JUMP(FPFS330T); ----- ----- 9DC 00000385 73001110 ----- 08939 *END OF RIB CODE 08940 .ORG FPFS330T, *SEARCH BTT 08941 *CALL SBT0A 08942 *RETURN=1, RETURN TO FPFS331 08943 MA(RETURN), 08944 Y(1), 08945 Y>RAM, 08946 JUMP(SBT0A); ----- ----- 385 000004C8 7C011100 ----- 08947 .ORG FPFS331, *Y=BLOCK FOUND FLAG 08948 AR>A, B(>04), AND, 08949 JUMP(FPFS331A); ----- ----- 7A1 000009DD 00040810 ----- 08950 .ORG FPFS331A, *BLOCK FOUND? 08951 *B=ROTATE 08952 MA(ROTATE), RAM>BR, 08953 JZ(FPFS331AF,FPFS331AT); ----- ----- 9DD 0001238A 15000000 ----- 08954 .ORG FPFS331AF, *BLOCK FOUND, CLEAR NBY 08955 MA(ROTATE), 08956 A(>FF-NBY), BR>B, AND, 08957 Y>RAM, 08958 JUMP(FPFS331AT); ----- ----- 38A 0000038B 15DF0901 ----- 08959 * 08960 .ORG FPFS331AT, *CONVERT BTT POINTER TO PAGE IN PU,PT,PM 08961 *CALL INTPN0 08962 *RETURN=1, RETURN TO FPFS332 08963 MA(RETURN), 08964 Y(1), 08965 Y>RAM, 08966 JUMP(INTPN0); ----- ----- 38B 000007A3 7C011100 ----- 08967 * PM, PT AND PU CONTAIN PROPOSED NEXT PAGE 08968 .ORG FPFS332, *CHECK IF ALREADY IN A LATCH 08969 *CALL PIL0 08970 *RETURN=3, RETURN TO FPFS333 08971 MA(RETURN), 08972 Y(3), 08973 Y>RAM, 08974 JUMP(PIL0); ----- ----- 731 0000091E 7C031100 ----- 08975 .ORG FPFS333, *Y=PAGE IN LATCH FLAG 08976 AR>A, B(>08), AND, 08977 JUMP(FPFS334); ----- ----- 293 000009DE 00080810 ----- 08978 .ORG FPFS334, *PAGE ALREADY IN A LATCH? 08979 *LOCAL=A 08980 MA(LOCAL), 08981 AR>A, B(0), OR, 08982 Y>RAM, 08983 JZ(FPFS335F,FPFS335T); ----- ----- 9DE 0000238C 72001110 ----- 08984 .ORG FPFS335T, *A=STORE SET FOR PAGE IF IN A LATCH ALREADY 08985 *B=CURRENT STORE 08986 MA(STORE), RAM>BR, 08987 ARHI>A, B(7), AND, 08988 Y>AR, 08989 JUMP(FPFS336); ----- ----- 38D 002309DF 77070820 ----- 08990 .ORG FPFS336, *IN A LATCH ALREADY 08991 *COMPARE STORES 08992 *(MISS O>CIN TO GET >= TEST) 08993 *A=MASK 08994 MA(MASK), RAM>AR, 08995 NAR>A, BR>B, ADD, 08996 JUMP(FPFS337); ----- ----- 9DF 000209E0 73000041 ----- 08997 .ORG FPFS337, *STORE SET FOR PAGE >= CURRENT STORE? 08998 *IF YES, LOOP BACK TO FIND ANOTHER PAGE 08999 *Y=MASK 09000 AR>A, B(0), OR, 09001 JN(FPFS338F,FPFS338T); ----- ----- 9E0 0000438E 00001010 ----- 09002 .ORG FPFS338F, *MASK=0? 09003 * Need to clear MASK here because all the pages which meet the 09004 * search criteria defined by MASK may already be in a latch, 09005 * this would cause an endless loop. 09006 MA(MASK), 09007 Y(0), 09008 Y>RAM, 09009 JZ(FPFS300A,FPFS300B); ----- ----- 38E 00002390 73001100 ----- 09010 .ORG FPFS338T, *STORE SET FOR PAGE >= CURRENT STORE 09011 *OK TO RETURN TO SORT ROUTINE 09012 JUMP(FPFS335F); ----- ----- 38F 0000038C 00000000 ----- 09013 *COMMON EXIT TO SORT STORE ROUTINE 09014 .ORG FPFS335F, *RESTORE PIL RETURN DATA TO A 09015 MA(LOCAL), RAM>AR, 09016 JUMP(SST2Y); ----- ----- 38C 00020290 72000000 ----- 09017 *INITIALISED ALL STORES, SORT OUT ROW 24 09018 *COPY ROW24 FROM OLD STOR0 TO NEW STOR0 IF APIN 09019 * B=SYS2 09020 .ORG FPFS3T, *Y=APIN, B=OLDSTR (SOURCE LATCH) 09021 MA(OLDSTR), RAM>BR, 09022 A(APIN), BR>B, AND, 09023 JUMP(FPFS400); ----- ----- 35F 000109E1 71010801 ----- 09024 .ORG FPFS400, *A=STOR0 (DEST LATCH) 09025 *APIN? 09026 MA(STOR0), RAM>AR, 09027 JZ(FPFS401F,FPFS401T); ----- ----- 9E1 00022392 20000000 ----- 09028 .ORG FPFS401T, *B=STOR0 09029 MA(STOR0), RAM>BR, 09030 JUMP(FPFS410); ----- ----- 393 000100A1 20000000 ----- 09031 .ORG FPFS401F, *CALL CBR0 TO KEEP USER DEFINED PROMPT 09032 *KEEP ROW 24 DISPLAY 09033 *RETURN=1, RETURN TO FPFS410 09034 MA(RETURN), 09035 Y(1), 09036 Y>RAM, 09037 JUMP(CBR0); ----- ----- 392 00000996 7C011100 ----- 09038 * B=NEW STOR0 09039 .ORG FPFS410, *A=OLDSTR 09040 MA(OLDSTR), RAM>AR, 09041 JUMP(FPFS411); ----- ----- 0A1 000209E2 71000000 ----- 09042 .ORG FPFS411, *Y=NEW STOR0 XOR OLD STOR7 09043 AR.0F>A, BRHI>B, XOR, 09044 JUMP(FPFS412); ----- ----- 9E2 000009E3 000018CC ----- 09045 .ORG FPFS412, *NEW STOR0 = OLD STOR7? 09046 *STORE MSN = OLD STOR7 09047 MA(STORE), 09048 AR<<4>A, B(0), OR, 09049 Y>RAM, 09050 JZ(FPFS413F,FPFS413T); ----- ----- 9E3 00002394 77001130 ----- 09051 *STOR0 IS OLD STOR7 09052 .ORG FPFS413T, *B=VPPRG1 09053 MA(VPPRG1), RAM>BR, 09054 JUMP(FPFS440); ----- ----- 395 000109E4 61000000 ----- 09055 *COPY ROW 24 BUFFER FROM OLD STOR7 TO NEW STOR7 09056 .ORG FPFS413F, *OK TO COPY ACROSS 09057 *B=SOURCE LATCH 09058 MA(STORE), RAM>BR, 09059 JUMP(FPFS420); ----- ----- 394 000109E5 77000000 ----- 09060 .ORG FPFS420, *A=DEST LATCH 09061 MA(STOR7), RAM>AR, 09062 JUMP(FPFS421); ----- ----- 9E5 000209E6 27000000 ----- 09063 .ORG FPFS421, *CALL CBR0 09064 *RETURN=2, RETURN TO FPFS430 09065 MA(RETURN), 09066 Y(2), 09067 Y>RAM, 09068 JUMP(CBR0); ----- ----- 9E6 00000996 7C021100 ----- 09069 * RWL= NEW STOR7 09070 .ORG FPFS430, *POINT TO FLOF FLAGS 09071 Y(-16), 09072 Y>PR, 09073 JUMP(FPFS431); ----- ----- 0A2 000009E7 80F01000 ----- 09074 .ORG FPFS431, *CLEAR STOR7 FLOF FLAGS 09075 *B=VPPRG1 09076 MA(VPPRG1), RAM>BR, 09077 Y(0), 09078 Y>DR, 09079 JUMP(FPFS440); ----- ----- 9E7 000119E4 61001000 ----- 09080 * B=VPPRG1 09081 .ORG FPFS440, *Y=SBL 09082 A(SBL), BR>B, AND, 09083 JUMP(FPFS441); ----- ----- 9E4 000009E8 00800801 ----- 09084 .ORG FPFS441, *SBL=0, SBL? 09085 *IF YES, RETURN TO SST0A CALL 09086 MA(VPPRG1), 09087 A(>FF-SBL), BR>B, AND, 09088 Y>RAM, 09089 JZ(FPFS442F,VPP290); ----- ----- 9E8 00002396 617F0901 ----- 09090 .ORG FPFS442F, *RETURN TO SST0B CALL 09091 *AR=VPPRG1 09092 MA(VPPRG1), RAM>AR, 09093 JUMP(VPP310); ----- ----- 396 0002030B 61000000 ----- 09094 * 09095 *+++PAGE IN LATCH ROUTINE 09096 * 09097 * This routine checks whether the page in PU, PT and PM is 09098 * in a latch and if it has been captured. This information 09099 * is returned in AR in the following format:- 09100 * ----------------------------------------------------------------- 09101 * |CAP |store number |not in |latch number | 09102 * | | |latch | | 09103 * ----------------------------------------------------------------- 09104 * If the page is in a latch, the routine also returns the latch 09105 * flags (LAFx) in BR. 09106 * 09107 * The latch number is the highest latch number that contains 09108 * this page number. 09109 * RETURN=return pointer 09110 .ORG PIL0, *COUNT=7 09111 MA(COUNT), 09112 A(7), B(7), OR, 09113 Y>RAM, Y>AR, 09114 JUMP(PIL1F); ----- ----- 91E 0022039E 78071100 ----- 09115 * 09116 .ORG PIL1F, *AR=PU, PR=U0+COUNT 09117 MA(PU), RAM>AR, 09118 AR>A, B(U0), ADD, 09119 Y>PR, 09120 JUMP(PIL2); ----- ----- 39E 000209E9 F6200010 ----- 09121 .ORG PIL2, *BR=LATCH UNITS 09122 *AR=ARHI 09123 PR>MA, RAM>BR, 09124 ARHI>A, B(0), OR, 09125 Y>AR, 09126 JUMP(PIL3); ----- ----- 9E9 003309EA 00001020 ----- 09127 .ORG PIL3, *Y=LATCH UNITS - PU 09128 *BR=PR 09129 PR>BR, 09130 NAR>A, BR.0F>B, O>CIN, ADD, 09131 JUMP(PIL4); ----- ----- 9EA 004109EB 00000442 ----- 09132 .ORG PIL4, *SAME UNITS? 09133 *PR=BR-8 (POINT TO TENS) 09134 *AR=PT 09135 MA(PT), RAM>AR, 09136 A(-8), BR>B, ADD, 09137 Y>PR, 09138 JZ(PIL5F,PIL5T); ----- ----- 9EB 00022398 F5F80001 ----- 09139 .ORG PIL5F, *DIFFERENT UNITS 09140 *AR=COUNT 09141 MA(COUNT), RAM>AR, 09142 JUMP(PIL11F); ----- ----- 398 0002039C 78000000 ----- 09143 .ORG PIL5T, *SAME UNITS 09144 *BR=LATCH TENS 09145 *AR=ARHI 09146 PR>MA, RAM>BR, 09147 ARHI>A, B(0), OR, 09148 Y>AR, 09149 JUMP(PIL6); ----- ----- 399 003309EC 00001020 ----- 09150 .ORG PIL6, *Y=LATCH TENS - PT 09151 *BR=PR 09152 PR>BR, 09153 NAR>A, BR.0F>B, O>CIN, ADD, 09154 JUMP(PIL7); ----- ----- 9EC 004109ED 00000442 ----- 09155 .ORG PIL7, *SAME TENS? 09156 *PR=BR-8 (POINT TO MAG) 09157 *AR=PM 09158 MA(PM), RAM>AR, 09159 A(-8), BR>B, ADD, 09160 Y>PR, 09161 JZ(PIL8F,PIL8T); ----- ----- 9ED 0002239A F4F80001 ----- 09162 .ORG PIL8F, *DIFFERENT TENS 09163 *AR=COUNT 09164 MA(COUNT), RAM>AR, 09165 JUMP(PIL11F); ----- ----- 39A 0002039C 78000000 ----- 09166 .ORG PIL8T, *SAME TENS 09167 *BR=LATCH MAG 09168 *AR=ARHI 09169 PR>MA, RAM>BR, 09170 ARHI>A, B(0), OR, 09171 Y>AR, 09172 JUMP(PIL9); ----- ----- 39B 003309EE 00001020 ----- 09173 .ORG PIL9, *Y=LATCH MAG - PM 09174 NAR>A, BR.0F>B, O>CIN, ADD, 09175 JUMP(PIL10); ----- ----- 9EE 000009EF 00000442 ----- 09176 .ORG PIL10, *SAME MAG? 09177 *AR=COUNT 09178 MA(COUNT), RAM>AR, 09179 JZ(PIL11F,PIL11T); ----- ----- 9EF 0002239C 78000000 ----- 09180 * 09181 .ORG PIL11F, *PAGE IS NOT IN THIS LATCH 09182 *DEC COUNT, AR=COUNT 09183 MA(COUNT), 09184 AR>A, B(-1), ADD, 09185 Y>RAM, Y>AR, 09186 JUMP(PIL12); ----- ----- 39C 002209F0 78FF0110 ----- 09187 .ORG PIL12, *COUNT<0? 09188 *BR=RETURN 09189 MA(RETURN), RAM>BR, 09190 JN(PIL1F,PIL13T); ----- ----- 9F0 0001439E 7C000000 ----- 09191 *PAGE NOT IN A LATCH 09192 .ORG PIL13T, *Y=RETURN 09193 A(7), BR>B, AND, 09194 JUMP(PIL13A); ----- ----- 39F 000009F1 00070801 ----- 09195 .ORG PIL13A, *SET FLAG IN RETURN DATA 09196 *CASE RETURN=? 09197 Y(>08), 09198 Y>AR, 09199 JY(SST2Y); ----- ----- 9F1 0022C290 00081000 ----- 09200 *PAGE IN THIS LATCH, WHICH STORE? 09201 * AR==COUNT 09202 .ORG PIL11T, *SET STORE POINTER IN COUNT TO STORE 7 09203 AR>A, B(>70), OR, 09204 Y>AR, 09205 JUMP(PIL14F); ----- ----- 39D 002203A2 00701010 ----- 09206 * 09207 .ORG PIL14F, *POINT TO STORE TABLE LOC 09208 ARHI>A, B(STOR0), ADD, 09209 Y>PR, 09210 JUMP(PIL15); ----- ----- 3A2 000009F2 80200020 ----- 09211 .ORG PIL15, *BR=LATCH FOR THIS STORE 09212 PR>MA, RAM>BR, 09213 JUMP(PIL16); ----- ----- 9F2 001109F3 00000000 ----- 09214 .ORG PIL16, *COMPARE LATCH WITH LATCH IN TABLE 09215 AR.0F>A, BRHI>B, XOR, 09216 JUMP(PIL17); ----- ----- 9F3 000009F4 000018CC ----- 09217 .ORG PIL17, *Y=STORE NUMBER 09218 *LATCH IN THIS STORE? 09219 ARHI>A, B(0), OR, 09220 JZ(PIL18F,PIL18T); ----- ----- 9F4 000023A0 00001020 ----- 09221 .ORG PIL18F, *NOT IN THIS STORE 09222 *DEC STORE 09223 AR>A, B(-16), ADD, Y>AR, 09224 JZ(PIL14F,PIL19T); ----- ----- 3A0 002223A2 00F00010 ----- 09225 .ORG PIL19T, *LATCH NOT FOUND IN ANY STORE 09226 *BR=RETURN 09227 *ERROR 09228 MA(RETURN), RAM>BR, 09229 JUMP(PIL13T); ----- ----- 3A3 0001039F 7C000000 ----- 09230 *UPDATE CAP 09231 .ORG PIL18T, *PR=LAF0+COUNT 09232 AR.0F>A, B(LAF0), ADD, 09233 Y>PR, 09234 JUMP(PIL20); ----- ----- 3A1 000009F5 804000C0 ----- 09235 .ORG PIL20, *BR=LAFx 09236 *PR=LAF0+COUNT 09237 PR>MA, RAM>BR, 09238 AR.0F>A, B(LAF0), ADD, 09239 Y>PR, 09240 JUMP(PIL21); ----- ----- 9F5 001109F6 804000C0 ----- 09241 .ORG PIL21, *Y=CAP 09242 *BR=RETURN 09243 MA(RETURN), RAM>BR, 09244 A(CAP), BR>B, AND, 09245 JUMP(PIL22); ----- ----- 9F6 000109F7 7C800801 ----- 09246 .ORG PIL22, *PAGE CAPTURED? 09247 *Y=RETURN 09248 *BR=LAFx 09249 PR>MA, RAM>BR, 09250 A(7), BR>B, AND, 09251 JZ(PIL23F,PIL23T); ----- ----- 9F7 001123A4 00070801 ----- 09252 .ORG PIL23F, *YES, UPDATE CAP AND LATCH NUMBER IN RETURN DATA 09253 *CASE RETURN =? 09254 AR>A, B(CAP), OR, 09255 Y>AR, 09256 JY(SST2Y); ----- ----- 3A4 0022C290 00801010 ----- 09257 .ORG PIL23T, *NO, UPDATE CAP AND LATCH NUMBER IN RETURN DATA 09258 *CASE RETURN =? 09259 JY(SST2Y); ----- ----- 3A5 0000C290 00000000 ----- 09260 * 09261 *+++INLA: INITIALISE LATCH ROUTINE 09262 * 09263 * This routine initialises the latch in AR 09264 * to capture the page in PU, PT and PM 09265 * 09266 * input pars are:- 09267 * RETURN: return pointer 09268 * A: latch for init 09269 * PU,PT,PM: page for latch 09270 * local variables used are:- 09271 * COUNT 09272 * 09273 .ORG INLA0, *RWL=LATCH FOR INIT 09274 MA(RWL), 09275 AR>A, B(0), ADD, 09276 Y>RAM, Y>IO, 09277 JUMP(INLA0A); ----- ----- 92F 000009F8 0B004110 ----- 09278 .ORG INLA0A, *COUNT=LATCH FOR INIT 09279 MA(COUNT), 09280 AR>A, B(0), ADD, 09281 Y>RAM, 09282 JUMP(INLA1); ----- ----- 9F8 000009F9 78000110 ----- 09283 *INIT LAFx 09284 .ORG INLA1, *PR=INDEX TO LAFx 09285 AR>A, B(LAF0), ADD, 09286 Y>PR, 09287 JUMP(INLA2); ----- ----- 9F9 000009FA 80400010 ----- 09288 .ORG INLA2, *CLEAR LAFx 09289 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 09290 PR>MA, 09291 Y(0), 09292 Y>RAM, 09293 JUMP(INLA14); ----- ----- 9FA 001009FB 00001100 ----- 09294 *INITIALISE NON-DISPLAY AREA (P=-8 -> -24) 09295 *CLEAR CLEAR PACKET 26 FLAGS AND ROW MARKERS 09296 .ORG INLA14, *PR=-8 09297 Y(-8), 09298 Y>PR, 09299 JUMP(INLA17F); ----- ----- 9FB 000003A6 80F81000 ----- 09300 * 09301 .ORG INLA17F, *DR=0, BR=PR 09302 PR>BR, 09303 Y(0), 09304 Y>DR, 09305 JUMP(INLA15); ----- ----- 3A6 004119FC 00001000 ----- 09306 .ORG INLA15, *Y=BR+12 09307 A(12), BR>B, ADD, 09308 JUMP(INLA16); ----- ----- 9FC 000009FD 000C0001 ----- 09309 .ORG INLA16, *LAST BYTE? 09310 *IF YES, CALL PXTOLA0T TO LOAD LATCH WITH PM, PT, PU 09311 *RETURN!=3, RETURN TO INLA30F, 09312 *PR++ 09313 A(-1), BR>B, ADD, 09314 Y>PR, 09315 JZ(INLA17F,PXTOLA0T); ----- ----- 9FD 000023A6 80FF0001 ----- 09316 * 09317 *PXTOLA: LOAD LATCH WITH PU, PT AND PM 09318 * A=LATCH FOR LOAD, RETURN=RETURN POINTER 09319 *UPDATE UNITS 09320 .ORG PXTOLA0T, *PR= LATCH UNITS INDEX 09321 *AR=PU 09322 MA(PU), RAM>AR, 09323 AR>A, B(U0), ADD, 09324 Y>PR, 09325 JUMP(PXTOLA2); ----- ----- 3A7 000209FE F6200010 ----- 09326 .ORG PXTOLA2, *BR=OLD LATCH UNITS 09327 PR>MA, RAM>BR, 09328 JUMP(PXTOLA3); ----- ----- 9FE 001109FF 00000000 ----- 09329 .ORG PXTOLA3, *UPDATE LATCH UNITS 09330 PR>MA, PR>BR, 09331 ARHI>A, BR.F0>B, OR, 09332 Y>RAM, Y>IO, 09333 JUMP(PXTOLA4); ----- ----- 9FF 00510A00 00005123 ----- 09334 *UPDATE TENS 09335 .ORG PXTOLA4, *PR= LATCH TENS INDEX 09336 *AR=PT 09337 MA(PT), RAM>AR, 09338 A(-8), BR>B, ADD, 09339 Y>PR, 09340 JUMP(PXTOLA5); ----- ----- A00 00020A01 F5F80001 ----- 09341 .ORG PXTOLA5, *BR=OLD LATCH TENS 09342 PR>MA, RAM>BR, 09343 JUMP(PXTOLA6); ----- ----- A01 00110A02 00000000 ----- 09344 .ORG PXTOLA6, *UPDATE LATCH TENS 09345 PR>MA, PR>BR, 09346 ARHI>A, BR.F0>B, OR, 09347 Y>RAM, Y>IO, 09348 JUMP(PXTOLA7); ----- ----- A02 00510A03 00005123 ----- 09349 *UPDATE MAG 09350 .ORG PXTOLA7, *PR= LATCH MAG INDEX 09351 *AR=PM 09352 MA(PM), RAM>AR, 09353 A(-8), BR>B, ADD, 09354 Y>PR, 09355 JUMP(PXTOLA8); ----- ----- A03 00020A04 F4F80001 ----- 09356 .ORG PXTOLA8, *BR=OLD LATCH MAG 09357 PR>MA, RAM>BR, 09358 JUMP(PXTOLA9); ----- ----- A04 00110A05 00000000 ----- 09359 .ORG PXTOLA9, *UPDATE LATCH MAG 09360 PR>MA, 09361 ARHI>A, BR.F0>B, OR, 09362 Y>RAM, Y>IO, 09363 JUMP(PXTOLA10); ----- ----- A05 00100A06 00005123 ----- 09364 .ORG PXTOLA10, *A=RETURN 09365 MA(RETURN), RAM>AR, 09366 JUMP(PXTOLA11); ----- ----- A06 00020A07 7C000000 ----- 09367 .ORG PXTOLA11, *AR=COUNT (CONTAINS LATCH FOR INIT) 09368 *Y=RETURN-3 09369 MA(COUNT), RAM>AR, 09370 AR.0F>A, B(-3), ADD, 09371 JUMP(PXTOLA12); ----- ----- A07 00020A08 78FD00C0 ----- 09372 .ORG PXTOLA12, *RETURN? 09373 JZ(INLA30F,TPP102T); ----- ----- A08 000023A8 00000000 ----- 09374 *CLOSE ANY MAGS OPEN FOR THIS LATCH 09375 * A=COUNT 09376 .ORG INLA30F, *COUNT=7, INIT LOOP COUNT 09377 MA(COUNT), 09378 Y(7), 09379 Y>RAM, 09380 JUMP(INLA32); ----- ----- 3A8 00000A09 78071100 ----- 09381 .ORG INLA32, *SET MOP IN AR FOR COMPARISON 09382 *BR=COUNT 09383 MA(COUNT), RAM>BR, 09384 AR>A, B(MOP), OR, 09385 Y>AR, 09386 JUMP(INLA39F); ----- ----- A09 002303AC 78081010 ----- 09387 * 09388 .ORG INLA39F, *PR= MFx INDEX 09389 A(MF0), BR>B, ADD, 09390 Y>PR, 09391 JUMP(INLA33); ----- ----- 3AC 00000A0A 80580001 ----- 09392 .ORG INLA33, *BR= MFx 09393 PR>MA, RAM>BR, 09394 JUMP(INLA34); ----- ----- A0A 00110A0B 00000000 ----- 09395 .ORG INLA34, *COMPARE LATCH NUMBERS 09396 AR>A, BR.0F>B, XOR, 09397 JUMP(INLA35); ----- ----- A0B 00000A0C 00001812 ----- 09398 .ORG INLA35, *MAG OPEN FOR LATCH? 09399 JZ(INLA36F,INLA36T); ----- ----- A0C 000023AA 00000000 ----- 09400 .ORG INLA36T, *YES 09401 *CLEAR MO AND MLP 09402 PR>MA, 09403 A(>F0), BR>B, AND, 09404 Y>RAM, 09405 JUMP(INLA36F); ----- ----- 3AB 001003AA 00F00901 ----- 09406 .ORG INLA36F, *BR=COUNT 09407 MA(COUNT), RAM>BR, 09408 JUMP(INLA37); ----- ----- 3AA 00010A0D 78000000 ----- 09409 .ORG INLA37, *DEC COUNT 09410 MA(COUNT), 09411 A(-1), BR>B, ADD, 09412 Y>RAM, 09413 JUMP(INLA38); ----- ----- A0D 00000A0E 78FF0101 ----- 09414 .ORG INLA38, *BR=COUNT 09415 *COUNT<0? 09416 MA(COUNT), RAM>BR, 09417 JN(INLA39F,INLA39T); ----- ----- A0E 000143AC 78000000 ----- 09418 *EXIT 09419 .ORG INLA39T, *BR=RETURN 09420 MA(RETURN), RAM>BR, 09421 JUMP(INLA40); ----- ----- 3AD 00010A0F 7C000000 ----- 09422 .ORG INLA40, *Y=RETURN 09423 A(3), BR>B, AND, 09424 JUMP(INLA41); ----- ----- A0F 00000A10 00030801 ----- 09425 .ORG INLA41, *CASE RETURN=? 09426 JY(SST5Y); ----- ----- A10 0000C298 00000000 ----- 09427 * 09428 *+++PAGE NUMBER TO INVENTORY PAGE POINTER 09429 * 09430 * This routine will return in P a pointer the address 09431 * in the inventory/BTT page of the page number indexed 09432 * by A. Invalid page numbers will return P=0. 09433 * 09434 * input pars are:- 09435 * A: page number index 09436 * RETURN: return pointer 09437 * return pars are:- 09438 * A: return data from DBB 09439 * P,B: inv/BTT pointer 09440 * TPD: inv/BTT byte 09441 * RWL: latch for store 1 09442 * last Y, LOCAL: error code 09443 * local variables used are 09444 * RET3, RET4, LOCAL 09445 .ORG PNTIN0, *RET4=P=INDEX TO PAGE NUMBER 09446 MA(RET4), 09447 AR>A, B(0), ADD, 09448 Y>RAM, Y>PR, 09449 JUMP(PNTIN1); ----- ----- 857 00000A11 F9000110 ----- 09450 .ORG PNTIN1, *A=PAGE MAGS 09451 PR>MA, RAM>AR, 09452 JUMP(PNTIN2); ----- ----- A11 00120A12 00000000 ----- 09453 .ORG PNTIN2, *Y=MAG-8 09454 ARHI>A, B(-8), ADD, 09455 JUMP(PNTIN3); ----- ----- A12 00000A13 00F80020 ----- 09456 .ORG PNTIN3, *LEGAL MAG? 09457 *LOCAL MSN IS TEMP STORE FOR MAG 09458 *INIT LSN ERROR CODE TO ZERO 09459 MA(LOCAL), 09460 AR.F0>A, B(0), OR, 09461 Y>RAM, 09462 JN(PNTIN4F,PNTIN4T); ----- ----- A13 000043AE 720011D0 ----- 09463 .ORG PNTIN4F, *MAG ERROR 09464 *SET MAG STORE TO 0 09465 *ERROR CODE=1 09466 MA(LOCAL), 09467 Y(1), 09468 Y>RAM, 09469 JUMP(PNTIN4T); ----- ----- 3AE 000003AF 72011100 ----- 09470 .ORG PNTIN4T, *A=P=240 09471 A(120), B(120), ADD, 09472 Y>PR, Y>AR, 09473 JUMP(PNTIN5); ----- ----- 3AF 00220A14 80780000 ----- 09474 .ORG PNTIN5, *B=240, P=A=340 09475 PR>BR, 09476 AR>A, B(100), ADD, 09477 Y>PR, Y>AR, 09478 JUMP(PNTIN6); ----- ----- A14 00630A15 80640010 ----- 09479 .ORG PNTIN6, *A=580 09480 *B=MAG 09481 MA(LOCAL), RAM>BR, 09482 AR>A, BR>B, ADD, 09483 Y>AR, 09484 JUMP(PNTIN7); ----- ----- A15 00230A16 72000011 ----- 09485 .ORG PNTIN7, *Y=MAG 09486 A(7), BRHI>B, AND, 09487 JUMP(PNTIN8); ----- ----- A16 00000A17 0007080C ----- 09488 .ORG PNTIN8, *A=640, B=340 09489 *CASE MAG=? 09490 PR>BR, 09491 AR>A, B(60), ADD, 09492 Y>AR, 09493 JY(PNTIN10Y.0); ----- ----- A17 0063C7B0 003C0010 ----- 09494 * A=640, B=340, P=340 09495 *CASE MAG=0 09496 .ORG PNTIN10Y.0, 09497 *P=740 09498 MA(RET4), RAM>BR, 09499 AR>A, B(100), ADD, 09500 Y>PR, 09501 JUMP(PNTIN20); ----- ----- 7B0 00010A18 F9640010 ----- 09502 *CASE MAG=1 09503 .ORG PNTIN10Y.1, 09504 *P=40 09505 *B=INDEX TO PAGE MAGS 09506 MA(RET4), RAM>BR, 09507 Y(40), 09508 Y>PR, 09509 JUMP(PNTIN20); ----- ----- 7B1 00010A18 F9281000 ----- 09510 *CASE MAG=2 09511 .ORG PNTIN10Y.2, 09512 *P=140 09513 *B=INDEX TO PAGE MAGS 09514 MA(RET4), RAM>BR, 09515 A(70), B(70), ADD, 09516 Y>PR, 09517 JUMP(PNTIN20); ----- ----- 7B2 00010A18 F9460000 ----- 09518 *CASE MAG=3 09519 .ORG PNTIN10Y.3, 09520 *P=240 09521 *B=INDEX TO PAGE MAGS 09522 MA(RET4), RAM>BR, 09523 A(120), B(120), ADD, 09524 Y>PR, 09525 JUMP(PNTIN20); ----- ----- 7B3 00010A18 F9780000 ----- 09526 *CASE MAG=4 09527 .ORG PNTIN10Y.4, 09528 *P=340 09529 *B=INDEX TO PAGE MAGS 09530 MA(RET4), RAM>BR, 09531 A(0), BR>B, OR, 09532 Y>PR, 09533 JUMP(PNTIN20); ----- ----- 7B4 00010A18 F9001001 ----- 09534 *CASE MAG=5 09535 .ORG PNTIN10Y.5, 09536 *P=440 09537 *B=INDEX TO PAGE MAGS 09538 MA(RET4), RAM>BR, 09539 A(100), BR>B, ADD, 09540 Y>PR, 09541 JUMP(PNTIN20); ----- ----- 7B5 00010A18 F9640001 ----- 09542 *CASE MAG=6 09543 .ORG PNTIN10Y.6, 09544 *P=540 09545 *B=INDEX TO PAGE MAGS 09546 MA(RET4), RAM>BR, 09547 AR>A, B(-100), ADD, 09548 Y>PR, 09549 JUMP(PNTIN20); ----- ----- 7B6 00010A18 F99C0010 ----- 09550 *CASE MAG=7 09551 .ORG PNTIN10Y.7, 09552 *P=640 09553 *B=INDEX TO PAGE MAGS 09554 MA(RET4), RAM>BR, 09555 AR>A, B(0), OR, 09556 Y>PR, 09557 JUMP(PNTIN20); ----- ----- 7B7 00010A18 F9001010 ----- 09558 * P=BTT INDEX, B=POINTER TO PAGE MAG 09559 .ORG PNTIN20, *B=BTT INDEX, P=INDEX TO PAGE TENS 09560 PR>BR, 09561 A(1), BR>B, ADD, 09562 Y>PR, 09563 JUMP(PNTIN21); ----- ----- A18 00410A19 80010001 ----- 09564 .ORG PNTIN21, *A=PAGE TENS 09565 PR>MA, RAM>AR, 09566 JUMP(PNTIN22); ----- ----- A19 00120A1A 00000000 ----- 09567 .ORG PNTIN22, *Y=TENS-10 09568 ARHI>A, B(-10), ADD, 09569 JUMP(PNTIN23); ----- ----- A1A 00000A1B 00F60020 ----- 09570 .ORG PNTIN23, *Y=TENS, HEX TENS? 09571 ARHI>A, B(0), OR, 09572 JN(PNTIN24F,PNTIN24T); ----- ----- A1B 000043C0 00001020 ----- 09573 .ORG PNTIN24F, *HEX TENS 09574 *DO THE SAME AS IF TENS=9 09575 *ERROR CODE=1 09576 MA(LOCAL), 09577 Y(1), 09578 Y>RAM, 09579 JUMP(PNTIN30Y.9); ----- ----- 3C0 000007C9 72011100 ----- 09580 .ORG PNTIN24T, *DECIMAL TENS, CASE TENS=? 09581 *P= BTT INDEX 09582 A(0), BR>B, OR, 09583 Y>PR, 09584 JY(PNTIN30Y.0); ----- ----- 3C1 0000C7C0 80001001 ----- 09585 *CASE TENS=0 09586 .ORG PNTIN30Y.0, 09587 *NO TENS TO ADD 09588 *B=BTT INDEX 09589 *A=INDEX TO PAGE MAGS 09590 PR>BR, 09591 MA(RET4), RAM>AR, 09592 JUMP(PNTIN40); ----- ----- 7C0 00430A1C 79000000 ----- 09593 *CASE TENS=1 09594 .ORG PNTIN30Y.1, 09595 *ADD TENS INTO BTT INDEX 09596 A(10), BR>B, ADD, 09597 Y>PR, 09598 JUMP(PNTIN30Y.0); ----- ----- 7C1 000007C0 800A0001 ----- 09599 *CASE TENS=2 09600 .ORG PNTIN30Y.2, 09601 *ADD TENS INTO BTT INDEX 09602 A(20), BR>B, ADD, 09603 Y>PR, 09604 JUMP(PNTIN30Y.0); ----- ----- 7C2 000007C0 80140001 ----- 09605 *CASE TENS=3 09606 .ORG PNTIN30Y.3, 09607 *ADD TENS INTO BTT INDEX 09608 A(30), BR>B, ADD, 09609 Y>PR, 09610 JUMP(PNTIN30Y.0); ----- ----- 7C3 000007C0 801E0001 ----- 09611 *CASE TENS=4 09612 .ORG PNTIN30Y.4, 09613 *ADD TENS INTO BTT INDEX 09614 A(40), BR>B, ADD, 09615 Y>PR, 09616 JUMP(PNTIN30Y.0); ----- ----- 7C4 000007C0 80280001 ----- 09617 *CASE TENS=5 09618 .ORG PNTIN30Y.5, 09619 *ADD TENS INTO BTT INDEX 09620 A(50), BR>B, ADD, 09621 Y>PR, 09622 JUMP(PNTIN30Y.0); ----- ----- 7C5 000007C0 80320001 ----- 09623 *CASE TENS=6 09624 .ORG PNTIN30Y.6, 09625 *ADD TENS INTO BTT INDEX 09626 A(60), BR>B, ADD, 09627 Y>PR, 09628 JUMP(PNTIN30Y.0); ----- ----- 7C6 000007C0 803C0001 ----- 09629 *CASE TENS=7 09630 .ORG PNTIN30Y.7, 09631 *ADD TENS INTO BTT INDEX 09632 A(70), BR>B, ADD, 09633 Y>PR, 09634 JUMP(PNTIN30Y.0); ----- ----- 7C7 000007C0 80460001 ----- 09635 *CASE TENS=8 09636 .ORG PNTIN30Y.8, 09637 *ADD TENS INTO BTT INDEX 09638 A(80), BR>B, ADD, 09639 Y>PR, 09640 JUMP(PNTIN30Y.0); ----- ----- 7C8 000007C0 80500001 ----- 09641 *CASE TENS=9 09642 .ORG PNTIN30Y.9, 09643 *ADD TENS INTO BTT INDEX 09644 A(90), BR>B, ADD, 09645 Y>PR, 09646 JUMP(PNTIN30Y.0); ----- ----- 7C9 000007C0 805A0001 ----- 09647 * A=INDEX TO PAGE MAGS, B=BTT INDEX 09648 .ORG PNTIN40, *P=INDEX TO PAGE UNITS 09649 AR>A, B(2), ADD, 09650 Y>PR, 09651 JUMP(PNTIN41); ----- ----- A1C 00000A1D 80020010 ----- 09652 .ORG PNTIN41, *A=PAGE UNITS 09653 PR>MA, RAM>AR, 09654 JUMP(PNTIN42); ----- ----- A1D 00120A1E 00000000 ----- 09655 .ORG PNTIN42, *Y=PAGE UNITS- 10 09656 ARHI>A, B(-10), ADD, 09657 JUMP(PNTIN43); ----- ----- A1E 00000A1F 00F60020 ----- 09658 .ORG PNTIN43, *ADD UNITS INTO BTT INDEX 09659 *HEX UNITS? 09660 ARHI>A, BR>B, ADD, 09661 Y>PR, 09662 JN(PNTIN44F,PNTIN44T); ----- ----- A1F 000043C2 80000021 ----- 09663 .ORG PNTIN44F, *HEX UNITS, DO THE SAME AS IF TENS=9 09664 A(9), BR>B, ADD, 09665 Y>PR, 09666 JUMP(PNTIN44A); ----- ----- 3C2 00000A20 80090001 ----- 09667 .ORG PNTIN44A, *ERROR CODE=1 09668 MA(LOCAL), 09669 Y(1), 09670 Y>RAM, 09671 JUMP(PNTIN44T); ----- ----- A20 000003C3 72011100 ----- 09672 * P= COMPLETE BTT POINTER 09673 .ORG PNTIN44T, *READ AND DECODE BTT BYTE 09674 *CALL DBB0 09675 *RET3=0, RETURN TO PNTIN46Y 09676 MA(RET3), 09677 Y(0), 09678 Y>RAM, 09679 JUMP(DBB0); ----- ----- 3C3 00000A21 7A001100 ----- 09680 *EXIT 09681 * LOCAL=ERROR CODE 09682 .ORG PNTIN46Y, *B=RETURN 09683 MA(RETURN), RAM>BR, 09684 JUMP(PNTIN47); ----- ----- 740 00010A22 7C000000 ----- 09685 .ORG PNTIN47, *Y=RETURN 09686 *B=LOCAL 09687 MA(LOCAL), RAM>BR, 09688 A(>0F), BR>B, AND, 09689 JUMP(PNTIN48); ----- ----- A22 00010A23 720F0801 ----- 09690 .ORG PNTIN48, *CASE RETURN=? 09691 *Y=LOCAL=ERROR CODE 09692 *B=BTT POINTER 09693 PR>BR, 09694 MA(LOCAL), 09695 A(0), BR.0F>B, OR, 09696 Y>RAM, 09697 JY(DIP4Y); ----- ----- A23 0041C790 72001102 ----- 09698 * 09699 *+++INVENTORY PAGE POINTER TO PAGE NUMBER 09700 * 09701 * This routine will return in to PU,PT and PM the page 09702 * indexed by inventory/BTT pointer in P. 09703 * Invalid page numbers will return P=>F. 09704 * 09705 * input pars are:- 09706 * P: inv/BTT pointer 09707 * RETURN: return pointer 09708 * return pars are:- 09709 * PU, PT, PM page number 09710 * RET2, mag with mag=8 (not zero) 09711 * local variables used are:- 09712 * 09713 .ORG INTPN0, *B=POINTER 09714 *PU=0 09715 PR>BR, 09716 MA(PU), 09717 Y(0), 09718 Y>RAM, 09719 JUMP(INTPN1); ----- ----- 7A3 00410A24 76001100 ----- 09720 .ORG INTPN1, *A=POINTER 09721 A(0), BR>B, OR, 09722 Y>AR, 09723 JUMP(INTPN2); ----- ----- A24 00220A25 00001001 ----- 09724 .ORG INTPN2, *A=POINTER+100 09725 AR>A, B(100), ADD, 09726 Y>AR, 09727 JUMP(INTPN3); ----- ----- A25 00220A26 00640010 ----- 09728 .ORG INTPN3, *P=POINTER-39 09729 A(-39), BR>B, ADD, 09730 Y>PR, 09731 JUMP(INTPN5); ----- ----- A26 00000A27 80D90001 ----- 09732 .ORG INTPN5, *PT=0 09733 MA(PT), 09734 Y(0), 09735 Y>RAM, 09736 JUMP(INTPN8); ----- ----- A27 00000A28 75001100 ----- 09737 .ORG INTPN8, *PM=1 09738 *B=P 09739 PR>BR, 09740 MA(PM), 09741 Y(>10), 09742 Y>RAM, 09743 JUMP(INTPN9); ----- ----- A28 00410A29 74101100 ----- 09744 *P NOW RANGING FROM 1 UPWARDS, PU=PT=PM=0, B=P 09745 .ORG INTPN9, *P=B-1 09746 *B=PM 09747 MA(PM), RAM>BR, 09748 A(-1), BR>B, ADD, 09749 Y>PR, 09750 JUMP(INTPN10); ----- ----- A29 00010A2A F4FF0001 ----- 09751 .ORG INTPN10, *A=PU, P=0? 09752 *IF P=0, EXIT 09753 MA(PU), RAM>AR, 09754 JZ(INTPN11F,INTPN11T); ----- ----- A2A 000223C4 76000000 ----- 09755 .ORG INTPN11F, *Y=PU-9, B=PT 09756 MA(PT), RAM>BR, 09757 ARHI>A, B(-9), ADD, 09758 JUMP(INTPN12); ----- ----- 3C4 00010A2B 75F70020 ----- 09759 .ORG INTPN12, *PU=PU+1, CARRY? 09760 MA(PU), 09761 AR>A, B(>10), ADD, 09762 Y>RAM, 09763 JZ(INTPN13F,INTPN13T); ----- ----- A2B 000023C6 76100110 ----- 09764 .ORG INTPN13F, *NO CARRY, B=P 09765 PR>BR, 09766 JUMP(INTPN9); ----- ----- 3C6 00410A29 00000000 ----- 09767 .ORG INTPN13T, *CARRY TO TENS 09768 *PU=0 09769 MA(PU), 09770 Y(0), 09771 Y>RAM, 09772 JUMP(INTPN14); ----- ----- 3C7 00000A2C 76001100 ----- 09773 .ORG INTPN14, *Y=PT-9, A=PM 09774 MA(PM), RAM>AR, 09775 A(-9), BRHI>B, ADD, 09776 JUMP(INTPN15); ----- ----- A2C 00020A2D 74F7000C ----- 09777 .ORG INTPN15, *PT=PT+1, CARRY? 09778 MA(PT), 09779 A(>10), BR>B, ADD, 09780 Y>RAM, 09781 JZ(INTPN16F,INTPN16T); ----- ----- A2D 000023C8 75100101 ----- 09782 .ORG INTPN16F, *NO CARRY, B=P 09783 PR>BR, 09784 JUMP(INTPN9); ----- ----- 3C8 00410A29 00000000 ----- 09785 .ORG INTPN16T, *CARRY TO MAGS 09786 *PT=0 09787 MA(PT), 09788 Y(0), 09789 Y>RAM, 09790 JUMP(INTPN17); ----- ----- 3C9 00000A2E 75001100 ----- 09791 .ORG INTPN17, *Y=PM-8 09792 ARHI>A, B(-8), ADD, 09793 JUMP(INTPN18); ----- ----- A2E 00000A2F 00F80020 ----- 09794 .ORG INTPN18, *PM=PM+1, MAG OVERFLOW? 09795 *B=P 09796 PR>BR, 09797 MA(PM), 09798 AR>A, B(>10), ADD, 09799 Y>RAM, 09800 JUMP(INTPN9); ----- ----- A2F 00410A29 74100110 ----- 09801 *EXIT B=PM 09802 .ORG INTPN11T, *RET2= MAG WITH MAG 8= 8 (NOT ZERO) 09803 MA(RET2), 09804 A(0), BR.F0>B, OR, 09805 Y>RAM, 09806 JUMP(INTPN20); ----- ----- 3C5 00000A30 7B001103 ----- 09807 .ORG INTPN20, *Y=PM-8 09808 *A=RETURN 09809 MA(RETURN), RAM>AR, 09810 A(-8), BRHI>B, ADD, 09811 JUMP(INTPN20A); ----- ----- A30 00020A31 7CF8000C ----- 09812 .ORG INTPN20A, *Y=RETURN 09813 *MAG 8? 09814 AR>A, B(7), AND, 09815 JZ(INTPN21F,INTPN21T); ----- ----- A31 000023CA 00070810 ----- 09816 .ORG INTPN21F, *PM!=8 09817 JY(DIP20Y); ----- ----- 3CA 0000C730 00000000 ----- 09818 .ORG INTPN21T, *PM=8, SET TO 0 09819 MA(PM), 09820 Y(>00), 09821 Y>RAM, 09822 JY(DIP20Y); ----- ----- 3CB 0000C730 74001100 ----- 09823 * 09824 *+++SEARCH BTT 09825 * 09826 * This routine will searches the BTT/inventory page for 09827 * types of page. It searches forward or backwards 09828 * according to entry point. It returns a pointer to 09829 * the next or last page (as appropriate) if MASK is set 09830 * to zero, or if it can not find the type of page specified 09831 * in MASK. If the inventory page is not complete, the routine 09832 * will ignore the INCYCLE i/p flag. 09833 * 09834 * input pars are:- 09835 * MASK:- indicates bits to test, if MASK 09836 * is zero, the next or last page 09837 * will be returned 09838 * ----------------------------------------------------------------- 09839 * |INCYCLE|MP |AIT |SUBT |TV |BLOCK |GROUP |NORM | 09840 * ----------------------------------------------------------------- 09841 * RETURN:- return pointer 09842 * P: inv/BTT pointer 09843 * return pars are:- 09844 * A: the decoded BTT byte of the found page 09845 * MASK: set to zero if page not found 09846 * ----------------------------------------------------------------- 09847 * |INCYCLE|MP |AIT |SUBT |TV |BLOCK |GROUP |NORM | 09848 * ----------------------------------------------------------------- 09849 * P: inv/BTT pointer to found page 09850 * TPD: inv/BTT byte 09851 * last Y equal to A for page found test 09852 * local variables used are:- 09853 * LOCAL, RET2, RET3, COUNT 09854 *ENTRY POINT TO SEARCH FORWARDS 09855 .ORG SBT0A, *A=RET2=1 09856 MA(RET2), 09857 Y(1), 09858 Y>RAM, Y>AR, 09859 JUMP(SBT1); ----- ----- 4C8 00220A32 7B011100 ----- 09860 *ENTRY POINT TO SEARCH BACKWARDS 09861 .ORG SBT0B, *A=RET2=-1 09862 MA(RET2), 09863 Y(-1), 09864 Y>RAM, Y>AR, 09865 JUMP(SBT1); ----- ----- 4C9 00220A32 7BFF1100 ----- 09866 * 09867 .ORG SBT1, *B=INVCNT 09868 MA(INVCNT), RAM>BR, 09869 JUMP(SBT2); ----- ----- A32 00010A33 38000000 ----- 09870 .ORG SBT2, *Y= 'COMPLETE' FLAG 09871 A(1), BR>B, AND, 09872 JUMP(SBT3); ----- ----- A33 00000A34 00010801 ----- 09873 .ORG SBT3, *INVENTORY COMPLETE? 09874 *B=MASK 09875 MA(MASK), RAM>BR, 09876 JZ(SBT4F,SBT4T); ----- ----- A34 000123CC 73000000 ----- 09877 .ORG SBT4T, *INVENTORY NOT COMPLETE, CLEAR INCYCLE FLAG 09878 MA(MASK), 09879 A(>7F), BR>B, AND, 09880 Y>RAM, 09881 JUMP(SBT4F); ----- ----- 3CD 000003CC 737F0901 ----- 09882 * 09883 .ORG SBT4F, *B=POINTER 09884 *LOCAL= WRAP AROUND COUNT HUNDREDS 09885 PR>BR, 09886 MA(LOCAL), 09887 Y(8), 09888 Y>RAM, 09889 JUMP(SBT11); ----- ----- 3CC 00410A35 72081100 ----- 09890 .ORG SBT11, *COUNT= WRAP AROUND COUNT UNITS 09891 MA(COUNT), 09892 Y(101), 09893 Y>RAM, 09894 JUMP(SBT20); ----- ----- A35 00000A36 78651100 ----- 09895 * A=OFFSET, B=POINTER 09896 .ORG SBT20, *UPDATE POINTER 09897 *A=POINTER 09898 AR>A, BR>B, ADD, 09899 Y>PR, Y>AR, 09900 JUMP(SBT21); ----- ----- A36 00220A37 80000011 ----- 09901 .ORG SBT21, *POINTER>511? 09902 *Y=POINTER-40 09903 AR>A, B(-40), ADD, 09904 JN(SBT22F,SBT22T); ----- ----- A37 000043CE 00D80010 ----- 09905 .ORG SBT22F, *POINTER<512 09906 *POINTER<40? 09907 *A=-85 09908 Y(-85), 09909 Y>AR, 09910 JN(SBT23F,SBT23T); ----- ----- 3CE 002243D0 00AB1000 ----- 09911 .ORG SBT23T, *WRAP AROUND TO TOP 09912 *P=-185 09913 *B=LOCAL 09914 MA(LOCAL), RAM>BR, 09915 AR>A, B(-100), ADD, 09916 Y>PR, 09917 JUMP(SBT26T); ----- ----- 3D1 000103D3 F29C0010 ----- 09918 .ORG SBT23F, *NO WRAP AROUND 09919 JUMP(SBT26T); ----- ----- 3D0 000003D3 00000000 ----- 09920 * 09921 .ORG SBT22T, *POINTER>512 09922 *A=POINTER+84 09923 AR>A, B(84), ADD, 09924 Y>AR, 09925 JUMP(SBT24); ----- ----- 3CF 00220A38 00540010 ----- 09926 .ORG SBT24, *A=POINTER+184 09927 AR>A, B(100), ADD, 09928 Y>AR, 09929 JUMP(SBT25); ----- ----- A38 00220A39 00640010 ----- 09930 .ORG SBT25, *P>-185? 09931 JN(SBT26F,SBT26T); ----- ----- A39 000043D2 00000000 ----- 09932 .ORG SBT26F, *WRAP AROUND TO BOTTOM 09933 *P=40 09934 *B=LOCAL 09935 MA(LOCAL), RAM>BR, 09936 Y(40), 09937 Y>PR, 09938 JUMP(SBT26T); ----- ----- 3D2 000103D3 F2281000 ----- 09939 *P HAS BEEN UPDATED, CHECK IF ALL BTT SEARCHED 09940 .ORG SBT26T, *A=COUNT UNITS 09941 MA(COUNT), RAM>AR, 09942 JUMP(SBT27); ----- ----- 3D3 00020A3A 78000000 ----- 09943 .ORG SBT27, *DEC UNITS 09944 MA(COUNT), 09945 AR>A, B(-1), ADD, 09946 Y>RAM, 09947 JUMP(SBT28); ----- ----- A3A 00000A3B 78FF0110 ----- 09948 .ORG SBT28, *UNITS=0? 09949 *A=COUNT HUNDREDS 09950 MA(LOCAL), RAM>AR, 09951 JZ(SBT29F,SBT29T); ----- ----- A3B 000223D4 72000000 ----- 09952 .ORG SBT29T, *UNITS=0, DEC HUNDREDS 09953 MA(LOCAL), 09954 AR>A, B(-1), ADD, 09955 Y>RAM, 09956 JUMP(SBT30); ----- ----- 3D5 00000A3C 72FF0110 ----- 09957 .ORG SBT29F, *UNITS>0 09958 JUMP(SBT31F); ----- ----- 3D4 000003D6 00000000 ----- 09959 .ORG SBT30, *UNITS=100, HUNDREDS=0? 09960 MA(COUNT), 09961 Y(100), 09962 Y>RAM, 09963 JZ(SBT31F,SBT31T); ----- ----- A3C 000023D6 78641100 ----- 09964 .ORG SBT31T, *ALL BTT SEARCHED 09965 *SET MASK=0 TO EXIT AFTER DBB CALL 09966 MA(MASK), 09967 Y(0), 09968 Y>RAM, 09969 JUMP(SBT31F); ----- ----- 3D7 000003D6 73001100 ----- 09970 *CHECK DECODED BTT BYTE AGAINST MASK 09971 .ORG SBT31F, *CALL DBB TO DECODE BYTE 09972 *RET3=1, RETURN TO SBT33 09973 MA(RET3), 09974 Y(1), 09975 Y>RAM, 09976 JUMP(DBB0); ----- ----- 3D6 00000A21 7A011100 ----- 09977 *A=RETURN DATA FROM DBB 09978 .ORG SBT33, *B=MASK 09979 MA(MASK), RAM>BR, 09980 JUMP(SBT33A); ----- ----- 741 00010A3D 73000000 ----- 09981 .ORG SBT33A, *Y=MASK 09982 A(0), BR>B, OR, 09983 JUMP(SBT34); ----- ----- A3D 00000A3E 00001001 ----- 09984 .ORG SBT34, *Y=MASKED RETURN DATA 09985 *MASK=0? 09986 AR>A, BR>B, AND, 09987 JZ(SBT35F,SBT35T); ----- ----- A3E 000023D8 00000811 ----- 09988 .ORG SBT35T, *MASK=0, EXIT 09989 *B=RETURN 09990 MA(RETURN), RAM>BR, 09991 JUMP(SBT36F); ----- ----- 3D9 000103DA 7C000000 ----- 09992 .ORG SBT35F, *MASK NOT ZERO 09993 *THIS TYPE OF PAGE FOUND? 09994 *IF YES, EXIT 09995 *B=RETURN 09996 MA(RETURN), RAM>BR, 09997 JZ(SBT36F,SBT36T); ----- ----- 3D8 000123DA 7C000000 ----- 09998 .ORG SBT36T, *NOT FOUND YET 09999 *B=POINTER 10000 *A=OFFSET 10001 PR>BR, 10002 MA(RET2), RAM>AR, 10003 JUMP(SBT20); ----- ----- 3DB 00430A36 7B000000 ----- 10004 *EXIT 10005 * B=RETURN 10006 .ORG SBT36F, *Y=RETURN 10007 A(>0F), BR>B, AND, 10008 JUMP(SBT37); ----- ----- 3DA 00000A3F 000F0801 ----- 10009 .ORG SBT37, *CASE RETURN 10010 *Y=A FOR PAGE FOUND TEST 10011 AR>A, B(0), OR, 10012 JY(DIP18Y); ----- ----- A3F 0000C7A0 00001010 ----- 10013 * 10014 *+++DECODE BTT BYTE 10015 * 10016 * This routine will reads the BTT/inventory page byte 10017 * pointed to by P and sets flags accordingly in A. 10018 * 10019 * input pars are:- 10020 * RET3:- return pointer 10021 * P: inv/BTT pointer 10022 * return pars are:- 10023 * A: 10024 * ----------------------------------------------------------------- 10025 * |INCYCLE|MP |AIT |SUBT |TV |BLOCK |GROUP |NORM | 10026 * ----------------------------------------------------------------- 10027 * P: inv/BTT pointer 10028 * TPD: inv/BTT byte 10029 * RWL: latch for store 1 10030 * local variables used are:- 10031 * 10032 .ORG DBB0, *B=STOR1 10033 MA(STOR1), RAM>BR, 10034 JUMP(DBB1); ----- ----- A21 00010A40 21000000 ----- 10035 .ORG DBB1, *RWL=LATCH FOR STORE 1 10036 MA(RWL), 10037 A(0), BRHI>B, OR, 10038 Y>RAM, Y>IO, 10039 JUMP(DBB2); ----- ----- A40 00000A41 0B00510C ----- 10040 .ORG DBB2, *TPD=BTT/INV BYTE 10041 *B=RETURN POINTER 10042 RVDP, 10043 MA(RET3), RAM>BR, 10044 JUMP(DBB3); ----- ----- A41 00010A42 7A008000 ----- 10045 .ORG DBB3, *A=BYTE 10046 TPD>A, B(0), OR, 10047 Y>AR, 10048 JUMP(DBB4); ----- ----- A42 00220A43 00001090 ----- 10049 .ORG DBB4, *Y=BYTE LO NIB-12 10050 *PAGE IN INVENTORY? 10051 AR.0F>A, B(-12), ADD, 10052 JN(DBB5F,DBB5T); ----- ----- A43 000043DC 00F400C0 ----- 10053 .ORG DBB5T, *PAGE IN INVENTORY, SET INCYCLE BIT 10054 *VALID BTT CODE? 10055 *A=>80 10056 Y(>80), 10057 Y>AR, 10058 JN(DBB6F,DBB6T); ----- ----- 3DD 002243DE 00801000 ----- 10059 .ORG DBB5F, *PAGE NOT IN INVENTORY, CLEAR INCYCLE BIT 10060 *VALID BTT CODE? IF NOT, EXIT 10061 *A=>00 10062 Y(>00), 10063 Y>AR, 10064 JN(DBB6F,DBB6T); ----- ----- 3DC 002243DE 00001000 ----- 10065 .ORG DBB6T, *VALID BTT CODE, Y=BTT CODE 10066 TPD.0F>A, B(0), OR, 10067 JUMP(DBB7); ----- ----- 3DF 00000A44 000010A0 ----- 10068 .ORG DBB7, *CASE ON BTT CODE 10069 JY(DBB10Y); ----- ----- A44 0000C750 00000000 ----- 10070 .ORG DBB10Y, *CASE BTT CODE=0 10071 *NO BITS TO SET 10072 JUMP(DBB6F); ----- ----- 750 000003DE 00000000 ----- 10073 .ORG DBB11, *CASE BTT CODE=1 10074 *MP=0, AIT=1, SUBT=1 10075 *TV=0, BLOCK=0, GROUP=1, NORM=0 10076 AR>A, B(>32), OR, 10077 Y>AR, 10078 JUMP(DBB6F); ----- ----- 751 002203DE 00321010 ----- 10079 .ORG DBB12, *CASE BTT CODE=2 10080 *MP=0, AIT=1, SUBT=0 10081 *TV=1, BLOCK=1, GROUP=0, NORM=0 10082 AR>A, B(>2C), OR, 10083 Y>AR, 10084 JUMP(DBB6F); ----- ----- 752 002203DE 002C1010 ----- 10085 .ORG DBB13, *CASE BTT CODE=3 10086 *MP=1, AIT=1, SUBT=0 10087 *TV=1, BLOCK=1, GROUP=0, NORM=0 10088 AR>A, B(>6C), OR, 10089 Y>AR, 10090 JUMP(DBB6F); ----- ----- 753 002203DE 006C1010 ----- 10091 .ORG DBB14, *CASE BTT CODE=4 10092 *MP=0, AIT=1, SUBT=0 10093 *TV=0, BLOCK=1, GROUP=0, NORM=0 10094 AR>A, B(>24), OR, 10095 Y>AR, 10096 JUMP(DBB6F); ----- ----- 754 002203DE 00241010 ----- 10097 .ORG DBB15, *CASE BTT CODE=5 10098 *MP=1, AIT=1, SUBT=0 10099 *TV=0, BLOCK=1, GROUP=0, NORM=0 10100 AR>A, B(>64), OR, 10101 Y>AR, 10102 JUMP(DBB6F); ----- ----- 755 002203DE 00641010 ----- 10103 .ORG DBB16, *CASE BTT CODE=6 10104 *MP=0, AIT=1, SUBT=0 10105 *TV=0, BLOCK=0, GROUP=1, NORM=0 10106 AR>A, B(>22), OR, 10107 Y>AR, 10108 JUMP(DBB6F); ----- ----- 756 002203DE 00221010 ----- 10109 .ORG DBB17, *CASE BTT CODE=7 10110 *MP=1, AIT=1, SUBT=0 10111 *TV=0, BLOCK=0, GROUP=1, NORM=0 10112 AR>A, B(>62), OR, 10113 Y>AR, 10114 JUMP(DBB6F); ----- ----- 757 002203DE 00621010 ----- 10115 .ORG DBB18, *CASE BTT CODE=8 10116 *MP=0, AIT=0, SUBT=0 10117 *TV=0, BLOCK=0, GROUP=0, NORM=1 10118 AR>A, B(>01), OR, 10119 Y>AR, 10120 JUMP(DBB6F); ----- ----- 758 002203DE 00011010 ----- 10121 .ORG DBB19, *CASE BTT CODE=9 10122 *MP=0, AIT=1, SUBT=0 10123 *TV=0, BLOCK=0, GROUP=0, NORM=1 10124 AR>A, B(>21), OR, 10125 Y>AR, 10126 JUMP(DBB6F); ----- ----- 759 002203DE 00211010 ----- 10127 .ORG DBB1A, *CASE BTT CODE=A 10128 *MP=1, AIT=0, SUBT=0 10129 *TV=0, BLOCK=0, GROUP=0, NORM=1 10130 AR>A, B(>41), OR, 10131 Y>AR, 10132 JUMP(DBB6F); ----- ----- 75A 002203DE 00411010 ----- 10133 .ORG DBB1B, *CASE BTT CODE=B 10134 *MP=1, AIT=1, SUBT=0 10135 *TV=0, BLOCK=0, GROUP=0, NORM=1 10136 AR>A, B(>61), OR, 10137 Y>AR, 10138 JUMP(DBB6F); ----- ----- 75B 002203DE 00611010 ----- 10139 *COMMON EXIT 10140 .ORG DBB6F, *Y=RETURN POINTER 10141 A(1), BR>B, AND, 10142 JUMP(DBB20); ----- ----- 3DE 00000A45 00010801 ----- 10143 .ORG DBB20, *CASE RETURN 10144 *B=RETURN (FOR PNTIN RETURN) 10145 MA(RETURN), RAM>BR, 10146 JY(PNTIN46Y); ----- ----- A45 0001C740 7C000000 ----- 10147 * 10148 *+++DPTP: MOVE DPU, DPT AND DPM TO SCRATCH STORAGE IN PM, PT AND PU 10149 * AR=RETURN POINTER 10150 .ORG DPTP0, *BR=DPM 10151 MA(DPM), RAM>BR, 10152 JUMP(DPTP1); ----- ----- 914 00010A46 68000000 ----- 10153 .ORG DPTP1, *PM=DPM 10154 MA(PM), 10155 A(0), BR>B, OR, 10156 Y>RAM, 10157 JUMP(DPTP2); ----- ----- A46 00000A47 74001101 ----- 10158 .ORG DPTP2, *BR=DPT 10159 MA(DPT), RAM>BR, 10160 JUMP(DPTP3); ----- ----- A47 00010A48 69000000 ----- 10161 .ORG DPTP3, *PT=DPT 10162 MA(PT), 10163 A(0), BR>B, OR, 10164 Y>RAM, 10165 JUMP(DPTP4); ----- ----- A48 00000A49 75001101 ----- 10166 .ORG DPTP4, *AR=DPU 10167 *Y=RETURN POINTER 10168 MA(DPU), RAM>BR, 10169 AR>A, B(1), AND, 10170 JUMP(DPTP5); ----- ----- A49 00010A4A 6A010810 ----- 10171 .ORG DPTP5, *PU=DPU 10172 MA(PU), 10173 A(0), BR>B, OR, 10174 Y>RAM, 10175 JY(VPP250Y); ----- ----- A4A 0000C3F0 76001101 ----- 10176 * 10177 *+++GET FLOF LINK 10178 * 10179 * This routine places the FLOF link pointed by the link number 10180 * in A in PU, PT and PM. If the link is null, the las Y will 10181 * be non-zero. 10182 * 10183 * input pars are:- 10184 * A: indicates link (0 is red -> 4 is index) 10185 * RETURN: return pointer 10186 * return pars are:- 10187 * PU,PT,PM contains the link 10188 * last Y non-zero for a null link 10189 * TPD: FLOF flags:- 10190 * ----------------------------------------------------------------- 10191 * |P27R |P24R | X | |DR24 |other packet 27 flags | 10192 * ----------------------------------------------------------------- 10193 * local variables used are:- 10194 * RET2, 10195 * 10196 .ORG GFL0, *B=STOR0 10197 *P IS POINTER TO LINK TENS AND UNITS 10198 MA(STOR0), RAM>BR, 10199 AR>A, B(-24), ADD, 10200 Y>PR, 10201 JUMP(GFL10); ----- ----- 9D6 00010A4B A0E80010 ----- 10202 .ORG GFL10, *RWL=DISPLAY PAGE LATCH 10203 MA(RWL), 10204 A(0), BRHI>B, OR, 10205 Y>RAM, Y>IO, 10206 JUMP(GFL20); ----- ----- A4B 00000A4C 0B00510C ----- 10207 .ORG GFL20, *TPD=LINK TENS AND UNITS 10208 *RET2=LINK 10209 RVDP, 10210 MA(RET2), 10211 AR>A, B(0), OR, 10212 Y>RAM, 10213 JUMP(GFL21); ----- ----- A4C 00000A4D 7B009110 ----- 10214 *UPDATE PT WITH TENS 10215 .ORG GFL21, *A=PT=TPD 10216 MA(PT), 10217 TPD>A, B(0), OR, 10218 Y>RAM, Y>AR, 10219 JUMP(GFL22); ----- ----- A4D 00220A4E 75001190 ----- 10220 *UPDATE PU WITH UNITS 10221 .ORG GFL22, * 10222 MA(PU), 10223 AR<<4>A, B(0), OR, 10224 Y>RAM, 10225 JUMP(GFL30); ----- ----- A4E 00000A4F 76001130 ----- 10226 .ORG GFL30, *A=LINK 10227 MA(RET2), RAM>AR, 10228 JUMP(GFL31); ----- ----- A4F 00020A50 7B000000 ----- 10229 .ORG GFL31, *POINT TO LINK MAG 10230 *P=-19+LINK/2 10231 AR>>1>A, B(-19), ADD, 10232 Y>PR, 10233 JUMP(GFL32); ----- ----- A50 00000A51 80ED00E0 ----- 10234 .ORG GFL32, *Y=LINK-4 10235 *TPD=LINK MAG 10236 RVDP, 10237 AR>A, B(-4), ADD, 10238 JUMP(GFL33); ----- ----- A51 00000A52 00FC8010 ----- 10239 .ORG GFL33, *INDEX LINK? 10240 *Y=LINK LSB 10241 *B=RETURN 10242 MA(RETURN), RAM>BR, 10243 AR>A, B(1), AND, 10244 JZ(GFL34F,GFL34T); ----- ----- A52 000123E0 7C010810 ----- 10245 .ORG GFL34T, *INDEX, MAG IN TOP NIB 10246 *PM=TPD 10247 MA(PM), 10248 TPD.F0>A, B(0), OR, 10249 Y>RAM, 10250 JUMP(GFL40); ----- ----- 3E1 00000A53 740011B0 ----- 10251 .ORG GFL34F, *NOT INDEX 10252 *MAG IN TOP OR BOTTOM NIB? 10253 *A=TPD 10254 TPD>A, B(0), OR, 10255 Y>AR, 10256 JZ(GFL35F,GFL35T); ----- ----- 3E0 002223E2 00001090 ----- 10257 .ORG GFL35F, *MAG IN TOP NIB 10258 *PM=TPD 10259 MA(PM), 10260 TPD.F0>A, B(0), OR, 10261 Y>RAM, 10262 JUMP(GFL40); ----- ----- 3E2 00000A53 740011B0 ----- 10263 .ORG GFL35T, *MAG IN BOTTOM NIB 10264 *PM=TPD<<4 10265 MA(PM), 10266 AR<<4>A, B(0), OR, 10267 Y>RAM, 10268 JUMP(GFL40); ----- ----- 3E3 00000A53 74001130 ----- 10269 * B=RETURN 10270 .ORG GFL40, *P=1-6 (POINTER TO FLOF FLAGS) 10271 *A=PT (HAS UNITS IN BOTTOM NIB) 10272 MA(PT), RAM>AR, 10273 Y(-16), 10274 Y>PR, 10275 JUMP(GFL40A); ----- ----- A53 00020A54 F5F01000 ----- 10276 .ORG GFL40A, *CLEAR UNITS FROM BOTTOM NIB 10277 MA(PT), 10278 AR.F0>A, B(0), OR, 10279 Y>RAM, 10280 JUMP(GFL41); ----- ----- A54 00000A55 750011D0 ----- 10281 .ORG GFL41, *Y=LINK TENS AND UNITS XOR >FF 10282 *TPD=FLOF FLAGS 10283 RVDP, 10284 AR>A, B(>FF), XOR, 10285 JUMP(GFL42); ----- ----- A55 00000A56 00FF9810 ----- 10286 .ORG GFL42, *NULL LINK? 10287 *Y= P27R (PACKET 27 RECEIVED FLAG) 10288 TPD>A, B(>80), AND, 10289 JZ(GFL43F,GFL43T); ----- ----- A56 000023E4 00800890 ----- 10290 .ORG GFL43F, *NOT NULL, PACKET 27 RECEIVED? 10291 *A=0 10292 Y(0), 10293 Y>AR, 10294 JZ(GFL44F,GFL44T); ----- ----- 3E4 002223E6 00001000 ----- 10295 .ORG GFL43T, *MARK LINK AS NULL IN A 10296 Y(>FF), 10297 Y>AR, 10298 JUMP(GFL44F); ----- ----- 3E5 002203E6 00FF1000 ----- 10299 .ORG GFL44T, *PACKET 27 NOT RECEIVED, SAME AS NULL LINK 10300 Y(>FF), 10301 Y>AR, 10302 JUMP(GFL44F); ----- ----- 3E7 002203E6 00FF1000 ----- 10303 * A<>0 IF NULL LINK, B=RETURN 10304 .ORG GFL44F, *Y=RETURN 10305 A(3), BR>B, AND, 10306 JUMP(GFL45); ----- ----- 3E6 00000A57 00030801 ----- 10307 .ORG GFL45, *Y=NULL LINK MARKER 10308 *CASE RETURN=? 10309 AR>A, B(0), OR, 10310 JY(CKR200Y); ----- ----- A57 0000C060 00001010 ----- 10311 * 10312 *+++GET FAVOURITE PAGE 10313 * 10314 * This routine places the favourite page pointed to by the store 10315 * number in A in PU, PT and PM. 10316 * 10317 * input pars are:- 10318 * A: indicates store (2 -> 5) 10319 * RETURN: return pointer 10320 * 10321 * return pars are:- 10322 * PU,PT,PM favourite page number, lsn contains favp 10323 * high nibble (non-zero if page not prog'd) 10324 * A: STOR0 10325 * B: PU 10326 * LAST Y: non-zero for page not prog'd 10327 * 10328 * local variables used are:- 10329 * MASK, LOCAL 10330 * 10331 .ORG GFP0T, *A=STORE-2 10332 AR>A, B(-2), ADD, 10333 Y>AR, 10334 JUMP(GFP10); ----- ----- 369 00220A58 00FE0010 ----- 10335 .ORG GFP10, *P=POINTER TO RED AND YELLOW LINKS 10336 *CASE STORE-2? 10337 Y(-7), 10338 Y>PR, 10339 JY(GFP20Y); ----- ----- A58 0000C208 80F91000 ----- 10340 * 10341 .ORG GFP20Y, *CASE RED LINK 10342 *RWL=5 10343 MA(RWL), 10344 Y(5), 10345 Y>RAM, Y>IO, 10346 JUMP(GFP30); ----- ----- 208 00000A59 0B055100 ----- 10347 .ORG GFP21, *CASE GREEN LINK 10348 *P=POINTER TO GREEN LINK 10349 Y(-4), 10350 Y>PR, 10351 JUMP(GFP20Y); ----- ----- 209 00000208 80FC1000 ----- 10352 .ORG GFP22, *CASE YELLOW LINK 10353 *RWL=6 10354 MA(RWL), 10355 Y(6), 10356 Y>RAM, Y>IO, 10357 JUMP(GFP30); ----- ----- 20A 00000A59 0B065100 ----- 10358 .ORG GFP23, *CASE CYAN LINK 10359 *P=POINTER TO CYAN LINK 10360 Y(-4), 10361 Y>PR, 10362 JUMP(GFP22); ----- ----- 20B 0000020A 80FC1000 ----- 10363 * P=POINTER TO LINK MAGS 10364 .ORG GFP30, *INIT DIGIT COUNT 10365 Y(4), 10366 Y>AR, 10367 JUMP(GFP40); ----- ----- A59 00220A5A 00041000 ----- 10368 *DIGIT LOOP START 10369 * A=LOOP, P=POINTER TO DIGIT 10370 .ORG GFP40, *LOCAL-- 10371 *TPD=DIGIT 10372 RVDP, 10373 MA(LOCAL), 10374 AR>A, B(-1), ADD, 10375 Y>RAM, 10376 JUMP(GFP42); ----- ----- A5A 00000A5B 72FF8110 ----- 10377 .ORG GFP42, *CASE LOCAL=? 10378 *A=TPD 10379 *B=RETURN 10380 MA(RETURN), RAM>BR, 10381 TPD>A, B(0), OR, 10382 Y>AR, 10383 JY(GFP50Y); ----- ----- A5B 0023C540 7C001090 ----- 10384 .ORG GFP50Y, *LOCAL=0, EXIT 10385 *Y=RETURN 10386 *B=PU 10387 MA(PU), RAM>BR, 10388 A(3), BR>B, AND, 10389 JUMP(GFP70); ----- ----- 540 00010A5C 76030801 ----- 10390 .ORG GFP51, *LOCAL=1 10391 *PUT POINTER TO PU IN MASK 10392 MA(MASK), 10393 Y(PU), 10394 Y>RAM, 10395 JUMP(GFP60); ----- ----- 541 00000A5D 73761100 ----- 10396 .ORG GFP52, *LOCAL=2 10397 *PUT POINTER TO PT IN MASK 10398 MA(MASK), 10399 Y(PT), 10400 Y>RAM, 10401 JUMP(GFP60); ----- ----- 542 00000A5D 73751100 ----- 10402 .ORG GFP53, *LOCAL=3 10403 *PUT POINTER TO PM IN MASK 10404 MA(MASK), 10405 Y(PM), 10406 Y>RAM, 10407 JUMP(GFP53A); ----- ----- 543 00000A5E 73741100 ----- 10408 .ORG GFP53A, *CLEAR INVALID BIT IN MAG 10409 AR>A, B(>F7), AND, 10410 Y>AR, 10411 JUMP(GFP60); ----- ----- A5E 00220A5D 00F70810 ----- 10412 *NEED TO SWAP HI AND LO NIBBLES 10413 * A=DIGIT, MASK=POINTER TO Px IN SCRATCH RAM 10414 .ORG GFP60, *B=DIGIT POINTER, P LSN=FAVP DIGIT MSN 10415 PR>BR, 10416 ARHI>A, B(0), OR, 10417 Y>PR, 10418 JUMP(GFP61); ----- ----- A5D 00410A5F 80001020 ----- 10419 .ORG GFP61, *P=POINTER TO DIGIT 10420 *B LSN=FAVP MSN 10421 PR>BR, 10422 A(0), BR>B, OR, 10423 Y>PR, 10424 JUMP(GFP62); ----- ----- A5F 00410A60 80001001 ----- 10425 .ORG GFP62, *A=FAVP DIGIT WITH SWAPPED NIBBLES 10426 *B=POINTER TO PU/PT/PM 10427 MA(MASK), RAM>BR, 10428 AR<<4>A, BR.0F>B, OR, 10429 Y>AR, 10430 JUMP(GFP63); ----- ----- A60 00230A61 73001032 ----- 10431 .ORG GFP63, *P=POINTER TO PU/PT/PM 10432 *B=POINTER TO NEXT DIGIT 10433 PR>BR, 10434 A(0), BR>B, OR, 10435 Y>PR, 10436 JUMP(GFP64); ----- ----- A61 00410A62 80001001 ----- 10437 .ORG GFP64, *UPDATE PU/PT/PM 10438 PR>MA, 10439 AR>A, B(0), OR, 10440 Y>RAM, 10441 JUMP(GFP65); ----- ----- A62 00100A63 00001110 ----- 10442 .ORG GFP65, *POINT TO NEXT DIGIT 10443 *A=LOCAL 10444 MA(LOCAL), RAM>AR, 10445 A(1), BR>B, ADD, 10446 Y>PR, 10447 JUMP(GFP40); ----- ----- A63 00020A5A F2010001 ----- 10448 *LOOP END 10449 * LAST Y WAS RETURN 10450 .ORG GFP70, *CASE RETURN=? 10451 *Y='DASH' AND 'SPACE' FLAGS 10452 *(IF NON-ZERO, PAGE NOT PROGRAMMED) 10453 *A=STOR0 10454 MA(STOR0), RAM>AR, 10455 A(>0C), BR>B, AND, 10456 JY(FPFS60Y); ----- ----- A5C 0002C270 200C0801 ----- 10457 * 10458 *+++GET NORMAL PAGE 10459 * 10460 * This routine places the page pointed to by the store 10461 * number in A in PU, PT and PM. 10462 * 10463 * input pars are:- 10464 * A: indicates store (2 -> 5) 10465 * 10466 .ORG GNP0Y, *P=INDEX TO STORx 10467 AR>A, B(STOR0), ADD, 10468 Y>PR, 10469 JUMP(GNP1); ----- ----- 544 00000A64 80200010 ----- 10470 .ORG GNP1, *B=LATCH FOR STORx 10471 PR>MA, RAM>BR, 10472 JUMP(GNP2); ----- ----- A64 00110A65 00000000 ----- 10473 .ORG GNP2, *P=INDEX TO LATCH MAGS 10474 A(M0), BRHI>B, ADD, 10475 Y>PR, 10476 JUMP(GNP3); ----- ----- A65 00000A66 8010000C ----- 10477 .ORG GNP3, *A=LATCH MAGS 10478 *P=INDEX TO LATCH TENS 10479 PR>MA, RAM>AR, 10480 A(T0), BRHI>B, ADD, 10481 Y>PR, 10482 JUMP(GNP4); ----- ----- A66 00120A67 8018000C ----- 10483 .ORG GNP4, *PM=LATCH MAGS 10484 MA(PM), 10485 AR<<4>A, B(0), OR, 10486 Y>RAM, 10487 JUMP(GNP5); ----- ----- A67 00000A68 74001130 ----- 10488 .ORG GNP5, *A=LATCH TENS 10489 *P=INDEX TO LATCH UNITS 10490 PR>MA, RAM>AR, 10491 A(U0), BRHI>B, ADD, 10492 Y>PR, 10493 JUMP(GNP6); ----- ----- A68 00120A69 8020000C ----- 10494 .ORG GNP6, *PT=LATCH TENS 10495 MA(PT), 10496 AR<<4>A, B(0), OR, 10497 Y>RAM, 10498 JUMP(GNP7); ----- ----- A69 00000A6A 75001130 ----- 10499 .ORG GNP7, *A=LATCH UNITS 10500 PR>MA, RAM>AR, 10501 JUMP(GNP8); ----- ----- A6A 00120A6B 00000000 ----- 10502 .ORG GNP8, *PU=LATCH UNITS 10503 *RETURN TO GAP ROUTINE 10504 MA(PU), 10505 AR<<4>A, B(0), OR, 10506 Y>RAM, 10507 JUMP(GAP60A); ----- ----- A6B 00000A6C 76001130 ----- 10508 ***GAP: GENERATE A PROMPT 10509 * BR=STOR0 10510 .ORG GAP0, *RWL=LATCH FOR STORE 0 10511 MA(RWL), 10512 A(0), BRHI>B, OR, 10513 Y>RAM, Y>IO, 10514 JUMP(GAP0A); ----- ----- 336 00000A6D 0B00510C ----- 10515 .ORG GAP0A, *BR=SYS2 10516 MA(SYS2), RAM>BR, 10517 JUMP(GAP0B); ----- ----- A6D 00010A6E 09000000 ----- 10518 .ORG GAP0B, *AR=EXPREG 10519 *Y=APIN 10520 MA(EXPREG), RAM>AR, 10521 A(APIN), BR>B, AND, 10522 JUMP(GAP1); ----- ----- A6E 00020A6F 63010801 ----- 10523 .ORG GAP1, *Y=CPRF 10524 *AUTO PROMPTS ENABLED? 10525 AR>A, B(CPRF), AND, 10526 JZ(GAP2F,GAP2T); ----- ----- A6F 000023E8 00040810 ----- 10527 *AUTO PROMPTS ENABLED, GENERATE A PROMPT 10528 .ORG GAP2T, *CLEAR PROMPTS FIRST? 10529 *CPRF=0, OLD CPRF? 10530 *AR=EXPREG FOR GAP3T 10531 MA(EXPREG), 10532 AR>A, B(>FF-CPRF), AND, 10533 Y>RAM, Y>AR, 10534 JZ(GAP3F,GAP3T); ----- ----- 3E9 002223EA 63FB0910 ----- 10535 *CLEAR ROW 24 FIRST 10536 .ORG GAP3F, *PR=-64 (POINT TO ROW 24 COL 0) 10537 Y(-64), 10538 Y>PR, 10539 JUMP(GAP7F); ----- ----- 3EA 000003EC 80C01000 ----- 10540 * 10541 .ORG GAP7F, *B=P, CLEAR LOC 10542 PR>BR, 10543 Y(>20), 10544 Y>DR, 10545 JUMP(GAP5); ----- ----- 3EC 00411A70 00201000 ----- 10546 .ORG GAP5, *Y=COL+25 10547 A(25), BR>B, ADD, 10548 JUMP(GAP6); ----- ----- A70 00000A71 00190001 ----- 10549 .ORG GAP6, *PR++ 10550 *LAST COL? 10551 A(1), BR>B, ADD, 10552 Y>PR, 10553 JZ(GAP7F,GAP7T); ----- ----- A71 000023EC 80010001 ----- 10554 .ORG GAP7T, *EXIT ROW 24 CLEAR 10555 *AR=EXPREG 10556 MA(EXPREG), RAM>AR, 10557 JUMP(GAP3T); ----- ----- 3ED 000203EB 63000000 ----- 10558 * AR=EXPREG 10559 .ORG GAP3T, *Y=USM 10560 AR>A, B(USM), AND, 10561 JUMP(GAP3A); ----- ----- 3EB 00000A72 00020810 ----- 10562 .ORG GAP3A, *USM? 10563 *Y=SRTC 10564 *B=PEN 10565 MA(PEN), RAM>BR, 10566 AR>A, B(SRTC), AND, 10567 JZ(GAP4F,GAP4T); ----- ----- A72 000123EE 1B010810 ----- 10568 *USER STATUS MODE, COPY STATUS TO 24 10569 * AR=EXPREG, LAST Y WAS SRTC 10570 *FIRST WRITE START AND END BOX CHARS 10571 .ORG GAP4F, *STATUS READY TO COPY? 10572 *SRTC=0 10573 MA(EXPREG), 10574 AR>A, B(>FF-SRTC), AND, 10575 Y>RAM, 10576 JZ(GAP11F,GAP11T); ----- ----- 3EE 000023F2 63FE0910 ----- 10577 .ORG GAP11T, *NO STATUS READY, EXIT 10578 JUMP(GAP2F); ----- ----- 3F3 000003E8 00000000 ----- 10579 .ORG GAP11F, *PR=-34 10580 Y(-34), 10581 Y>PR, 10582 JUMP(GAP12); ----- ----- 3F2 00000A73 80DE1000 ----- 10583 .ORG GAP12, *END BOX 10584 Y(>0A), 10585 Y>DR, 10586 JUMP(GAP13); ----- ----- A73 00001A74 000A1000 ----- 10587 .ORG GAP13, *PR=-56 10588 10589 Y(-56), 10590 Y>PR, 10591 JUMP(GAP14); ----- ----- A74 00000A75 80C81000 ----- 10592 .ORG GAP14, *FIRST BOX 10593 Y(>0B), 10594 Y>DR, 10595 JUMP(GAP15); ----- ----- A75 00001A76 000B1000 ----- 10596 .ORG GAP15, *PR=-55 10597 Y(-55), 10598 Y>PR, 10599 JUMP(GAP16); ----- ----- A76 00000A77 80C91000 ----- 10600 .ORG GAP16, *SECOND BOX 10601 *AR=STOR0 10602 MA(STOR0), RAM>AR, 10603 Y(>0B), 10604 Y>DR, 10605 JUMP(GAP17); ----- ----- A77 00021A78 200B1000 ----- 10606 *INITIALISE VARIABLES FOR COPY LOOP 10607 .ORG GAP17, *RWL=AR MSN=2 10608 MA(RWL), 10609 AR.F0>A, B(2), OR, 10610 Y>RAM, Y>AR, Y>IO, 10611 JUMP(GAP18); ----- ----- A78 00220A79 0B0251D0 ----- 10612 * AR MSN= LATCH FOR STORE 0 10613 * AR LSN= LATCH OF STORED STATUS FIELD 10614 .ORG GAP18, *PR=POINTER TO 1ST STATUS STORE CHAR 10615 *BR=POINTER TO START POSITION IN STOR0 10616 PR>BR, 10617 Y(-6), 10618 Y>PR, 10619 JUMP(GAP25F); ----- ----- A79 004103F4 80FA1000 ----- 10620 *START OF COPY LOOP 10621 .ORG GAP25F, *TPD=STATUS CHAR 10622 RVDP, 10623 JUMP(GAP20); ----- ----- 3F4 00000A7A 00008000 ----- 10624 .ORG GAP20, *INCREMENT STORE0 POINTER 10625 *SWAP POINTERS 10626 PR>BR, 10627 A(1), BR>B, ADD, 10628 Y>PR, 10629 JUMP(GAP21); ----- ----- A7A 00410A7B 80010001 ----- 10630 .ORG GAP21, *RWL=STORE 0 LATCH 10631 MA(RWL), 10632 ARHI>A, B(0), OR, 10633 Y>RAM, Y>IO, 10634 JUMP(GAP22); ----- ----- A7B 00000A7C 0B005120 ----- 10635 .ORG GAP22, *WRITE STATUS CHAR TO STORE 0 10636 *BR=STATUS STORE POINTER 10637 TPD>A, B(0), OR, 10638 Y>DR, 10639 JUMP(GAP23); ----- ----- A7C 00001A7D 00001090 ----- 10640 .ORG GAP23, *INCREMENT STORE POINTER 10641 *SWAP POINTERS 10642 PR>BR, 10643 A(1), BR>B, ADD, 10644 Y>PR, 10645 JUMP(GAP24); ----- ----- A7D 00410A7E 80010001 ----- 10646 .ORG GAP24, *LAST STATUS CHARACTER IN THIS GROUP? 10647 *RWL=STATUS STORE LATCH 10648 MA(RWL), 10649 AR.0F>A, B(0), ADD, 10650 Y>RAM, Y>IO, 10651 JZ(GAP25F,GAP25T); ----- ----- A7E 000023F4 0B0041C0 ----- 10652 *COMPLETED COPY OF THIS GROUP OF STATUS CHARS 10653 .ORG GAP25T, *Y=STATUS STORE LATCH-4 10654 AR.0F>A, B(-4), ADD, 10655 JUMP(GAP25A); ----- ----- 3F5 00000A7F 00FC00C0 ----- 10656 .ORG GAP25A, *ANOTHER GROUP? 10657 *POINT TO NEXT GROUP 10658 MA(RWL), 10659 AR>A, B(1), ADD, 10660 Y>AR, Y>RAM, Y>IO, 10661 JZ(GAP26F,GAP26T); ----- ----- A7F 002223F6 0B014110 ----- 10662 .ORG GAP26F, *INIT STORE POINTER TO BEGINNING OF NEXT GROUP 10663 Y(-7), 10664 Y>PR, 10665 JUMP(GAP25F); ----- ----- 3F6 000003F4 80F91000 ----- 10666 *FINISHED COPY 10667 .ORG GAP26T, *EXIT USER STATUS MODE 10668 JUMP(GAP2F); ----- ----- 3F7 000003E8 00000000 ----- 10669 *GENERATE A ROW 24 DISPLAY FOR A PAGE CAPTURE MODE 10670 * AR=EXPREG, B=PEN 10671 .ORG GAP4T, *Y=PEN-4 10672 A(-4), BRHI>B, ADD, 10673 JUMP(GAP4A); ----- ----- 3EF 00000A80 00FC000C ----- 10674 .ORG GAP4A, *SUB-PAGE MODE? 10675 *P=POINTER TO START OF PROMPT ROW 10676 *B=SYS1 10677 MA(SYS1), RAM>BR, 10678 Y(-64), 10679 Y>PR, 10680 JN(GAP4BF,GAP4BT); ----- ----- A80 000143F8 88C01000 ----- 10681 *MAIN PAGE MODE 10682 .ORG GAP4BT, *Y=PCM 10683 *B=MREG0 10684 MA(MREG0), RAM>BR, 10685 A(3), BRHI>B, AND, 10686 JUMP(GAP30); ----- ----- 3F9 00010A81 3903080C ----- 10687 .ORG GAP30, *CASE PCM=? 10688 *INIT THISRW FOR TOP MENU 10689 MA(THISRW), 10690 Y(27), 10691 Y>RAM, 10692 JY(GAP40Y); ----- ----- A81 0000C788 7D1B1100 ----- 10693 *CASE NORMAL 10694 .ORG GAP40Y, *Y=PMNM 10695 A(PMNM), BR>B, AND, 10696 JUMP(GAP50); ----- ----- 788 00000A82 00040801 ----- 10697 *CASE TOP 10698 .ORG GAP41, *P=POINTER TO START OF PROMPT ROW 10699 *THISRW=27 ###1 10700 Y(-64), 10701 Y>PR, 10702 JUMP(GAP100); ----- ----- 789 00000A83 80C01000 ----- 10703 *CASE FLOF 10704 .ORG GAP42, *A=FLFREG 10705 MA(FLFREG), RAM>AR, 10706 JUMP(GAP42A); ----- ----- 78A 00020A84 12000000 ----- 10707 .ORG GAP42A, *Y=P27FLF 10708 AR>A, B(P27FLF), AND, 10709 JUMP(GAP42B); ----- ----- A84 00000A85 00400810 ----- 10710 .ORG GAP42B, *NEED TO GENERATE A ROW 24? 10711 *B=SYS2 10712 MA(SYS2), RAM>BR, 10713 JZ(GAP42CF,GAP42CT); ----- ----- A85 000123FA 09000000 ----- 10714 .ORG GAP42CF, *CALL PAGE NUMBER MENU ROUTINE 10715 *CALL PND50T 10716 *RETURN=1, RETURN TO GAP51 10717 MA(RETURN), 10718 Y(1), 10719 Y>RAM, 10720 JUMP(PND50T); ----- ----- 3FA 00000A86 7C011100 ----- 10721 .ORG GAP42CT, *NO, COPY ROW24 FROM STORE 6 10722 *CPYR24=1 10723 MA(SYS2), 10724 A(CPYR24), BR>B, OR, 10725 Y>RAM, 10726 JUMP(GAP2F); ----- ----- 3FB 000003E8 09041101 ----- 10727 *CASE FAVP 10728 .ORG GAP43, *GET PAGE PREFIX 10729 *CALL PND50T 10730 *RETURN=1, RETURN TO GAP51 10731 MA(RETURN), 10732 Y(1), 10733 Y>RAM, 10734 JUMP(PND50T); ----- ----- 78B 00000A86 7C011100 ----- 10735 *GENERATE A NORMAL MODE MENU 10736 * LAST Y WAS PMNM 10737 .ORG GAP50, *PMNM=1? IF NO GET PAGE PREFIX 10738 * 10739 * TCJ Jan 94, 10740 * *CALL PND50T 10741 * *RETURN=1, RETURN TO GAP51 10742 * MA(RETURN), 10743 * Y(1), 10744 * Y>RAM, 10745 * JZ(GAP50AF,PND50T); 10746 JZ(GAP50AF,TCJGAP00T); ----- ----- A82 000023FC 00000000 ----- 10747 * 10748 *MAKE PLUS/ MINUS MENU 10749 .ORG GAP50AF, *SET P TO START POINT 10750 *JUMP TO PLUS/ MINUS ROUTINE 10751 Y(-55), 10752 Y>PR, 10753 JUMP(GAP200); ----- ----- 3FC 00000A87 80C91000 ----- 10754 * 10755 * TCJ Jan 94 10756 * If NMOFF in MREG2 is set, then check that inventory 10757 * is complete before generating normal prompt. 10758 * 10759 .ORG TCJGAP00T, * AR = NMOFF flag 10760 MA(MREG2), RAM>AR, 10761 JUMP(TCJGAP01); ----- ----- 3FD 00020A88 6E000000 ----- 10762 * 10763 .ORG TCJGAP01, * AR = inventory complete flag 10764 * Y = NMOFF flag 10765 MA(INVCNT), RAM>AR, 10766 AR>A, B(NMOFF), AND, 10767 JUMP(TCJGAP02); ----- ----- A88 00020A89 38040810 ----- 10768 * 10769 .ORG TCJGAP02, * NMOFF == 0 ? 10770 * Y = inventory complete flag 10771 AR>A, B(1), AND, 10772 JZ(TCJGAP03F,TCJGAP03T); ----- ----- A89 000023FE 00010810 ----- 10773 * 10774 .ORG TCJGAP03F, * NMOFF is set, 10775 * Inventory complete ? 10776 JZ(TCJGAP04F,TCJGAP04T); ----- ----- 3FE 00002400 00000000 ----- 10777 * 10778 .ORG TCJGAP04F, * Inventory complete, 10779 * CALL PND50T 10780 * RETURN=1, RETURN TO GAP51 10781 MA(RETURN), 10782 Y(1), 10783 Y>RAM, 10784 JUMP(PND50T); ----- ----- 400 00000A86 7C011100 ----- 10785 * 10786 .ORG TCJGAP04T, * Inventory not complete, 10787 * abort prompt generation 10788 JUMP(GAP2F); ----- ----- 401 000003E8 00000000 ----- 10789 * 10790 .ORG TCJGAP03T, * NMOFF not set 10791 * CALL PND50T 10792 * RETURN=1, RETURN TO GAP51 10793 MA(RETURN), 10794 Y(1), 10795 Y>RAM, 10796 JUMP(PND50T); ----- ----- 3FF 00000A86 7C011100 ----- 10797 * 10798 *+++GENERATE PAGE NUMBER MENU 10799 * 10800 * This routine generates the default NORMAL menu, a FLOF menu 10801 * for pages with nor row 24 and the favourite page menu. 10802 * 10803 * input pars are:- 10804 * A: page pre-fix letter 10805 * SYS1: indicates NORMAL, FLOF or FAVP 10806 * return pars are:- 10807 * local variables used are:- 10808 * 10809 .ORG GAP51, *STORE=PREFIX LETTER 10810 MA(STORE), 10811 AR>A, B(0), OR, 10812 Y>RAM, 10813 JUMP(GAP52); ----- ----- 051 00000A8A 77001110 ----- 10814 *WRITE FIRST THREE CHARS (BOX,BOX,RED) 10815 .ORG GAP52, *P=POINTER TO BEGINNING OF ROW 10816 Y(-64), 10817 Y>PR, 10818 JUMP(GAP53); ----- ----- A8A 00000A8B 80C01000 ----- 10819 .ORG GAP53, *D=BOX 10820 Y(>0B), 10821 Y>DR, 10822 JUMP(GAP54); ----- ----- A8B 00001A8C 000B1000 ----- 10823 .ORG GAP54, *P=-63 10824 Y(-63), 10825 Y>PR, 10826 JUMP(GAP55); ----- ----- A8C 00000A8D 80C11000 ----- 10827 .ORG GAP55, *D=BOX 10828 Y(>0B), 10829 Y>DR, 10830 JUMP(GAP56); ----- ----- A8D 00001A8E 000B1000 ----- 10831 .ORG GAP56, *P=-62 10832 Y(-62), 10833 Y>PR, 10834 JUMP(GAP57); ----- ----- A8E 00000A8F 80C21000 ----- 10835 .ORG GAP57, *D=ALPHA RED 10836 *B=SYS1 10837 MA(SYS1), RAM>BR, 10838 Y(>01), 10839 Y>DR, 10840 JUMP(GAP58); ----- ----- A8F 00011A90 08011000 ----- 10841 *INIT PAGE NUMBER LOOP COUNT 10842 .ORG GAP58, *A=4 10843 MA(RET3), 10844 Y(4), 10845 Y>RAM, 10846 JUMP(GAP59F); ----- ----- A90 00000422 7A041100 ----- 10847 *LOOP START 10848 * B=SYS1 10849 .ORG GAP59F, *Y=PCM 10850 *A=RET3 10851 MA(RET3), RAM>AR, 10852 A(3), BRHI>B, AND, 10853 JUMP(GAP59A); ----- ----- 422 00020A91 7A03080C ----- 10854 .ORG GAP59A, *CASE PCM=? 10855 *IF NORMAL, JUMP TO GNP0Y 10856 *RETURN TO GAP60A, 10857 *A=STORE POINTER 10858 AR>A, B(1), ADD, 10859 Y>AR, 10860 JY(GNP0Y); ----- ----- A91 0022C544 00010010 ----- 10861 .ORG GAP60A, *SET REVERSE VIDEO FOR ALL NORMAL DISPLAY 10862 MA(LOCAL), 10863 Y(>01), 10864 Y>RAM, 10865 JUMP(GAP66T); ----- ----- A6C 00000403 72011100 ----- 10866 *CASE FLOF 10867 .ORG GAP62, *A=LINK POINTER 10868 AR>A, B(-2), ADD, 10869 Y>AR, 10870 JUMP(GAP62A); ----- ----- 546 00220A92 00FE0010 ----- 10871 .ORG GAP62A, *CALL GFL0 10872 *RETURN=3, RETURN TO GAP62B 10873 MA(RETURN), 10874 Y(3), 10875 Y>RAM, 10876 JUMP(GFL0); ----- ----- A92 000009D6 7C031100 ----- 10877 .ORG GAP62B, *NULL LINK? 10878 *SET LOCAL FOR REVERSE VIDEO 10879 MA(LOCAL), 10880 Y(>01), 10881 Y>RAM, 10882 JZ(GAP62CF,GAP66T); ----- ----- 063 00002402 72011100 ----- 10883 .ORG GAP62CF, *NULL PAGE, INHIBIT PAGE DISPLAY 10884 MA(LOCAL), 10885 Y(>02), 10886 Y>RAM, 10887 JUMP(GAP66T); ----- ----- 402 00000403 72021100 ----- 10888 *CASE FAVP 10889 .ORG GAP63, *CALL GFP0T 10890 *RETURN=1, RETURN TO GAP63B 10891 MA(RETURN), 10892 Y(1), 10893 Y>RAM, 10894 JUMP(GFP0T); ----- ----- 547 00000369 7C011100 ----- 10895 * A=STOR0, B=PU, LAST Y WAS 'DASH' AND SPACE' FLAGS 10896 .ORG GAP63B, *FAVOURITE PAGE PROGRAMMED? 10897 *Y=REVERSE VIDEO FLAG 10898 A(>02), BR>B, AND, 10899 JZ(GAP63CF,GAP63CT); ----- ----- 271 00002404 00020801 ----- 10900 *FAVOURITE PAGE HAS NOT BEEN PROGRAMMED 10901 .ORG GAP63CF, *NOT PROGRAMMED, FLAG SET TO ENABLE REVERSE DISPLAY? 10902 *RESTORE RWL TO DISPLAY PAGE 10903 MA(RWL), 10904 ARHI>A, B(0), OR, 10905 Y>RAM, Y>IO, 10906 JZ(GAP63DF,GAP63DT); ----- ----- 404 00002406 0B005120 ----- 10907 .ORG GAP63DF, *DISPLAY IN REVERSE VIDEO 10908 MA(LOCAL), 10909 Y(>01), 10910 Y>RAM, 10911 JUMP(GAP66T); ----- ----- 406 00000403 72011100 ----- 10912 .ORG GAP63DT, *DO NOT DISPLAY IN REVERSE VIDEO 10913 MA(LOCAL), 10914 Y(>00), 10915 Y>RAM, 10916 JUMP(GAP66T); ----- ----- 407 00000403 72001100 ----- 10917 *FAVOURITE PAGE HAS BEEN PROGRAMMED 10918 .ORG GAP63CT, *Y=INHIBIT REVERSE VIDEO FLAG 10919 *A=STOR0 10920 MA(STOR0), RAM>AR, 10921 A(>01), BR>B, AND, 10922 JUMP(GAP63CA); ----- ----- 405 00020A93 20010801 ----- 10923 .ORG GAP63CA, *REVERSE VIDEO DISPLAY INHIBITED? 10924 *RESTORE RWL TO DISPLAY PAGE 10925 MA(RWL), 10926 ARHI>A, B(0), OR, 10927 Y>RAM, Y>IO, 10928 JZ(GAP63CBF,GAP63CBT); ----- ----- A93 00002408 0B005120 ----- 10929 .ORG GAP63CBF, *DO NOT DISPLAY IN REVERSE VIDEO 10930 MA(LOCAL), 10931 Y(>00), 10932 Y>RAM, 10933 JUMP(GAP66T); ----- ----- 408 00000403 72001100 ----- 10934 .ORG GAP63CBT, *CALL PIL TO SEE IF FAVP IN A LATCH 10935 *RETURN=4, RETURN TO GAP63E 10936 MA(RETURN), 10937 Y(4), 10938 Y>RAM, 10939 JUMP(PIL0); ----- ----- 409 0000091E 7C041100 ----- 10940 .ORG GAP63E, *Y=STORE FIELD AND NOT IN LATCH FLAG 10941 *A=STOR0 10942 MA(STOR0), RAM>AR, 10943 AR>A, B(>78), AND, 10944 JUMP(GAP63G); ----- ----- 294 00020A94 20780810 ----- 10945 .ORG GAP63G, *FAVP PAGE THE DISPLAYED PAGE? 10946 *RESTORE RWL TO DISPLAY PAGE 10947 MA(RWL), 10948 ARHI>A, B(0), OR, 10949 Y>RAM, Y>IO, 10950 JZ(GAP63HF,GAP63HT); ----- ----- A94 0000240A 0B005120 ----- 10951 .ORG GAP63HT, *YES, DISPLAY IN REVERSE VIDEO 10952 MA(LOCAL), 10953 Y(>01), 10954 Y>RAM, 10955 JUMP(GAP66T); ----- ----- 40B 00000403 72011100 ----- 10956 .ORG GAP63HF, *DO NOT DISPLAY IN REVERSE VIDEO 10957 MA(LOCAL), 10958 Y(>00), 10959 Y>RAM, 10960 JUMP(GAP66T); ----- ----- 40A 00000403 72001100 ----- 10961 *DIFFERENT PAGE CAPTURE MODES MERGE HERE 10962 * PU,PT,PM IS PAGE NUMBER 10963 * LOCAL LSB ENABLES REVERSE VIDEO 10964 * LOCAL 2LSB INHIBITS DISPLAY OF NULL PAGE 10965 .ORG GAP66T, *A=LOOP COUNT 10966 MA(RET3), RAM>AR, 10967 JUMP(GAP67); ----- ----- 403 00020A95 7A000000 ----- 10968 .ORG GAP67, *DEC LOOP COUNT 10969 MA(RET3), 10970 AR>A, B(-1), ADD, 10971 Y>RAM, 10972 JUMP(GAP68); ----- ----- A95 00000A96 7AFF0110 ----- 10973 .ORG GAP68, *CASE LOOP COUNT? 10974 JY(GAP70Y); ----- ----- A96 0000C5E8 00000000 ----- 10975 * 10976 .ORG GAP70Y, *CASE RED PAGE 10977 *POINT COLOUR FOR NEXT PAGE 10978 Y(-54), 10979 Y>PR, 10980 JUMP(GAP70A); ----- ----- 5E8 00000A97 80CA1000 ----- 10981 .ORG GAP70A, *NEXT PAGE IS GREEN 10982 *B=POINTER 10983 PR>BR, 10984 Y(>02), 10985 Y>DR, 10986 JUMP(GAP75); ----- ----- A97 00411A98 00021000 ----- 10987 .ORG GAP71, *CASE GREEN PAGE 10988 *POINT COLOUR FOR NEXT PAGE 10989 Y(-45), 10990 Y>PR, 10991 JUMP(GAP71A); ----- ----- 5E9 00000A99 80D31000 ----- 10992 .ORG GAP71A, *NEXT PAGE IS YELLOW 10993 *B=POINTER 10994 PR>BR, 10995 Y(>03), 10996 Y>DR, 10997 JUMP(GAP75); ----- ----- A99 00411A98 00031000 ----- 10998 .ORG GAP72, *CASE YELLOW PAGE 10999 *POINT COLOUR FOR NEXT PAGE 11000 Y(-36), 11001 Y>PR, 11002 JUMP(GAP72A); ----- ----- 5EA 00000A9A 80DC1000 ----- 11003 .ORG GAP72A, *NEXT PAGE IS CYAN 11004 *B=POINTER 11005 PR>BR, 11006 Y(>06), 11007 Y>DR, 11008 JUMP(GAP75); ----- ----- A9A 00411A98 00061000 ----- 11009 .ORG GAP73, *CASE CYAN PAGE 11010 *POINT COLOUR FOR NEXT PAGE 11011 Y(-27), 11012 Y>PR, 11013 JUMP(GAP73A); ----- ----- 5EB 00000A9B 80E51000 ----- 11014 .ORG GAP73A, *NO NEXT PAGE 11015 *B=POINTER 11016 PR>BR, 11017 Y(>20), 11018 Y>DR, 11019 JUMP(GAP75); ----- ----- A9B 00411A98 00201000 ----- 11020 *CLEAR FIRST CHARACTER AFTER DIGITS 11021 .ORG GAP75, *P=B-1 11022 A(-1), BR>B, ADD, 11023 Y>PR, 11024 JUMP(GAP76); ----- ----- A98 00000A9C 80FF0001 ----- 11025 .ORG GAP76, *D=>20 11026 *B=POINTER 11027 PR>BR, 11028 Y(>20), 11029 Y>DR, 11030 JUMP(GAP77); ----- ----- A9C 00411A9D 00201000 ----- 11031 *WRITE PAGE PREFIX 11032 .ORG GAP77, *POINT TO PAGE PREFIX 11033 *A=PAGE PREFIX 11034 MA(STORE), RAM>AR, 11035 A(-4), BR>B, ADD, 11036 Y>PR, 11037 JUMP(GAP78); ----- ----- A9D 00020A9E F7FC0001 ----- 11038 .ORG GAP78, *D=PAGE PREFIX 11039 *B=POINTER 11040 *A=LOCAL 11041 PR>BR, 11042 MA(LOCAL), RAM>AR, 11043 AR>A, B(0), OR, 11044 Y>DR, 11045 JUMP(GAP79); ----- ----- A9E 00431A9F 72001010 ----- 11046 .ORG GAP79, *Y=NULL PAGE FLAG 11047 AR>A, B(>02), AND, 11048 JUMP(GAP79A); ----- ----- A9F 00000AA0 00020810 ----- 11049 .ORG GAP79A, *Y=REVERSE FLAG 11050 *NULL PAGE? 11051 AR>A, B(>01), AND, 11052 JZ(GAP79BF,GAP79BT); ----- ----- AA0 0000240C 00010810 ----- 11053 *INHIBIT DISPLAY OF A NULL PAGE 11054 .ORG GAP79BF, *POINT TO BEGINNING OF PAGE FIELD 11055 A(-2), BR>B, ADD, 11056 Y>PR, 11057 JUMP(GAP79C); ----- ----- 40C 00000AA1 80FE0001 ----- 11058 .ORG GAP79C, *D=ALPHA BLACK 11059 *B=POINTER 11060 PR>BR, 11061 Y(>00), 11062 Y>DR, 11063 JUMP(GAP81A); ----- ----- AA1 00411AA2 00001000 ----- 11064 *NOT A NULL PAGE 11065 .ORG GAP79BT, *POINT TO BEGINNING OF PAGE FIELD 11066 *DISPLAY PAGE IN REVERSE VIDEO? 11067 A(-2), BR>B, ADD, 11068 Y>PR, 11069 JZ(GAP80F,GAP80T); ----- ----- 40D 0000240E 80FE0001 ----- 11070 *DISPLAY PAGE IN REVERSE VIDEO 11071 .ORG GAP80F, *D=NEW BACKGROUND 11072 *B=POINTER 11073 PR>BR, 11074 Y(>1D), 11075 Y>DR, 11076 JUMP(GAP81A); ----- ----- 40E 00411AA2 001D1000 ----- 11077 *ENTRY POINT FOR NULL PAGES 11078 .ORG GAP81A, *POINTER++ 11079 A(1), BR>B, ADD, 11080 Y>PR, 11081 JUMP(GAP81B); ----- ----- AA2 00000AA3 80010001 ----- 11082 .ORG GAP81B, *D=ALPHA BLACK 11083 *B=POINTER 11084 PR>BR, 11085 Y(>00), 11086 Y>DR, 11087 JUMP(GAP81C); ----- ----- AA3 00411AA4 00001000 ----- 11088 .ORG GAP81C, *UPDATE POINTER 11089 A(7), BR>B, ADD, 11090 Y>PR, 11091 JUMP(GAP81D); ----- ----- AA4 00000AA5 80070001 ----- 11092 .ORG GAP81D, *D=BLACK BACKGROUND 11093 *A=PM 11094 MA(PM), RAM>AR, 11095 Y(>1C), 11096 Y>DR, 11097 JUMP(GAP82); ----- ----- AA5 00021AA6 741C1000 ----- 11098 *DO NOT DISPLAY PAGE IN REVERSE VIDEO 11099 * B=POINTER TO PAGE PRE-FIX 11100 .ORG GAP80T, *POINT TO LAST CHARACTER IN FIELD 11101 *A=PM 11102 MA(PM), RAM>AR, 11103 A(6), BR>B, ADD, 11104 Y>PR, 11105 JUMP(GAP82); ----- ----- 40F 00020AA6 F4060001 ----- 11106 *WRITE DIGITS 11107 * P=POINTER TO LAST CHARACTER IN FIELD 11108 * A=PM 11109 .ORG GAP82, *Y=PAGE MAGS 11110 ARHI>A, B(7), AND, 11111 JUMP(GAP83); ----- ----- AA6 00000AA7 00070820 ----- 11112 .ORG GAP83, *MAGAZINE 8? 11113 MA(PM), 11114 AR>A, B(>7F), AND, 11115 Y>RAM, 11116 JZ(GAP84F,GAP84T); ----- ----- AA7 0000241A 747F0910 ----- 11117 .ORG GAP84T, *MAG 8 11118 MA(PM), 11119 AR.0F>A, B(>80), OR, 11120 Y>RAM, 11121 JUMP(GAP84F); ----- ----- 41B 0000041A 748011C0 ----- 11122 * 11123 .ORG GAP84F, *INIT DIGIT LOOP COUNT 11124 *A=4 11125 Y(4), 11126 Y>AR, 11127 JUMP(GAP86); ----- ----- 41A 00220AA8 00041000 ----- 11128 *LOOP START 11129 * A=LOOP 11130 .ORG GAP86, *DEC LOOP 11131 MA(LOCAL), 11132 AR>A, B(-1), ADD, 11133 Y>RAM, 11134 JUMP(GAP87); ----- ----- AA8 00000AA9 72FF0110 ----- 11135 .ORG GAP87, *CASE LOOP=? 11136 *B=POINTER 11137 *A=LOOP COUNT 11138 PR>BR, 11139 MA(RET3), RAM>AR, 11140 JY(GAP90Y); ----- ----- AA9 0043C5E0 7A000000 ----- 11141 .ORG GAP90Y, *EXIT 11142 *Y=LOOP COUNT 11143 AR>A, B(0), OR, 11144 JUMP(GAP96); ----- ----- 5E0 00000AAA 00001010 ----- 11145 .ORG GAP91, *UNITS DIGIT 11146 *POINT TO UNITS 11147 *A=PU 11148 MA(PU), RAM>AR, 11149 A(1), BR>B, ADD, 11150 Y>PR, 11151 JUMP(GAP94); ----- ----- 5E1 00020AAB F6010001 ----- 11152 .ORG GAP92, *TENS DIGIT 11153 *POINT TO TENS 11154 *A=PT 11155 MA(PT), RAM>AR, 11156 A(1), BR>B, ADD, 11157 Y>PR, 11158 JUMP(GAP94); ----- ----- 5E2 00020AAB F5010001 ----- 11159 .ORG GAP93, *MAG DIGIT 11160 *POINT TO MAG 11161 *A=PM 11162 MA(PM), RAM>AR, 11163 A(-5), BR>B, ADD, 11164 Y>PR, 11165 JUMP(GAP94); ----- ----- 5E3 00020AAB F4FB0001 ----- 11166 * P=DIGIT POINTER, A=DIGIT 11167 .ORG GAP94, *Y=DIGIT DASH FLAG 11168 AR>A, B(>08), AND, 11169 JUMP(GAP95); ----- ----- AAB 00000AAC 00080810 ----- 11170 .ORG GAP95, *Y=DIGIT SPACE FLAG 11171 *DISPLAY A DASH? 11172 AR>A, B(>04), AND, 11173 JZ(GAP95AF,GAP95AT); ----- ----- AAC 0000241C 00040810 ----- 11174 .ORG GAP95AF, *DISPLAY A DASH 11175 *A=LOCAL 11176 MA(LOCAL), RAM>AR, 11177 Y(>2D), 11178 Y>DR, 11179 JUMP(GAP86); ----- ----- 41C 00021AA8 722D1000 ----- 11180 .ORG GAP95AT, *DISPLAY A SPACE? 11181 *Y-DIGIT MSN-10 11182 ARHI>A, B(-10), ADD, 11183 JZ(GAP95BF,GAP95BT); ----- ----- 41D 0000241E 00F60020 ----- 11184 .ORG GAP95BF, *DISPLAY A SPACE 11185 *A=LOCAL 11186 MA(LOCAL), RAM>AR, 11187 Y(>20), 11188 Y>DR, 11189 JUMP(GAP86); ----- ----- 41E 00021AA8 72201000 ----- 11190 .ORG GAP95BT, *DISPLAY A DIGIT 11191 *HEX DIGIT? 11192 JN(GAP95CF,GAP95CT); ----- ----- 41F 00004420 00000000 ----- 11193 .ORG GAP95CF, *HEX DIGIT 11194 *A=LOCAL 11195 MA(LOCAL), RAM>AR, 11196 ARHI>A, B(>37), ADD, 11197 Y>DR, 11198 JUMP(GAP86); ----- ----- 420 00021AA8 72370020 ----- 11199 .ORG GAP95CT, *DECIMAL DIGIT 11200 *A=LOCAL 11201 MA(LOCAL), RAM>AR, 11202 ARHI>A, B(>30), OR, 11203 Y>DR, 11204 JUMP(GAP86); ----- ----- 421 00021AA8 72301020 ----- 11205 *THREE DIGITS COMPLETED 11206 * LAST Y WAS LOOP COUNT 11207 .ORG GAP96, *B=SYS1, MORE PAGE NUMBERS TO WRITE? 11208 MA(SYS1), RAM>BR, 11209 JZ(GAP59F,GAP97T); ----- ----- AAA 00012422 08000000 ----- 11210 .ORG GAP97T, *NO, EXIT 11211 JUMP(GAP2F); ----- ----- 423 000003E8 00000000 ----- 11212 *GENERATE A TOP PROMPT 11213 * P=POINTER TO COL 0 OF PROMPT, THISRW=27 11214 *FIRST WRITE FIXED CHARACTERS 11215 .ORG GAP100, *B=PROMPT POINTER 11216 *COL 0= ALPHA RED 11217 PR>BR, 11218 Y(>01), 11219 Y>DR, 11220 JUMP(GAP101); ----- ----- A83 00411AAD 00011000 ----- 11221 .ORG GAP101, *P=COL 1 OF PROMPT 11222 A(1), BR>B, ADD, 11223 Y>PR, 11224 JUMP(GAP102); ----- ----- AAD 00000AAE 80010001 ----- 11225 .ORG GAP102, *B=PROMPT POINTER 11226 *COL 1= NEW BACKGROUND 11227 PR>BR, 11228 Y(>1D), 11229 Y>DR, 11230 JUMP(GAP103); ----- ----- AAE 00411AAF 001D1000 ----- 11231 .ORG GAP103, *P=COL 2 OF PROMPT 11232 A(1), BR>B, ADD, 11233 Y>PR, 11234 JUMP(GAP104); ----- ----- AAF 00000AB0 80010001 ----- 11235 .ORG GAP104, *B=PROMPT POINTER 11236 *COL 2= ALPHA BLACK 11237 PR>BR, 11238 Y(>00), 11239 Y>DR, 11240 JUMP(GAP105); ----- ----- AB0 00411AB1 00001000 ----- 11241 .ORG GAP105, *P=COL 3 OF PROMPT 11242 A(1), BR>B, ADD, 11243 Y>PR, 11244 JUMP(GAP106); ----- ----- AB1 00000AB2 80010001 ----- 11245 .ORG GAP106, *B=PROMPT POINTER 11246 *COL 3= '-' 11247 PR>BR, 11248 Y(>2D), 11249 Y>DR, 11250 JUMP(GAP107); ----- ----- AB2 00411AB3 002D1000 ----- 11251 .ORG GAP107, *P=COL 4 OF PROMPT 11252 A(1), BR>B, ADD, 11253 Y>PR, 11254 JUMP(GAP108); ----- ----- AB3 00000AB4 80010001 ----- 11255 .ORG GAP108, *B=PROMPT POINTER 11256 *COL 4= ' ' 11257 PR>BR, 11258 Y(>20), 11259 Y>DR, 11260 JUMP(GAP109); ----- ----- AB4 00411AB5 00201000 ----- 11261 .ORG GAP109, *P=COL 5 OF PROMPT 11262 A(1), BR>B, ADD, 11263 Y>PR, 11264 JUMP(GAP110); ----- ----- AB5 00000AB6 80010001 ----- 11265 .ORG GAP110, *B=PROMPT POINTER 11266 *COL 5= ALPHA GREEN 11267 PR>BR, 11268 Y(>02), 11269 Y>DR, 11270 JUMP(GAP111); ----- ----- AB6 00411AB7 00021000 ----- 11271 .ORG GAP111, *P=COL 6 OF PROMPT 11272 A(1), BR>B, ADD, 11273 Y>PR, 11274 JUMP(GAP112); ----- ----- AB7 00000AB8 80010001 ----- 11275 .ORG GAP112, *B=PROMPT POINTER 11276 *COL 6= NEW BACKGROUND 11277 PR>BR, 11278 Y(>1D), 11279 Y>DR, 11280 JUMP(GAP113); ----- ----- AB8 00411AB9 001D1000 ----- 11281 .ORG GAP113, *P=COL 7 OF PROMPT 11282 A(1), BR>B, ADD, 11283 Y>PR, 11284 JUMP(GAP114); ----- ----- AB9 00000ABA 80010001 ----- 11285 .ORG GAP114, *B=PROMPT POINTER 11286 *COL 7= ALPHA BLACK 11287 PR>BR, 11288 Y(>00), 11289 Y>DR, 11290 JUMP(GAP115); ----- ----- ABA 00411ABB 00001000 ----- 11291 .ORG GAP115, *P=COL 8 OF PROMPT 11292 A(1), BR>B, ADD, 11293 Y>PR, 11294 JUMP(GAP116); ----- ----- ABB 00000ABC 80010001 ----- 11295 .ORG GAP116, *B=PROMPT POINTER 11296 *COL 8= '+' 11297 PR>BR, 11298 Y(>2B), 11299 Y>DR, 11300 JUMP(GAP117); ----- ----- ABC 00411ABD 002B1000 ----- 11301 .ORG GAP117, *P=COL 9 OF PROMPT 11302 A(1), BR>B, ADD, 11303 Y>PR, 11304 JUMP(GAP118); ----- ----- ABD 00000ABE 80010001 ----- 11305 .ORG GAP118, *B=PROMPT POINTER 11306 *COL 9= ' ' 11307 PR>BR, 11308 Y(>20), 11309 Y>DR, 11310 JUMP(GAP119); ----- ----- ABE 00411ABF 00201000 ----- 11311 .ORG GAP119, *P=COL 10 OF PROMPT 11312 A(1), BR>B, ADD, 11313 Y>PR, 11314 JUMP(GAP120); ----- ----- ABF 00000AC0 80010001 ----- 11315 .ORG GAP120, *B=PROMPT POINTER 11316 *COL 10= ALPHA YELLOW 11317 PR>BR, 11318 Y(>03), 11319 Y>DR, 11320 JUMP(GAP121); ----- ----- AC0 00411AC1 00031000 ----- 11321 .ORG GAP121, *P=COL 11 OF PROMPT 11322 A(1), BR>B, ADD, 11323 Y>PR, 11324 JUMP(GAP122); ----- ----- AC1 00000795 80010001 ----- 11325 .ORG GAP122, *B=PROMPT POINTER 11326 *COL 11= NEW BACKGROUND 11327 PR>BR, 11328 Y(>1D), 11329 Y>DR, 11330 JUMP(GAP123); ----- ----- 795 00411AC2 001D1000 ----- 11331 .ORG GAP123, *P=COL 12 OF PROMPT 11332 A(1), BR>B, ADD, 11333 Y>PR, 11334 JUMP(GAP124); ----- ----- AC2 00000AC3 80010001 ----- 11335 .ORG GAP124, *B=PROMPT POINTER 11336 *COL 12= ALPHA BLACK 11337 PR>BR, 11338 Y(>00), 11339 Y>DR, 11340 JUMP(GAP130); ----- ----- AC3 00411AC4 00001000 ----- 11341 *WRITE NEXT GROUP 11342 .ORG GAP130, *POINT TO DISPLAY PAGE 11343 Y(DPM), 11344 Y>AR, 11345 JUMP(GAP131); ----- ----- AC4 00220AC5 00681000 ----- 11346 .ORG GAP131, *CONVERT PAGE NUMBER TO POINTER 11347 *RETURN=4, RETURN TO GAP132 11348 MA(RETURN), 11349 Y(4), 11350 Y>RAM, 11351 JUMP(PNTIN0); ----- ----- AC5 00000857 7C041100 ----- 11352 .ORG GAP132, *SET MASK TO LOOK FOR NEXT BLOCK OR GROUP 11353 MA(MASK), 11354 Y(6), 11355 Y>RAM, 11356 JUMP(GAP133); ----- ----- 794 00000AC6 73061100 ----- 11357 *ENTRY POINT FROM ROTATE IN BLOCK CODE 11358 .ORG GAP133, *SEARCH FOR MASK 11359 *CALL SBT0A 11360 *RETURN=2, RETURN TO GAP133A 11361 MA(RETURN), 11362 Y(2), 11363 Y>RAM, 11364 JUMP(SBT0A); ----- ----- AC6 000004C8 7C021100 ----- 11365 *CHECK IF BLOCK FOUND, IF YES AND RIB=1 GO BACK FOR ROTATE 11366 .ORG GAP133A, *Y=BLOCK FLAG, B=MREG1 11367 MA(MREG1), RAM>BR, 11368 AR>A, B(>04), AND, 11369 JUMP(GAP133B); ----- ----- 7A2 00010AC7 65040810 ----- 11370 .ORG GAP133B, *FOUND A BLOCK? 11371 *Y=RIB 11372 A(RIB), BR>B, AND, 11373 JZ(GAP133CF,GAP133CT); ----- ----- AC7 00002424 00010801 ----- 11374 *BLOCK FOUND 11375 .ORG GAP133CF, *BLOCK FOUND, RIB? 11376 *RETURN=5 11377 MA(RETURN), 11378 Y(5), 11379 Y>RAM, 11380 JZ(GAP133DF,GAP133DT); ----- ----- 424 00002426 7C051100 ----- 11381 .ORG GAP133DT, *ROTATE DISABLED 11382 JUMP(GAP133CAF); ----- ----- 427 00000428 00000000 ----- 11383 .ORG GAP133DF, *NEED TO ROTATE 11384 *SEARCH BACKWARDS FOR LAST BLOCK 11385 *CALL SBT0B 11386 *RETURN=5, RETURN TO GAP133E 11387 *MASK=4 11388 MA(MASK), 11389 Y(>04), 11390 Y>RAM, 11391 JUMP(SBT0B); ----- ----- 426 000004C9 73041100 ----- 11392 .ORG GAP133E, *JUMP BACK TO GAP133 11393 *SET MASK TO LOOK FOR FIRST GROUP IN THE BLOCK 11394 *MASK=2 11395 MA(MASK), 11396 Y(>02), 11397 Y>RAM, 11398 JUMP(GAP133); ----- ----- 7A5 00000AC6 73021100 ----- 11399 * 11400 .ORG GAP133CT, *Y=GROUP FLAG 11401 AR>A, B(>02), AND, 11402 JUMP(GAP133CA); ----- ----- 425 00000AC8 00020810 ----- 11403 .ORG GAP133CA, *GROUP FOUND? 11404 *IF NO, TEST=0 11405 *(DISABLE AIT LABEL TO BE COPIED IN COP ROUTINE) 11406 MA(TEST), 11407 Y(0), 11408 Y>RAM, 11409 JZ(GAP133CAF,GAP133CAT); ----- ----- AC8 00002428 70001100 ----- 11410 *BLOCK OR GROUP PAGE FOUND 11411 .ORG GAP133CAF, *TEST=1 (ENABLE AIT LABEL TO BE COPIED IN COP ROUTINE) 11412 MA(TEST), 11413 Y(1), 11414 Y>RAM, 11415 JUMP(GAP133CAT); ----- ----- 428 00000429 70011100 ----- 11416 *YELLOW PAGE FOUND 11417 .ORG GAP133CAT, *CONVERT POINTER TO PAGE NUMBER 11418 *CALL INTPN0 11419 *RETURN=2, RETURN TO GAP133G 11420 MA(RETURN), 11421 Y(2), 11422 Y>RAM, 11423 JUMP(INTPN0); ----- ----- 429 000007A3 7C021100 ----- 11424 *SEARCH AITS FOR NEXT BLOCK OR GROUP LABEL 11425 .ORG GAP133G, *CALL SAT0, 11426 *RETURN=0, RETURN TO GAP134Y 11427 MA(RETURN), 11428 Y(0), 11429 Y>RAM, 11430 JUMP(SAT0); ----- ----- 732 00000AC9 7C001100 ----- 11431 * P=AIT POINTER, STORE=AIT LATCH, A=LAST Y=FOUND FLAG 11432 *COPY AIT LABEL OR PAGE NUMBER TO PROMPT 11433 .ORG GAP134Y, *AIT LABEL FOUND? 11434 *IF FOUND, CALL COP0F TO COPY LABEL 11435 *ELSE, CALL COP0T TO COPY NUMBER 11436 *RETURN=0, RETURN TO GAP136Y 11437 MA(RETURN), 11438 Y(0), 11439 Y>RAM, 11440 JZ(COP0F,COP0T); ----- ----- 778 0000242A 7C001100 ----- 11441 *FIND NEXT BLOCK 11442 .ORG GAP136Y, *POINT TO DISPLAY PAGE 11443 Y(DPM), 11444 Y>AR, 11445 JUMP(GAP137); ----- ----- 780 00220ACA 00681000 ----- 11446 .ORG GAP137, *CALL PNTIN0 11447 *RETURN=6, RETURN TO GAP138 11448 MA(RETURN), 11449 Y(6), 11450 Y>RAM, 11451 JUMP(PNTIN0); ----- ----- ACA 00000857 7C061100 ----- 11452 .ORG GAP138, *SET MASK TO LOOK FOR NEXT BLOCK IN SBT0A 11453 MA(MASK), 11454 Y(>04), 11455 Y>RAM, 11456 JUMP(GAP139); ----- ----- 796 00000ACB 73041100 ----- 11457 .ORG GAP139, *CALL SBT0A, 11458 *RETURN=4, RETURN TO GAP140 11459 MA(RETURN), 11460 Y(4), 11461 Y>RAM, 11462 JUMP(SBT0A); ----- ----- ACB 000004C8 7C041100 ----- 11463 .ORG GAP140, *Y=BLOCK PAGE FLAG 11464 AR>A, B(>04), AND, 11465 JUMP(GAP141); ----- ----- 7A4 00000ACC 00040810 ----- 11466 .ORG GAP141, *FOUND A BLOCK PAGE? 11467 *RETURN=4, RETURN TO GAP160 11468 MA(RETURN), 11469 Y(4), 11470 Y>RAM, 11471 JZ(GAP142F,GAP142T); ----- ----- ACC 0000242C 7C041100 ----- 11472 .ORG GAP142F, *YES, TEST=1 11473 *(ENABLE AIT LABEL COPY IN COP ROUTINE) 11474 *FIND PAGE NUMBER OF NEXT BLOCK 11475 *CALL INTPN0 11476 *RETURN=4, RETURN TO GAP160 11477 MA(TEST), 11478 Y(1), 11479 Y>RAM, 11480 JUMP(INTPN0); ----- ----- 42C 000007A3 70011100 ----- 11481 .ORG GAP142T, *NO, TEST=0 11482 *(DISABLE AIT LABEL COPY IN COP ROUTINE) 11483 *FIND PAGE NUMBER OF NEXT BLOCK 11484 *CALL INTPN0 11485 *RETURN=4, RETURN TO GAP160 11486 MA(TEST), 11487 Y(0), 11488 Y>RAM, 11489 JUMP(INTPN0); ----- ----- 42D 000007A3 70001100 ----- 11490 *WRITE SPACES TO END OF NEXT GROUP 11491 .ORG GAP160, *A=STOR0 11492 MA(STOR0), RAM>AR, 11493 JUMP(GAP161); ----- ----- 734 00020ACD 20000000 ----- 11494 .ORG GAP161, *RWL= LATCH OF DISPLAY PAGE 11495 MA(RWL), 11496 ARHI>A, B(0), OR, 11497 Y>RAM, Y>IO, 11498 JUMP(GAP162); ----- ----- ACD 00000ACE 0B005120 ----- 11499 .ORG GAP162, *A= PROMPT INDEX 11500 MA(THISRW), RAM>AR, 11501 JUMP(GAP162A); ----- ----- ACE 00020ACF 7D000000 ----- 11502 * 11503 .ORG GAP162A, *DECREMENT PROMPT INDEX 11504 MA(THISRW), 11505 AR>A, B(-1), ADD, 11506 Y>RAM, Y>AR, 11507 JUMP(GAP163); ----- ----- ACF 00220AD0 7DFF0110 ----- 11508 .ORG GAP163, *Y=PROMPT INDEX-14 11509 AR>A, B(-14), ADD, 11510 JUMP(GAP164); ----- ----- AD0 00000AD1 00F20010 ----- 11511 .ORG GAP164, *REACHED START POINT FOR NEXT BLOCK? 11512 *P= POINTER TO PROMPT ROW 11513 NAR>A, B(-25), ADD, O>CIN, 11514 Y>PR, 11515 JZ(GAP165F,GAP165T); ----- ----- AD1 0000242E 80E70440 ----- 11516 .ORG GAP165F, *PROMPT INDEX >20 11517 *WRITE A SPACE 11518 Y(>20), 11519 Y>DR, 11520 JUMP(GAP162A); ----- ----- 42E 00001ACF 00201000 ----- 11521 *CHANGE COLOUR FOR NEXT BLOCK 11522 .ORG GAP165T, *B=PROMPT POINTER 11523 *D=ALPHA CYAN 11524 PR>BR, 11525 Y(>06), 11526 Y>DR, 11527 JUMP(GAP165A); ----- ----- 42F 00411AD2 00061000 ----- 11528 .ORG GAP165A, *P=POINTER TO NEXT PROMPT LOC 11529 A(1), BR>B, ADD, 11530 Y>PR, 11531 JUMP(GAP166); ----- ----- AD2 00000AD3 80010001 ----- 11532 .ORG GAP166, *B=PROMPT POINTER 11533 *D=NEW BACKGROUND 11534 PR>BR, 11535 Y(>1D), 11536 Y>DR, 11537 JUMP(GAP167); ----- ----- AD3 00411AD4 001D1000 ----- 11538 .ORG GAP167, *P=POINTER TO NEXT PROMPT LOC 11539 A(1), BR>B, ADD, 11540 Y>PR, 11541 JUMP(GAP168); ----- ----- AD4 00000AD5 80010001 ----- 11542 .ORG GAP168, *D=ALPHA BLACK 11543 Y(>00), 11544 Y>DR, 11545 JUMP(GAP169); ----- ----- AD5 00001AD6 00001000 ----- 11546 .ORG GAP169, *UPDATE THISRW TO SKIP OVER THESE CONTROL CHARS 11547 *THISRW=THISRW-2 11548 MA(THISRW), 11549 AR>A, B(-2), ADD, 11550 Y>RAM, 11551 JUMP(GAP170); ----- ----- AD6 00000AD7 7DFE0110 ----- 11552 *SEARCH AITS FOR NEXT BLOCK LABEL 11553 .ORG GAP170, *CALL SAT0, 11554 *RETURN=1, RETURN TO GAP171 11555 MA(RETURN), 11556 Y(1), 11557 Y>RAM, 11558 JUMP(SAT0); ----- ----- AD7 00000AC9 7C011100 ----- 11559 * P=AIT POINTER, STORE=AIT LATCH, A=LAST Y=FOUND FLAG 11560 *COPY AIT LABEL OR PAGE NUMBER TO PROMPT 11561 .ORG GAP171, *AIT LABEL FOUND? 11562 *IF FOUND, CALL COP0F TO COPY LABEL 11563 *ELSE, CALL COP0T TO COPY NUMBER 11564 *RETURN=1, RETURN TO GAP173 11565 MA(RETURN), 11566 Y(1), 11567 Y>RAM, 11568 JZ(COP0F,COP0T); ----- ----- 779 0000242A 7C011100 ----- 11569 *COPIED LABELS, COMPLETE END OF MENU 11570 .ORG GAP173, *COMPLETED AIT LABEL COPIES, CLEAR TO END OF ROW 11571 *A=PROMPT INDEX 11572 MA(THISRW), RAM>AR, 11573 JUMP(GAP174); ----- ----- 781 00020AD8 7D000000 ----- 11574 * 11575 .ORG GAP174, *DEC THISRW 11576 AR>A, B(-1), ADD, 11577 Y>AR, 11578 JUMP(GAP175); ----- ----- AD8 00220AD9 00FF0010 ----- 11579 .ORG GAP175, *P= POINTER TO FIRST LOC AFTER LABEL 11580 *THISRW<0? 11581 NAR>A, B(-25), ADD, O>CIN, 11582 Y>PR, 11583 JN(GAP176F,GAP176T); ----- ----- AD9 00004434 80E70440 ----- 11584 .ORG GAP176F, *CLEARING TO END OF ROW INCOMPLETE, 11585 *WRITE A SPACE 11586 Y(>20), 11587 Y>DR, 11588 JUMP(GAP174); ----- ----- 434 00001AD8 00201000 ----- 11589 * 11590 .ORG GAP176T, *MENU COMPLETE, EXIT 11591 JUMP(GAP2F); ----- ----- 435 000003E8 00000000 ----- 11592 *MAKE PLUS MINUS MENU 11593 * P=-55 11594 * This routine is used to make the NORMAL menu and part of the 11595 * sub-page menu. 11596 * 11597 .ORG GAP200, *D=END BOX 11598 Y(>0A), 11599 Y>DR, 11600 JUMP(GAP200A); ----- ----- A87 00001ADA 000A1000 ----- 11601 .ORG GAP200A, *P=-27 11602 Y(-27), 11603 Y>PR, 11604 JUMP(GAP200B); ----- ----- ADA 00000ADB 80E51000 ----- 11605 .ORG GAP200B, *D=END BOX 11606 Y(>0A), 11607 Y>DR, 11608 JUMP(GAP200C); ----- ----- ADB 00001ADC 000A1000 ----- 11609 .ORG GAP200C, *P=-64 11610 Y(-64), 11611 Y>PR, 11612 JUMP(GAP201); ----- ----- ADC 00000ADD 80C01000 ----- 11613 *ENTRY POINT FROM SUB-PAGE MENU 11614 .ORG GAP201, *D=ALPHA RED 11615 PR>BR, 11616 Y(>01), 11617 Y>DR, 11618 JUMP(GAP202); ----- ----- ADD 00411ADE 00011000 ----- 11619 .ORG GAP202, *P=B+6 11620 A(6), BR>B, ADD, 11621 Y>PR, 11622 JUMP(GAP202A); ----- ----- ADE 00000ADF 80060001 ----- 11623 .ORG GAP202A, *D='-' 11624 Y(>2D), 11625 Y>DR, 11626 JUMP(GAP202B); ----- ----- ADF 00001AE0 002D1000 ----- 11627 .ORG GAP202B, *P=B+12 11628 A(12), BR>B, ADD, 11629 Y>PR, 11630 JUMP(GAP202C); ----- ----- AE0 00000AE1 800C0001 ----- 11631 .ORG GAP202C, *D=BLACK BACKGROUND 11632 Y(>1C), 11633 Y>DR, 11634 JUMP(GAP202D); ----- ----- AE1 00001AE2 001C1000 ----- 11635 .ORG GAP202D, *INIT LOOP 11636 MA(COUNT), 11637 Y(2), 11638 Y>RAM, 11639 JUMP(GAP202E); ----- ----- AE2 00000AE3 78021100 ----- 11640 .ORG GAP202E, *P=B+1 11641 A(1), BR>B, ADD, 11642 Y>PR, 11643 JUMP(GAP203); ----- ----- AE3 00000AE4 80010001 ----- 11644 *LOOP START 11645 .ORG GAP203, *D=NEW BACKGROUND 11646 PR>BR, 11647 Y(>1D), 11648 Y>DR, 11649 JUMP(GAP204); ----- ----- AE4 00411AE5 001D1000 ----- 11650 .ORG GAP204, *P++ 11651 A(1), BR>B, ADD, 11652 Y>PR, 11653 JUMP(GAP204A); ----- ----- AE5 00000AE6 80010001 ----- 11654 .ORG GAP204A, *D=START BOX 11655 PR>BR, 11656 Y(>0B), 11657 Y>DR, 11658 JUMP(GAP204B); ----- ----- AE6 00411AE7 000B1000 ----- 11659 .ORG GAP204B, *P++ 11660 A(1), BR>B, ADD, 11661 Y>PR, 11662 JUMP(GAP204C); ----- ----- AE7 00000AE8 80010001 ----- 11663 .ORG GAP204C, *D=START BOX 11664 PR>BR, 11665 Y(>0B), 11666 Y>DR, 11667 JUMP(GAP204D); ----- ----- AE8 00411AE9 000B1000 ----- 11668 .ORG GAP204D, *P++ 11669 *A=COUNT 11670 MA(COUNT), RAM>AR, 11671 A(1), BR>B, ADD, 11672 Y>PR, 11673 JUMP(GAP204E); ----- ----- AE9 00020AEA F8010001 ----- 11674 .ORG GAP204E, *COUNT-- 11675 MA(COUNT), 11676 AR>A, B(-1), ADD, 11677 Y>RAM, 11678 JUMP(GAP205); ----- ----- AEA 00000AEB 78FF0110 ----- 11679 .ORG GAP205, *D=ALPHA BLACK 11680 *REPEAT? 11681 PR>BR, 11682 Y(>00), 11683 Y>DR, 11684 JZ(GAP208F,GAP208T); ----- ----- AEB 00413436 00001000 ----- 11685 *REPEAT (GO BACK AND DO + MENU) 11686 .ORG GAP208F, *P=-35 11687 Y(-35), 11688 Y>PR, 11689 JUMP(GAP203); ----- ----- 436 00000AE4 80DD1000 ----- 11690 *LOOP EXIT 11691 .ORG GAP208T, *P=-30 11692 Y(-30), 11693 Y>PR, 11694 JUMP(GAP209); ----- ----- 437 00000AEC 80E21000 ----- 11695 .ORG GAP209, *D='+' 11696 Y(>2B), 11697 Y>DR, 11698 JUMP(GAP210); ----- ----- AEC 00001AED 002B1000 ----- 11699 .ORG GAP210, *P=-36 11700 Y(-36), 11701 Y>PR, 11702 JUMP(GAP211); ----- ----- AED 00000AEE 80DC1000 ----- 11703 .ORG GAP211, *D=ALPHA GREEN 11704 Y(>02), 11705 Y>DR, 11706 JUMP(GAP2F); ----- ----- AEE 000013E8 00021000 ----- 11707 *SUB-PAGE MODE 11708 * P=-64 11709 .ORG GAP4BF, *D=START BOX 11710 Y(>0B), 11711 Y>DR, 11712 JUMP(GAP300); ----- ----- 3F8 00001AEF 000B1000 ----- 11713 .ORG GAP300, *P=-63 11714 Y(-63), 11715 Y>PR, 11716 JUMP(GAP302); ----- ----- AEF 00000AF0 80C11000 ----- 11717 .ORG GAP302, *D=START BOX 11718 Y(>0B), 11719 Y>DR, 11720 JUMP(GAP303); ----- ----- AF0 00001AF1 000B1000 ----- 11721 .ORG GAP303, *POINT TO PREFIX OF MAIN PAGE NUMBER 11722 Y(-62), 11723 Y>PR, 11724 JUMP(GAP304); ----- ----- AF1 00000AF2 80C21000 ----- 11725 .ORG GAP304, *CALL PND10 AND PND50T TO WRITE PAGE NUMBER 11726 *AND FIND PREFIX LETTER 11727 *RETURN=2, RETURN TO GAP310 11728 MA(RETURN), 11729 Y(2), 11730 Y>RAM, 11731 JUMP(PND10); ----- ----- AF2 00000AF3 7C021100 ----- 11732 * A=PREFIX LETTER 11733 .ORG GAP310, 11734 Y(-62), 11735 Y>PR, 11736 JUMP(GAP311); ----- ----- 052 00000AF4 80C21000 ----- 11737 .ORG GAP311, *WRITE PREFIX LETTER 11738 AR>A, B(0), OR, 11739 Y>DR, 11740 JUMP(GAP312); ----- ----- AF4 00001AF5 00001010 ----- 11741 .ORG GAP312, *POINT TO '/' POSITION 11742 *JUMP TO PND15 ROUTINE TO WRITE PAGE NUMBER 11743 *RETURN TO GAP340 11744 Y(-58), 11745 Y>PR, 11746 JUMP(PND15); ----- ----- AF5 00000AF6 80C61000 ----- 11747 * A=DHREG, P= START POINT FOR DASHES 11748 .ORG GAP340, *Y=ICP, A=PEN 11749 MA(PEN), RAM>AR, 11750 AR>A, B(ICP), AND, 11751 JUMP(GAP340A); ----- ----- D09 00020AF7 1B400810 ----- 11752 .ORG GAP340A, *A= NUMBER OF DASHES IF 3 OR LESS 11753 *ICP? 11754 ARHI>A, B(3), AND, 11755 Y>AR, 11756 JZ(GAP341AF,GAP341AT); ----- ----- AF7 00222438 00030820 ----- 11757 .ORG GAP341AF, *ICP, PEN=4? 11758 JZ(GAP341BF,GAP341BT); ----- ----- 438 0000243A 00000000 ----- 11759 .ORG GAP341BT, *PEN=4 AND ICP, NEED TO WRITE FOUR DASHES 11760 Y(4), 11761 Y>AR, 11762 JUMP(GAP341AT); ----- ----- 43B 00220439 00041000 ----- 11763 .ORG GAP341BF, *A CONTAINS NUMBER OF DASHES 11764 JUMP(GAP341AT); ----- ----- 43A 00000439 00000000 ----- 11765 * 11766 .ORG GAP341AT, *CALL PND72 TO WRITE DASHES IN A 11767 *RETURN=1, RETURN TO GAP342 11768 MA(RETURN), 11769 Y(1), 11770 Y>RAM, 11771 JUMP(PND72); ----- ----- 439 00000AF8 7C011100 ----- 11772 .ORG GAP342, *SET START POINT OF PLUS/ MINUS MENU 11773 *JUMP TO PLUS/ MINUS ROUTINE 11774 Y(-52), 11775 Y>PR, 11776 JUMP(GAP201); ----- ----- 071 00000ADD 80CC1000 ----- 11777 *COMMON EXIT FROM GAP ROUTINE 11778 .ORG GAP2F, * 11779 JUMP(VPP450); ----- ----- 3E8 00000337 00000000 ----- 11780 * 11781 *+++SEARCH AITS FOR A PAGE NUMBER 11782 * 11783 * This routine will search through any captured AITs for the 11784 * the page in PU, PT and PM. If found, the last Y and A will 11785 * be set to one (otherwise zero). If found, P and RWL point 11786 * to the label of the page. 11787 * 11788 * input pars are:- 11789 * PU,PT: page units, page tens 11790 * RET2, page mag with mag 8= 8 (not zero) 11791 * RETURN: return pointer 11792 * return pars are:- 11793 * A: found/ not found 11794 * P: pointer to AIT label 11795 * STORE: pointer to AIT latch 11796 * RWL: set to display latch 11797 * local variables used are 11798 * COUNT, 11799 * 11800 .ORG SAT0, *INIT AIT LOOP COUNTER 11801 *A=COUNT=0 11802 MA(COUNT), 11803 Y(0), 11804 Y>RAM, Y>AR, 11805 JUMP(SAT20Y); ----- ----- AC9 002202E8 78001100 ----- 11806 * A=COUNT 11807 .ORG SAT10T, *INC AIT LOOP COUNTER 11808 *COUNT=A+1 11809 MA(COUNT), 11810 AR>A, B(1), ADD, 11811 Y>RAM, 11812 JUMP(SAT11); ----- ----- 449 00000AF9 78010110 ----- 11813 .ORG SAT11, *B=STOR7 11814 *CASE AIT=? 11815 MA(STOR7), RAM>BR, 11816 JY(SAT20Y); ----- ----- AF9 0001C2E8 27000000 ----- 11817 *CASE AIT LOOP 11818 .ORG SAT20Y, *CASE 1ST AIT 11819 *B=STOR2 11820 MA(STOR2), RAM>BR, 11821 JUMP(SAT22); ----- ----- 2E8 000102EA 22000000 ----- 11822 .ORG SAT21, *CASE 2ND AIT 11823 *B=STOR3 11824 MA(STOR3), RAM>BR, 11825 JUMP(SAT22); ----- ----- 2E9 000102EA 23000000 ----- 11826 * B=STORx FOR THIS AIT 11827 .ORG SAT22, *CASE 3RD AIT 11828 *P=INDEX TO LAFx 11829 A(LAF0), BRHI>B, ADD, 11830 Y>PR, 11831 JUMP(SAT30); ----- ----- 2EA 00000AFA 8040000C ----- 11832 .ORG SAT23, *CASE EXIT 11833 *A=FOUND FLAG 11834 *B=STOR0 11835 MA(STOR0), RAM>BR, 11836 Y(0), 11837 Y>AR, 11838 JUMP(SAT90); ----- ----- 2EB 00230AFB 20001000 ----- 11839 .ORG SAT30, *STORE=THIS LATCH 11840 MA(STORE), 11841 A(0), BRHI>B, OR, 11842 Y>RAM, 11843 JUMP(SAT31); ----- ----- AFA 00000AFC 7700110C ----- 11844 .ORG SAT31, *A=LATCH FLAGS FOR THIS AIT 11845 PR>MA, RAM>AR, 11846 JUMP(SAT32); ----- ----- AFC 00120AFD 00000000 ----- 11847 .ORG SAT32, *INVERT CAP AND AITL FLAGS 11848 AR>A, B(CAP+AITL), XOR, 11849 Y>AR, 11850 JUMP(SAT33); ----- ----- AFD 00220AFE 00811810 ----- 11851 .ORG SAT33, *Y=NOT CAP OR NOT AITL 11852 AR>A, B(CAP+AITL), AND, 11853 JUMP(SAT34); ----- ----- AFE 00000AFF 00810810 ----- 11854 .ORG SAT34, *DOES RWL CONTAIN A CAPTURED AIT? 11855 *RWL=LATCH FOR THIS STORE 11856 MA(RWL), 11857 A(0), BRHI>B, OR, 11858 Y>RAM, Y>IO, 11859 JZ(SAT35F,SAT35T); ----- ----- AFF 0000243C 0B00510C ----- 11860 .ORG SAT35F, *NO, GO TO NEXT AIT 11861 *A=COUNT 11862 MA(COUNT), RAM>AR, 11863 JUMP(SAT10T); ----- ----- 43C 00020449 78000000 ----- 11864 *RWL CONTAINS AN AIT 11865 .ORG SAT35T, *P=POINTER TO BOTTOM OF TABLE 11866 Y(-124), 11867 Y>PR, 11868 JUMP(SAT40F); ----- ----- 43D 00000448 80841000 ----- 11869 *SEARCH LABEL FIELD LOOP 11870 * P=POINTER TO MAG OF AIT LABEL 11871 .ORG SAT40F, *B=RET2 11872 *TPD=LABEL MAG 11873 RVDP, 11874 MA(RET2), RAM>BR, 11875 JUMP(SAT41); ----- ----- 448 00010B00 7B008000 ----- 11876 .ORG SAT41, *COMPARE MAGS 11877 *B=LABEL MAG 11878 PR>BR, 11879 TPD.0F>A, BRHI>B, XOR, 11880 JUMP(SAT42); ----- ----- B00 00410B01 000018AC ----- 11881 .ORG SAT42, *P=TENS POINTER 11882 *SAME MAG? 11883 A(1), BR>B, ADD, 11884 Y>PR, 11885 JZ(SAT43F,SAT43T); ----- ----- B01 0000243E 80010001 ----- 11886 .ORG SAT43F, *DIFFERENT MAG 11887 *P=UNITS POINTER 11888 A(2), BR>B, ADD, 11889 Y>PR, 11890 JUMP(SAT43A); ----- ----- 43E 00000B02 80020001 ----- 11891 .ORG SAT43A, *B=UNITS POINTER 11892 PR>BR, 11893 JUMP(SAT50F); ----- ----- B02 00410444 00000000 ----- 11894 .ORG SAT43T, *SAME MAG 11895 *TPD=LABEL TENS 11896 *B=PT 11897 *P=UNITS POINTER 11898 RVDP, 11899 MA(PT), RAM>BR, 11900 A(2), BR>B, ADD, 11901 Y>PR, 11902 JUMP(SAT44); ----- ----- 43F 00010B03 F5028001 ----- 11903 .ORG SAT44, *COMPARE TENS 11904 *TPD=LABEL UNITS 11905 *B=PU 11906 RVDP, 11907 MA(PU), RAM>BR, 11908 TPD.0F>A, BRHI>B, XOR, 11909 JUMP(SAT45); ----- ----- B03 00010B04 760098AC ----- 11910 .ORG SAT45, *SAME TENS? 11911 *COMPARE UNITS 11912 *B=UNITS POINTER 11913 PR>BR, 11914 TPD.0F>A, BRHI>B, XOR, 11915 JZ(SAT50F,SAT46T); ----- ----- B04 00412444 000018AC ----- 11916 .ORG SAT46T, *SAME TENS 11917 *SAME UNITS? 11918 *P=POINTER TO LABEL 11919 A(6), BR>B, ADD, 11920 Y>PR, 11921 JZ(SAT47F,SAT47T); ----- ----- 445 00002446 80060001 ----- 11922 .ORG SAT47F, *DIFFERENT UNITS 11923 JUMP(SAT50F); ----- ----- 446 00000444 00000000 ----- 11924 *FOUND LABEL 11925 * P=POINTER TO LABEL 11926 .ORG SAT47T, *A=1 (TO RETURN FOUND) 11927 *GO TO EXIT CODE 11928 *B=STOR0 11929 MA(STOR0), RAM>BR, 11930 Y(1), 11931 Y>AR, 11932 JUMP(SAT90); ----- ----- 447 00230AFB 20011000 ----- 11933 11934 *NOT THIS LABEL 11935 * *B=UNITS POINTER 11936 .ORG SAT50F, *Y=UNITS POINTER - 42 11937 A(-42), BR>B, ADD, 11938 JUMP(SAT51); ----- ----- 444 00000B05 00D60001 ----- 11939 .ORG SAT51, *P= POINTER TO NEXT LABEL PAGE MAG 11940 *A=COUNT 11941 *LAST LABEL? 11942 MA(COUNT), RAM>AR, 11943 A(-22), BR>B, ADD, 11944 Y>PR, 11945 JZ(SAT40F,SAT10T); ----- ----- B05 00022448 F8EA0001 ----- 11946 *EXIT 11947 * B=STOR0, A=FOUND FLAG 11948 .ORG SAT90, *RWL=LATCH OF DISPLAY PAGE 11949 MA(RWL), 11950 A(0), BRHI>B, OR, 11951 Y>RAM, Y>IO, 11952 JUMP(SAT91); ----- ----- AFB 00000B06 0B00510C ----- 11953 .ORG SAT91, *B=RETURN 11954 MA(RETURN), RAM>BR, 11955 JUMP(SAT92); ----- ----- B06 00010B07 7C000000 ----- 11956 .ORG SAT92, *Y=RETURN 11957 A(1), BR>B, AND, 11958 JUMP(SAT93); ----- ----- B07 00000B08 00010801 ----- 11959 .ORG SAT93, *Y=FOUND FLAG 11960 *CASE RETURN=? 11961 AR>A, B(0), OR, 11962 JY(GAP134Y); ----- ----- B08 0000C778 00001010 ----- 11963 * 11964 *+++COPY AIT LABEL TO PROMPT ROW 11965 * 11966 * This routine copies the label pointed to by screen pointer, 11967 * P, and the latch in STORE to the next position in the prompt row 11968 * indicated by THISRW. Spaces and control characters at the 11969 * start of the label are ignored. THISRW returns a pointer to 11970 * the last character copied which is not a space or a control 11971 * character. If an AIT label has not been found, this routine 11972 * copies the page numbr in PU, PT and RET2 to the prompt display. 11973 * 11974 * This routine also copies the header language control bits of 11975 * the AIT to AITLAN. 11976 * 11977 * input pars are:- 11978 * PU, PT and RET2 page number to copy if no label 11979 * THISRW: pointer to position in prompt 11980 * P: pointer to AIT label 11981 * STORE: AIT latch 11982 * RETURN: return pointer 11983 * TEST: non-zero enables label copy 11984 * (a group or block page has been found) 11985 * return pars are:- 11986 * THISRW: pointer to last character of copy 11987 * RWL: set to display page 11988 * AITLAN: C14-C12 of this AIT 11989 * local variables used are 11990 * COUNT, 11991 * 11992 *ENTRY POINT IF LABEL FOUND 11993 .ORG COP0F, *A=TEST 11994 MA(TEST), RAM>AR, 11995 JUMP(COP1); ----- ----- 42A 00020B09 70000000 ----- 11996 .ORG COP1, *Y=TEST 11997 *A=THISRW 11998 MA(THISRW), RAM>AR, 11999 AR>A, B(0), OR, 12000 JUMP(COP2); ----- ----- B09 00020B0A 7D001010 ----- 12001 .ORG COP2, *INIT LABEL CHARACTER COUNT 12002 *COUNT=12 12003 *COPY ENABLED? 12004 *IF NO, JUMP TO PAGE NUMBER CODE 12005 MA(COUNT), 12006 Y(12), 12007 Y>RAM, 12008 JZ(COP3F,COP40T); ----- ----- B0A 0000244A 780C1100 ----- 12009 .ORG COP3F, *A=AIT LATCH 12010 *POINT TO CGB+CGA, STORE AIT POINTER IN B 12011 PR>BR, 12012 MA(STORE), RAM>AR, 12013 Y(-13), 12014 Y>PR, 12015 JUMP(COP4); ----- ----- 44A 00430B0B F7F31000 ----- 12016 .ORG COP4, *RWL=AIT LATCH 12017 MA(RWL), 12018 AR>A, B(0), OR, 12019 Y>RAM, Y>IO, 12020 JUMP(COP5); ----- ----- B0B 00000B0C 0B005110 ----- 12021 .ORG COP5, *B=AITLAN 12022 *TPD=CGB+CGA OF THIS AIT 12023 *PUT AIT POINTER BACK IN P 12024 RVDP, 12025 MA(AITLAN), RAM>BR, 12026 A(0), BR>B, OR, 12027 Y>PR, 12028 JUMP(COP6); ----- ----- B0C 00010B0D 93009001 ----- 12029 .ORG COP6, *STORE C14-12 OF THIS AIT IN AITLAN 12030 MA(AITLAN), 12031 TPD.F0>A, BR.0F>B, OR, 12032 Y>RAM, 12033 JUMP(COP10F); ----- ----- B0D 0000044E 130011B2 ----- 12034 *FIRST SKIP LEADING CONTROL AND SPACE CHARACTERS 12035 .ORG COP10F, *TPD=LABEL CHAR 12036 RVDP, 12037 JUMP(COP11); ----- ----- 44E 00000B0E 00008000 ----- 12038 .ORG COP11, *Y=LABEL CHAR-33 12039 TPD>A, B(-33), ADD, 12040 JUMP(COP12); ----- ----- B0E 00000B0F 00DF0090 ----- 12041 .ORG COP12, *CONTROL OR SPACE CHARACTER? 12042 *B=LABEL POINTER 12043 *A=CHAR COUNT 12044 MA(COUNT), RAM>AR, 12045 PR>BR, 12046 JN(COP20F,COP13T); ----- ----- B0F 0043444C 78000000 ----- 12047 .ORG COP13T, *YES, MISS IT 12048 *DEC CHAR COUNT 12049 MA(COUNT), 12050 AR>A, B(-1), ADD, 12051 Y>RAM, 12052 JUMP(COP14); ----- ----- 44D 00000B10 78FF0110 ----- 12053 .ORG COP14, *INC LABEL POINTER 12054 *LAST CHARACTER? 12055 A(1), BR>B, ADD, 12056 Y>PR, 12057 JZ(COP10F,COP15T); ----- ----- B10 0000244E 80010001 ----- 12058 *NO VALID CHARS IN LABEL, EXIT 12059 .ORG COP15T, *B=RETURN 12060 MA(RETURN), RAM>BR, 12061 JUMP(COP50F); ----- ----- 44F 00010458 7C000000 ----- 12062 * P=POINTER TO LABEL CHARACTER 12063 .ORG COP20F, *A=AIT LATCH 12064 MA(STORE), RAM>AR, 12065 JUMP(COP20A); ----- ----- 44C 00020B11 77000000 ----- 12066 .ORG COP20A, *RWL= AIT LATCH 12067 MA(RWL), 12068 AR>A, B(0), OR, 12069 Y>RAM, Y>IO, 12070 JUMP(COP20B); ----- ----- B11 00000B12 0B005110 ----- 12071 .ORG COP20B, *A=MENU POINTER 12072 *TPD= LABEL CHARACTER 12073 RVDP, 12074 MA(THISRW), RAM>AR, 12075 JUMP(COP21); ----- ----- B12 00020B13 7D008000 ----- 12076 .ORG COP21, *DEC MENU POINTER 12077 MA(THISRW), 12078 AR>A, B(-1), ADD, 12079 Y>RAM, Y>AR, 12080 JUMP(COP22); ----- ----- B13 00220B14 7DFF0110 ----- 12081 .ORG COP22, *END OF MENU LINE? 12082 *P=MENU POINTER 12083 *A=STOR0 12084 *B=LABEL POINTER 12085 PR>BR, 12086 MA(STOR0), RAM>AR, 12087 NAR>A, B(-25), ADD, O>CIN, 12088 Y>PR, 12089 JN(COP23F,COP23T); ----- ----- B14 00434454 A0E70440 ----- 12090 .ORG COP23F, *RWL=DISPLAY PAGE 12091 MA(RWL), 12092 ARHI>A, B(0), OR, 12093 Y>RAM, Y>IO, 12094 JUMP(COP24); ----- ----- 454 00000B15 0B005120 ----- 12095 .ORG COP24, *WRITE CHARACTER TO MENU 12096 *A=CHAR COUNT 12097 MA(COUNT), RAM>AR, 12098 TPD>A, B(0), OR, 12099 Y>DR, 12100 JUMP(COP25); ----- ----- B15 00021B16 78001090 ----- 12101 .ORG COP25, *DEC CHAR COUNT 12102 MA(COUNT), 12103 AR>A, B(-1), ADD, 12104 Y>RAM, 12105 JUMP(COP26); ----- ----- B16 00000B17 78FF0110 ----- 12106 .ORG COP26, *LAST CHARACTER? 12107 *A=THISRW 12108 MA(THISRW), RAM>AR, 12109 JZ(COP27F,COP27T); ----- ----- B17 00022456 7D000000 ----- 12110 .ORG COP27F, *MORE CHARACTERS 12111 *POINT TO NEXT LABEL CHARACTER 12112 A(1), BR>B, ADD, 12113 Y>PR, 12114 JUMP(COP20F); ----- ----- 456 0000044C 80010001 ----- 12115 *END OF MENU LINE 12116 .ORG COP23T, *B=RETURN 12117 MA(RETURN), RAM>BR, 12118 JUMP(COP50F); ----- ----- 455 00010458 7C000000 ----- 12119 *COPIED LAST CHARACTER, MOVE PROMPT POINTER BACK TO LAST VALID CHAR 12120 * A=THISRW, RWL=DISPLAY PAGE 12121 .ORG COP27T, *P=POINTER TO PROMPT 12122 NAR>A, B(-25), ADD, O>CIN, 12123 Y>PR, 12124 JUMP(COP28); ----- ----- 457 00000B18 80E70440 ----- 12125 .ORG COP28, *TPD=MENU CHARACTER 12126 RVDP, 12127 JUMP(COP29); ----- ----- B18 00000B19 00008000 ----- 12128 .ORG COP29, *Y= TPD-33 12129 TPD>A, B(-33), ADD, 12130 JUMP(COP30); ----- ----- B19 00000B1A 00DF0090 ----- 12131 .ORG COP30, *CONTROL OR SPACE CHAR? IF NO, EXIT 12132 *B=RETURN 12133 MA(RETURN), RAM>BR, 12134 JN(COP50F,COP31T); ----- ----- B1A 00014458 7C000000 ----- 12135 .ORG COP31T, *INC PROMPT POINTER 12136 MA(THISRW), 12137 AR>A, B(1), ADD, 12138 Y>RAM, Y>AR, 12139 JUMP(COP27T); ----- ----- 459 00220457 7D010110 ----- 12140 *ENTRY POINT IF NO LABEL FOUND 12141 .ORG COP0T, *A=THISRW 12142 MA(THISRW), RAM>AR, 12143 JUMP(COP40T); ----- ----- 42B 0002044B 7D000000 ----- 12144 *ENTRY POINT FROM COP2 12145 .ORG COP40T, *B=STOR0 12146 *P= POINTER TO LABEL START 12147 MA(STOR0), RAM>BR, 12148 NAR>A, B(-24), ADD, O>CIN, 12149 Y>PR, 12150 JUMP(COP40A); ----- ----- 44B 00010B1B A0E80440 ----- 12151 .ORG COP40A, *MOVE PROMPT POINTER PAST PAGE NUMBER 12152 MA(THISRW), 12153 AR>A, B(-6), ADD, 12154 Y>RAM, 12155 JUMP(COP41); ----- ----- B1B 00000B1C 7DFA0110 ----- 12156 .ORG COP41, *RWL= LATCH OF DISPLAY PAGE 12157 MA(RWL), 12158 A(0), BRHI>B, OR, 12159 Y>RAM, Y>IO, 12160 JUMP(COP42); ----- ----- B1C 00000B1D 0B00510C ----- 12161 *CLEAR LABEL UP TO MAGS 12162 .ORG COP42, *WRITE A SPACE 12163 PR>BR, 12164 Y(>20), 12165 Y>DR, 12166 JUMP(COP42A); ----- ----- B1D 00411B1E 00201000 ----- 12167 .ORG COP42A, *P++ 12168 A(1), BR>B, ADD, 12169 Y>PR, 12170 JUMP(COP42B); ----- ----- B1E 00000B1F 80010001 ----- 12171 .ORG COP42B, *WRITE A SPACE 12172 PR>BR, 12173 Y(>20), 12174 Y>DR, 12175 JUMP(COP42C); ----- ----- B1F 00411B20 00201000 ----- 12176 .ORG COP42C, *P++ 12177 A(1), BR>B, ADD, 12178 Y>PR, 12179 JUMP(COP42D); ----- ----- B20 00000B21 80010001 ----- 12180 .ORG COP42D, *WRITE A SPACE 12181 PR>BR, 12182 Y(>20), 12183 Y>DR, 12184 JUMP(COP43); ----- ----- B21 00411B22 00201000 ----- 12185 .ORG COP43, *A= PAGE NUMBER MAGS 12186 *P++ 12187 MA(RET2), RAM>AR, 12188 A(1), BR>B, ADD, 12189 Y>PR, 12190 JUMP(COP44); ----- ----- B22 00020B23 FB010001 ----- 12191 .ORG COP44, *B= PROMPT POINTER 12192 *D= PAGE NUMBER MAGS 12193 PR>BR, 12194 ARHI>A, B(>30), OR, 12195 Y>DR, 12196 JUMP(COP45); ----- ----- B23 00411B24 00301020 ----- 12197 .ORG COP45, *P= POINTER TO TENS 12198 *A= PAGE NUMBER TENS 12199 MA(PT), RAM>AR, 12200 A(1), BR>B, ADD, 12201 Y>PR, 12202 JUMP(COP46); ----- ----- B24 00020B25 F5010001 ----- 12203 .ORG COP46, *B= PROMPT POINTER 12204 *D= PAGE NUMBER TENS 12205 PR>BR, 12206 ARHI>A, B(>30), OR, 12207 Y>DR, 12208 JUMP(COP47); ----- ----- B25 00411B26 00301020 ----- 12209 .ORG COP47, *P= POINTER TO UNITS 12210 *A= PAGE NUMBER UNITS 12211 MA(PU), RAM>AR, 12212 A(1), BR>B, ADD, 12213 Y>PR, 12214 JUMP(COP48); ----- ----- B26 00020B27 F6010001 ----- 12215 .ORG COP48, *B= RETURN 12216 *D= PAGE NUMBER UNITS 12217 MA(RETURN), RAM>BR, 12218 ARHI>A, B(>30), OR, 12219 Y>DR, 12220 JUMP(COP50F); ----- ----- B27 00011458 7C301020 ----- 12221 *EXIT 12222 * B=RETURN 12223 .ORG COP50F, *Y=RETURN 12224 *A=STOR0 12225 MA(STOR0), RAM>AR, 12226 A(1), BR>B, AND, 12227 JUMP(COP51); ----- ----- 458 00020B28 20010801 ----- 12228 .ORG COP51, *CASE RETURN=? 12229 *RWL= LATCH FOR DISPLAY PAGE 12230 MA(RWL), 12231 ARHI>A, B(0), OR, 12232 Y>RAM, Y>IO, 12233 JY(GAP136Y); ----- ----- B28 0000C780 0B005120 ----- 12234 * 12235 *+++COMPARE SUB-PAGE IN SUB-PAGE LATCH WITH USER SUB-PAGE 12236 * 12237 * input pars are:- 12238 * A: sub-page latch index-1 12239 * return pars are:- 12240 * A, last Y: 1 if compare is true, else 0 12241 * RETURN: return pointer 12242 * local variables used are:- 12243 * COUNT, LOCAL, MASK 12244 .ORG CSP0, *STORE LATCH POINTER IN MASK 12245 MA(MASK), 12246 AR>A, B(1), ADD, 12247 Y>RAM, 12248 JUMP(CSP1); ----- ----- 93A 00000B29 73010110 ----- 12249 .ORG CSP1, *INIT LOOP 12250 *A=COUNT=0 12251 MA(COUNT), 12252 Y(0), 12253 Y>RAM, Y>AR, 12254 JUMP(CSP2F); ----- ----- B29 0022045C 78001100 ----- 12255 *LOOP START 12256 * A=COUNT 12257 .ORG CSP2F, *P=INDEX TO USPx 12258 AR>A, B(USPI), ADD, 12259 Y>PR, 12260 JUMP(CSP3); ----- ----- 45C 00000B2A 80580010 ----- 12261 .ORG CSP3, *B=USPx 12262 PR>MA, RAM>BR, 12263 JUMP(CSP4); ----- ----- B2A 00110B2B 00000000 ----- 12264 .ORG CSP4, *KEEP IT IN LOCAL 12265 MA(LOCAL), 12266 A(0), BR>B, OR, 12267 Y>RAM, 12268 JUMP(CSP5); ----- ----- B2B 00000B2C 72001101 ----- 12269 .ORG CSP5, *B=INDEX TO LATCH 12270 MA(MASK), RAM>BR, 12271 JUMP(CSP6); ----- ----- B2C 00010B2D 73000000 ----- 12272 .ORG CSP6, *P=INDEX TO LATCH DIGIT 12273 *B=USP DIGIT 12274 MA(LOCAL), RAM>BR, 12275 AR>A, BR>B, ADD, 12276 Y>PR, 12277 JUMP(CSP7); ----- ----- B2D 00010B2E F2000011 ----- 12278 .ORG CSP7, *A=LATCH DIGIT 12279 PR>MA, RAM>AR, 12280 JUMP(CSP8); ----- ----- B2E 00120B2F 00000000 ----- 12281 .ORG CSP8, *COMPARE DIGITS 12282 *A=COUNT 12283 MA(COUNT), RAM>AR, 12284 ARHI>A, BRHI>B, XOR, 12285 JUMP(CSP9); ----- ----- B2F 00020B30 7800182C ----- 12286 .ORG CSP9, *DIGITS ARE THE SAME? 12287 *Y=COUNT-3 12288 *B=RETURN 12289 MA(RETURN), RAM>BR, 12290 AR>A, B(-3), ADD, 12291 JZ(CSP10F,CSP10T); ----- ----- B30 0001245A 7CFD0010 ----- 12292 .ORG CSP10T, *DIGITS THE SAME 12293 *COUNT++ 12294 *COMPARED ALL THE DIGITS? 12295 MA(COUNT), 12296 AR>A, B(1), ADD, 12297 Y>RAM, Y>AR, 12298 JZ(CSP2F,CSP11T); ----- ----- 45B 0022245C 78010110 ----- 12299 * 12300 .ORG CSP10F, *DIGITS ARE NOT THE SAME 12301 *A=0 12302 *B=RETURN 12303 MA(RETURN), RAM>BR, 12304 Y(0), 12305 Y>AR, 12306 JUMP(CSP20); ----- ----- 45A 00230B31 7C001000 ----- 12307 * 12308 .ORG CSP11T, *ALL THE DIGITS ARE THE SAME 12309 *A=1 12310 *B=RETURN 12311 MA(RETURN), RAM>BR, 12312 Y(1), 12313 Y>AR, 12314 JUMP(CSP20); ----- ----- 45D 00230B31 7C011000 ----- 12315 *EXIT 12316 .ORG CSP20, *Y=RETURN 12317 A(1), BR>B, AND, 12318 JUMP(CSP21); ----- ----- B31 00000B32 00010801 ----- 12319 .ORG CSP21, *Y=RESULT FLAG 12320 AR>A, B(0), OR, 12321 JY(SPLM22Y); ----- ----- B32 0000C2C0 00001010 ----- 12322 * 12323 *+++FIND SUB-PAGE 12324 * 12325 * This routine finds RAM pointers to the sub-page latches which 12326 * are associated with STORE 0, STORE 4 and STORE 5 (it does this 12327 * by comparing the latch numbers in LFSP0-2 with the latch 12328 * numbers in STORE 0, STORE 4, and STORE 5). 12329 * 12330 * input pars are:- 12331 * RETURN: return pointer 12332 * 12333 * return pars are:- 12334 * PM: pointer to STOR0 sub-page latch units-1 12335 * PT: pointer to STOR4 sub-page latch units-1 12336 * PU: pointer to STOR5 sub-page latch units-1 12337 * local variables used are:- 12338 * COUNT 12339 * 12340 .ORG FSP0F, *INIT LOOP 12341 *COUNT=0 12342 MA(COUNT), 12343 Y(0), 12344 Y>RAM, 12345 JUMP(FSP20Y.0); ----- ----- 30E 00000760 78001100 ----- 12346 * A=LOOP 12347 .ORG FSP10T, *INC LOOP 12348 MA(COUNT), 12349 AR>A, B(1), ADD, 12350 Y>RAM, 12351 JUMP(FSP11); ----- ----- 461 00000B33 78010110 ----- 12352 .ORG FSP11, *A=STOR5, P=PU 12353 *CASE COUNT? 12354 MA(STOR5), RAM>AR, 12355 Y(PU), 12356 Y>PR, 12357 JY(FSP20Y.0); ----- ----- B33 0002C760 A5761000 ----- 12358 .ORG FSP20Y.0, *COUNT=0 12359 *A=STORE0, P=PM 12360 MA(STOR0), RAM>AR, 12361 Y(PM), 12362 Y>PR, 12363 JUMP(FSP20Y.2); ----- ----- 760 00020762 A0741000 ----- 12364 .ORG FSP20Y.1, *COUNT=1 12365 *A=STORE4, P=PT 12366 MA(STOR4), RAM>AR, 12367 Y(PT), 12368 Y>PR, 12369 JUMP(FSP20Y.2); ----- ----- 761 00020762 A4751000 ----- 12370 * A=STORE, P=POINTER TO STORE 12371 .ORG FSP20Y.2, *COUNT=2 12372 *B=LFSP0 12373 MA(LFSP0), RAM>BR, 12374 JUMP(FSP30); ----- ----- 762 00010B34 48000000 ----- 12375 .ORG FSP30, *COMPARE LATCH FOR STORE WITH LATCH FOR SUB-PAGE 0 12376 MA(LFSP1), RAM>BR, 12377 ARHI>A, BR.0F>B, XOR, 12378 JUMP(FSP31); ----- ----- B34 00010B35 49001822 ----- 12379 .ORG FSP31, *COMPARE LATCH FOR STORE WITH LATCH FOR SUB-PAGE 1 12380 *LATCH FOR STORE IN SP 0? 12381 *A= LOOP 12382 MA(COUNT), RAM>AR, 12383 ARHI>A, BR.0F>B, XOR, 12384 JZ(FSP32F,FSP32T); ----- ----- B35 0002245E 78001822 ----- 12385 .ORG FSP32T, *LATCH FOR THIS STORE IS IN SUB-PAGE LATCH 0 12386 *Px=SP0I-1 12387 PR>MA, 12388 Y(SP0I-1), 12389 Y>RAM, 12390 JUMP(FSP10T); ----- ----- 45F 00100461 00471100 ----- 12391 .ORG FSP32F, *LATCH FOR STORE IN SP 1? 12392 *Px=SP1I-1 12393 PR>MA, 12394 Y(SP1I-1), 12395 Y>RAM, 12396 JZ(FSP33F,FSP10T); ----- ----- 45E 00102460 004B1100 ----- 12397 .ORG FSP33F, *LATCH FOR THIS STORE IS IN SUB-PAGE LATCH 2 12398 *Px=SP2I-1 12399 PR>MA, 12400 Y(SP2I-1), 12401 Y>RAM, 12402 JUMP(FSP10T); ----- ----- 460 00100461 004F1100 ----- 12403 * 12404 .ORG FSP20Y.3, *EXIT 12405 *A=RETURN 12406 MA(RETURN), RAM>AR, 12407 JUMP(FSP50); ----- ----- 763 00020B36 7C000000 ----- 12408 .ORG FSP50, *Y=RETURN 12409 AR>A, B(3), AND, 12410 JUMP(FSP51); ----- ----- B36 00000B37 00030810 ----- 12411 .ORG FSP51, *RETURN=? 12412 *A= VPPRG1 12413 MA(VPPRG1), RAM>AR, 12414 JY(SPLM0.0); ----- ----- B37 0002C430 61000000 ----- 12415 * 12416 ************************************************************************ 12417 * section 4: service interface * 12418 ************************************************************************ 12419 * 12420 ***RC0T: LOAD FLAG HAS BEEN DETECTED 12421 * 12422 * This routine does all the interface maintenance (eg RSTRXTX etc). 12423 * For instruction decode, it will call DI. 12424 * 12425 .ORG RC0T, *Y=SLAVERW 12426 A(%00001000), RCS>B, AND, 12427 JUMP(RC1); ----- ----- 00F 00000B38 0008080B ----- 12428 .ORG RC1, *Y=SELEDGE 12429 *HOST READ MODE? 12430 *A=RCSTAT 12431 MA(RCSTAT), RAM>AR, 12432 A(%00000010), RCS>B, AND, 12433 JZ(RC10F,RC10T); ----- ----- B38 00022462 2F02080B ----- 12434 *+++HOST WRITE MODE, RECEIVE A BYTE 12435 .ORG RC10T, *FIRST BYTE? 12436 JZ(RC11F,RC11T); ----- ----- 463 00002464 00000000 ----- 12437 .ORG RC11F, *FIRST BYTE 12438 *SET COMMAND MODE, DO NOT LOOK FOR OPERANDS 12439 *OPCNT=0, CHRM=0 12440 MA(RCSTAT), 12441 AR>A, B(>FF-CHRM-OPCNT), AND, 12442 Y>RAM, Y>AR, 12443 JUMP(RC11T); ----- ----- 464 00220465 2F700910 ----- 12444 * 12445 .ORG RC11T, *Y=CHRM 12446 AR>A, B(CHRM), AND, 12447 JUMP(RC12); ----- ----- 465 00000B39 00800810 ----- 12448 .ORG RC12, *CHARACTER MODE? 12449 *Y=OPCNT 12450 AR>A, B(OPCNT), AND, 12451 JZ(RC30F,RC30T); ----- ----- B39 00002466 000F0810 ----- 12452 *+++HOST READ MODE 12453 * A=RCSTAT, LAST Y WAS SELEDGE 12454 .ORG RC10F, *FIRST BYTE OF TRANSFER? 12455 *B=MREG1 12456 MA(MREG1), RAM>BR, 12457 JZ(RC20F,RC20T); ----- ----- 462 00012468 65000000 ----- 12458 .ORG RC20F, *FIRST BYTE 12459 *Y=ADDSTS 12460 A(ADDSTS), BR>B, AND, 12461 JUMP(RC21); ----- ----- 468 00000B3A 00400801 ----- 12462 .ORG RC21, *ADDITIONAL STATUS SELECTED? 12463 JZ(RC22F,RC22T); ----- ----- B3A 0000246A 00000000 ----- 12464 .ORG RC22F, *YES 12465 *RMODE=7, CHRM=0 12466 MA(RCSTAT), 12467 AR.0F>A, B(>70), OR, 12468 Y>RAM, Y>AR, 12469 JUMP(RC20T); ----- ----- 46A 00220469 2F7011C0 ----- 12470 .ORG RC22T, *NO 12471 *RMODE=2, CHRM=0 12472 MA(RCSTAT), 12473 AR.0F>A, B(>20), OR, 12474 Y>RAM, Y>AR, 12475 JUMP(RC20T); ----- ----- 46B 00220469 2F2011C0 ----- 12476 * 12477 * TCJ July 94, 12478 * It is possible to reach this instruction with the CHRM 12479 * flag set in RCSTAT. This causes an invalid jump of the 12480 * following JY. 12481 * 12482 *ORG RC20T, *Y=RMODE 12483 * *A=VDP2 12484 * MA(VDP2), RAM>AR, 12485 * ARHI>A, B(0), OR, 12486 * JUMP(RC23); 12487 * 12488 .ORG RC20T, *Y=RMODE 12489 *A=VDP2 12490 MA(VDP2), RAM>AR, 12491 ARHI>A, B(>07), AND, 12492 JUMP(RC23); ----- ----- 469 00020B3B 02070820 ----- 12493 * 12494 .ORG RC23, *CASE RMODE=? 12495 *A=LANG DISPLAYED AT THE MOMENT 12496 *B=DHREG 12497 MA(DHREG), RAM>BR, 12498 AR>A, B(%00001110), AND, 12499 Y>AR, 12500 JY(RC60Y); ----- ----- B3B 0023C0F0 320E0810 ----- 12501 * 12502 *+++RECEIVE A BYTE IN CHARACTER MODE 12503 * A=RCSTAT, LAST Y WAS OPCNT 12504 .ORG RC30F, *CHARACTER MODE 12505 *Y=RCS-ESCAPE 12506 *BR=ROWPTR FOR POINT0F 12507 MA(ROWPTR), RAM>BR, 12508 A(->1B), RCD>B, ADD, 12509 JUMP(RC31); ----- ----- 466 00010B3C 30E5000A ----- 12510 .ORG RC31, *ESCAPE CHARACTER? 12511 *IF NOT, CALL POINT0F 12512 *RETURN=0, RETURN TO RC40Y 12513 MA(RETURN), 12514 A(0), B(0), AND, 12515 Y>RAM, 12516 * 12517 JUMP(POINT0F); ----- ----- B3C 00000B3D 7C000900 ----- 12518 * 12519 * TCJ May 94, 12520 * Disabled termination of downloaed data by the 12521 * ESC (>1B) character. 12522 * 12523 * JZ(POINT0F,RC32T); 12524 *.ORG RC32T, *ESCAPE 12525 * *CHRM=0 12526 * RSTRXTX, 12527 * MA(RCSTAT), 12528 * AR>A, B(>FF-CHRM), AND, 12529 * Y>RAM, 12530 * JUMP(ST0F); 12531 * 12532 *NEED TO WRITE TO PAGE OR SCRATCH RAM? 12533 * A=OLD ROW, B=OLD COL, TPD=TELETEXT PAGE DATA 12534 .ORG RC40Y, *A=OLD ROW-26 ###3/4 (some duplication with RC60A) 12535 * 12536 *### Inhibit the means of writing to scratch RAM this way because 12537 * of the possible chaos which could be caused by bit errors 12538 * in the row field of MPTR. Can do it with SETREG (this is 12539 * much safer as only one byte can be written at a time). 12540 * 12541 * AR>A, B(-26), ADD, 12542 * Y>AR, 12543 * JUMP(RC41); 12544 *ORG RC41, *A=40*(OLD ROW-26) 12545 * *PAGE OR SCRATCH DATA? 12546 * AR<<3>A, AR<<5>B, ADD, 12547 * Y>AR, 12548 * JN(RC42F,RC42T); 12549 *WRITE TO SCRATCH RAM 12550 *ORG RC42F, *P=SCRATCH POINTER 12551 * AR>A, BR>B, ADD, 12552 * Y>PR, 12553 * JUMP(RC43); 12554 *ORG RC43, *WRITE TO SCRATCH AND IO REG 12555 * PR>MA, 12556 * A(0), RCD>B, OR, 12557 * Y>RAM, Y>IO, 12558 * JUMP(RC44); 12559 *WRITE TO PAGE MEMORY 12560 *ORG RC42T, *WRITE CHARACTER TO PAGE MEMORY 12561 A(0), RCD>B, OR, 12562 Y>DR, 12563 JUMP(RC44); ----- ----- 0C0 00001B3E 0000100A ----- 12564 *+++COMMON EXIT FROM READ A BYTE 12565 .ORG RC44, * 12566 RSTRXTX, 12567 JUMP(ST0F); ----- ----- B3E 00000001 00000200 ----- 12568 * 12569 *+++RECEIVE A BYTE IN COMMAND MODE 12570 * A=RCSTAT, LAST Y WAS OPCNT 12571 .ORG RC30T, *COMMAND MODE 12572 *OPCNT=0? 12573 JZ(RC50F,RC50T); ----- ----- 467 0000246C 00000000 ----- 12574 .ORG RC50T, *OPCNT==0 12575 *LSTINS=RCD 12576 MA(LSTINS), 12577 A(0), RCD>B, OR, 12578 Y>RAM, 12579 JUMP(RC56); ----- ----- 46D 00000B3F 2E00110A ----- 12580 *+++STORE OPERAND IN OP STORE 12581 .ORG RC50F, *OPCNT!=0 12582 *RWL=7 12583 MA(RWL), 12584 A(7), B(7), OR, 12585 Y>RAM, Y>IO, 12586 JUMP(RC51); ----- ----- 46C 00000B40 0B075100 ----- 12587 .ORG RC51, *PR=-OPCNT 12588 NAR.0F>A, B(0), ADD, O>CIN, 12589 Y>PR, 12590 JUMP(RC52); ----- ----- B40 00000B41 80000460 ----- 12591 .ORG RC52, *DEC OPCNT 12592 MA(RCSTAT), 12593 AR>A, B(-1), ADD, 12594 Y>RAM, 12595 JUMP(RC53); ----- ----- B41 00000B42 2FFF0110 ----- 12596 .ORG RC53, *UPDATE PAGE MEMORY 12597 *STORE=RCD (ALSO STORE THIS OPERAND IN 'STORE') 12598 *OPCNT=0? 12599 MA(STORE), 12600 A(0), RCD>B, OR, 12601 Y>DR, Y>RAM, 12602 JZ(RC54F,RC54T); ----- ----- B42 0000346E 7700110A ----- 12603 .ORG RC54F, *NO, MORE OPERANDS 12604 RSTRXTX, 12605 JUMP(ST0F); ----- ----- 46E 00000001 00000200 ----- 12606 * 12607 .ORG RC54T, *YES, GO AND DO IT 12608 *OPCNT=>F 12609 MA(RCSTAT), 12610 AR.F0>A, B(>0F), OR, 12611 Y>RAM, 12612 JUMP(RC56); ----- ----- 46F 00000B3F 2F0F11D0 ----- 12613 *+++ 12614 .ORG RC56, *CALL DECODE INSTRUCTION 12615 *B=INSTRUCTION 12616 RSTRXTX, 12617 MA(LSTINS), RAM>BR, 12618 JUMP(DI0); ----- ----- B3F 00010053 2E000200 ----- 12619 * 12620 *+++SEND A BYTE 12621 * 12622 * A=DISPLAYED LANG, B=DHREG 12623 .ORG RC60Y, *CASE RMODE==0 12624 *BR=ROWPTR FOR POINT0F 12625 MA(ROWPTR), RAM>BR, 12626 JUMP(RC60AA); ----- ----- 0F0 00010B43 30000000 ----- 12627 .ORG RC60AA, *CALL POINT 12628 *RETURN=1, RETURN TO RC60A 12629 MA(RETURN), 12630 A(1), B(1), OR, 12631 Y>RAM, 12632 JUMP(POINT0F); ----- ----- B43 00000B3D 7C011100 ----- 12633 *NEED TO OUTPUT PAGE OR SCRATCH RAM DATA? 12634 * A=OLD ROW, B=OLD COL, TPD=TELETEXT PAGE DATA 12635 .ORG RC60A, *A=OLD ROW-26 12636 AR>A, B(-26), ADD, 12637 Y>AR, 12638 JUMP(RC60B); ----- ----- 0C1 00220B44 00E60010 ----- 12639 .ORG RC60B, *A=40*(OLD ROW-26) 12640 *PAGE OR SCRATCH DATA? 12641 AR<<3>A, AR<<5>B, ADD, 12642 Y>AR, 12643 JN(RC60CF,RC60CT); ----- ----- B44 00224470 00000059 ----- 12644 *OUTPUT SCRATCH DATA 12645 .ORG RC60CF, *P=SCRATCH POINTER 12646 AR>A, BR>B, ADD, 12647 Y>PR, 12648 JUMP(RC60D); ----- ----- 470 00000B45 80000011 ----- 12649 .ORG RC60D, *A=SCRATCH DATA 12650 PR>MA, RAM>AR, 12651 JUMP(RC60E); ----- ----- B45 00120B46 00000000 ----- 12652 .ORG RC60E, *OUTPUT BYTE 12653 *BR=RCSTAT 12654 MA(RCSTAT), RAM>BR, 12655 AR>A, B(0), OR, 12656 Y>RCI, 12657 JUMP(RC80); ----- ----- B46 00050B47 2F001210 ----- 12658 *OUTPUT PAGE DATA 12659 .ORG RC60CT, *OUTPUT BYTE 12660 *(RVDP IN POINT0F) 12661 *BR=RCSTAT 12662 MA(RCSTAT), RAM>BR, 12663 TPD>A, B(0), OR, 12664 Y>RCI, 12665 JUMP(RC80); ----- ----- 471 00050B47 2F001290 ----- 12666 .ORG RC61, *CASE RMODE=1 12667 *A=DEVICE ID 12668 Y(>13), 12669 Y>AR, 12670 JUMP(RC70F); ----- ----- 0F1 00220472 00131000 ----- 12671 .ORG RC62, *CASE RMODE=2 12672 *Y=NRH 12673 *B=STSWD0 12674 MA(STSWD0), RAM>BR, 12675 A(NRH), BR>B, AND, 12676 JUMP(RC62A); ----- ----- 0F2 00010B48 64100801 ----- 12677 .ORG RC62A, *OR IN MSN, CLEAR SEARCH BIT 12678 *HEADER ROLLING? 12679 AR.0F>A, BR.F0>B, OR, 12680 Y>AR, 12681 JZ(RC70F,RC62BT); ----- ----- B48 00222472 000010C3 ----- 12682 .ORG RC62BT, *HEADER ROLLING, SET SEARCH BIT 12683 AR>A, B(1), OR, 12684 Y>AR, 12685 JUMP(RC70F); ----- ----- 473 00220472 00011010 ----- 12686 .ORG RC63, *CASE RMODE=3 12687 *A=PDCRG2 12688 MA(PDCRG2), RAM>AR, 12689 JUMP(RC70F); ----- ----- 0F3 00020472 6D000000 ----- 12690 .ORG RC64, *CASE RMODE=4 12691 *A=PDCRG1 12692 MA(PDCRG1), RAM>AR, 12693 JUMP(RC70F); ----- ----- 0F4 00020472 6C000000 ----- 12694 .ORG RC65, *CASE RMODE=5 12695 *A=NO OF TELETEXT LINES 12696 MA(LINCNT), RAM>AR, 12697 JUMP(RC70F); ----- ----- 0F5 00020472 66000000 ----- 12698 .ORG RC66, *CASE RMODE=6 12699 *A=TELETEXT ERROR COUNT 12700 MA(ERRCNT), RAM>AR, 12701 JUMP(RC70F); ----- ----- 0F6 00020472 3A000000 ----- 12702 *MAKE UP STATUS BYTE 2 12703 .ORG RC67, *CASE RMODE=7 12704 *B=STOR4 12705 MA(STOR4), RAM>BR, 12706 JUMP(RC67A); ----- ----- 0F7 00010B49 24000000 ----- 12707 .ORG RC67A, *P=POINTER TO STOR4 LATCH FLAGS 12708 *B=STOR5 12709 MA(STOR5), RAM>BR, 12710 A(LAF0), BRHI>B, ADD, 12711 Y>PR, 12712 JUMP(RC67B); ----- ----- B49 00010B4A A540000C ----- 12713 .ORG RC67B, *A=LATCH FLAGS FOR STOR4 12714 *P=POINTER TO STOR5 LATCH FLAGS 12715 PR>MA, RAM>AR, 12716 A(LAF0), BRHI>B, ADD, 12717 Y>PR, 12718 JUMP(RC67C); ----- ----- B4A 00120B4B 8040000C ----- 12719 .ORG RC67C, *Y=CAP FOR STOR4 12720 *B=LATCH FLAGS FOR STOR5 12721 PR>MA, RAM>BR, 12722 AR>A, B(CAP), AND, 12723 JUMP(RC67D); ----- ----- B4B 00110B4C 00800810 ----- 12724 .ORG RC67D, *NEXT SUB-PAGE CAPTURED? 12725 *A=FLAG INPUTS 12726 A(3), GPIO>B, AND, 12727 Y>AR, 12728 JZ(RC67EF,RC67ET); ----- ----- B4C 00222474 0003080F ----- 12729 .ORG RC67EF, *NEXT SUB-PAGE CAPTURED, SET NSP FLAG 12730 AR>A, B(>04), OR, 12731 Y>AR, 12732 JUMP(RC67ET); ----- ----- 474 00220475 00041010 ----- 12733 * 12734 .ORG RC67ET, *Y=CAP FOR STOR5 12735 A(CAP), BR>B, AND, 12736 JUMP(RC67G); ----- ----- 475 00000B4D 00800801 ----- 12737 .ORG RC67G, *NEXT NEXT SUB-PAGE CAPTURED? 12738 *B=STSWD1 12739 MA(STSWD1), RAM>BR, 12740 JZ(RC67HF,RC67HT); ----- ----- B4D 00012476 14000000 ----- 12741 .ORG RC67HF, *NEXT NEXT SUB-PAGE CAPTURED, SET NNSP FLAG 12742 AR>A, B(>08), OR, 12743 Y>AR, 12744 JUMP(RC67HT); ----- ----- 476 00220477 00081010 ----- 12745 * A=STATUS WORD LO NIB, B=STSWD1 (HI NIB) 12746 .ORG RC67HT, *COMBINE LO AND HI NIBS 12747 AR.0F>A, BR.F0>B, OR, 12748 Y>PR, 12749 JUMP(RC67J); ----- ----- 477 00000B4E 800010C3 ----- 12750 .ORG RC67J, *A=LINE LOCK FLAG, B=P 12751 PR>BR, 12752 A(1), PLL>B, AND, 12753 Y>AR, 12754 JUMP(RC67K); ----- ----- B4E 00630B4F 0001080E ----- 12755 .ORG RC67K, *OR IN LINE LOCK, STORE IN P 12756 *B=STOR0 12757 MA(STOR0), RAM>BR, 12758 AR<<4>A, BR>B, OR, 12759 Y>PR, 12760 JUMP(RC67L); ----- ----- B4F 00010B50 A0001031 ----- 12761 .ORG RC67L, *B=STATUS BYTE, P=POINTER TO DISPLAY PAGE LATCH FLAGS 12762 PR>BR, 12763 A(LAF0), BRHI>B, ADD, 12764 Y>PR, 12765 JUMP(RC67M); ----- ----- B50 00410B51 8040000C ----- 12766 .ORG RC67M, *A=DISPLAY PAGE LATCH FLAGS 12767 PR>MA, RAM>AR, 12768 JUMP(RC67N); ----- ----- B51 00120B52 00000000 ----- 12769 .ORG RC67N, *A=CAP+OPN 12770 AR>A, B(CAP+OPN), AND, 12771 Y>AR, 12772 JUMP(RC67P); ----- ----- B52 00220B53 00900810 ----- 12773 .ORG RC67P, *Y=OPN OR !CAP 12774 AR>A, B(CAP), XOR, 12775 JUMP(RC67Q); ----- ----- B53 00000B54 00801810 ----- 12776 .ORG RC67Q, *PAGE CAPTURED AND NOT OPEN? 12777 JZ(RC67SF,RC67ST); ----- ----- B54 00002478 00000000 ----- 12778 * 12779 .ORG RC67SF, *CLEAR DPCAP FLAG IN STATUS BYTE 12780 MA(SYS2), RAM>BR, 12781 A(>7F), BR>B, AND, 12782 Y>AR, 12783 JUMP(RC67U); ----- ----- 478 00230B55 097F0801 ----- 12784 * 12785 .ORG RC67ST, *SET DPCAP FLAG IN STATUS BYTE 12786 MA(SYS2), RAM>BR, 12787 A(>80), BR>B, OR, 12788 Y>AR, 12789 JUMP(RC67U); ----- ----- 479 00230B55 09801001 ----- 12790 * 12791 * TCJ march 94 12792 * Add VPS bit to status byte 2 12793 * 12794 .ORG RC67U, 12795 A(TVPS), BR>B, AND, 12796 JUMP(RC67V); ----- ----- B55 00000B56 00100801 ----- 12797 * 12798 .ORG RC67V, *TVPS set ? 12799 JZ(RC67WF,RC67WT); ----- ----- B56 0000247A 00000000 ----- 12800 * 12801 .ORG RC67WF, *TVPS set, 12802 *set appropriate bit in status 2 12803 AR>A, B(TVPS), OR, 12804 Y>AR, 12805 JUMP(RC70F); ----- ----- 47A 00220472 00101010 ----- 12806 * 12807 .ORG RC67WT, *TVPS not set, 12808 *clear appropriate bit in status 2 12809 AR>A, B(>FF-TVPS), AND, 12810 Y>AR, 12811 JUMP(RC70F); ----- ----- 47B 00220472 00EF0810 ----- 12812 * 12813 * A=BYTE TO SEND 12814 .ORG RC70F, *B=RCSTAT 12815 *OUTPUT BYTE 12816 MA(RCSTAT), RAM>BR, 12817 AR>A, B(0), OR, 12818 Y>RCI, 12819 JUMP(RC71); ----- ----- 472 00050B57 2F001210 ----- 12820 .ORG RC71, *DEC RMODE 12821 MA(RCSTAT), 12822 A(->10), BR>B, ADD, 12823 Y>RAM, 12824 JUMP(RC80); ----- ----- B57 00000B47 2FF00101 ----- 12825 *+++COMMON EXIT FROM SEND A BYTE 12826 * BR=RCSTAT 12827 .ORG RC80, * 12828 JUMP(ST0F); ----- ----- B47 00000001 00000000 ----- 12829 * 12830 *+++DECODE INSTRUCTION 12831 * 12832 *ENTRY POINT FROM POLL CODE TO COMPLETE DELAYED INSTRUCTION 12833 * BR=INSTRUCTION 12834 .ORG DI0, *CALL DECODE INSTRUCTION 12835 *Y=INSTRUCTION HI NIB -8 12836 A(-8), BRHI>B, ADD, 12837 JUMP(DI0AA); ----- ----- 053 00000B58 00F8000C ----- 12838 .ORG DI0AA, *A=LAST INSTRUCTION, VALID INSTRUCTION? 12839 *Y=INSTRUCTION HIGH NIBBLE 12840 MA(LSTINS), RAM>AR, 12841 A(0), BRHI>B, OR, 12842 JN(DI1AAF,DI1AAT); ----- ----- B58 0002447C 2E00100C ----- 12843 .ORG DI1AAF, *INVALID INSTRUCTION 12844 JUMP(DI100); ----- ----- 47C 000000D1 00000000 ----- 12845 .ORG DI1AAT, *CASE INSTRUCTION HIGH NIBBLE 12846 *Y=INSTRUCTION LOW NIBBLE 12847 *BR=RCSTAT 12848 MA(RCSTAT), RAM>BR, 12849 AR.0F>A, B(>0F), AND, 12850 JY(DI0XY); ----- ----- 47D 0001C200 2F0F08C0 ----- 12851 *///0- 12852 * BR=RCSTAT, AR=INSTRUCTION 12853 .ORG DI0XY, *CASE INS HIGH NIB=>0 12854 *Y=OPCNT 12855 A(0), BR.0F>B, OR, 12856 JY(DI00Y); ----- ----- 200 0000C210 00001002 ----- 12857 .ORG DI00Y, *CASE INS >00 12858 JUMP(DI100); ----- ----- 210 000000D1 00000000 ----- 12859 .ORG DI01, *CASE INS >01 12860 *LGSEL 12861 *OPCNT? A=USRLAN 12862 * MA(USRLAN), RAM>AR, 12863 JZ(LGS0F,LGS0T); ----- ----- 211 0000247E 00000000 ----- 12864 * 12865 .ORG DI02, *CASE INS >02 12866 *SRST 12867 JUMP(SRST0); ----- ----- 212 00000B59 00000000 ----- 12868 .ORG DI03, *CASE INS >03 12869 *INIT 12870 *DO THE SAME AS CHNGE 1 FOR NOW ### 12871 JUMP(CHNG0); ----- ----- 213 00000B5A 00000000 ----- 12872 .ORG DI04, *CASE INS >04 12873 *CHNGE1 12874 JUMP(CHNG0); ----- ----- 214 00000B5A 00000000 ----- 12875 .ORG DI05, *CASE INS >05 12876 *CHNGE2 12877 JUMP(CHNG3); ----- ----- 215 000000D4 00000000 ----- 12878 .ORG DI06, *CASE INS >06 12879 *CHNGE3 12880 JUMP(CHNG0); ----- ----- 216 00000B5A 00000000 ----- 12881 .ORG DI07, *CASE INS >07 12882 *CHNGE4 12883 JUMP(CHNG3); ----- ----- 217 000000D4 00000000 ----- 12884 .ORG DI08, *CASE INS >08 12885 *SETREG 12886 *OPCNT=0? 12887 *RWL=7 12888 MA(RWL), 12889 A(7), B(7), OR, 12890 Y>RAM, Y>IO, 12891 JZ(POKE0F,POKE0T); ----- ----- 218 00002484 0B075100 ----- 12892 .ORG DI09, *CASE INS >09 12893 *TEST0 12894 *OPCNT=0? 12895 *A=LAST OPERAND 12896 MA(STORE), RAM>AR, 12897 JZ(TST0F,TST0T); ----- ----- 219 00022486 77000000 ----- 12898 .ORG DI0A, *CASE INS >0A 12899 *TEST1 12900 JUMP(DI120); ----- ----- 21A 0000059C 00000000 ----- 12901 .ORG DI0B, *CASE INS >0B 12902 JUMP(DI100); ----- ----- 21B 000000D1 00000000 ----- 12903 .ORG DI0C, *CASE INS >0C 12904 JUMP(DI100); ----- ----- 21C 000000D1 00000000 ----- 12905 .ORG DI0D, *CASE INS >0D 12906 *STOP 12907 *B=RCM 12908 MA(RCM), RAM>BR, 12909 JUMP(STXT0); ----- ----- 21D 00010B5B 28000000 ----- 12910 .ORG DI0E, *CASE INS >0E 12911 *START 12912 *B=RCM 12913 MA(RCM), RAM>BR, 12914 JUMP(START0); ----- ----- 21E 00010B5C 28000000 ----- 12915 .ORG DI0F, *CASE INS >0F 12916 JUMP(DI100); ----- ----- 21F 000000D1 00000000 ----- 12917 */// 12918 *+++LGSEL: LANGUAGE SELECT (INCLUDED FOR UNITEXT COMPATIBILITY) 12919 * AR=USRLAN, BR=RCSTAT, LAST Y WAS OPCNT 12920 * 12921 * TCJ April 94, 209 mods 12922 * LGSEL command removed. It now performs a NOP 12923 * requiring one parameter which is ignored. 12924 * 12925 *WAIT FOR OPERAND 12926 .ORG LGS0T, *OPCNT=1 12927 A(1), BR.F0>B, 12928 OR, 12929 MA(RCSTAT), Y>RAM, 12930 JUMP(ST0F); ----- ----- 47F 00000001 2F011103 ----- 12931 * 12932 *GOT OPERAND 12933 * 12934 .ORG LGS0F, 12935 * 12936 * *CLEAR LANG FIELD IN AR COPY OF USRLAN 12937 * *BR=LAST OPERAND 12938 * MA(STORE), RAM>BR, 12939 * AR>A, B(%11001111), AND, 12940 * Y>AR, 12941 * JUMP(LGS2); 12942 *ORG LGS2, *Y=LG10 12943 * A(%00010000), BR>B, AND, 12944 * JUMP(LGS3); 12945 *.ORG LGS3, *Y=LG01 12946 * *LG10? 12947 * A(%00000001), BR>B, AND, 12948 * JZ(LGS4F,LGS4T); 12949 *.ORG LGS4F, *LG10 12950 * *SET LANG FIELD TO 10 12951 * MA(USRLAN), 12952 * AR>A, B(%00100000), OR, 12953 * Y>RAM, 12954 * JUMP(DI120); 12955 *.ORG LGS4T, *LG01? 12956 * JZ(LGS5F,LGS5T); 12957 *.ORG LGS5F, *LG01 12958 * *SET LANG FIELD TO 01 12959 * MA(USRLAN), 12960 * AR>A, B(%00010000), OR, 12961 * Y>RAM, 12962 * JUMP(DI120); 12963 *.ORG LGS5T, *NOT LG10 OR LG01 12964 * *ELSE SET LANG FIELD TO 00 12965 * MA(USRLAN), 12966 * AR>A, B(0), OR, 12967 * Y>RAM, 12968 * 12969 JUMP(DI120); ----- ----- 47E 0000059C 00000000 ----- 12970 * 12971 *+++STXT: STOP TELETEXT RECEPTION 12972 * B=RCM 12973 .ORG STXT0, *TOFF=1 12974 MA(RCM), 12975 A(TOFF), BR>B, OR, 12976 Y>RAM, 12977 JUMP(STXT1); ----- ----- B5B 00000B5D 28801101 ----- 12978 .ORG STXT1, *ERRCNT=0 12979 MA(ERRCNT), 12980 Y(0), 12981 Y>RAM, 12982 JUMP(STXT2); ----- ----- B5D 00000B5E 3A001100 ----- 12983 .ORG STXT2, *CALL CDTXT0 TO CLOSE DOWN TELETEXT 12984 *RETURN=0, RETURN TO STXT10T 12985 MA(RETURN), 12986 Y(0), 12987 Y>RAM, 12988 JUMP(CDTXT0); ----- ----- B5E 000009A7 7C001100 ----- 12989 .ORG STXT10T, * 12990 JUMP(DI120); ----- ----- 65F 0000059C 00000000 ----- 12991 *+++START: SET ROLLING HEADER 12992 * B=RCM 12993 .ORG START0, *TOFF=0 12994 MA(RCM), 12995 A(>FF-TOFF), BR>B, AND, 12996 Y>RAM, 12997 JUMP(START1); ----- ----- B5C 00000B5F 287F0901 ----- 12998 .ORG START1, *ERRCNT=0 12999 MA(ERRCNT), 13000 Y(0), 13001 Y>RAM, 13002 JUMP(DI120); ----- ----- B5F 0000059C 3A001100 ----- 13003 *+++POKE DATA TO SCRATCH RAM AND IO REGISTERS 13004 * RWL=7 13005 .ORG POKE0T, *OPCNT==0 13006 *OPCNT=2 13007 MA(RCSTAT), 13008 A(2), BR.F0>B, ADD, 13009 Y>RAM, 13010 JUMP(ST0F); ----- ----- 485 00000001 2F020103 ----- 13011 .ORG POKE0F, *OPCNT!=0 13012 *PR=-2 (INDEX TO 1ST OPERAND) 13013 Y(-2), 13014 Y>PR, 13015 JUMP(POKE1); ----- ----- 484 00000B60 80FE1000 ----- 13016 .ORG POKE1, *READ 1ST OPERAND 13017 RVDP, 13018 JUMP(POKE2); ----- ----- B60 00000B61 00008000 ----- 13019 .ORG POKE2, *P= ADDRESS 13020 *A= DATA 13021 MA(STORE), RAM>AR, 13022 TPD>A, B(>7F), AND, 13023 Y>PR, 13024 JUMP(POKE3); ----- ----- B61 00020B62 F77F0890 ----- 13025 .ORG POKE3, *WRITE DATA TO SCRATCH RAM AND IO SPACE 13026 PR>MA, 13027 AR>A, B(0), OR, 13028 Y>RAM, Y>IO, 13029 JUMP(DI100); ----- ----- B62 001000D1 00005110 ----- 13030 *+++TEST0: DISPLAY A STORE FOR DEBUG 13031 * A=LAST OPERAND, B=RCSTAT 13032 .ORG TST0T, *OPCNT=1 13033 MA(RCSTAT), 13034 A(1), BR.F0>B, OR, 13035 Y>RAM, 13036 JUMP(ST0F); ----- ----- 487 00000001 2F011103 ----- 13037 .ORG TST0F, *POINT TO STORE INDICATED IN OPERAND 13038 AR.0F>A, B(STOR0), ADD, 13039 Y>PR, 13040 JUMP(TST1); ----- ----- 486 00000B63 802000C0 ----- 13041 .ORG TST1, *A=LATCH FOR THIS STORE 13042 PR>MA, RAM>AR, 13043 JUMP(TST2); ----- ----- B63 00120B64 00000000 ----- 13044 .ORG TST2, *DISPLAY STORE, ENABLE ALL ROWS 13045 MA(VDP0), 13046 ARHI>A, B(>70), OR, 13047 Y>IO, 13048 JUMP(DI100); ----- ----- B64 000000D1 00705020 ----- 13049 *///1- 13050 * BR=RCSTAT, AR=INSTRUCTION 13051 .ORG DI1X, *CASE INS HIGH NIB=>1 13052 *Y=VBI, B=SCREEN 13053 MA(SCREEN), RAM>BR, 13054 A(%01000000), RCS>B, AND, 13055 JY(DI10Y); ----- ----- 201 0001C220 6040080B ----- 13056 .ORG DI10Y, *CASE INS >10 13057 *UPDATE 13058 *AR=VDPTXT 13059 *Y=TDISP 13060 MA(VDPTXT), RAM>AR, 13061 A(TDISP), BR>B, AND, 13062 JZ(UPD0F,UPD0T); ----- ----- 220 00022488 2B040801 ----- 13063 *ENTRY POINT FROM CLOCK 13064 * A=INSTRUCTION, B=SCREEN, LAST Y WAS VBI 13065 .ORG DI11, *CASE INS >11 13066 *SPAGE, IN VBI? 13067 *Y=TDISP 13068 A(TDISP), BR>B, AND, 13069 JZ(TPM0F,TPM0T); ----- ----- 221 0000248A 00040801 ----- 13070 .ORG DI12, *CASE INS >12 13071 *TIME, IN VBI? 13072 *Y=TDISP 13073 A(TDISP), BR>B, AND, 13074 JZ(TPM0F,TPM0T); ----- ----- 222 0000248A 00040801 ----- 13075 .ORG DI13, *CASE INS >13 13076 *EXPAND 13077 *AR=VDPTXT 13078 *Y=TDISP 13079 MA(VDPTXT), RAM>AR, 13080 A(TDISP), BR>B, AND, 13081 JUMP(EXP0); ----- ----- 223 00020B65 2B040801 ----- 13082 .ORG DI14, *CASE INS >14 13083 *PPAGE 13084 *Y=TDISP, BR=PEN 13085 MA(PEN), RAM>BR, 13086 A(TDISP), BR>B, AND, 13087 JUMP(PPAGE0); ----- ----- 224 00010B66 1B040801 ----- 13088 .ORG DI15, *CASE INS >15 13089 *DPAGE 13090 *VBI? 13091 *Y=TDISP 13092 *B=PEN 13093 MA(PEN), RAM>BR, 13094 A(TDISP), BR>B, AND, 13095 JZ(DIP0F,DIP0T); ----- ----- 225 0001248C 1B040801 ----- 13096 .ORG DI16, *CASE INS >16 13097 *IPAGE 13098 *VBI? 13099 *Y=TDISP 13100 *B=PEN 13101 MA(PEN), RAM>BR, 13102 A(TDISP), BR>B, AND, 13103 JZ(DIP0F,DIP0T); ----- ----- 226 0001248C 1B040801 ----- 13104 * 13105 * TCJ Dec 93 13106 * Adding of STBRW bit for subtitle browse, the normal 13107 * browse command must clear this bit. 13108 * 13109 .ORG DI17, *CASE INS >17 13110 *BROWSE 13111 *AR=VPPRG2 13112 MA(DHREG), RAM>AR, 13113 JUMP(TCJDI7A); ----- ----- 227 00020B67 32000000 ----- 13114 * 13115 .ORG TCJDI7A, *STBRW=0 13116 MA(DHREG), 13117 AR>A, B(>FF-STBRW), AND, 13118 Y>RAM, 13119 JUMP(TCJDI7B); ----- ----- B67 00000B68 32FD0910 ----- 13120 * 13121 .ORG TCJDI7B, *Y=VBI, B=SCREEN 13122 A(%01000000), RCS>B, AND, 13123 JUMP(TCJDI7C); ----- ----- B68 00000B69 0040080B ----- 13124 * 13125 .ORG TCJDI7C, *AR=VPPRG1 13126 *Y=TDISP, IN VBI? 13127 MA(VPPRG1), RAM>AR, 13128 A(TDISP), BR>B, AND, 13129 JZ(BROWSE0F,BROWSE0T); ----- ----- B69 0002248E 61040801 ----- 13130 * 13131 .ORG DI18, *CASE INS >18 13132 *THOLD 13133 *Y=TDISP 13134 *IN VBI? 13135 MA(VDPTXT), RAM>BR, 13136 A(TDISP), BR>B, AND, 13137 JZ(HOLD0F,HOLD0T); ----- ----- 228 00012490 2B040801 ----- 13138 .ORG DI19, *CASE INS >19 13139 *CHOLD 13140 *Y=TDISP 13141 *IN VBI? 13142 MA(VDPTXT), RAM>BR, 13143 A(TDISP), BR>B, AND, 13144 JZ(HOLD0F,HOLD0T); ----- ----- 229 00012490 2B040801 ----- 13145 .ORG DI1A, *CASE INS >1A 13146 *THOLD 13147 *Y=TDISP 13148 *IN VBI? 13149 MA(VDPTXT), RAM>BR, 13150 A(TDISP), BR>B, AND, 13151 JZ(HOLD0F,HOLD0T); ----- ----- 22A 00012490 2B040801 ----- 13152 .ORG DI1B, *CASE INS >1B 13153 JUMP(DI100); ----- ----- 22B 000000D1 00000000 ----- 13154 .ORG DI1C, *CASE INS >1C 13155 *REVEAL 13156 *AR=VDPTXT 13157 MA(VDPTXT), RAM>AR, 13158 JUMP(REV0); ----- ----- 22C 00020B6A 2B000000 ----- 13159 *ENTRY POINT FROM R24PIC 13160 .ORG DI1D, *CASE INS >1D 13161 *CSTAT 13162 *JUMP INTO STAT0 CODE 13163 *AR=EXPREG, 13164 MA(EXPREG), RAM>AR, 13165 JUMP(STAT2F); ----- ----- 22D 000204E6 63000000 ----- 13166 .ORG DI1E, *CASE INS >1E 13167 *SSTAT 13168 *SET Y=0 AND JUMP INTO STAT0 CODE 13169 *AR=EXPREG, 13170 MA(EXPREG), RAM>AR, 13171 Y(0), 13172 JUMP(STAT1); ----- ----- 22E 00020B6B 63001000 ----- 13173 .ORG DI1F, *CASE INS >1F 13174 *TSTAT 13175 *AR=EXPREG, 13176 MA(EXPREG), RAM>AR, 13177 JUMP(STAT0); ----- ----- 22F 00020B6C 63000000 ----- 13178 */// 13179 *+++UPDATE 13180 * LAST Y WAS TDISP, BR=SCREEN, AR=VDPTXT 13181 *INSIDE VBI, DELAY 13182 .ORG UPD0F, *A=POLREG 13183 MA(POLREG), RAM>AR, 13184 JUMP(DI110); ----- ----- 488 00020572 10000000 ----- 13185 *OUTSIDE VBI 13186 .ORG UPD0T, *TELETEXT DISPLAY? 13187 *Y=UPD 13188 *BR=PEN 13189 MA(PEN), RAM>BR, 13190 AR>A, B(UPD), AND, 13191 JZ(UPD1F,UPD1T); ----- ----- 489 00012492 1B200810 ----- 13192 .ORG UPD1T, *NO TELETEXT DISPLAY, UPDATE IS INVALID 13193 JUMP(DI100); ----- ----- 493 000000D1 00000000 ----- 13194 .ORG UPD1F, *TELETEXT DISPLAY, UPD? 13195 JZ(UPD2F,UPD2T); ----- ----- 492 00002494 00000000 ----- 13196 .ORG UPD2F, *ALREADY IN UPDATE, CLEAR IT 13197 *UPD=0 13198 MA(VDPTXT), 13199 AR>A, B(>FF-UPD), AND, 13200 Y>RAM, 13201 JUMP(DI120); ----- ----- 494 0000059C 2BDF0910 ----- 13202 *SET UPDATE, GRUNDIG REQUESTED THAT THIS SHOULD BE POSSIBLE EVEN IN 13203 *HOLD AND INCOMPLETE PAGE! 13204 .ORG UPD2T, *CLEAR C8YET, UEXT AND UEXB IN AR COPY OF VDPTXT 13205 AR>A, B(>FF-C8YET-UEXT-UEXB), AND, 13206 Y>AR, 13207 JUMP(UPD3); ----- ----- 495 00220B6D 00EC0810 ----- 13208 .ORG UPD3, *UPD=1, C8YET=0 13209 MA(VDPTXT), 13210 AR>A, B(UPD), OR, 13211 Y>RAM, 13212 JUMP(UPD4); ----- ----- B6D 00000B6E 2B201110 ----- 13213 .ORG UPD4, *Y=PEN-4 13214 A(-4), BRHI>B, ADD, 13215 JUMP(UPD5); ----- ----- B6E 00000B6F 00FC000C ----- 13216 .ORG UPD5, *SUB-PAGE MODE? 13217 *Y=PEN 13218 A(0), BRHI>B, OR, 13219 JN(UPD6F,UPD6T); ----- ----- B6F 00004496 0000100C ----- 13220 .ORG UPD6F, *SUB-PAGE MODE 13221 *SET TIMOUT TO TERMINATE TIME OUT IN NEXT VPP 13222 MA(TIMOUT), 13223 Y(1), 13224 Y>RAM, 13225 JUMP(DI120); ----- ----- 496 0000059C 3B011100 ----- 13226 .ORG UPD6T, *MAIN PAGE MODE, IS IT COMPLETE? 13227 *SET TIMOUT TO TERMINATE TIME OUT IN NEXT VPP 13228 MA(TIMOUT), 13229 Y(1), 13230 Y>RAM, 13231 JZ(UPD7F,UPD7T); ----- ----- 497 0000249E 3B011100 ----- 13232 .ORG UPD7T, *COMPLETE MAIN PAGE 13233 JUMP(DI120); ----- ----- 49F 0000059C 00000000 ----- 13234 .ORG UPD7F, *INCOMPLETE MAIN PAGE, NEED TO GO TO PREVIOUS PAGE 13235 *CALL PPDP0 13236 *P=0, RETURN TO PPAGE2Y 13237 MA(DPU), RAM>AR, RAM>BR, 13238 Y(0), 13239 Y>PR, 13240 JUMP(PPDP0); ----- ----- 49E 000304BE EA001000 ----- 13241 *+++TPM: TIME PAGE MODE (SPMODE, TIME, CLOCK) 13242 * LAST Y WAS TDISP, BR=SCREEN, AR=INSTRUCTION 13243 *INSIDE VBI, DELAY IT 13244 .ORG TPM0F, *A=POLREG 13245 MA(POLREG), RAM>AR, 13246 JUMP(DI110); ----- ----- 48A 00020572 10000000 ----- 13247 .ORG TPM0T, *OUTSIDE VBI 13248 *Y=MNDP0+MNDP1 13249 *TELETEXT DISPLAY? 13250 *Y=SPAGE-INSTRUCTION 13251 NAR>A, B(>11), O>CIN, ADD, 13252 JZ(TPM1F,TPM1T); ----- ----- 48B 000024A0 00110440 ----- 13253 .ORG TPM1F, *TELETEXT DISPLAY 13254 *Y=CLOCK-INSTRUCTION 13255 NAR>A, B(>4A), O>CIN, ADD, 13256 JUMP(TPM2); ----- ----- 4A0 00000B70 004A0440 ----- 13257 .ORG TPM2, *CLOCK? 13258 *BR=PEN 13259 MA(PEN), RAM>BR, 13260 JZ(SPMOD0F,TPM3T); ----- ----- B70 000124A2 1B000000 ----- 13261 .ORG TPM3T, *CLOCK COMMAND WITH TELETEXT DISPLAY 13262 *NO ACTION 13263 JUMP(DI100); ----- ----- 4A3 000000D1 00000000 ----- 13264 .ORG TPM1T, *NO TEXT DISPLAY 13265 *SPAGE? 13266 A(MNDP0+MNDP1), BR>B, AND, 13267 JZ(TPM4F,TPM4T); ----- ----- 4A1 000024A4 00030801 ----- 13268 .ORG TPM4T, *SPAGE COMMAND WITH NO TEXT DISPLAY 13269 *NO ACTION 13270 JUMP(DI100); ----- ----- 4A5 000000D1 00000000 ----- 13271 .ORG TPM4F, *MENU PAGE DISPLAYED? 13272 *Y=SCREEN MSN 13273 *AR=VDPTXT 13274 MA(VDPTXT), RAM>AR, 13275 A(0), BR.F0>B, OR, 13276 JZ(TPM5F,TPM5T); ----- ----- 4A4 000224A6 2B001003 ----- 13277 .ORG TPM5T, *NOT A MENU DISPLAY PAGE, GO TO CLOCK 13278 JUMP(CLOCK0T); ----- ----- 4A7 000004A9 00000000 ----- 13279 .ORG TPM5F, *YES, GO TO CLOCK IF IN TV MODE 13280 JZ(TPM6F,CLOCK0T); ----- ----- 4A6 000024A8 00000000 ----- 13281 .ORG TPM6F, *MENU PAGE VISIBLE, INHIBIT CLOCK 13282 JUMP(DI100); ----- ----- 4A8 000000D1 00000000 ----- 13283 *+++CLOCK 13284 * AR=VDPTXT 13285 .ORG CLOCK0T, *TOGGLE UCLK 13286 MA(VDPTXT), 13287 AR>A, B(UCLK), XOR, 13288 Y>RAM, 13289 JUMP(DI120); ----- ----- 4A9 0000059C 2B801910 ----- 13290 *+++SUB-PAGE MODE 13291 * BR=PEN, 13292 .ORG SPMOD0F, *Y=PEN-4 13293 *A=VDPTXT 13294 MA(VDPTXT), RAM>AR, 13295 A(-4), BRHI>B, ADD, 13296 JUMP(SPMOD1); ----- ----- 4A2 00020B71 2BFC000C ----- 13297 .ORG SPMOD1, *PEN<4? 13298 *IF NO, SUB-PAGE MODE ALREADY, RETURN TO MAIN PAGE MODE 13299 *CLEAR UPDATE MODE 13300 MA(VDPTXT), 13301 AR>A, B(>FF-UPD), AND, 13302 Y>RAM, 13303 JN(SPMOD1AF,SPMOD1AT); ----- ----- B71 000044AA 2BDF0910 ----- 13304 *CLEARING SUB-PAGE MODE 13305 .ORG SPMOD1AF, *B=EXPREG 13306 MA(EXPREG), RAM>BR, 13307 JUMP(SPMOD1B); ----- ----- 4AA 00010B72 63000000 ----- 13308 .ORG SPMOD1B, *CGAP=CPRF=1 TO GENERATE MAIN PAGE MENU DISPLAY 13309 MA(EXPREG), 13310 A(CGAP+CPRF), BR>B, OR, 13311 Y>RAM, 13312 JUMP(CMPE0); ----- ----- B72 000004DF 630C1101 ----- 13313 *SETTING SUB-PAGE MODE 13314 .ORG SPMOD1AT, *Y=PEN 13315 *A=DHREG 13316 MA(DHREG), RAM>AR, 13317 A(0), BR.F0>B, OR, 13318 JUMP(SPMOD2); ----- ----- 4AB 00020B73 32001003 ----- 13319 *SET SUB-PAGE MODE 13320 .ORG SPMOD2, *COMPLETE PAGE ENTERED? 13321 *Y=NRH 13322 *A=VPPRG1 13323 MA(VPPRG1), RAM>AR, 13324 AR>A, B(NRH), AND, 13325 JZ(SPMOD3F,SPMOD3T); ----- ----- B73 000224AC 61100810 ----- 13326 *INCOMPLETE MAIN-PAGE NUMBER ENTERED 13327 .ORG SPMOD3F, *COPY PREV PAGE TO DISPLAY PAGE 13328 *PMPN=1 13329 MA(VPPRG1), 13330 AR>A, B(PMPN), OR, 13331 Y>RAM, 13332 JUMP(SPMOD4); ----- ----- 4AC 00000B74 61201110 ----- 13333 .ORG SPMOD4, *COPY PREV PAGE TO DISPLAY PAGE 13334 *CALL PPDP0 13335 *P=2, RETURN TO SPMOD5 13336 *A=DPU, B=DPU 13337 MA(DPU), RAM>AR, RAM>BR, 13338 Y(2), 13339 Y>PR, 13340 JUMP(PPDP0); ----- ----- B74 000304BE EA021000 ----- 13341 .ORG SPMOD5, * 13342 JUMP(SPMOD10T); ----- ----- 49A 000004AF 00000000 ----- 13343 *###? This routine sets up the sub-page background latches for the 13344 * next two sub-pages after the sub-page captured. If the main 13345 * page has not been captured, the backgound latches are set to 13346 * look for sub-page 1 and 2. Approx 15 instructions could be 13347 * saved if the code is altered to always capture sub-pages 1 13348 * and 2 until the user enters a sub-page. 13349 * 13350 .ORG SPMOD3T, *COMPLETE MAIN PAGE ENTERED, CAPTURED IT? 13351 *AR=STOR0 13352 *PR=INDEX TO SPX, SPI 13353 MA(STOR0), RAM>AR, 13354 Y(-15), 13355 Y>PR, 13356 JZ(SPMOD10F,SPMOD10T); ----- ----- 4AD 000224AE A0F11000 ----- 13357 *MAIN PAGE HAS BEEN CAPTURED, GET SUB-PAGE FROM PAGE RAM 13358 * A=STOR0, P= INDEX TO SPX, SPI 13359 .ORG SPMOD10F, *RWL=DISPLAY LATCH 13360 MA(RWL), 13361 ARHI>A, B(7), AND, 13362 Y>RAM, Y>IO, 13363 JUMP(SPMOD11); ----- ----- 4AE 00000B75 0B074920 ----- 13364 .ORG SPMOD11, *BR=USPI 13365 *TPD=SPX, SPI 13366 RVDP, 13367 MA(USPI), RAM>BR, 13368 JUMP(SPMOD12); ----- ----- B75 00010B76 58008000 ----- 13369 .ORG SPMOD12, *AR=SPX, SPI (MASK C4) 13370 TPD>A, B(%01111111), AND, 13371 Y>AR, 13372 JUMP(SPMOD13); ----- ----- B76 00220B77 007F0890 ----- 13373 .ORG SPMOD13, *UPDATE USPI 13374 MA(USPI), 13375 AR<<4>A, BR.0F>B, OR, 13376 Y>RAM, 13377 JUMP(SPMOD14); ----- ----- B77 00000B78 58001132 ----- 13378 .ORG SPMOD14, *BR=USPX 13379 *PR=INDEX TO SPM, SPC 13380 MA(USPX), RAM>BR, 13381 Y(-14), 13382 Y>PR, 13383 JUMP(SPMOD15); ----- ----- B78 00010B79 D9F21000 ----- 13384 .ORG SPMOD15, *UPDATE USPX 13385 *TPD=SPM, SPC 13386 RVDP, 13387 MA(USPX), 13388 AR.F0>A, BR.0F>B, OR, 13389 Y>RAM, 13390 JUMP(SPMOD16); ----- ----- B79 00000B7A 590091D2 ----- 13391 .ORG SPMOD16, *BR=USPC 13392 *AR=SPM, SPC (C5, C6 MASKED) 13393 MA(USPC), RAM>BR, 13394 TPD>A, B(%00111111), AND, 13395 Y>AR, 13396 JUMP(SPMOD17); ----- ----- B7A 00230B7B 5A3F0890 ----- 13397 .ORG SPMOD17, *UPDATE USPC 13398 MA(USPC), 13399 AR<<4>A, BR.0F>B, OR, 13400 Y>RAM, 13401 JUMP(SPMOD18); ----- ----- B7B 00000B7C 5A001132 ----- 13402 .ORG SPMOD18, *BR=USPM 13403 MA(USPM), RAM>BR, 13404 JUMP(SPMOD19); ----- ----- B7C 00010B7D 5B000000 ----- 13405 .ORG SPMOD19, *UPDATE USPM 13406 MA(USPM), 13407 AR.F0>A, BR.0F>B, OR, 13408 Y>RAM, 13409 JUMP(SPMOD20); ----- ----- B7D 00000B7E 5B0011D2 ----- 13410 .ORG SPMOD20, *A=VPPRG1 13411 MA(VPPRG1), RAM>AR, 13412 JUMP(SPMOD30T); ----- ----- B7E 000204B3 61000000 ----- 13413 *MAIN PAGE HAS NOT BEEN CAPTURED, INIT USP TO ZEROS 13414 *ENTRY POINT FROM INCOMPLETE PAGE 13415 .ORG SPMOD10T, *CALL CUSP0 13416 *RETURN=0, RETURN TO SPMOD30T 13417 MA(RETURN), 13418 Y(0), 13419 Y>RAM, 13420 JUMP(CUSP0); ----- ----- 4AF 00000B7F 7C001100 ----- 13421 * 13422 *+++ CLEAR USER SUB-PAGE 13423 * RETURN=RETURN POINTER 13424 .ORG CUSP0, *P=USPI 13425 Y(USPI), 13426 Y>PR, 13427 JUMP(CUSP30); ----- ----- B7F 00000B80 80581000 ----- 13428 *LOOP START 13429 .ORG CUSP30, *B=P 13430 *A=USPx 13431 PR>BR, 13432 PR>MA, RAM>AR, 13433 JUMP(CUSP31); ----- ----- B80 00530B81 00000000 ----- 13434 .ORG CUSP31, *Y=P-USPM 13435 A(-USPM), BR>B, ADD, 13436 JUMP(CUSP32); ----- ----- B81 00000B82 00A50001 ----- 13437 .ORG CUSP32, *CLEAR USPx 13438 *LAST CLEAR? 13439 PR>MA, 13440 AR.0F>A, B(0), OR, 13441 Y>RAM, 13442 JZ(CUSP33F,CUSP33T); ----- ----- B82 001024B0 000011C0 ----- 13443 .ORG CUSP33F, *NO, INC P 13444 A(1), BR>B, ADD, 13445 Y>PR, 13446 JUMP(CUSP30); ----- ----- 4B0 00000B80 80010001 ----- 13447 *LOOP END 13448 .ORG CUSP33T, *A=RETURN 13449 MA(RETURN), RAM>AR, 13450 JUMP(CUSP40); ----- ----- 4B1 00020B83 7C000000 ----- 13451 .ORG CUSP40, *A=VPPRG1 FOR SPMOD30T CODE 13452 *Y=RETURN 13453 MA(VPPRG1), RAM>AR, 13454 AR>A, B(1), AND, 13455 JUMP(CUSP41); ----- ----- B83 00020B84 61010810 ----- 13456 .ORG CUSP41, *RETURN? 13457 JZ(DIP43F,SPMOD30T); ----- ----- B84 000024B2 00000000 ----- 13458 *COMMON SET SUB-PAGE CODE 13459 * A=VPPRG1 13460 .ORG SPMOD30T, *SPIN=1, HOSP=0, PCSP=0 13461 MA(VPPRG1), 13462 AR.F0>A, B(SPIN), OR, 13463 Y>RAM, 13464 JUMP(SPMOD34); ----- ----- 4B3 00000B85 610111D0 ----- 13465 .ORG SPMOD34, *A=DHREG 13466 MA(DHREG), RAM>AR, 13467 JUMP(SPMOD35); ----- ----- B85 00020B86 32000000 ----- 13468 .ORG SPMOD35, *ICP=1 13469 MA(DHREG), 13470 AR>A, B(ICP), OR, 13471 Y>RAM, 13472 JUMP(SPMOD40); ----- ----- B86 00000B87 32401110 ----- 13473 .ORG SPMOD40, *B=PEN 13474 MA(PEN), RAM>BR, 13475 JUMP(SPMOD41); ----- ----- B87 00010B88 1B000000 ----- 13476 .ORG SPMOD41, *PEN=4 13477 MA(PEN), 13478 A(>40), BR.0F>B, OR, 13479 Y>RAM, 13480 JUMP(SPMOD42); ----- ----- B88 00000B89 1B401102 ----- 13481 *IF TOP AND NOT MENU MODE, SWAP STORES 4 AND 6 TO KEEP TOP1 13482 .ORG SPMOD42, *A=SYS1 13483 MA(SYS1), RAM>AR, 13484 JUMP(SPMOD43); ----- ----- B89 00020B8A 08000000 ----- 13485 .ORG SPMOD43, *B=SCREEN 13486 *Y=PCM-1 13487 MA(SCREEN), RAM>BR, 13488 ARHI>A, B(-1), ADD, 13489 JUMP(SPMOD44); ----- ----- B8A 00010B8B 60FF0020 ----- 13490 .ORG SPMOD44, *Y=MENM, A=STOR4 13491 *TOP? 13492 MA(STOR4), RAM>AR, 13493 A(MENM), BR>B, AND, 13494 JZ(SPMOD45F,SPMOD45T); ----- ----- B8B 000224B4 24080801 ----- 13495 .ORG SPMOD45F, *NOT TOP MODE 13496 JUMP(SPMOD50F); ----- ----- 4B4 000004B6 00000000 ----- 13497 .ORG SPMOD45T, *TOP MODE, MENU MODE? 13498 *B=STOR6 13499 MA(STOR6), RAM>BR, 13500 JZ(SPMOD50F,SPMOD46T); ----- ----- 4B5 000124B6 26000000 ----- 13501 *OK TO SWAP STORES 13502 .ORG SPMOD46T, *STORE 4-> 6 13503 MA(STOR6), 13504 AR.F0>A, BR.0F>B, OR, 13505 Y>RAM, 13506 JUMP(SPMOD47); ----- ----- 4B7 00000B8C 260011D2 ----- 13507 .ORG SPMOD47, *STORE 6-> 4 13508 MA(STOR4), 13509 AR.0F>A, BR.F0>B, OR, 13510 Y>RAM, 13511 JUMP(SPMOD48); ----- ----- B8C 00000B8D 240011C3 ----- 13512 .ORG SPMOD48, *A=SYS2 13513 MA(SYS2), RAM>AR, 13514 JUMP(SPMOD49); ----- ----- B8D 00020B8E 09000000 ----- 13515 .ORG SPMOD49, *S6T1=1 13516 MA(SYS2), 13517 AR>A, B(S6T1), OR, 13518 Y>RAM, 13519 JUMP(SPMOD50F); ----- ----- B8E 000004B6 09201110 ----- 13520 * 13521 .ORG SPMOD50F, *A=STOR0 13522 MA(STOR0), RAM>AR, 13523 JUMP(SPMOD51); ----- ----- 4B6 00020B8F 20000000 ----- 13524 .ORG SPMOD51, *B=LFSP0 13525 MA(LFSP0), RAM>BR, 13526 JUMP(SPMOD52); ----- ----- B8F 00010B90 48000000 ----- 13527 .ORG SPMOD52, *LFSP0= STORE 0 LATCH 13528 MA(LFSP0), 13529 ARHI>A, BR.F0>B, OR, 13530 Y>RAM, 13531 JUMP(SPMOD53); ----- ----- B90 00000B91 48001123 ----- 13532 .ORG SPMOD53, *LFPCL0= STORE 0 LATCH, MSP0=7 13533 MA(SPREG0), 13534 AR.F0>A, B(>07), OR, 13535 Y>RAM, 13536 JUMP(SPMOD54); ----- ----- B91 00000B92 540711D0 ----- 13537 .ORG SPMOD54, *LFPCL1= STORE 0 LATCH, MSP1=7 13538 MA(SPREG1), 13539 AR.F0>A, B(>07), OR, 13540 Y>RAM, 13541 JUMP(SPMOD55); ----- ----- B92 00000B93 550711D0 ----- 13542 .ORG SPMOD55, *LFPCL2= STORE 0 LATCH, MSP2=7 13543 MA(SPREG2), 13544 AR.F0>A, B(>07), OR, 13545 Y>RAM, 13546 JUMP(SPMOD60); ----- ----- B93 00000B94 560711D0 ----- 13547 *INIT STORE 4 13548 .ORG SPMOD60, *A=STOR4 13549 MA(STOR4), RAM>AR, 13550 JUMP(SPMOD61); ----- ----- B94 00020B95 24000000 ----- 13551 .ORG SPMOD61, *B=LFSP1 13552 *P= INDEX TO LATCH FLAGS FOR STORE 4 (LAFx) 13553 MA(LFSP1), RAM>BR, 13554 ARHI>A, B(LAF0), ADD, 13555 Y>PR, 13556 JUMP(SPMOD62); ----- ----- B95 00010B96 C9400020 ----- 13557 .ORG SPMOD62, *LAFx=0 (CLEAR LATCH FLAGS) 13558 PR>MA, 13559 Y(0), 13560 Y>RAM, 13561 JUMP(SPMOD63); ----- ----- B96 00100B97 00001100 ----- 13562 .ORG SPMOD63, *LFSP1= LATCH FOR STORE 4 13563 MA(LFSP1), 13564 ARHI>A, BR.F0>B, OR, 13565 Y>RAM, 13566 JUMP(SPMOD64); ----- ----- B97 00000B98 49001123 ----- 13567 .ORG SPMOD64, *P= INDEX TO STORE 4 MAGS 13568 ARHI>A, B(M0), ADD, 13569 Y>PR, 13570 JUMP(SPMOD65); ----- ----- B98 00000B99 80100020 ----- 13571 .ORG SPMOD65, *B= Mx 13572 PR>MA, RAM>BR, 13573 JUMP(SPMOD66); ----- ----- B99 00110B9A 00000000 ----- 13574 .ORG SPMOD66, *PUT NULL VALUE IN MAG 13575 PR>MA, 13576 A(>0F), BR.F0>B, OR, 13577 Y>RAM, Y>IO, 13578 JUMP(SPMOD70); ----- ----- B9A 00100B9B 000F5103 ----- 13579 *INIT STORE 5 13580 .ORG SPMOD70, *A=STOR5 13581 MA(STOR5), RAM>AR, 13582 JUMP(SPMOD71); ----- ----- B9B 00020B9C 25000000 ----- 13583 .ORG SPMOD71, *B=LFSP2 13584 *P= INDEX TO LATCH FLAGS FOR STORE 5 (LAFx) 13585 MA(LFSP2), RAM>BR, 13586 ARHI>A, B(LAF0), ADD, 13587 Y>PR, 13588 JUMP(SPMOD72); ----- ----- B9C 00010B9D CA400020 ----- 13589 .ORG SPMOD72, *LAFx=0 (CLEAR LATCH FLAGS) 13590 PR>MA, 13591 Y(0), 13592 Y>RAM, 13593 JUMP(SPMOD73); ----- ----- B9D 00100B9E 00001100 ----- 13594 .ORG SPMOD73, *LFSP2= LATCH FOR STORE 5 13595 MA(LFSP2), 13596 ARHI>A, BR.F0>B, OR, 13597 Y>RAM, 13598 JUMP(SPMOD74); ----- ----- B9E 00000B9F 4A001123 ----- 13599 .ORG SPMOD74, *P= INDEX TO STORE 5 MAGS 13600 ARHI>A, B(M0), ADD, 13601 Y>PR, 13602 JUMP(SPMOD75); ----- ----- B9F 00000BA0 80100020 ----- 13603 .ORG SPMOD75, *B= Mx 13604 PR>MA, RAM>BR, 13605 JUMP(SPMOD76); ----- ----- BA0 00110BA1 00000000 ----- 13606 .ORG SPMOD76, *PUT NULL VALUE IN MAG 13607 PR>MA, 13608 A(>0F), BR.F0>B, OR, 13609 Y>RAM, Y>IO, 13610 JUMP(SPMOD77); ----- ----- BA1 00100BA2 000F5103 ----- 13611 .ORG SPMOD77, *DHREG 13612 MA(DHREG), RAM>AR, 13613 JUMP(SPMOD78); ----- ----- BA2 00020BA3 32000000 ----- 13614 .ORG SPMOD78, *NRH=1 13615 MA(DHREG), 13616 AR>A, B(NRH), OR, 13617 Y>RAM, 13618 JUMP(PAGEA); ----- ----- BA3 00000BA4 32101110 ----- 13619 *+++EXPAND 13620 * AR=VDPTXT, LAST Y WAS TDISP 13621 .ORG EXP0, *Y=UPD 13622 *TELETEXT DISPLAY? 13623 AR>A, B(UPD), AND, 13624 JZ(EXP1F,EXP1T); ----- ----- B65 000024B8 00200810 ----- 13625 .ORG EXP1T, *NO TELETEXT DISPLAY 13626 JUMP(DI100); ----- ----- 4B9 000000D1 00000000 ----- 13627 .ORG EXP1F, *UPDATE MODE? 13628 *Y=UEXT+UEXB? 13629 AR>A, B(UEXT+UEXB), AND, 13630 JZ(EXP2F,EXP2T); ----- ----- 4B8 000024BA 00030810 ----- 13631 .ORG EXP2F, *UPDATE MODE, EXPAND NOT ALLOWED 13632 JUMP(DI100); ----- ----- 4BA 000000D1 00000000 ----- 13633 .ORG EXP2T, *CASE UEXT=? 13634 JY(EXP10Y); ----- ----- 4BB 0000C348 00000000 ----- 13635 * 13636 .ORG EXP10Y, *CASE UEXT=0, UEXB=0, NOT IN EXPAND MODE 13637 *SET EXPAND TOP 13638 MA(VDPTXT), 13639 AR>A, B(UEXT), OR, 13640 Y>RAM, 13641 JUMP(DI120); ----- ----- 348 0000059C 2B021110 ----- 13642 .ORG EXP11, *CASE UEXT=0, UEXB=1, IN EXPAND BOTTOM 13643 *CLEAR EXPAND 13644 MA(VDPTXT), 13645 AR>A, B(UEXB), XOR, 13646 Y>RAM, 13647 JUMP(DI120); ----- ----- 349 0000059C 2B011910 ----- 13648 .ORG EXP12, *CASE UEXT=1, UEXB=0, IN EXPAND TOP 13649 *SET EXPAND BOTTOM 13650 MA(VDPTXT), 13651 AR>A, B(UEXT+UEXB), XOR, 13652 Y>RAM, 13653 JUMP(DI120); ----- ----- 34A 0000059C 2B031910 ----- 13654 .ORG EXP13, *CASE UEXT=1, UEXB=1, ###1 ERROR 13655 *SET EXPAND BOTTOM 13656 MA(VDPTXT), 13657 AR>A, B(UEXT), XOR, 13658 Y>RAM, 13659 JUMP(DI120); ----- ----- 34B 0000059C 2B021910 ----- 13660 13661 *+++PPAGE 13662 * BR=PEN, LAST Y WAS TDISP 13663 .ORG PPAGE0, *TDISP? 13664 *Y=PEN 13665 A(0), BR.F0>B, OR, 13666 JZ(PPAGE1F,PPAGE1T); ----- ----- B66 000024BC 00001003 ----- 13667 .ORG PPAGE1T, *NO TEXT DISPLAY, COMMAND INVALID 13668 JUMP(DI100); ----- ----- 4BD 000000D1 00000000 ----- 13669 .ORG PPAGE1F, *TEXT DISPLAY, COMPLETE MAIN PAGE? 13670 *IF NOT, CALL PPDP0 13671 *PR=0, RETURN TO PPAGE2Y 13672 *AR=UNITS, BR=UNITS 13673 MA(DPU), RAM>AR, RAM>BR, 13674 Y(0), 13675 Y>PR, 13676 JZ(PPDP0,PPAGE2T); ----- ----- 4BC 000324BE EA001000 ----- 13677 *TV ON INCOMPLETE PAGE ALSO EXITS HERE 13678 *UPDATE ON INCOMPLETE MAIN PAGE ALSO EXITS HERE 13679 .ORG PPAGE2Y, * 13680 JUMP(CMPE0); ----- ----- 498 000004DF 00000000 ----- 13681 *+++PPDP: COPY PREV PAGE TO DISPLAY PAGE 13682 * PR=RETURN POINTER 13683 .ORG PPDP0, *AR=UNITS, BR=UNITS 13684 MA(DPU), RAM>AR, RAM>BR, 13685 JUMP(PPDP0A); ----- ----- 4BE 00030BA5 6A000000 ----- 13686 .ORG PPDP0A, *MOVE UNITS 13687 MA(DPU), 13688 AR<<4>A, BR.0F>B, OR, 13689 Y>RAM, 13690 JUMP(PPDP1); ----- ----- BA5 00000BA6 6A001132 ----- 13691 .ORG PPDP1, *AR=DPT, BR=DPT 13692 MA(DPT), RAM>AR, RAM>BR, 13693 JUMP(PPDP2); ----- ----- BA6 00030BA7 69000000 ----- 13694 .ORG PPDP2, *MOVE TENS 13695 *BR=RETURN POINTER 13696 MA(DPT), PR>BR, 13697 AR<<4>A, BR.0F>B, OR, 13698 Y>RAM, 13699 JUMP(PPDP3); ----- ----- BA7 00410BA8 69001132 ----- 13700 .ORG PPDP3, *AR=DPM, BR=DPM 13701 *Y=RETURN POINTER 13702 MA(DPM), RAM>AR, RAM>BR, 13703 A(7), BR>B, AND, 13704 JUMP(PPDP4); ----- ----- BA8 00030BA9 68070801 ----- 13705 .ORG PPDP4, *MOVE MAGAZINES 13706 *CASE RETURN 13707 MA(DPM), 13708 AR<<4>A, BR.0F>B, OR, 13709 Y>RAM, 13710 JY(PPAGE2Y); ----- ----- BA9 0000C498 68001132 ----- 13711 *COMPLETE MAIN PAGE, SWAP DISPLAY PAGE AND PREVIOUS PAGE 13712 .ORG PPAGE2T, *SWAP UNITS 13713 MA(DPU), 13714 AR<<4>A, BRHI>B, OR, 13715 Y>RAM, 13716 JUMP(PPAGE6); ----- ----- 4BF 00000BAA 6A00113C ----- 13717 .ORG PPAGE6, *AR=DPT, BR=DPT 13718 MA(DPT), RAM>AR, RAM>BR, 13719 JUMP(PPAGE7); ----- ----- BAA 00030BAB 69000000 ----- 13720 .ORG PPAGE7, *SWAP TENS 13721 MA(DPT), 13722 AR<<4>A, BRHI>B, OR, 13723 Y>RAM, 13724 JUMP(PPAGE8); ----- ----- BAB 00000BAC 6900113C ----- 13725 .ORG PPAGE8, *AR=DPM, BR=DPM 13726 MA(DPM), RAM>AR, RAM>BR, 13727 JUMP(PPAGE9); ----- ----- BAC 00030BAD 68000000 ----- 13728 .ORG PPAGE9, *SWAP MAGAZINES 13729 MA(DPM), 13730 AR<<4>A, BRHI>B, OR, 13731 Y>RAM, 13732 JUMP(CMPE0); ----- ----- BAD 000004DF 6800113C ----- 13733 *+++DECREMENT/ INCREMENT PAGE 13734 * AR=INSTRUCTION, B=PEN, LAST Y WAS TDISP 13735 * 13736 *INSIDE VBI, DELAY IT 13737 .ORG DIP0F, *A=POLREG 13738 MA(POLREG), RAM>AR, 13739 JUMP(DI110); ----- ----- 48C 00020572 10000000 ----- 13740 *OUTSIDE VBI OK TO EXECUTE 13741 .ORG DIP0T, *Y=PEN-4 13742 *TELETEXT DISPLAY? 13743 A(-4), BRHI>B, ADD, 13744 JZ(DIP0AF,DIP0AT); ----- ----- 48D 000024C0 00FC000C ----- 13745 .ORG DIP0AT, *NO TELETEXT DISPLAY 13746 JUMP(DI100); ----- ----- 4C1 000000D1 00000000 ----- 13747 .ORG DIP0AF, *TELETEXT DISPLAY 13748 *SUB-PAGE MODE? 13749 *Y=PEN 13750 A(0), BRHI>B, OR, 13751 JN(DIP1F,DIP1T); ----- ----- 4C0 000044C2 0000100C ----- 13752 *ENTRY POINT FROM CKR111T (GREEN OR RED KEY PRESSED WHEN PMNM=1) 13753 * LAST Y WAS PEN 13754 .ORG DIP1T, *COMPLETE MAIN PAGE? 13755 *IF YES, CALL PPB0 TO UPDATE PREV PAGE BUFFER 13756 *PR=2, RETURN TO DIP2 13757 *B=PEN 13758 MA(PEN), RAM>BR, 13759 Y(2), 13760 Y>PR, 13761 JZ(DIP1AF,PPB0); ----- ----- 4C3 000124C4 9B021000 ----- 13762 .ORG DIP1AF, *INCOMPLETE MAIN PAGE 13763 *CALL PPDP0 13764 *P=4, RETURN TO DIP1B 13765 MA(DPU), RAM>AR, RAM>BR, 13766 Y(4), 13767 Y>PR, 13768 JUMP(PPDP0); ----- ----- 4C4 000304BE EA041000 ----- 13769 .ORG DIP1B, * 13770 JUMP(DIP2); ----- ----- 49C 000002DA 00000000 ----- 13771 * 13772 .ORG DIP2, *AR=INDEX TO DISPLAY PAGE MAG 13773 Y(DPM), 13774 Y>AR, 13775 JUMP(DIP3); ----- ----- 2DA 00220BAE 00681000 ----- 13776 .ORG DIP3, *CALL PNTIN0 13777 *RETURN=0, RETURN TO DIP4Y 13778 MA(RETURN), 13779 Y(0), 13780 Y>RAM, 13781 JUMP(PNTIN0); ----- ----- BAE 00000857 7C001100 ----- 13782 * P=POINTER 13783 .ORG DIP4Y, *B=SYS1 13784 MA(SYS1), RAM>BR, 13785 JUMP(DIP5); ----- ----- 790 00010BAF 08000000 ----- 13786 .ORG DIP5, *Y=PCM 13787 A(3), BRHI>B, AND, 13788 JUMP(DIP6); ----- ----- BAF 00000BB0 0003080C ----- 13789 .ORG DIP6, *CASE PCM=? 13790 *B=LSTINS 13791 MA(LSTINS), RAM>BR, 13792 JY(DIP8Y.0); ----- ----- BB0 0001C2E0 2E000000 ----- 13793 .ORG DIP8Y.0, *CASE PCM=NORMAL 13794 *SET MASK TO LOOK FOR PAGE IN THE INVENTORY 13795 *MASK=>80 13796 MA(MASK), 13797 Y(>80), 13798 Y>RAM, 13799 JUMP(DIP10); ----- ----- 2E0 00000BB1 73801100 ----- 13800 .ORG DIP8Y.1, *CASE PCM=TOP 13801 *SET MASK TO SEARCH FOR 13802 *BLOCK, GROUP AND NORMAL PAGES 13803 *MASK=>07 13804 MA(MASK), 13805 Y(>07), 13806 Y>RAM, 13807 JUMP(DIP10); ----- ----- 2E1 00000BB1 73071100 ----- 13808 .ORG DIP8Y.2, *CASE PCM=FLOF 13809 *SET MASK TO INC OR DEC PAGE 13810 *MASK=>00 13811 MA(MASK), 13812 Y(>00), 13813 Y>RAM, 13814 JUMP(DIP10); ----- ----- 2E2 00000BB1 73001100 ----- 13815 .ORG DIP8Y.3, *CASE PCM=FAVP, DO THE SAME AS NORMAL 13816 *SET MASK TO LOOK FOR PAGE IN THE INVENTORY 13817 *MASK=>80 13818 MA(MASK), 13819 Y(>80), 13820 Y>RAM, 13821 JUMP(DIP10); ----- ----- 2E3 00000BB1 73801100 ----- 13822 * MASK SET TO DEFINE TYPE OF SEARCH IN SBT 13823 * B=LSTINS (CAN BE DPAGE, IPAGE, RED, GREEN 13824 .ORG DIP10, *Y=INSTRUCTION XOR >38 13825 A(>38), BR>B, XOR, 13826 JUMP(DIP11); ----- ----- BB1 00000BB2 00381801 ----- 13827 .ORG DIP11, *Y=INSTRUCTION XOR >15 13828 *RED? 13829 A(>15), BR>B, XOR, 13830 JZ(DIP12F,DIP12T); ----- ----- BB2 000024C6 00151801 ----- 13831 .ORG DIP12T, *RED, DECREMENT PAGE 13832 *GO AND SEARCH BTT 13833 *CALL SBT0 13834 *RETURN=0, RETURN TO DIP18Y, 13835 MA(RETURN), 13836 Y(0), 13837 Y>RAM, 13838 JUMP(SBT0B); ----- ----- 4C7 000004C9 7C001100 ----- 13839 .ORG DIP12F, *WAS INSTRUCTION DPAGE? (ELSE IPAGE OR GREEN) 13840 *GO AND SEARCH BTT 13841 *CALL SBT0 13842 *RETURN=0, RETURN TO DIP18Y, 13843 MA(RETURN), 13844 Y(0), 13845 Y>RAM, 13846 JZ(SBT0A,SBT0B); ----- ----- 4C6 000024C8 7C001100 ----- 13847 *ENTRY POINT FROM COLOURED KEY ROUTINE 13848 .ORG DIP18Y, *PUT NEW PAGE IN PU,PT, PM 13849 *CALL INTPN0 13850 *RETURN=0, RETURN TO DIP20Y 13851 MA(RETURN), 13852 Y(0), 13853 Y>RAM, 13854 JUMP(INTPN0); ----- ----- 7A0 000007A3 7C001100 ----- 13855 *ENTRY POINT FROM NON-NULL FLOF COLOURED KEY PRESSED (CKR210) 13856 *ENTRY POINT FROM NON-NULL FLOF INDEX KEY PRESSED (IKR21T) 13857 *ENTRY POINT FROM TV SEARCH AFTER TOP INDEX (IKR50) 13858 *COPY Px TO DPx 13859 .ORG DIP20Y, *A=PM 13860 MA(PM), RAM>AR, 13861 JUMP(DIP21); ----- ----- 730 00020BB3 74000000 ----- 13862 .ORG DIP21, *B=DPM 13863 MA(DPM), RAM>BR, 13864 JUMP(DIP22); ----- ----- BB3 00010BB4 68000000 ----- 13865 .ORG DIP22, *UPDATE DPM 13866 MA(DPM), 13867 AR.F0>A, BR.0F>B, ADD, 13868 Y>RAM, 13869 JUMP(DIP23); ----- ----- BB4 00000BB5 680001D2 ----- 13870 .ORG DIP23, *A=PT 13871 MA(PT), RAM>AR, 13872 JUMP(DIP24); ----- ----- BB5 00020BB6 75000000 ----- 13873 .ORG DIP24, *B=DPT 13874 MA(DPT), RAM>BR, 13875 JUMP(DIP25); ----- ----- BB6 00010BB7 69000000 ----- 13876 .ORG DIP25, *UPDATE DPT 13877 MA(DPT), 13878 AR.F0>A, BR.0F>B, ADD, 13879 Y>RAM, 13880 JUMP(DIP26); ----- ----- BB7 00000BB8 690001D2 ----- 13881 .ORG DIP26, *A=PU 13882 MA(PU), RAM>AR, 13883 JUMP(DIP27); ----- ----- BB8 00020BB9 76000000 ----- 13884 .ORG DIP27, *B=DPU 13885 MA(DPU), RAM>BR, 13886 JUMP(DIP28); ----- ----- BB9 00010BBA 6A000000 ----- 13887 .ORG DIP28, *UPDATE DPU 13888 MA(DPU), 13889 AR.F0>A, BR.0F>B, ADD, 13890 Y>RAM, 13891 JUMP(CMPE0); ----- ----- BBA 000004DF 6A0001D2 ----- 13892 *SUB-PAGE MODE 13893 *ENTRY POINT FROM GREEN AND RED KEYS IN SUB-PAGE MODE 13894 * First call FSP0F to return a scratch RAM pointer to the 13895 * sub-page latch for STOR0 in PM. 13896 * 13897 .ORG DIP1F, *CALL FSP0F 13898 *RETURN=1, RETURN TO DIP30.1 13899 MA(RETURN), 13900 Y(1), 13901 Y>RAM, 13902 JUMP(FSP0F); ----- ----- 4C2 0000030E 7C011100 ----- 13903 * Call DISP0 to get the sub-page for STOR0, inc or dec it 13904 * placing the result in USP. 13905 .ORG DIP30.1, *A=LSTINS 13906 MA(LSTINS), RAM>AR, 13907 JUMP(DIP31); ----- ----- 431 00020BBB 2E000000 ----- 13908 .ORG DIP31, *Y=LSTINS->15 13909 *B=INDEX TO SUB-PAGE FOR STOR0 13910 MA(PM), RAM>BR, 13911 AR>A, B(->15), ADD, 13912 JUMP(DIP32); ----- ----- BBB 00010BBC 74EB0010 ----- 13913 .ORG DIP32, *RET2=SOURCE INDEX FOR DISP0 13914 *DECREMENTING? 13915 MA(RET2), 13916 A(0), BR>B, OR, 13917 Y>RAM, 13918 JZ(DIP33F,DIP33T); ----- ----- BBC 000024CA 7B001101 ----- 13919 .ORG DIP33F, *INCREMENTING 13920 *RET4=OFFSET FOR DISP0 13921 MA(RET4), 13922 Y(1), 13923 Y>RAM, 13924 JUMP(DIP34); ----- ----- 4CA 00000BBD 79011100 ----- 13925 .ORG DIP33T, *DECREMENTING 13926 *RET4=OFFSET FOR DISP0 13927 MA(RET4), 13928 Y(-1), 13929 Y>RAM, 13930 JUMP(DIP34); ----- ----- 4CB 00000BBD 79FF1100 ----- 13931 * 13932 .ORG DIP34, *RET3=DEST INDEX FOR DISP0 13933 MA(RET3), 13934 Y(USPI-1), 13935 Y>RAM, 13936 JUMP(DIP35); ----- ----- BBD 00000BBE 7A571100 ----- 13937 .ORG DIP35, *CALL DISP0 13938 *RETURN=0, RETURN TO DIP40Y 13939 MA(RETURN), 13940 Y(0), 13941 Y>RAM, 13942 JUMP(DISP0); ----- ----- BBE 00000959 7C001100 ----- 13943 * A=DHREG 13944 .ORG DIP40Y, *Y=ICP 13945 *A=PEN 13946 MA(PEN), RAM>AR, 13947 AR>A, B(ICP), AND, 13948 JUMP(DIP41); ----- ----- 440 00020BBF 1B400810 ----- 13949 .ORG DIP41, *PEN=4 13950 *COMPLETE PAGE ENTERED? 13951 *IF YES, JUMP TO STRAIGHT TO CSPE0 13952 *IF NO, CALL CUSP0 FIRST 13953 MA(PEN), 13954 AR.0F>A, B(>40), OR, 13955 Y>RAM, 13956 JZ(DIP42F,CSPE0); ----- ----- BBF 000024CC 1B4011C0 ----- 13957 .ORG DIP42F, *CALL CUSP0 13958 *RETURN=1, RETURN TO DIP43F 13959 MA(RETURN), 13960 Y(1), 13961 Y>RAM, 13962 JUMP(CUSP0); ----- ----- 4CC 00000B7F 7C011100 ----- 13963 .ORG DIP43F, * 13964 JUMP(CSPE0); ----- ----- 4B2 000004CD 00000000 ----- 13965 * 13966 *+++DECREMENT/ INCREMENT SUB-PAGE 13967 * 13968 * input pars are:- 13969 * RET2: source index-1 13970 * RET3: destination index-1 13971 * RET4: offset 13972 * RETURN: return pointer 13973 * local variables used are:- 13974 * COUNT, RET4 13975 .ORG DISP0, *INIT DIGIT COUNT 13976 MA(COUNT), 13977 Y(4), 13978 Y>RAM, 13979 JUMP(DISP1F); ----- ----- 959 000004D2 78041100 ----- 13980 * 13981 .ORG DISP1F, *B=SOURCE INDEX 13982 MA(RET2), RAM>BR, 13983 JUMP(DISP9); ----- ----- 4D2 00010BC0 7B000000 ----- 13984 .ORG DISP9, *INC SOURCE INDEX 13985 *P=SOURCE INDEX 13986 MA(RET2), 13987 A(1), BR>B, ADD, 13988 Y>PR, Y>RAM, 13989 JUMP(DISP10); ----- ----- BC0 00000BC1 FB010101 ----- 13990 .ORG DISP10, *A=OFFSET 13991 MA(RET4), RAM>AR, 13992 JUMP(DISP11); ----- ----- BC1 00020BC2 79000000 ----- 13993 .ORG DISP11, *B=SOURCE DIGIT 13994 PR>MA, RAM>BR, 13995 JUMP(DISP12); ----- ----- BC2 00110BC3 00000000 ----- 13996 .ORG DISP12, *A=NEW SOURCE DIGIT 13997 *B=DEST INDEX 13998 MA(RET3), RAM>BR, 13999 AR<<4>A, BR>B, ADD, 14000 Y>AR, 14001 JUMP(DISP13); ----- ----- BC3 00230BC4 7A000031 ----- 14002 .ORG DISP13, *INC DEST INDEX 14003 *P=DEST INDEX 14004 *DIGIT UNDERFLOW? 14005 MA(RET3), 14006 A(1), BR>B, ADD, 14007 Y>PR, Y>RAM, 14008 JN(DISP14F,DISP14T); ----- ----- BC4 000044CE FA010101 ----- 14009 *DIGIT UNDERFLOW 14010 .ORG DISP14T, *B=DEST 14011 PR>MA, RAM>BR, 14012 JUMP(DISP15); ----- ----- 4CF 00110BC5 00000000 ----- 14013 .ORG DISP15, *DIGIT=9 14014 PR>MA, 14015 A(>90), BR.0F>B, OR, 14016 Y>RAM, 14017 JUMP(DISP30); ----- ----- BC5 00100BC6 00901102 ----- 14018 * 14019 .ORG DISP14F, *Y=A-10 14020 *B=DEST 14021 PR>MA, RAM>BR, 14022 ARHI>A, B(-10), ADD, 14023 JUMP(DISP20); ----- ----- 4CE 00110BC7 00F60020 ----- 14024 .ORG DISP20, *DIGIT OVERFLOW? 14025 JN(DISP21F,DISP21T); ----- ----- BC7 000044D0 00000000 ----- 14026 *DIGIT OVERFLOW 14027 .ORG DISP21F, *DIGIT=0 14028 PR>MA, 14029 A(0), BR.0F>B, OR, 14030 Y>RAM, 14031 JUMP(DISP30); ----- ----- 4D0 00100BC6 00001102 ----- 14032 *NO CARRY, UPDATE DIGIT AND SET ZERO OFFSET TO COPY REMAINING DIGITS 14033 .ORG DISP21T, * 14034 PR>MA, 14035 AR.F0>A, BR.0F>B, OR, 14036 Y>RAM, 14037 JUMP(DISP22); ----- ----- 4D1 00100BC8 000011D2 ----- 14038 .ORG DISP22, *RET4=0 14039 MA(RET4), 14040 Y(0), 14041 Y>RAM, 14042 JUMP(DISP30); ----- ----- BC8 00000BC6 79001100 ----- 14043 *CARRY 14044 .ORG DISP30, *A=LOOP 14045 MA(COUNT), RAM>AR, 14046 JUMP(DISP31); ----- ----- BC6 00020BC9 78000000 ----- 14047 .ORG DISP31, *DEC LOOP 14048 MA(COUNT), 14049 AR>A, B(-1), ADD, 14050 Y>RAM, 14051 JUMP(DISP32); ----- ----- BC9 00000BCA 78FF0110 ----- 14052 .ORG DISP32, *LAST DIGIT? 14053 JZ(DISP1F,DISP33T); ----- ----- BCA 000024D2 00000000 ----- 14054 *EXIT 14055 .ORG DISP33T, *A=RETURN 14056 MA(RETURN), RAM>AR, 14057 JUMP(DISP34); ----- ----- 4D3 00020BCB 7C000000 ----- 14058 .ORG DISP34, *Y=RETURN 14059 *B=VPPRG1 FOR SPLM110 14060 MA(VPPRG1), RAM>BR, 14061 AR>A, B(3), AND, 14062 JUMP(DISP35); ----- ----- BCB 00010BCC 61030810 ----- 14063 .ORG DISP35, *CASE RETURN=? 14064 *A=DHREG FOR DIP40Y 14065 MA(DHREG), RAM>AR, 14066 JY(DIP40Y); ----- ----- BCC 0002C440 32000000 ----- 14067 *+++BROWSE 14068 * AR=VPPRG1, LAST Y WAS TDISP 14069 *INSIDE VBI, DELAY IT 14070 .ORG BROWSE0F, *A=POLREG 14071 MA(POLREG), RAM>AR, 14072 JUMP(DI110); ----- ----- 48E 00020572 10000000 ----- 14073 *OUTSIDE VBI 14074 .ORG BROWSE0T, *TDISP? 14075 *COUNT=1 (CLEAR HOLD ONLY IN PAGE0 CODE) 14076 MA(COUNT), 14077 Y(1), 14078 Y>RAM, 14079 JZ(BROWSE1F,BROWSE1T); ----- ----- 48F 000024D4 78011100 ----- 14080 .ORG BROWSE1T, *NO TEXT DISPLAY, INVALID COMMAND 14081 JUMP(DI100); ----- ----- 4D5 000000D1 00000000 ----- 14082 .ORG BROWSE1F, *SLFB=1 (SET LATCH FOR BROWSE) 14083 MA(VPPRG1), 14084 AR>A, B(SLFB), OR, 14085 Y>RAM, 14086 JUMP(CMPE1); ----- ----- 4D4 00000BCD 61401110 ----- 14087 *+++HOLD 14088 * A=INSTRUCTION, B=VDPTXT, LAST Y WAS TDISP 14089 *INSIDE VBI, DELAY IT 14090 .ORG HOLD0F, *A=POLREG 14091 MA(POLREG), RAM>AR, 14092 JUMP(DI110); ----- ----- 490 00020572 10000000 ----- 14093 *OUTSIDE VBI 14094 .ORG HOLD0T, *Y=STOP, TDISP? 14095 A(STOP), BR>B, AND, 14096 JZ(HOLD1F,HOLD1T); ----- ----- 491 000024D6 00040801 ----- 14097 .ORG HOLD1T, *NO TEXT DISPLAY, INVALID COMMAND 14098 JUMP(DI100); ----- ----- 4D7 000000D1 00000000 ----- 14099 .ORG HOLD1F, *ALREADY IN HOLD? 14100 *Y=INSTUCTION->18 14101 *B=PEN 14102 MA(PEN), RAM>BR, 14103 AR>A, B(->18), ADD, 14104 JZ(HOLD3F,HOLD3T); ----- ----- 4D6 000124D8 1BE80010 ----- 14105 *IN HOLD MODE 14106 .ORG HOLD3F, *IN HOLD, SHOLD? 14107 *Y=PEN-4 14108 A(-4), BRHI>B, ADD, 14109 JZ(HOLD4F,HOLD4T); ----- ----- 4D8 000024DA 00FC000C ----- 14110 .ORG HOLD4T, *SHOLD IN HOLD, EXIT 14111 JUMP(DI100); ----- ----- 4DB 000000D1 00000000 ----- 14112 .ORG HOLD4F, *CLEARING HOLD, PEN=4? 14113 *Y=PEN 14114 A(0), BRHI>B, OR, 14115 JZ(HOLD5F,HOLD5T); ----- ----- 4DA 000024DC 0000100C ----- 14116 .ORG HOLD5T, *COMPLETE SUB-PAGE ENTERED 14117 JUMP(CSPE0); ----- ----- 4DD 000004CD 00000000 ----- 14118 .ORG HOLD5F, *PEN=0? 14119 *IF YES, COMPLETE MAIN PAGE 14120 JZ(HOLD6F,CMPE0); ----- ----- 4DC 000024DE 00000000 ----- 14121 .ORG HOLD6F, *INCOMPLETE SUB-PAGE 14122 JUMP(PSPE0); ----- ----- 4DE 00000BCE 00000000 ----- 14123 *NOT IN HOLD MODE 14124 * A=INSTRUCTION, B=PEN 14125 .ORG HOLD3T, *Y=INSTRUCTION->19 14126 *A=VDPTXT 14127 MA(VDPTXT), RAM>AR, 14128 AR>A, B(->19), ADD, 14129 JUMP(HOLD10); ----- ----- 4D9 00020BCF 2BE70010 ----- 14130 .ORG HOLD10, *CHOLD? 14131 JZ(HOLD11F,HOLD11T); ----- ----- BCF 000024E0 00000000 ----- 14132 .ORG HOLD11T, *CHOLD IN NO HOLD, EXIT 14133 JUMP(DI100); ----- ----- 4E1 000000D1 00000000 ----- 14134 .ORG HOLD11F, *STOP=1 14135 MA(VDPTXT), 14136 AR>A, B(STOP), OR, 14137 Y>RAM, 14138 JUMP(HOLD12); ----- ----- 4E0 00000BD0 2B041110 ----- 14139 .ORG HOLD12, *Y=PEN-4 14140 *A=DHREG 14141 MA(DHREG), RAM>AR, 14142 A(-4), BRHI>B, ADD, 14143 JUMP(HOLD13); ----- ----- BD0 00020BD1 32FC000C ----- 14144 .ORG HOLD13, *SUB-PAGE MODE? 14145 *Y=PEN 14146 A(0), BRHI>B, OR, 14147 JN(HOLD14F,HOLD14T); ----- ----- BD1 000044E2 0000100C ----- 14148 .ORG HOLD14F, *SUB-PAGE MODE 14149 *NRH=1 14150 MA(DHREG), 14151 AR>A, B(NRH), OR, 14152 Y>RAM, 14153 JUMP(HOLD14A); ----- ----- 4E2 00000BD2 32101110 ----- 14154 .ORG HOLD14A, *A=VPPRG1 14155 MA(VPPRG1), RAM>AR, 14156 JUMP(HOLD14B); ----- ----- BD2 00020BD3 61000000 ----- 14157 .ORG HOLD14B, *HOSP=1 14158 *(SPLM HOLDS IT THINKING ITS AN INCOMPLETE SP) 14159 MA(VPPRG1), 14160 AR>A, B(HOSP), OR, 14161 Y>RAM, 14162 JUMP(PAGEB); ----- ----- BD3 00000BD4 61041110 ----- 14163 .ORG HOLD14T, *COMPLETE MAIN PAGE? 14164 *NRH=1 14165 MA(DHREG), 14166 AR>A, B(NRH), OR, 14167 Y>RAM, 14168 JZ(HOLD15F,HOLD15T); ----- ----- 4E3 000024E4 32101110 ----- 14169 .ORG HOLD15T, *COMPLETE MAIN PAGE 14170 JUMP(PMPE4); ----- ----- 4E5 00000499 00000000 ----- 14171 .ORG HOLD15F, *INCOMPLETE MAIN PAGE 14172 *PEN=0 14173 MA(PEN), 14174 A(0), BR.0F>B, OR, 14175 Y>RAM, 14176 JUMP(HOLD16); ----- ----- 4E4 00000BD5 1B001102 ----- 14177 .ORG HOLD16, *GO TO PREVIOUS PAGE 14178 *CALL PPDP0 14179 *PR=1, RETURN TO PMPE4 14180 Y(1), 14181 Y>PR, 14182 JUMP(PPDP0); ----- ----- BD5 000004BE 80011000 ----- 14183 *+++REVEAL 14184 * AR=VDPTXT 14185 .ORG REV0, *TOGGLE URVL 14186 MA(VDPTXT), 14187 AR>A, B(URVL), XOR, 14188 Y>RAM, 14189 JUMP(DI120); ----- ----- B6A 0000059C 2B081910 ----- 14190 *+++STATUS: USER STATUS MODE 14191 * BR=SCREEN, AR=EXPREG 14192 .ORG STAT0, *Y=USM 14193 AR>A, B(USM), AND, 14194 JUMP(STAT1); ----- ----- B6C 00000B6B 00020810 ----- 14195 *ENTRY POINT FROM SSTAT, LAST Y=0 14196 .ORG STAT1, *Y=SCREEN 14197 *USM? 14198 A(0), BRHI>B, OR, 14199 JZ(STAT2F,STAT2T); ----- ----- B6B 000024E6 0000100C ----- 14200 *ENTRY POINT FROM CSTAT 14201 .ORG STAT2F, *ALREADY SET, CLEAR IT 14202 *USM=0 14203 MA(EXPREG), 14204 AR>A, B(>FF-USM), AND, 14205 Y>RAM, Y>AR, 14206 JUMP(STAT4); ----- ----- 4E6 00220BD6 63FD0910 ----- 14207 .ORG STAT2T, *NOT SET YET 14208 *PICTURE MODE? 14209 JZ(STAT3F,STAT3T); ----- ----- 4E7 000024E8 00000000 ----- 14210 .ORG STAT3F, *NOT PICTURE MODE, IGNORE 14211 JUMP(DI100); ----- ----- 4E8 000000D1 00000000 ----- 14212 .ORG STAT3T, *SET USER STATUS MODE 14213 *USM=1 14214 MA(EXPREG), 14215 AR>A, B(USM), OR, 14216 Y>RAM, Y>AR, 14217 JUMP(STAT4); ----- ----- 4E9 00220BD6 63021110 ----- 14218 .ORG STAT4, *CPRF=1, CGAP=1 14219 MA(EXPREG), 14220 AR>A, B(CPRF+CGAP), OR, 14221 Y>RAM, 14222 JUMP(DI120); ----- ----- BD6 0000059C 630C1110 ----- 14223 *///2- 14224 * BR=RCSTAT, AR=INSTRUCTION 14225 .ORG DI2X, *CASE INS HIGH NIB=>2 14226 *DIGIT ENTRY 14227 *Y=VBI 14228 A(%01000000), RCS>B, AND, 14229 JUMP(DIG0); ----- ----- 202 00000BD7 0040080B ----- 14230 */// 14231 *+++ DIG: DIGIT ENTRY 14232 * AR=INSTRUCTION, LAST Y WAS VBI 14233 .ORG DIG0, *VBI? 14234 *BR=SCREEN 14235 *PR=0 14236 MA(SCREEN), RAM>BR, 14237 Y(0), 14238 Y>PR, 14239 JZ(DIG0F,DIG0T); ----- ----- BD7 000124EA E0001000 ----- 14240 .ORG DIG0F, *IN VBI, DELAY 14241 *A=POLREG 14242 MA(POLREG), RAM>AR, 14243 JUMP(DI110); ----- ----- 4EA 00020572 10000000 ----- 14244 .ORG DIG0T, *Y=TDISP 14245 *B=MREG1 14246 MA(MREG1), RAM>BR, 14247 A(TDISP), BR>B, AND, 14248 JUMP(DIG1); ----- ----- 4EB 00010BD8 65040801 ----- 14249 .ORG DIG1, *STORE=DIGIT 14250 *Y=DETV, TDISP? 14251 *B=LTK 14252 MA(LTK), RAM>BR, 14253 A(DETV), BR>B, AND, 14254 JZ(DIG2F,DIG2T); ----- ----- BD8 000124EC 11040801 ----- 14255 .ORG DIG2T, *NO TEXT DISPLAY, DETV? 14256 JZ(DIG2AF,DIG2AT); ----- ----- 4ED 000024EE 00000000 ----- 14257 .ORG DIG2AT, *NO TEXT DISPLAY, DETV=0 14258 *INVALID DIGIT 14259 JUMP(DI100); ----- ----- 4EF 000000D1 00000000 ----- 14260 .ORG DIG2AF, *NO TEXT DISPLAY, DETV=1 14261 *DIGIT IS VALID 14262 JUMP(DIG2F); ----- ----- 4EE 000004EC 00000000 ----- 14263 *DIGIT IS VALID 14264 * A=DIGIT, B=LTK 14265 .ORG DIG2F, *LTK=0 14266 MA(LTK), 14267 A(0), BR.0F>B, OR, 14268 Y>RAM, 14269 JUMP(DIG2A); ----- ----- 4EC 00000BD9 11001102 ----- 14270 .ORG DIG2A, *B=MREG0 14271 MA(MREG0), RAM>BR, 14272 JUMP(DIG2B); ----- ----- BD9 00010BDA 39000000 ----- 14273 .ORG DIG2B, *STORE=DIGIT 14274 MA(STORE), 14275 AR.0F>A, B(0), ADD, 14276 Y>RAM, 14277 JUMP(DIG2C); ----- ----- BDA 00000BDB 770001C0 ----- 14278 .ORG DIG2C, *Y=DETO 14279 *B=VDP1 14280 MA(VDP1), RAM>BR, 14281 A(DETO), BR>B, AND, 14282 JUMP(DIG3); ----- ----- BDB 00010BDC 01800801 ----- 14283 .ORG DIG3, *Y=BOX 14284 *B=DHREG 14285 *DIGIT ENTRY TIME-OUTS? 14286 MA(DHREG), RAM>BR, 14287 A(BOX), BR>B, AND, 14288 JZ(DIG4F,DIG4T); ----- ----- BDC 000124F0 32040801 ----- 14289 .ORG DIG4F, *Y=ENDIG 14290 *B=VDP0 14291 *BOX MODE? 14292 MA(VDP0), RAM>BR, 14293 A(ENDIG), BR>B, AND, 14294 JZ(DIG5F,DIG5T); ----- ----- 4F0 000124F2 00040801 ----- 14295 .ORG DIG5F, *BOX MODE 14296 *Y=R0ON 14297 *HEADER VISIBLE? 14298 A(R0ON), BR>B, AND, 14299 JZ(DIG6F,DIG6T); ----- ----- 4F2 000024F4 00100801 ----- 14300 .ORG DIG5T, *NOT BOX 14301 *Y=R0ON 14302 A(R0ON), BR>B, AND, 14303 JUMP(DIG6F); ----- ----- 4F3 000004F4 00100801 ----- 14304 14305 .ORG DIG6T, *TIME OUT HEADER DISPLAY (DO NOT ACCEPT DIGIT) 14306 *A=DHREG 14307 MA(DHREG), RAM>AR, 14308 JUMP(STOD0); ----- ----- 4F5 00020BDD 32000000 ----- 14309 * 14310 .ORG DIG6F, *HEADER VISIBLE 14311 *R0ON? 14312 JZ(DIG7F,DIG7T); ----- ----- 4F4 000024F6 00000000 ----- 14313 .ORG DIG7T, *TIME OUT HEADER DISPLAY (DO NOT ACCEPT DIGIT) 14314 *A=DHREG 14315 MA(DHREG), RAM>AR, 14316 JUMP(STOD0); ----- ----- 4F7 00020BDD 32000000 ----- 14317 .ORG DIG7F, *OK TO ACCEPT DIGIT 14318 JUMP(DIG4T); ----- ----- 4F6 000004F1 00000000 ----- 14319 *OK TO ENTER DIGIT 14320 .ORG DIG4T, *B=VDPTXT 14321 MA(VDPTXT), RAM>BR, 14322 JUMP(DIG4A); ----- ----- 4F1 00010BDE 2B000000 ----- 14323 .ORG DIG4A, *C8YET=1 (FOR DIGIT ENTRY IN UPDATE MODE) 14324 MA(VDPTXT), 14325 A(C8YET), BR>B, OR, 14326 Y>RAM, 14327 JUMP(DIG4B); ----- ----- BDE 00000BDF 2B101101 ----- 14328 .ORG DIG4B, *BR=PAGE ENTRY STATE 14329 MA(PEN), RAM>BR, 14330 JUMP(DIG8); ----- ----- BDF 00010BE0 1B000000 ----- 14331 .ORG DIG8, *Y=PEN 14332 A(7), BR>>4>B, AND, 14333 JUMP(DIG9); ----- ----- BE0 00000BE1 00070804 ----- 14334 .ORG DIG9, *UPDATE PAGE ENTRY STATE 14335 *CASE PEN=? 14336 MA(PEN), 14337 A(->10), BR>B, ADD, 14338 Y>RAM, 14339 JY(DIG10Y); ----- ----- BE1 0000C238 1BF00101 ----- 14340 * 14341 .ORG DIG10Y, *CASE PEN=0 14342 *DIGIT IS MAIN PAGE MAG 14343 *CALL PPB0 TO LOAD PREV PAGE BUFFER 14344 *PR=0, RETURN TO DIG30Y 14345 *PEN=2, B=OLD PEN 14346 MA(PEN), 14347 A(>20), BR.0F>B, ADD, 14348 Y>RAM, 14349 JUMP(PPB0); ----- ----- 238 000004C5 1B200102 ----- 14350 * 14351 .ORG DIG11, *CASE PEN=1 14352 *DIGIT IS MAIN PAGE UNITS 14353 *BR=DPU 14354 MA(DPU), RAM>BR, 14355 JUMP(DIG11A); ----- ----- 239 00010BE2 6A000000 ----- 14356 .ORG DIG11A, *DPU=DIGIT 14357 *GO TO COMPLETE PAGE ENTERED 14358 MA(DPU), 14359 AR<<4>A, BR.0F>B, OR, 14360 Y>RAM, 14361 JUMP(CMPE0); ----- ----- BE2 000004DF 6A001132 ----- 14362 * 14363 .ORG DIG12, *CASE PEN=2 14364 *DIGIT IS MAIN PAGE TENS 14365 *BR=DPT 14366 MA(DPT), RAM>BR, 14367 JUMP(DIG12A); ----- ----- 23A 00010BE3 69000000 ----- 14368 .ORG DIG12A, *DPT=DIGIT 14369 MA(DPT), 14370 AR<<4>A, BR.0F>B, OR, 14371 Y>RAM, 14372 JUMP(PMPE4); ----- ----- BE3 00000499 69001132 ----- 14373 * 14374 *CASE PEN=3 IS AN ERROR 14375 * 14376 .ORG DIG14, *CASE PEN=4 14377 *DIGIT IS SP THOUSANDS 14378 *PEN=7 14379 MA(PEN), 14380 A(>70), BR.0F>B, ADD, 14381 Y>RAM, 14382 JUMP(DIG14A); ----- ----- 23C 00000BE4 1B700102 ----- 14383 .ORG DIG14A, *BR=USPM 14384 MA(USPM), RAM>BR, 14385 JUMP(DIG14B); ----- ----- BE4 00010BE5 5B000000 ----- 14386 .ORG DIG14B, *USPM=DIGIT 14387 MA(USPM), 14388 AR<<4>A, BR.0F>B, OR, 14389 Y>RAM, 14390 JUMP(PSPE0); ----- ----- BE5 00000BCE 5B001132 ----- 14391 .ORG DIG15, *CASE PEN=5 14392 *DIGIT IS SP UNITS 14393 *BR=USPI 14394 MA(USPI), RAM>BR, 14395 JUMP(DIG15A); ----- ----- 23D 00010BE6 58000000 ----- 14396 .ORG DIG15A, *USPI=DIGIT 14397 MA(USPI), 14398 AR<<4>A, BR.0F>B, OR, 14399 Y>RAM, 14400 JUMP(CSPE0); ----- ----- BE6 000004CD 58001132 ----- 14401 .ORG DIG16, *CASE PEN=6 14402 *DIGIT IS SP TENS 14403 *BR=USPX 14404 MA(USPX), RAM>BR, 14405 JUMP(DIG16A); ----- ----- 23E 00010BE7 59000000 ----- 14406 .ORG DIG16A, *USPX=DIGIT 14407 MA(USPX), 14408 AR<<4>A, BR.0F>B, OR, 14409 Y>RAM, 14410 JUMP(PAGEC); ----- ----- BE7 00000BE8 59001132 ----- 14411 .ORG DIG17, *CASE PEN=7 14412 *DIGIT IS SP HUNDREDS 14413 *BR=USPC 14414 MA(USPC), RAM>BR, 14415 JUMP(DIG17A); ----- ----- 23F 00010BE9 5A000000 ----- 14416 .ORG DIG17A, *USPC=DIGIT 14417 MA(USPC), 14418 AR<<4>A, BR.0F>B, OR, 14419 Y>RAM, 14420 JUMP(PAGEC); ----- ----- BE9 00000BE8 5A001132 ----- 14421 *RETURN FROM PPB, ENTERING DISPLAY PAGE MAG 14422 * AR=MAG DIGIT, LAST Y WAS MAG DIGIT-8 14423 .ORG DIG30Y, *MAG DIGIT=8? 14424 *BR=DPM 14425 *MASK 4TH BIT OF DIGIT 14426 MA(DPM), RAM>BR, 14427 AR>A, B(7), AND, 14428 Y>AR, 14429 JZ(DIG31F,DIG31T); ----- ----- 2D8 002324F8 68070810 ----- 14430 .ORG DIG31F, *MAG DIGIT NOT 8 14431 *DPM=MASKED DIGIT 14432 *GO TO PARTIAL PAGE ENTRY CODE 14433 MA(DPM), 14434 AR<<4>A, BR.0F>B, OR, 14435 Y>RAM, 14436 JUMP(PMPE0); ----- ----- 4F8 00000BEA 68001132 ----- 14437 .ORG DIG31T, *MAG DIGIT IS 8 14438 *DPM=0 14439 *GO TO PARTIAL PAGE ENTRY CODE 14440 MA(DPM), 14441 A(0), BR.0F>B, OR, 14442 Y>RAM, 14443 JUMP(PMPE0); ----- ----- 4F9 00000BEA 68001102 ----- 14444 *ENTRY POINT FROM CLEAR HOLD IF COMPLETE SUB-PAGE ENTERED 14445 *ENTRY POINT FROM DIP CODE 14446 *COMPLETE SUB-PAGE HAS BEEN ENTERED BY DIGITS, 14447 *CLEAR CAP AND VBICAP TO INDICATE THIS SUB-PAGE NOT CAPTURED YET 14448 .ORG CSPE0, *AR=VPPRG1 14449 MA(VPPRG1), RAM>AR, 14450 JUMP(CSPE2); ----- ----- 4CD 00020BEB 61000000 ----- 14451 .ORG CSPE2, *PCSP=1 14452 MA(VPPRG1), 14453 AR>A, B(PCSP), OR, 14454 Y>RAM, 14455 JUMP(CSPE3); ----- ----- BEB 00000BEC 61021110 ----- 14456 .ORG CSPE3, *A=DHREG 14457 MA(DHREG), RAM>AR, 14458 JUMP(CSPE4); ----- ----- BEC 00020BED 32000000 ----- 14459 .ORG CSPE4, *NRH=0, ICP=0 14460 MA(DHREG), 14461 AR>A, B(>FF-NRH-ICP), AND, 14462 Y>RAM, 14463 JUMP(PAGEC); ----- ----- BED 00000BE8 32AF0910 ----- 14464 *+++ CMPE: COMPLETE MAIN PAGE ENTERED 14465 *ENTRY POINT FROM LPP59, SPMOD1, PPAGE2Y, PPAGE9, DIP28, HOLD3F 14466 *DIG11A, CKR129, SPCM1 14467 .ORG CMPE0, *COUNT=3 (CLEAR HOLD AND BROWSE IN PAGE0 CODE) 14468 MA(COUNT), 14469 Y(3), 14470 Y>RAM, 14471 JUMP(CMPE1); ----- ----- 4DF 00000BCD 78031100 ----- 14472 *ENTRY POINT FROM BROWSE1F, CHNG60T, CHNG62 14473 .ORG CMPE1, *BR=PEN 14474 MA(PEN), RAM>BR, 14475 JUMP(CMPE1A); ----- ----- BCD 00010BEE 1B000000 ----- 14476 .ORG CMPE1A, *Y=PEN-4 14477 A(-4), BRHI>B, ADD, 14478 JUMP(CMPE1B); ----- ----- BEE 00000BEF 00FC000C ----- 14479 .ORG CMPE1B, *RESET DIGIT ENTRY STATE 14480 *PEN=0 14481 *SUB-PAGE MODE? 14482 MA(PEN), 14483 A(0), BR.0F>B, OR, 14484 Y>RAM, 14485 JN(CMPE2F,CMPE2T); ----- ----- BEF 000044FA 1B001102 ----- 14486 *CLEARING SUB-PAGE MODE 14487 *CLEAR THE LATCH FLAGS OF THE MAIN PAGE NUMBER TO ROLL THE HEADER 14488 .ORG CMPE2F, *A=SPREG0 14489 MA(SPREG0), RAM>AR, 14490 JUMP(CMPE2A); ----- ----- 4FA 00020BF0 54000000 ----- 14491 .ORG CMPE2A, *P= INDEX TO LAFx 14492 ARHI>A, B(LAF0), ADD, 14493 Y>PR, 14494 JUMP(CMPE2B); ----- ----- BF0 00000BF1 80400020 ----- 14495 .ORG CMPE2B, *LAFx=0 14496 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 14497 PR>MA, 14498 Y(0), 14499 Y>RAM, 14500 JUMP(CMPE2C); ----- ----- BF1 00100BF2 00001100 ----- 14501 .ORG CMPE2C, *A=SYS2 14502 MA(SYS2), RAM>AR, 14503 JUMP(CMPE2D); ----- ----- BF2 00020BF3 09000000 ----- 14504 .ORG CMPE2D, *Y=S6T1 14505 *B=STOR6 14506 MA(STOR6), RAM>BR, 14507 AR>A, B(S6T1), AND, 14508 JUMP(CMPE2E); ----- ----- BF3 00010BF4 26200810 ----- 14509 .ORG CMPE2E, *IS TOP1 IN STORE 6? 14510 *IF NO, DO NOT SWAP BACK 14511 *S6T1=0 14512 MA(SYS2), 14513 AR>A, B(>FF-S6T1), AND, 14514 Y>RAM, 14515 JZ(CMPE2GF,CMPE2GT); ----- ----- BF4 000024FC 09DF0910 ----- 14516 *SWAP STORES 4 AND 6 TO RESTORE TOP1 14517 * B=STOR6 14518 .ORG CMPE2GF, *A=STOR4 14519 MA(STOR4), RAM>AR, 14520 JUMP(CMPE2H); ----- ----- 4FC 00020BF5 24000000 ----- 14521 .ORG CMPE2H, *STORE 6-> STORE 4 14522 MA(STOR4), 14523 AR.0F>A, BR.F0>B, OR, 14524 Y>RAM, 14525 JUMP(CMPE2I); ----- ----- BF5 00000BF6 240011C3 ----- 14526 .ORG CMPE2I, *STORE 4-> STORE 6 14527 MA(STOR6), 14528 AR.F0>A, BR.0F>B, OR, 14529 Y>RAM, 14530 JUMP(CMPE2GT); ----- ----- BF6 000004FD 260011D2 ----- 14531 *RE-INIT SUB-PAGE REGISTERS 14532 .ORG CMPE2GT, *CALL INSPRG0 14533 *A=2, RETURN TO CMPE5 14534 Y(2), 14535 Y>AR, 14536 JUMP(INSPRG0); ----- ----- 4FD 002208C0 00021000 ----- 14537 *SUB-PAGE MODE NOT SET 14538 .ORG CMPE2T, * 14539 JUMP(CMPE5); ----- ----- 4FB 000006B2 00000000 ----- 14540 .ORG CMPE5, *BR=VPPRG1 14541 MA(VPPRG1), RAM>BR, 14542 JUMP(CMPE6); ----- ----- 6B2 00010BF7 61000000 ----- 14543 .ORG CMPE6, *SET PROCESS NEW PAGE NUMBER FLAG 14544 *CLEAR SUB-PAGE MODE, PCSP=0, HOSP=0, SPIN=0 14545 MA(VPPRG1), 14546 A(PMPN), BR.F0>B, OR, 14547 Y>RAM, 14548 JUMP(CMPE7); ----- ----- BF7 00000BF8 61201103 ----- 14549 .ORG CMPE7, *BR=STOR0 14550 MA(STOR0), RAM>BR, 14551 JUMP(CMPE8); ----- ----- BF8 00010BF9 20000000 ----- 14552 .ORG CMPE8, *PR=INDEX TO DISPLAY PAGE MAG 14553 A(M0), BRHI>B, ADD, 14554 Y>PR, 14555 JUMP(CMPE11); ----- ----- BF9 00000BFA 8010000C ----- 14556 .ORG CMPE11, *A=SYS1 14557 MA(SYS1), RAM>AR, 14558 JUMP(CMPE12); ----- ----- BFA 00020BFB 08000000 ----- 14559 .ORG CMPE12, *BR=DHREG 14560 *Y=PCM-2 14561 MA(DHREG), RAM>BR, 14562 ARHI>A, B(-2), ADD, 14563 JUMP(CMPE12A); ----- ----- BFB 00010BFC 32FE0020 ----- 14564 .ORG CMPE12A, *ICP=0, NRH=0 14565 *FLOF MODE? 14566 MA(DHREG), 14567 A(>FF-ICP), BR>B, AND, 14568 Y>RAM, 14569 JZ(CMPE13F,CMPE13T); ----- ----- BFC 000024FE 32BF0901 ----- 14570 *FLOF MODE, SKIP INVENTORY CHECK 14571 .ORG CMPE13T, *B=COUNT 14572 MA(COUNT), RAM>BR, 14573 JUMP(CMPE13A); ----- ----- 4FF 00010BFD 78000000 ----- 14574 .ORG CMPE13A, *SET 5TH LSB TO INHIBIT CGAP AND CPRF SET IN PAGE0 14575 *CODE 14576 MA(COUNT), 14577 A(>10), BR>B, OR, 14578 Y>RAM, 14579 JUMP(PAGE0); ----- ----- BFD 00000505 78101101 ----- 14580 *NOT FLOF, CHECK IF PAGE IS IN CYCLE 14581 .ORG CMPE13F, *B=MREG0 14582 *Y=PCM-1 14583 MA(MREG0), RAM>BR, 14584 ARHI>A, B(-1), ADD, 14585 JUMP(CMPE20); ----- ----- 4FE 00010BFE 39FF0020 ----- 14586 .ORG CMPE20, *A=INVCNT 14587 *Y=COOCD 14588 *NORMAL MODE? 14589 MA(INVCNT), RAM>AR, 14590 A(COOCD), BR>B, AND, 14591 JZ(CMPE21F,CMPE21T); ----- ----- BFE 00022500 38020801 ----- 14592 *NORMAL OR FAVP 14593 .ORG CMPE21F, *Y=INVENTORY COMPLETE FLAG 14594 *OUT OF CYCLE DISPLAY ENABLED? 14595 AR>A, B(1), AND, 14596 JZ(CMPE22F,CMPE22T); ----- ----- 500 00002502 00010810 ----- 14597 .ORG CMPE22F, *OOC DISPLAY DISABLED 14598 JUMP(PAGE0); ----- ----- 502 00000505 00000000 ----- 14599 .ORG CMPE22T, *OOC DISPLAY ENABLED 14600 *INVENTORY COMPLETE? 14601 *IF NO, GO STRAIGHT TO PAGE0 14602 *STORE= >80 (SET MASK FOR DBB DATA) 14603 MA(STORE), 14604 Y(>80), 14605 Y>RAM, 14606 JZ(CMPE23F,PAGE0); ----- ----- 503 00002504 77801100 ----- 14607 *TOP 14608 .ORG CMPE21T, *A=TOPRG1 14609 MA(TOPRG1), RAM>AR, 14610 JUMP(CMPE30); ----- ----- 501 00020BFF 37000000 ----- 14611 .ORG CMPE30, *Y=BTTCAP 14612 AR>A, B(BTTCAP), AND, 14613 JUMP(CMPE31); ----- ----- BFF 00000C00 00400810 ----- 14614 .ORG CMPE31, *BTT TABLE IN MEMORY? 14615 JZ(CMPE32F,CMPE32T); ----- ----- C00 00002506 00000000 ----- 14616 .ORG CMPE32T, *NO BTT YET 14617 *### HOW ABOUT PARALLEL TOP !!! 14618 JUMP(PAGE0); ----- ----- 507 00000505 00000000 ----- 14619 .ORG CMPE32F, *YES, 14620 *STORE= >07 (SET MASK FOR DBB RETURN DATA) 14621 MA(STORE), 14622 Y(>07), 14623 Y>RAM, 14624 JUMP(CMPE23F); ----- ----- 506 00000504 77071100 ----- 14625 * STORE= MASK FOR DBB DATA 14626 .ORG CMPE23F, *MAKE DISLAY 14627 *POINT TO DISPLAY PAGE FOR PNTIN0 14628 *A=DPM 14629 Y(DPM), 14630 Y>AR, 14631 JUMP(CMPE24); ----- ----- 504 00220C01 00681000 ----- 14632 .ORG CMPE24, *CALL PNTIN0 TO SEE IF IN CYCLE 14633 *RETURN=9, RETURN TO CMPE40 14634 MA(RETURN), 14635 Y(9), 14636 Y>RAM, 14637 JUMP(PNTIN0); ----- ----- C01 00000857 7C091100 ----- 14638 * A=DBB DATA, COUNT=PAGE0 I/P PAR, STORE= MASK FOR DBB DATA 14639 .ORG CMPE40, *B= STORE 14640 MA(STORE), RAM>BR, 14641 JUMP(CMPE41); ----- ----- 799 00010C02 77000000 ----- 14642 .ORG CMPE41, *Y=DBB DATA AND MASK 14643 *A=STOR0 14644 MA(STOR0), RAM>AR, 14645 AR>A, BR>B, AND, 14646 JUMP(CMPE42); ----- ----- C02 00020C03 20000811 ----- 14647 .ORG CMPE42, *PAGE IN CYCLE? 14648 *P= END OF DISPLAY 14649 Y(31), 14650 Y>PR, 14651 JZ(CMPE43F,CMPE43T); ----- ----- C03 00002508 801F1000 ----- 14652 .ORG CMPE43F, *PAGE IS IN CYCLE 14653 JUMP(PAGE0); ----- ----- 508 00000505 00000000 ----- 14654 *GENERATE PAGE NOT IN CYCLE DISPLAY 14655 * A=STOR0 14656 .ORG CMPE43T, *RWL= LATCH FOR STORE 0 14657 MA(RWL), 14658 ARHI>A, B(0), OR, 14659 Y>RAM, Y>IO, 14660 JUMP(CMPE47F); ----- ----- 509 0000050A 0B005120 ----- 14661 *START BY CLEARING HEADER 14662 .ORG CMPE47F, *B=P, WRITE A SPACE 14663 PR>BR, 14664 Y(>20), 14665 Y>DR, 14666 JUMP(CMPE45); ----- ----- 50A 00411C04 00201000 ----- 14667 .ORG CMPE45, *Y=B-8 14668 A(-8), BR>B, ADD, 14669 JUMP(CMPE46); ----- ----- C04 00000C05 00F80001 ----- 14670 .ORG CMPE46, *POINT TO NEXT COL, LAST COL? 14671 *A=DHREG 14672 MA(DHREG), RAM>AR, 14673 A(-1), BR>B, ADD, 14674 Y>PR, 14675 JZ(CMPE47F,CMPE47T); ----- ----- C05 0002250A B2FF0001 ----- 14676 * 14677 .ORG CMPE47T, *P=8 14678 Y(8), 14679 Y>PR, 14680 JUMP(CMPE48); ----- ----- 50B 00000C06 80081000 ----- 14681 .ORG CMPE48, *8TH CHAR= FLASH 14682 Y(>08), 14683 Y>DR, 14684 JUMP(CMPE49); ----- ----- C06 00001C07 00081000 ----- 14685 .ORG CMPE49, *P=9 14686 Y(9), 14687 Y>PR, 14688 JUMP(CMPE50); ----- ----- C07 00000C08 80091000 ----- 14689 .ORG CMPE50, *9TH CHAR= ALPHA RED 14690 Y(>01), 14691 Y>DR, 14692 JUMP(CMPE51); ----- ----- C08 00001C09 00011000 ----- 14693 .ORG CMPE51, *P=10 14694 Y(10), 14695 Y>PR, 14696 JUMP(CMPE52); ----- ----- C09 00000C0A 800A1000 ----- 14697 .ORG CMPE52, *10TH CHAR='>' 14698 Y(>3E), 14699 Y>DR, 14700 JUMP(CMPE53); ----- ----- C0A 00001C0B 003E1000 ----- 14701 .ORG CMPE53, *SET P TO COL BEFORE PAGE NUMBER DISPLAY 14702 *P=11 14703 Y(11), 14704 Y>PR, 14705 JUMP(CMPE54); ----- ----- C0B 00000C0C 800B1000 ----- 14706 .ORG CMPE54, *CALL PND10 TO WRITE PAGE NUMBER 14707 *RETURN=3, RETURN TO CMPE55T 14708 MA(RETURN), 14709 Y(3), 14710 Y>RAM, 14711 JUMP(PND10); ----- ----- C0C 00000AF3 7C031100 ----- 14712 .ORG CMPE55T, *P=16 14713 Y(16), 14714 Y>PR, 14715 JUMP(CMPE56); ----- ----- 61D 00000C0D 80101000 ----- 14716 .ORG CMPE56, *16TH CHAR='<' 14717 Y(>3C), 14718 Y>DR, 14719 JUMP(CMPE57); ----- ----- C0D 00001C0E 003C1000 ----- 14720 .ORG CMPE57, *P=17 14721 Y(17), 14722 Y>PR, 14723 JUMP(CMPE58); ----- ----- C0E 00000C0F 80111000 ----- 14724 .ORG CMPE58, *17TH CHAR= STEADY 14725 Y(>09), 14726 Y>DR, 14727 JUMP(CMPE59); ----- ----- C0F 00001C10 00091000 ----- 14728 .ORG CMPE59, *P=18 14729 *B=COUNT 14730 MA(COUNT), RAM>BR, 14731 Y(18), 14732 Y>PR, 14733 JUMP(CMPE60); ----- ----- C10 00010C11 F8121000 ----- 14734 .ORG CMPE60, *18TH CHAR= ALPHA GREEN 14735 Y(>02), 14736 Y>DR, 14737 JUMP(CMPE68); ----- ----- C11 00001C12 00021000 ----- 14738 .ORG CMPE68, *SET 4LSB TO START POOCD TIME OUT IN PAGE0 14739 MA(COUNT), 14740 A(>08), BR>B, OR, 14741 Y>RAM, 14742 JUMP(PAGE0); ----- ----- C12 00000505 78081101 ----- 14743 *+++ PSPE: PARTIAL SUB-PAGE ENTERED 14744 .ORG PSPE0, *AR=VPPRG1 14745 MA(VPPRG1), RAM>AR, 14746 JUMP(PSPE1); ----- ----- BCE 00020C13 61000000 ----- 14747 .ORG PSPE1, *HOSP=1 14748 MA(VPPRG1), 14749 AR>A, B(HOSP), OR, 14750 Y>RAM, 14751 JUMP(PSPE2); ----- ----- C13 00000C14 61041110 ----- 14752 .ORG PSPE2, *A=DHREG 14753 MA(DHREG), RAM>AR, 14754 JUMP(PSPE3); ----- ----- C14 00020C15 32000000 ----- 14755 .ORG PSPE3, *NRH=1, ICP=1 14756 MA(DHREG), 14757 AR>A, B(NRH+ICP), OR, 14758 Y>RAM, 14759 JUMP(PAGEA); ----- ----- C15 00000BA4 32501110 ----- 14760 *+++ PMPE: PARTIAL MAIN PAGE ENTERED 14761 .ORG PMPE0, *BR=VPPRG1 14762 MA(VPPRG1), RAM>BR, 14763 JUMP(PMPE1); ----- ----- BEA 00010C16 61000000 ----- 14764 .ORG PMPE1, *CLR PROCESS NEW PAGE NUMBER FLAG 14765 MA(VPPRG1), 14766 A(>FF-PMPN), BR>B, AND, 14767 Y>RAM, 14768 JUMP(PMPE2); ----- ----- C16 00000C17 61DF0901 ----- 14769 .ORG PMPE2, *AR=DHREG 14770 MA(DHREG), RAM>AR, 14771 JUMP(PMPE3); ----- ----- C17 00020C18 32000000 ----- 14772 .ORG PMPE3, *STOP ROLLING HEADERS 14773 *NRH=1 14774 *ICP=1 14775 MA(DHREG), 14776 AR>A, B(ICP+NRH), OR, 14777 Y>RAM, 14778 JUMP(PMPE3A); ----- ----- C18 00000C19 32501110 ----- 14779 *CLEAR HOLD MODE, CAN'T DO THIS WITH PAGE ROUTINE BECAUSE 14780 *PMPN SHOULD BE 0 14781 .ORG PMPE3A, *AR=VDPTXT 14782 MA(VDPTXT), RAM>AR, 14783 JUMP(PMPE3B); ----- ----- C19 00020C1A 2B000000 ----- 14784 .ORG PMPE3B, *STOP=0 14785 MA(VDPTXT), 14786 AR>A, B(>FF-STOP), AND, 14787 Y>RAM, 14788 JUMP(PMPE4); ----- ----- C1A 00000499 2BFB0910 ----- 14789 *ENTRY POINT FOR SET HOLD ROUTINE 14790 *ENTRY POINT FROM TENS ENTERED (DIG12A) 14791 .ORG PMPE4, *COUNT=>12 14792 *CLEAR BROWSE AND INHIBIT MENU INIT IN PAGE0 CODE 14793 MA(COUNT), 14794 Y(>12), 14795 Y>RAM, 14796 JUMP(NDP0); ----- ----- 499 00000C1B 78121100 ----- 14797 *+++ NDP: NULLIFY DISPLAY PAGE LATCH 14798 .ORG NDP0, *BR=STOR0 14799 MA(STOR0), RAM>BR, 14800 JUMP(NDP1); ----- ----- C1B 00010C1C 20000000 ----- 14801 .ORG NDP1, *PR=INDEX TO DISPLAY PAGE MAG 14802 A(M0), BRHI>B, ADD, 14803 Y>PR, 14804 JUMP(NDP2); ----- ----- C1C 00000C1D 8010000C ----- 14805 .ORG NDP2, *BR=DISPLAY PAGE MAG 14806 PR>MA, RAM>BR, 14807 JUMP(NDP3); ----- ----- C1D 00110C1E 00000000 ----- 14808 .ORG NDP3, *INHIBIT DISPLAY PAGE 14809 *DISPLAY PAGE MAG=>F 14810 PR>MA, 14811 A(>0F), BR.F0>B, OR, 14812 Y>RAM, Y>IO, 14813 JUMP(PAGE0); ----- ----- C1E 00100505 000F5103 ----- 14814 *+++ PPB: UPDATE PREVIOUS PAGE BUFFER 14815 * P=RETURN POINTER, B=PEN ###COULD SHORTEN WITH A LOOP 14816 .ORG PPB0, *BR=DPM, AR=DPM 14817 *Y=PEN 14818 MA(DPM), RAM>BR, RAM>AR, 14819 A(0), BRHI>B, OR, 14820 JUMP(PPB1); ----- ----- 4C5 00030C1F 6800100C ----- 14821 .ORG PPB1, *COMPLETE MAIN PAGE? 14822 JZ(PPB1AF,PPB1AT); ----- ----- C1F 0000250C 00000000 ----- 14823 *INCOMPLETE MAIN PAGE, DO NOT OVERWRITE BUFFER 14824 .ORG PPB1AF, *BR=RETURN POINTER 14825 PR>BR, 14826 JUMP(PPB9); ----- ----- 50C 00410C20 00000000 ----- 14827 *COMPLETE MAIN PAGE, OK TO UPDATE BUFFER 14828 .ORG PPB1AT, *LPM=DPM 14829 MA(DPM), 14830 AR.F0>A, BRHI>B, OR, 14831 Y>RAM, 14832 JUMP(PPB2); ----- ----- 50D 00000C21 680011DC ----- 14833 .ORG PPB2, *BR=DPT, AR=DPT 14834 MA(DPT), RAM>BR, RAM>AR, 14835 JUMP(PPB3); ----- ----- C21 00030C22 69000000 ----- 14836 .ORG PPB3, *LPT=DPT 14837 MA(DPT), 14838 AR.F0>A, BRHI>B, OR, 14839 Y>RAM, 14840 JUMP(PPB4); ----- ----- C22 00000C23 690011DC ----- 14841 .ORG PPB4, *BR=DPU, AR=DPU 14842 MA(DPU), RAM>BR, RAM>AR, 14843 JUMP(PPB5); ----- ----- C23 00030C24 6A000000 ----- 14844 .ORG PPB5, *LPU=DPU 14845 *BR=RETURN POINTER 14846 PR>BR, 14847 MA(DPU), 14848 AR.F0>A, BRHI>B, OR, 14849 Y>RAM, 14850 JUMP(PPB9); ----- ----- C24 00410C20 6A0011DC ----- 14851 * 14852 .ORG PPB9, *Y=RETURN POINTER 14853 *AR=DIGIT FOR DIG30Y 14854 MA(STORE), RAM>AR, 14855 A(7), BR>B, AND, 14856 JUMP(PPB10); ----- ----- C20 00020C25 77070801 ----- 14857 .ORG PPB10, *CASE RETURN POINTER=? 14858 *Y=DIGIT-8 FOR DIG30Y 14859 *B=SYS1 FOR IKR10 14860 MA(SYS1), RAM>BR, 14861 AR>A, B(-8), ADD, 14862 JY(DIG30Y); ----- ----- C25 0001C2D8 08F80010 ----- 14863 *+++ PAGE: COMMON EXIT CODE FOR PAGE ENTRY COMMANDS 14864 *ENTRY POINT WHEN SETTING SUB-PAGE MODE 14865 .ORG PAGEA, *PR=3 14866 *CLEAR HOLD AND BROWSE 14867 Y(3), 14868 Y>PR, 14869 JUMP(PAGE1); ----- ----- BA4 00000C26 80031000 ----- 14870 *ENTRY POINT WHEN SETTING HOLD IN SUB-PAGE MODE 14871 .ORG PAGEB, *PR=0 14872 Y(0), 14873 Y>PR, 14874 JUMP(PAGE1); ----- ----- BD4 00000C26 80001000 ----- 14875 .ORG PAGEC, *PR=1 14876 *CLEAR HOLD 14877 Y(1), 14878 Y>PR, 14879 JUMP(PAGE1); ----- ----- BE8 00000C26 80011000 ----- 14880 * 14881 .ORG PAGE0, *BR=COUNT 14882 MA(COUNT), RAM>BR, 14883 JUMP(PAGE0A); ----- ----- 505 00010C27 78000000 ----- 14884 .ORG PAGE0A, *PR=BR 14885 A(0), BR>B, OR, 14886 Y>PR, 14887 JUMP(PAGE1); ----- ----- C27 00000C26 80001001 ----- 14888 * Flags in P have been set to have the following effects:- 14889 * 14890 * 1 lsb=1: clear HOLD 14891 * 2 lsb=1: clear BROWSE 14892 * 3 lsb=1: clear SINP (search for initial page) 14893 * 4 lsb=1: start POOCD 5s time out 14894 * (else terminate time outs) 14895 * 5 lsb=0: init MENU (CPRF=1, CGAP=1) 14896 * 14897 *1 lsb 14898 .ORG PAGE1, *BR=PR 14899 PR>BR, 14900 JUMP(PAGE1A); ----- ----- C26 00410C28 00000000 ----- 14901 .ORG PAGE1A, *AR=VDPTXT 14902 *Y=PR LSB 14903 MA(VDPTXT), RAM>AR, 14904 A(1), BR>B, AND, 14905 JUMP(PAGE2); ----- ----- C28 00020C29 2B010801 ----- 14906 .ORG PAGE2, *Y=STOP, PR LSB? 14907 *BR=VPPRG1 14908 MA(VPPRG1), RAM>BR, 14909 AR>A, B(STOP), AND, 14910 JZ(PAGE3F,PAGE3T); ----- ----- C29 0001250E 61040810 ----- 14911 .ORG PAGE3T, *PR LSB NOT SET 14912 JUMP(PAGE4T); ----- ----- 50F 00000511 00000000 ----- 14913 *PR LSB SET, CLEAR STOP 14914 .ORG PAGE3F, *STOP=0 14915 *WAS STOP=1? 14916 MA(VDPTXT), 14917 AR>A, B(>FF-STOP), AND, 14918 Y>RAM, 14919 JZ(PAGE4F,PAGE4T); ----- ----- 50E 00002510 2BFB0910 ----- 14920 .ORG PAGE4F, *CLEARING STOP 14921 *PMPN=1 (RE-ENTER PAGE NUMBER) 14922 MA(VPPRG1), 14923 A(PMPN), BR>B, OR, 14924 Y>RAM, 14925 JUMP(PAGE4T); ----- ----- 510 00000511 61201101 ----- 14926 *2 lsb 14927 .ORG PAGE4T, *BR=PR, 14928 *AR=DHREG 14929 PR>BR, 14930 MA(DHREG), RAM>AR, 14931 JUMP(PAGE5); ----- ----- 511 00430C2A 32000000 ----- 14932 .ORG PAGE5, *Y=PR 2ND LSB 14933 A(2), BR>B, AND, 14934 JUMP(PAGE6); ----- ----- C2A 00000C2B 00020801 ----- 14935 .ORG PAGE6, *CLEAR BROWSE? 14936 *BR=VPPRG1 14937 MA(VPPRG1), RAM>BR, 14938 JZ(PAGE7F,PAGE7T); ----- ----- C2B 00012512 61000000 ----- 14939 *PR 2ND LSB SET, CLEAR BROWSE 14940 .ORG PAGE7F, *BWSE=0 14941 MA(DHREG), 14942 AR>A, B(>FF-BWSE), AND, 14943 Y>RAM, 14944 JUMP(PAGE8); ----- ----- 512 00000C2C 32FE0910 ----- 14945 .ORG PAGE8, *SLFB=0 14946 MA(VPPRG1), 14947 A(>FF-SLFB), BR>B, AND, 14948 Y>RAM, 14949 JUMP(PAGE7T); ----- ----- C2C 00000513 61BF0901 ----- 14950 *3 lsb 14951 .ORG PAGE7T, *BR=PR 14952 *AR=VDPTXT 14953 PR>BR, 14954 MA(VDPTXT), RAM>AR, 14955 JUMP(PAGE7A); ----- ----- 513 00430C2D 2B000000 ----- 14956 .ORG PAGE7A, *Y=PR 3RD LSB 14957 A(>04), BR>B, AND, 14958 JUMP(PAGE7B); ----- ----- C2D 00000C2E 00040801 ----- 14959 .ORG PAGE7B, *CHANNEL CHANGE INIT? 14960 *BR=EXPREG 14961 MA(EXPREG), RAM>BR, 14962 JZ(PAGE9F,PAGE9T); ----- ----- C2E 00012514 63000000 ----- 14963 *PR 3RD LSB NOT SET, CLEAR STOP LOOKING FOR 8/30 PAGE 14964 .ORG PAGE9T, *NO, OK TO CLEAR SINP 14965 *SINP=0 14966 MA(EXPREG), 14967 A(>FF-SINP), BR>B, AND, 14968 Y>RAM, 14969 JUMP(PAGE9F); ----- ----- 515 00000514 63EF0901 ----- 14970 .ORG PAGE9F, *Y=UEXB 14971 *B=MREG0 14972 MA(MREG0), RAM>BR, 14973 AR>A, B(UEXB), AND, 14974 JUMP(PAGE10); ----- ----- 514 00010C2F 39010810 ----- 14975 .ORG PAGE10, *UEXB? 14976 *Y=CAEXP 14977 A(CAEXP), BR>B, AND, 14978 JZ(PAGE10F,PAGE10T); ----- ----- C2F 00002516 00200801 ----- 14979 .ORG PAGE10T, *NOT EXPAND BOTTOM 14980 JUMP(PAGE11F); ----- ----- 517 00000518 00000000 ----- 14981 .ORG PAGE10F, *EXPAND BOTTOM, CAEXP? 14982 JZ(PAGE11F,PAGE11T); ----- ----- 516 00002518 00000000 ----- 14983 .ORG PAGE11T, *EXPAND BOTTOM, CAEXP=0, SET EXPAND TOP 14984 MA(VDPTXT), 14985 AR>A, B(UEXT+UEXB), XOR, 14986 Y>RAM, 14987 JUMP(PAGE11F); ----- ----- 519 00000518 2B031910 ----- 14988 *4 lsb 14989 .ORG PAGE11F, *A=DHREG 14990 MA(DHREG), RAM>AR, 14991 JUMP(PAGE12); ----- ----- 518 00020C30 32000000 ----- 14992 .ORG PAGE12, *POOCD=0, TOD=0 14993 *B=P 14994 PR>BR, 14995 MA(DHREG), 14996 AR>A, B(>FF-POOCD-TOD), AND, 14997 Y>AR, Y>RAM, 14998 JUMP(PAGE12A); ----- ----- C30 00630C31 32D70910 ----- 14999 .ORG PAGE12A, *Y=PR 4TH LSB 15000 A(>08), BR>B, AND, 15001 JUMP(PAGE12B); ----- ----- C31 00000C32 00080801 ----- 15002 .ORG PAGE12B, *POOCD TIME OUT? 15003 *SET 5S TIME OUT 15004 MA(TIMOUT), 15005 Y(>FF), 15006 Y>RAM, 15007 JZ(PAGE12CF,PAGE12CT); ----- ----- C32 0000251A 3BFF1100 ----- 15008 .ORG PAGE12CF, *POOCD TIME OUT 15009 *POOCD=1 15010 MA(DHREG), 15011 AR>A, B(POOCD), OR, 15012 Y>RAM, 15013 JUMP(PAGE12CT); ----- ----- 51A 0000051B 32201110 ----- 15014 *5 lsb 15015 .ORG PAGE12CT, *Y=PR 5TH LSB 15016 A(>10), BR>B, AND, 15017 JUMP(PAGE13A); ----- ----- 51B 00000C33 00100801 ----- 15018 .ORG PAGE13A, *INIT MENU? 15019 *A=EXPREG 15020 MA(EXPREG), RAM>AR, 15021 JZ(PAGE14F,PAGE14T); ----- ----- C33 0002251C 63000000 ----- 15022 .ORG PAGE14T, *INIT MENU 15023 MA(EXPREG), 15024 AR>A, B(CGAP+CPRF), OR, 15025 Y>RAM, 15026 JUMP(PAGE14F); ----- ----- 51D 0000051C 630C1110 ----- 15027 *EXIT PAGE ENTRY CODE 15028 .ORG PAGE14F, 15029 JUMP(DI120); ----- ----- 51C 0000059C 00000000 ----- 15030 *///3- 15031 * BR=RCSTAT, AR=INSTRUCTION 15032 .ORG DI3X, *CASE INS HIGH NIB=>3 15033 *Y=VBI, B=SCREEN 15034 MA(SCREEN), RAM>BR, 15035 A(%01000000), RCS>B, AND, 15036 JY(DI30Y); ----- ----- 203 0001C3B0 6040080B ----- 15037 .ORG DI30Y, *CASE INS >30 15038 *TEXP 15039 *A=VDPTXT, P=UEXT 15040 MA(VDPTXT), RAM>AR, 15041 Y(UEXT), 15042 Y>PR, 15043 JUMP(GEXP0); ----- ----- 3B0 00020C34 AB021000 ----- 15044 .ORG DI31, *CASE INS >31 15045 *BEXP 15046 *A=VDPTXT, P=UEXB 15047 MA(VDPTXT), RAM>AR, 15048 Y(UEXB), 15049 Y>PR, 15050 JUMP(GEXP0); ----- ----- 3B1 00020C34 AB011000 ----- 15051 .ORG DI32, *CASE INS >32 15052 *NEXP 15053 *A=VDPTXT, P=0 15054 MA(VDPTXT), RAM>AR, 15055 Y(0), 15056 Y>PR, 15057 JUMP(GEXP0); ----- ----- 3B2 00020C34 AB001000 ----- 15058 .ORG DI33, *CASE INS >33 15059 JUMP(DI100); ----- ----- 3B3 000000D1 00000000 ----- 15060 .ORG DI34, *CASE INS >34 15061 JUMP(DI100); ----- ----- 3B4 000000D1 00000000 ----- 15062 .ORG DI35, *CASE INS >35 15063 JUMP(DI100); ----- ----- 3B5 000000D1 00000000 ----- 15064 .ORG DI36, *CASE INS >36 15065 JUMP(DI100); ----- ----- 3B6 000000D1 00000000 ----- 15066 .ORG DI37, *CASE INS >37 15067 JUMP(DI100); ----- ----- 3B7 000000D1 00000000 ----- 15068 .ORG DI38, *CASE INS >38 15069 *RED 15070 *VBI? 15071 *Y=TDISP 15072 *B=VDP0 15073 MA(VDP0), RAM>BR, 15074 A(TDISP), BR>B, AND, 15075 JZ(KEY0F,KEY0T); ----- ----- 3B8 0001251E 00040801 ----- 15076 .ORG DI39, *CASE INS >39 15077 *GREEN 15078 *VBI? 15079 *Y=TDISP 15080 *B=VDP0 15081 MA(VDP0), RAM>BR, 15082 A(TDISP), BR>B, AND, 15083 JZ(KEY0F,KEY0T); ----- ----- 3B9 0001251E 00040801 ----- 15084 .ORG DI3A, *CASE INS >3A 15085 *YELLOW 15086 *VBI? 15087 *Y=TDISP 15088 *B=VDP0 15089 MA(VDP0), RAM>BR, 15090 A(TDISP), BR>B, AND, 15091 JZ(KEY0F,KEY0T); ----- ----- 3BA 0001251E 00040801 ----- 15092 .ORG DI3B, *CASE INS >3B 15093 *CYAN 15094 *VBI? 15095 *Y=TDISP 15096 *B=VDP0 15097 MA(VDP0), RAM>BR, 15098 A(TDISP), BR>B, AND, 15099 JZ(KEY0F,KEY0T); ----- ----- 3BB 0001251E 00040801 ----- 15100 .ORG DI3C, *CASE INS >3C 15101 *INDEX 15102 *VBI? 15103 *Y=TDISP, A=PEN 15104 MA(PEN), RAM>AR, 15105 A(TDISP), BR>B, AND, 15106 JZ(IKR0F,IKR0T); ----- ----- 3BC 00022520 1B040801 ----- 15107 .ORG DI3D, *CASE INS >3D 15108 *R24PIC 15109 *THIS WAS USED IN UNITEXT TO CLEAR THE STATUS DISPLAY, 15110 *THEREFORE DO THE SAME AS CSTAT 15111 JUMP(DI1D); ----- ----- 3BD 0000022D 00000000 ----- 15112 .ORG DI3E, *CASE INS >3E 15113 JUMP(DI100); ----- ----- 3BE 000000D1 00000000 ----- 15114 .ORG DI3F, *CASE INS >3F 15115 JUMP(DI100); ----- ----- 3BF 000000D1 00000000 ----- 15116 */// 15117 ***KEY: COLOUR KEY PRESSED 15118 * B=VDP0, LAST Y WAS TDISP 15119 .ORG KEY0F, *IN VBI, DELAY 15120 *A=POLREG 15121 MA(POLREG), RAM>AR, 15122 JUMP(DI110); ----- ----- 51E 00020572 10000000 ----- 15123 .ORG KEY0T, *TEXT DISPLAYED? 15124 *Y=R24ON 15125 *A=PEN 15126 MA(PEN), RAM>AR, 15127 A(R24ON), BR>B, AND, 15128 JZ(KEY1F,KEY1T); ----- ----- 51F 00022522 1B400801 ----- 15129 .ORG KEY1T, *TEXT NOT DISPLAYED, EXIT 15130 JUMP(DI100); ----- ----- 523 000000D1 00000000 ----- 15131 .ORG KEY1F, *R24ON? 15132 *Y=PEN-4 15133 *B=SYS1 15134 MA(SYS1), RAM>BR, 15135 ARHI>A, B(-4), ADD, 15136 JZ(KEY1BF,KEY1BT); ----- ----- 522 00012524 08FC0020 ----- 15137 .ORG KEY1BT, *AUTO PROMPTS ENABLED AND USER CAN NOT SEE ROW 24 15138 *TIME OUT DISPLAY 15139 *A=DHREG 15140 MA(DHREG), RAM>AR, 15141 JUMP(STOD0); ----- ----- 525 00020BDD 32000000 ----- 15142 .ORG KEY1BF, *SUB-PAGE MODE? 15143 *ELSE, JUMP TO CKR ROUTINE 15144 *A=LSTINS 15145 MA(LSTINS), RAM>AR, 15146 JN(KEY2F,CKR0T); ----- ----- 524 00024526 2E000000 ----- 15147 *SUB-PAGE MODE 15148 .ORG KEY2F, *SUB-PAGE MODE 15149 *Y=INSRUCTION - >38 15150 AR>A, B(->38), ADD, 15151 JUMP(KEY3); ----- ----- 526 00000C35 00C80010 ----- 15152 .ORG KEY3, *RED? 15153 *Y=INSRUCTION - >39 15154 AR>A, B(->39), ADD, 15155 JZ(KEY4F,KEY4T); ----- ----- C35 00002528 00C70010 ----- 15156 .ORG KEY4T, *RED, JUMP TO DIP SUB-PAGE ROUTINE 15157 *SET LSTINS TO INDICATE PAGE- TO DIP CODE 15158 MA(LSTINS), 15159 Y(>15), 15160 Y>RAM, 15161 JUMP(DIP1F); ----- ----- 529 000004C2 2E151100 ----- 15162 .ORG KEY4F, *GREEN? 15163 JZ(KEY5F,KEY5T); ----- ----- 528 0000252A 00000000 ----- 15164 .ORG KEY5T, *GREEN, JUMP TO DIP SUB-PAGE ROUTINE 15165 *SET LSTINS TO INDICATE PAGE+ TO DIP CODE 15166 MA(LSTINS), 15167 Y(>16), 15168 Y>RAM, 15169 JUMP(DIP1F); ----- ----- 52B 000004C2 2E161100 ----- 15170 .ORG KEY5F, *THIS KEY DOES NOTHING IN SUB-PAGE MODE 15171 JUMP(DI100); ----- ----- 52A 000000D1 00000000 ----- 15172 ***IKR: INDEX KEY ROUTINE 15173 * 15174 * A=PEN, LAST Y WAS TDISP 15175 .ORG IKR0F, *IN VBI, DELAY 15176 *A=POLREG 15177 MA(POLREG), RAM>AR, 15178 JUMP(DI110); ----- ----- 520 00020572 10000000 ----- 15179 .ORG IKR0T, *TEXT DISPLAYED? 15180 JZ(IKR1F,IKR1T); ----- ----- 521 0000252C 00000000 ----- 15181 .ORG IKR1T, *TEXT NOT DISPLAYED, EXIT 15182 JUMP(DI100); ----- ----- 52D 000000D1 00000000 ----- 15183 .ORG IKR1F, *TELETEXT DISPLAYED 15184 *CALL PPB0 TO UPDATE PREVIOUS PAGE BUFFER 15185 *P=6, RETURN TO IKR10 15186 *B=PEN 15187 MA(PEN), RAM>BR, 15188 Y(6), 15189 Y>PR, 15190 JUMP(PPB0); ----- ----- 52C 000104C5 9B061000 ----- 15191 * B=SYS2 15192 .ORG IKR10, *Y=PCM-1 15193 A(-1), BRHI>B, ADD, 15194 JUMP(IKR11); ----- ----- 2DE 00000C36 00FF000C ----- 15195 .ORG IKR11, *Y=PCM-2 15196 *TOP MODE? 15197 A(-2), BRHI>B, ADD, 15198 JZ(IKR12F,IKR12T); ----- ----- C36 0000252E 00FE000C ----- 15199 .ORG IKR12F, *FLOF MODE? 15200 *A=INDEX POINTER FOR GFL0 15201 Y(4), 15202 Y>AR, 15203 JZ(IKR13F,IKR13T); ----- ----- 52E 00222530 00041000 ----- 15204 *FLOF MODE 15205 * A=4 15206 .ORG IKR13T, *CALL GFL0 TO GET LINK 15207 *RETURN=1, RETURN TO IKR20 15208 MA(RETURN), 15209 Y(1), 15210 Y>RAM, 15211 JUMP(GFL0); ----- ----- 531 000009D6 7C011100 ----- 15212 .ORG IKR20, *NULL LINK? 15213 *A=EXPREG 15214 MA(EXPREG), RAM>AR, 15215 JZ(IKR21F,IKR21T); ----- ----- 061 00022532 63000000 ----- 15216 .ORG IKR21F, *NULL LINK 15217 *SINP=1 TO LOOK FOR 8/30 INIT PAGE 15218 MA(EXPREG), 15219 AR>A, B(SINP), OR, 15220 Y>RAM, 15221 JUMP(IKR13F); ----- ----- 532 00000530 63101110 ----- 15222 .ORG IKR21T, *COPY Px TO Dx AND GO TO CMPE0 15223 JUMP(DIP20Y); ----- ----- 533 00000730 00000000 ----- 15224 *TOP MODE 15225 .ORG IKR12T, *A=POINTER TO DISPLAY PAGE 15226 Y(DPM), 15227 Y>AR, 15228 JUMP(IKR30); ----- ----- 52F 00220C37 00681000 ----- 15229 .ORG IKR30, *CALL PNTIN0 TO GET BTT POINTER 15230 *RETURN=10, RETURN TO IKR40 15231 MA(RETURN), 15232 Y(10), 15233 Y>RAM, 15234 JUMP(PNTIN0); ----- ----- C37 00000857 7C0A1100 ----- 15235 * B=BTT POINTER 15236 .ORG IKR40, *Y=B-40 15237 A(-40), BR>B, ADD, 15238 JUMP(IKR41); ----- ----- 79A 00000C38 00D80001 ----- 15239 .ORG IKR41, *IS DISPLAY PAGE PAGE 100? 15240 *SET MASK TO LOOK FOR TV PAGE 15241 MA(MASK), 15242 Y(>08), 15243 Y>RAM, 15244 JZ(IKR42F,IKR42T); ----- ----- C38 00002534 73081100 ----- 15245 .ORG IKR42F, *NOT ON PAGE 100, GO TO PAGE 100 15246 JUMP(IKR13F); ----- ----- 534 00000530 00000000 ----- 15247 .ORG IKR42T, *ON PAGE 100, SEARCH FOR TV PAGE 15248 *CALL SBT0A 15249 *RETURN=3, RETURN TO INTPN0 15250 *CALL INTPN0 15251 *RETURN=3, RETURN TO IKR50, 15252 MA(RETURN), 15253 Y(3), 15254 Y>RAM, 15255 JUMP(SBT0A); ----- ----- 535 000004C8 7C031100 ----- 15256 .ORG IKR50, *COPY Px TO Dx AND GO TO CMPE0 15257 JUMP(DIP20Y); ----- ----- 733 00000730 00000000 ----- 15258 *NORMAL OR FAVP, ENTER PAGE 100 15259 *NEED TO SET UP COUNT FOR PAGE 0 15260 .ORG IKR13F, *COUNT=>3 (CLEAR BROWSE AND HOLD) 15261 MA(COUNT), 15262 Y(3), 15263 Y>RAM, 15264 JUMP(CHNG60F); ----- ----- 530 00000676 78031100 ----- 15265 */// 15266 ***CKR: COLOURED KEY ROUTINE 15267 * B=SYS1 15268 .ORG CKR0T, *Y=PCM-2 15269 *A=LSTINS 15270 MA(LSTINS), RAM>AR, 15271 A(-2), BRHI>B, ADD, 15272 JUMP(CKR1); ----- ----- 527 00020C39 2EFE000C ----- 15273 .ORG CKR1, *FLOF MODE? 15274 *Y=PCM-3 15275 A(-3), BRHI>B, ADD, 15276 JZ(CKR1AF,CKR1AT); ----- ----- C39 00002536 00FD000C ----- 15277 .ORG CKR1AF, *NOT FLOF, FAVP? 15278 *A=LSTINS->36 (STORE POINTER FOR GFP0T) 15279 AR>A, B(->36), ADD, 15280 Y>AR, 15281 JZ(CKR1BF,CKR1BT); ----- ----- 536 00222538 00CA0010 ----- 15282 *TOP OR NORMAL 15283 .ORG CKR1BF, *TOP OR NORMAL 15284 *CALL PPB0 15285 *P=4, RETURN TO CKR2 15286 *B=PEN 15287 MA(PEN), RAM>BR, 15288 Y(4), 15289 Y>PR, 15290 JUMP(PPB0); ----- ----- 538 000104C5 9B041000 ----- 15291 .ORG CKR2, *A=PAGE INDEX FOR PNTIN0 15292 Y(DPM), 15293 Y>AR, 15294 JUMP(CKR3); ----- ----- 2DC 00220C3A 00681000 ----- 15295 .ORG CKR3, *CALL PNTIN0 15296 *RETURN=2, RETURN TO CKR4 15297 MA(RETURN), 15298 Y(2), 15299 Y>RAM, 15300 JUMP(PNTIN0); ----- ----- C3A 00000857 7C021100 ----- 15301 * A=DECODED BTT OF CURRENT DISPLAY PAGE 15302 .ORG CKR4, *B=SYS1 15303 MA(SYS1), RAM>BR, 15304 JUMP(CKR5); ----- ----- 792 00010C3B 08000000 ----- 15305 .ORG CKR5, *Y=PCM 15306 A(3), BRHI>B, AND, 15307 JUMP(CKR6); ----- ----- C3B 00000C3C 0003080C ----- 15308 .ORG CKR6, *NORMAL OR TOP? 15309 *BR=LSTINS 15310 MA(LSTINS), RAM>BR, 15311 JZ(CKR10F,CKR10T); ----- ----- C3C 0001253A 2E000000 ----- 15312 .ORG CKR10T, *NORMAL MODE 15313 *A=MODE 15314 MA(MREG0), RAM>AR, 15315 JUMP(CKR100); ----- ----- 53B 00020C3D 39000000 ----- 15316 .ORG CKR10F, *TOP MODE 15317 *Y=LSTINS LO NIB - 8 15318 *B=MREG1 15319 MA(MREG1), RAM>BR, 15320 A(-8), BR.0F>B, ADD, 15321 JUMP(CKR20); ----- ----- 53A 00010C3E 65F80002 ----- 15322 *COLOURED KEY IN TOP MODE 15323 * A=DECODED BTT BYTE, B=MREG1 15324 .ORG CKR20, *CASE COLOUR? 15325 *Y=RKM 15326 *B=LTK 15327 MA(LTK), RAM>BR, 15328 A(RKM), BR>B, AND, 15329 JY(CKR30Y); ----- ----- C3E 0001C230 11020801 ----- 15330 *RED KEY IN TOP MODE 15331 * A=DECODED BTT BYTE, LAST Y WAS RKM 15332 .ORG CKR30Y, *SIMPLE RED KEY MODE? 15333 *Y=BLOCK PAGE FLAG 15334 AR>A, B(>04), AND, 15335 JZ(CKR30AF,CKR30AT); ----- ----- 230 0000253C 00040810 ----- 15336 .ORG CKR30AF, *SIMPLE RED KEY MODE 15337 *SET MASK TO LOOK FOR ANY PAGE 15338 MA(MASK), 15339 Y(>07), 15340 Y>RAM, 15341 JUMP(CKR42T); ----- ----- 53C 00000551 73071100 ----- 15342 .ORG CKR30AT, *Y=GROUP PAGE FLAG 15343 *DISPLAY PAGE A BLOCK PAGE? 15344 AR>A, B(>02), AND, 15345 JZ(CKR40F,CKR40T); ----- ----- 53D 0000253E 00020810 ----- 15346 .ORG CKR40F, *BLOCK PAGE 15347 *SET MASK TO LOOK FOR BLOCK 15348 MA(MASK), 15349 Y(>04), 15350 Y>RAM, 15351 JUMP(CKR42T); ----- ----- 53E 00000551 73041100 ----- 15352 .ORG CKR40T, *GROUP PAGE? 15353 *SET MASK TO LOOK FOR ANY PAGE 15354 MA(MASK), 15355 Y(>07), 15356 Y>RAM, 15357 JZ(CKR42F,CKR42T); ----- ----- 53F 00002550 73071100 ----- 15358 .ORG CKR42F, *GROUP PAGE 15359 *SET MASK TO LOOK FOR BLOCK OR GROUP 15360 MA(MASK), 15361 Y(>06), 15362 Y>RAM, 15363 JUMP(CKR42T); ----- ----- 550 00000551 73061100 ----- 15364 * 15365 .ORG CKR42T, *B=LTK 15366 MA(LTK), RAM>BR, 15367 JUMP(CKR45); ----- ----- 551 00010C3F 11000000 ----- 15368 .ORG CKR45, *RED KEY, SET LTK=0 15369 MA(LTK), 15370 A(0), BR.0F>B, OR, 15371 Y>RAM, 15372 JUMP(CKR46); ----- ----- C3F 00000C40 11001102 ----- 15373 .ORG CKR46, *CALL SBT0B TO SEARCH BACK FOR PAGE 15374 *RETURN=0, RETURN TO DIP18Y 15375 MA(RETURN), 15376 Y(0), 15377 Y>RAM, 15378 JUMP(SBT0B); ----- ----- C40 000004C9 7C001100 ----- 15379 *GREEN KEY IN TOP MODE 15380 * A=DECODED BTT BYTE, B=LTK 15381 .ORG CKR31, *LTK=1 15382 MA(LTK), 15383 A(>10), BR.0F>B, OR, 15384 Y>RAM, 15385 JUMP(CKR31A); ----- ----- 231 00000C41 11101102 ----- 15386 .ORG CKR31A, *SET MASK TO LOOK FOR ANY PAGE 15387 MA(MASK), 15388 Y(>07), 15389 Y>RAM, 15390 JUMP(CKR80); ----- ----- C41 00000C42 73071100 ----- 15391 *YELLOW KEY IN TOP MODE 15392 * A=DECODED BTT BYTE, B=LTK 15393 .ORG CKR32, *LTK=2 15394 MA(LTK), 15395 A(>20), BR.0F>B, OR, 15396 Y>RAM, 15397 JUMP(CKR60); ----- ----- 232 00000C43 11201102 ----- 15398 * 15399 * TCJ July 94 15400 * CKR32A not used? 15401 * 15402 *.ORG CKR32A, *SET MASK TO LOOK FOR GROUP OR BLOCK 15403 * MA(MASK), 15404 * Y(>06), 15405 * Y>RAM, 15406 * JUMP(CKR80); 15407 * 15408 *CYAN KEY IN TOP MODE 15409 * A=DECODED BTT BYTE, B=LTK 15410 .ORG CKR33, *LTK=3 15411 MA(LTK), 15412 A(>30), BR.0F>B, OR, 15413 Y>RAM, 15414 JUMP(CKR33A); ----- ----- 233 00000C44 11301102 ----- 15415 .ORG CKR33A, *SET MASK TO LOOK BLOCK 15416 MA(MASK), 15417 Y(>04), 15418 Y>RAM, 15419 JUMP(CKR80); ----- ----- C44 00000C42 73041100 ----- 15420 *ROTATE IN GROUP ROUTINE FOR THE YELLOW KEY 15421 .ORG CKR60, *FIRST SEARCH FOR GROUP OR BLOCK 15422 MA(MASK), 15423 Y(>06), 15424 Y>RAM, 15425 JUMP(CKR61); ----- ----- C43 00000C45 73061100 ----- 15426 .ORG CKR61, *CALL SBT0A 15427 *RETURN=6, RETURN TO CKR62 15428 MA(RETURN), 15429 Y(6), 15430 Y>RAM, 15431 JUMP(SBT0A); ----- ----- C45 000004C8 7C061100 ----- 15432 .ORG CKR62, *B=MREG1, Y=BLOCK FLAG 15433 MA(MREG1), RAM>BR, 15434 AR>A, B(>04), AND, 15435 JUMP(CKR63); ----- ----- 7A6 00010C46 65040810 ----- 15436 .ORG CKR63, *Y=RIB, BLOCK PAGE FOUND? 15437 A(RIB), BR>B, AND, 15438 JZ(CKR64F,CKR64T); ----- ----- C46 00002552 00010801 ----- 15439 .ORG CKR64T, *GROUP FOUND, NO ROTATE 15440 JUMP(CKR65T); ----- ----- 553 00000555 00000000 ----- 15441 .ORG CKR64F, *BLOCK FOUND, ROTATE IN BLOCK? 15442 *RETURN=7 15443 MA(RETURN), 15444 Y(7), 15445 Y>RAM, 15446 JZ(CKR65F,CKR65T); ----- ----- 552 00002554 7C071100 ----- 15447 *ROTATE IN BLOCK 15448 .ORG CKR65F, *SEARCH BACK FOR LAST BLOCK 15449 *CALL SBT0B 15450 *RETURN=7, RETURN TO CKR66 15451 *MASK=4 15452 MA(MASK), 15453 Y(>04), 15454 Y>RAM, 15455 JUMP(SBT0B); ----- ----- 554 000004C9 73041100 ----- 15456 .ORG CKR66, *SET MASK TO LOOK FOR NEXT GROUP 15457 *MASK=2 15458 MA(MASK), 15459 Y(>02), 15460 Y>RAM, 15461 JUMP(CKR80); ----- ----- 7A7 00000C42 73021100 ----- 15462 *NO ROTATE IN BLOCK 15463 .ORG CKR65T, * 15464 JUMP(DIP18Y); ----- ----- 555 000007A0 00000000 ----- 15465 *COMMON CODE FOR GREEN, YELLOW AND CYAN IN TOP MODE 15466 .ORG CKR80, *CALL SBT0A TO SEARCH FORWARD FOR PAGE 15467 *RETURN=0, RETURN TO DIP18Y 15468 MA(RETURN), 15469 Y(0), 15470 Y>RAM, 15471 JUMP(SBT0A); ----- ----- C42 000004C8 7C001100 ----- 15472 *COLOURED KEY IN NORMAL MODE 15473 * A=MODE, B=LSTINS 15474 .ORG CKR100, *Y=PMNM 15475 AR>A, B(PMNM), AND, 15476 JUMP(CKR101); ----- ----- C3D 00000C47 00040810 ----- 15477 .ORG CKR101, *PLUS MINUS NORMAL MENU? 15478 *A=LSTINS->38 15479 A(->38), BR>B, ADD, 15480 Y>AR, 15481 JZ(CKR102F,CKR102T); ----- ----- C47 00222556 00C80001 ----- 15482 *PLUS MINUS NORMAL MENU 15483 .ORG CKR102F, *Y=A-2 15484 AR>A, B(-2), ADD, 15485 JUMP(CKR110); ----- ----- 556 00000C48 00FE0010 ----- 15486 .ORG CKR110, *RED OR GREEN KEY? 15487 *A=PEN 15488 MA(PEN), RAM>AR, 15489 JN(CKR111F,CKR111T); ----- ----- C48 00024558 1B000000 ----- 15490 .ORG CKR111T, *RED OR GREEN KEY 15491 *JUMP TO DIP CODE 15492 *Y=PEN 15493 ARHI>A, B(0), OR, 15494 JUMP(DIP1T); ----- ----- 559 000004C3 00001020 ----- 15495 .ORG CKR111F, *YELLOW OR CYAN KEY 15496 *NO PROMPT FOR THIS KEY, DO NOTHING 15497 JUMP(DI100); ----- ----- 558 000000D1 00000000 ----- 15498 *DEFAULT NORMAL MENU 15499 .ORG CKR102T, *DEFAULT NORMAL MENU 15500 *P=INDEX TO STORE FOR THIS KEY 15501 AR>A, B(STOR2), ADD, 15502 Y>PR, 15503 JUMP(CKR120); ----- ----- 557 00000C49 80220010 ----- 15504 .ORG CKR120, *B=STORE FOR THIS KEY 15505 PR>MA, RAM>BR, 15506 JUMP(CKR121); ----- ----- C49 00110C4A 00000000 ----- 15507 .ORG CKR121, *P=INDEX TO MAGS IN THIS STORE 15508 *B=DPM 15509 MA(DPM), RAM>BR, 15510 A(M0), BRHI>B, ADD, 15511 Y>PR, 15512 JUMP(CKR122); ----- ----- C4A 00010C4B E810000C ----- 15513 .ORG CKR122, *A=NEW MAGS 15514 PR>MA, RAM>AR, 15515 JUMP(CKR123); ----- ----- C4B 00120C4C 00000000 ----- 15516 .ORG CKR123, *UPDATE DISPLAY PAGE MAG 15517 *B=INDEX TO MAGS 15518 PR>BR, 15519 MA(DPM), 15520 AR<<4>A, BR.0F>B, OR, 15521 Y>RAM, 15522 JUMP(CKR124); ----- ----- C4C 00410C4D 68001132 ----- 15523 .ORG CKR124, *P=INDEX TO TENS 15524 *B=DPT 15525 MA(DPT), RAM>BR, 15526 A(8), BR>B, ADD, 15527 Y>PR, 15528 JUMP(CKR125); ----- ----- C4D 00010C4E E9080001 ----- 15529 .ORG CKR125, *A=NEW TENS 15530 PR>MA, RAM>AR, 15531 JUMP(CKR126); ----- ----- C4E 00120C4F 00000000 ----- 15532 .ORG CKR126, *UPDATE DISPLAY PAGE TENS 15533 *B=INDEX TO TENS 15534 PR>BR, 15535 MA(DPT), 15536 AR<<4>A, BR.0F>B, OR, 15537 Y>RAM, 15538 JUMP(CKR127); ----- ----- C4F 00410C50 69001132 ----- 15539 .ORG CKR127, *P=INDEX TO UNITS 15540 *B=DPU 15541 MA(DPU), RAM>BR, 15542 A(8), BR>B, ADD, 15543 Y>PR, 15544 JUMP(CKR128); ----- ----- C50 00010C51 EA080001 ----- 15545 .ORG CKR128, *A=NEW TENS 15546 PR>MA, RAM>AR, 15547 JUMP(CKR129); ----- ----- C51 00120C52 00000000 ----- 15548 .ORG CKR129, *UPDATE DISPLAY PAGE UNITS 15549 MA(DPU), 15550 AR<<4>A, BR.0F>B, OR, 15551 Y>RAM, 15552 JUMP(CMPE0); ----- ----- C52 000004DF 6A001132 ----- 15553 *FLOF MODE 15554 * A=LSTINS 15555 .ORG CKR1AT, *A=LSTINS->38 (LINK NUMBER) 15556 AR>A, B(->38), ADD, 15557 Y>AR, 15558 JUMP(CKR1AA); ----- ----- 537 00220C53 00C80010 ----- 15559 .ORG CKR1AA, *CALL GFL0 TO PUT FLOF LINK IN PU,PT,PM 15560 *RETURN=0, RETURN TO CKR200Y 15561 MA(RETURN), 15562 Y(0), 15563 Y>RAM, 15564 JUMP(GFL0); ----- ----- C53 000009D6 7C001100 ----- 15565 * LAST Y WAS NULL ILINK MARKER, TPD=FLOF FLAGS 15566 .ORG CKR200Y, *NULL LINK? 15567 JZ(CKR201F,CKR201T); ----- ----- 060 0000255A 00000000 ----- 15568 .ORG CKR201F, *NULL LINK 15569 JUMP(DI100); ----- ----- 55A 000000D1 00000000 ----- 15570 *ENTRY POINT FROM FAVP MODE 15571 .ORG CKR201T, *CALL PPB0 TO UPDATE PREVIOUS PAGE 15572 *P=5, RETURN TO CKR210 15573 *B=PEN 15574 MA(PEN), RAM>BR, 15575 Y(5), 15576 Y>PR, 15577 JUMP(PPB0); ----- ----- 55B 000104C5 9B051000 ----- 15578 .ORG CKR210, *JUMP TO GENERAL PURPOSE PAGE ENTRY 15579 JUMP(DIP20Y); ----- ----- 2DD 00000730 00000000 ----- 15580 *FAVP MODE 15581 * A=STORE POINTER FOR GFP0T 15582 .ORG CKR1BT, *CALL GFP0T 15583 *RETURN=2, RETURN TO CKR300 15584 MA(RETURN), 15585 Y(2), 15586 Y>RAM, 15587 JUMP(GFP0T); ----- ----- 539 00000369 7C021100 ----- 15588 * PU,PT,PM CONTAIN FAVP, LAST Y WAS PU LSN 15589 .ORG CKR300, *PAGE PROGRAMMED? 15590 JZ(CKR301F,CKR301T); ----- ----- 272 0000255C 00000000 ----- 15591 .ORG CKR301F, *NO PAGE, EXIT 15592 JUMP(DI100); ----- ----- 55C 000000D1 00000000 ----- 15593 .ORG CKR301T, *JUMP TO FLOF CODE 15594 JUMP(CKR201T); ----- ----- 55D 0000055B 00000000 ----- 15595 ***GEXP: GRUNDIG EXPAND COMMANDS 15596 * A=VDPTXT, P=NEW EXPAND BITS 15597 .ORG GEXP0, *CLEAR EXPAND BITS 15598 *B=NEW EXPAND BITS 15599 PR>BR, 15600 AR>A, B(>FF-UEXT-UEXB), AND, 15601 Y>AR, 15602 JUMP(GEXP1); ----- ----- C34 00630C54 00FC0810 ----- 15603 .ORG GEXP1, *UPDATE VDPTXT 15604 MA(VDPTXT), 15605 AR>A, BR>B, OR, 15606 Y>RAM, 15607 JUMP(DI120); ----- ----- C54 0000059C 2B001111 ----- 15608 *///4- 15609 * BR=RCSTAT, AR=INSTRUCTION 15610 .ORG DI4X, *CASE INS HIGH NIB=>4 15611 *Y=OPCNT 15612 A(0), BR.0F>B, ADD, 15613 JY(DI40Y); ----- ----- 204 0000C240 00000002 ----- 15614 .ORG DI40Y, *CASE INS >40 15615 *MODE0 15616 *AR=STORE (LAST OPERAND) 15617 MA(STORE), RAM>AR, 15618 JZ(MODE0F,MODE0T); ----- ----- 240 0002255E 77000000 ----- 15619 .ORG DI41, *CASE INS >41 15620 *MODE1 15621 *OPCNT==0? 15622 *AR=STORE (LAST OPERAND) 15623 MA(STORE), RAM>AR, 15624 JZ(MODE10F,MODE10T); ----- ----- 241 00022560 77000000 ----- 15625 .ORG DI42, *CASE INS >42 15626 *LANG 15627 *OPCNT==0? 15628 *AR=STORE (LAST OPERAND) 15629 MA(STORE), RAM>AR, 15630 JZ(LANG0F,LANG0T); ----- ----- 242 00022562 77000000 ----- 15631 .ORG DI43, *CASE INS >43 15632 *CURSOR 15633 *PR=-2 (INDEX TO FIRST OPERAND) 15634 *OPCNT==0? 15635 *AR=STORE (LAST OPERAND) 15636 MA(STORE), RAM>AR, 15637 Y(-2), 15638 Y>PR, 15639 JZ(CURS0F,CURS0T); ----- ----- 243 00022564 F7FE1000 ----- 15640 * 15641 * TCJ Nov 92 15642 * Addition of command >44 to write to the new mode 15643 * register MODE2. 15644 * 15645 .ORG DI44, *CASE INS >44 15646 *MODE2 15647 *OPCNT == 0 ? 15648 *AR = STORE (Last Operand) 15649 MA(STORE), RAM>AR, 15650 JZ(MODE20F,MODE20T); ----- ----- 244 00022566 77000000 ----- 15651 * 15652 .ORG DI45, *CASE INS >45 15653 *ROW24 15654 *OPCNT==0? 15655 *AR=POLREG, Y=VBI 15656 MA(POLREG), RAM>AR, 15657 A(%01000000), RCS>B, AND, 15658 JZ(ROW0F,ROW0T); ----- ----- 245 00022568 1040080B ----- 15659 .ORG DI46, *CASE INS >46 15660 *MPTR, BR=RCSTAT, OPCNT=0? 15661 *RWL=7 15662 MA(RWL), 15663 Y(7), 15664 Y>RAM, Y>IO, 15665 JZ(MPTR0F,MPTR0T); ----- ----- 246 0000256A 0B075100 ----- 15666 * 15667 * TCJ Dec 93 15668 * Addition of the subtitle browse command, this 15669 * command must set the STBRW bit. 15670 * 15671 .ORG DI47, *CASE INS >47 15672 *SUBTITLE BROWSE 15673 *AR=DHREG 15674 MA(DHREG), RAM>AR, 15675 JUMP(TCJD47A); ----- ----- 247 00020C55 32000000 ----- 15676 * 15677 .ORG TCJD47A, *STBRW=0 15678 MA(DHREG), 15679 AR>A, B(STBRW), OR, 15680 Y>RAM, 15681 JUMP(TCJD47B); ----- ----- C55 00000C56 32021110 ----- 15682 * 15683 .ORG TCJD47B, *Y=VBI, B=SCREEN 15684 MA(SCREEN), RAM>BR, 15685 A(%01000000), RCS>B, AND, 15686 JUMP(TCJD47C); ----- ----- C56 00010C57 6040080B ----- 15687 * 15688 .ORG TCJD47C, *AR=VPPRG1 15689 *Y=TDISP, IN VBI? 15690 MA(VPPRG1), RAM>AR, 15691 A(TDISP), BR>B, AND, 15692 JZ(BROWSE0F,BROWSE0T); ----- ----- C57 0002248E 61040801 ----- 15693 * 15694 .ORG DI48, *CASE INS >48 15695 *SCLOCK 15696 *A=VDPTXT 15697 MA(VDPTXT), RAM>AR, 15698 JUMP(DI48A); ----- ----- 248 00020C58 2B000000 ----- 15699 .ORG DI48A, *SET UCLK 15700 MA(VDPTXT), 15701 AR>A, B(UCLK), OR, 15702 Y>RAM, 15703 JUMP(DI120); ----- ----- C58 0000059C 2B801110 ----- 15704 .ORG DI49, *CASE INS >49 15705 *CCLOCK 15706 *A=VDPTXT 15707 MA(VDPTXT), RAM>AR, 15708 JUMP(DI49A); ----- ----- 249 00020C59 2B000000 ----- 15709 .ORG DI49A, *CLEAR UCLK 15710 MA(VDPTXT), 15711 AR>A, B(>FF-UCLK), AND, 15712 Y>RAM, 15713 JUMP(DI120); ----- ----- C59 0000059C 2B7F0910 ----- 15714 .ORG DI4A, *CASE INS >4A 15715 *TCLOCK, JUMP TO SUB-PAGE 15716 *Y=VBI, B=SCREEN 15717 MA(SCREEN), RAM>BR, 15718 A(%01000000), RCS>B, AND, 15719 JUMP(DI11); ----- ----- 24A 00010221 6040080B ----- 15720 .ORG DI4B, *CASE INS >4B 15721 *CLKCOL, BR=RCSTAT, OPCNT=0? 15722 *AR=VDP4 15723 MA(VDP4), RAM>AR, 15724 JZ(COL0F,COL0T); ----- ----- 24B 0002256C 04000000 ----- 15725 .ORG DI4C, *CASE INS >4C 15726 *PLLMOD, BR=RCSTAT, OPCNT=0? 15727 *AR=STORE (LAST OPERAND) 15728 MA(STORE), RAM>AR, 15729 JZ(PLLM0F,PLLM0T); ----- ----- 24C 0002256E 77000000 ----- 15730 * 15731 * TCJ August 94, 211 Mods 15732 * Addition of LANG2 command 15733 * 15734 .ORG DI4D, *CASE INS >4D 15735 *LANG2 15736 *OPCNT == 0 ? 15737 *AR = STORE (Last Operand) 15738 MA(STORE), RAM>AR, 15739 JZ(LANG20F,LANG20T); ----- ----- 24D 00022570 77000000 ----- 15740 * 15741 .ORG DI4E, *CASE INS >4E 15742 *NOP [SFLOF ON UNITEXT] 15743 JUMP(DI100); ----- ----- 24E 000000D1 00000000 ----- 15744 .ORG DI4F, *CASE INS >4F 15745 JUMP(DI100); ----- ----- 24F 000000D1 00000000 ----- 15746 */// 15747 *+++MODE 0 15748 * AR=LAST OPERAND, BR=RCSTAT 15749 .ORG MODE0T, *OPCNT==0 15750 *OPCNT=1 15751 MA(RCSTAT), 15752 A(1), BR.F0>B, ADD, 15753 Y>RAM, 15754 JUMP(ST0F); ----- ----- 55F 00000001 2F010103 ----- 15755 .ORG MODE0F, *OPCNT!=0 15756 *OPCNT=0 15757 MA(RCSTAT), 15758 A(0), BR.F0>B, ADD, 15759 Y>RAM, 15760 JUMP(MODE1); ----- ----- 55E 00000C5A 2F000103 ----- 15761 .ORG MODE1, *UPDATE MODE REGISTER 15762 MA(MREG0), 15763 AR>A, B(0), OR, 15764 Y>RAM, 15765 JUMP(MODE2); ----- ----- C5A 00000C5B 39001110 ----- 15766 .ORG MODE2, *A=EXPREG 15767 MA(EXPREG), RAM>AR, 15768 JUMP(MODE3); ----- ----- C5B 00020C5C 63000000 ----- 15769 .ORG MODE3, *CGAP=1, CPRF=1 TO INIT MENU 15770 *CALL SET VDP REGISTERS AFTER VBI 15771 MA(EXPREG), 15772 AR>A, B(CGAP+CPRF), OR, 15773 Y>RAM, 15774 JUMP(DI120); ----- ----- C5C 0000059C 630C1110 ----- 15775 *+++MODE 1 15776 * AR=LAST OPERAND, BR=RCSTAT 15777 .ORG MODE10T, *OPCNT==0 15778 *OPCNT=1 15779 MA(RCSTAT), 15780 A(1), BR.F0>B, ADD, 15781 Y>RAM, 15782 JUMP(ST0F); ----- ----- 561 00000001 2F010103 ----- 15783 .ORG MODE10F, *UPDATE MREG1 15784 MA(MREG1), 15785 AR>A, B(0), OR, 15786 Y>RAM, 15787 JUMP(DI120); ----- ----- 560 0000059C 65001110 ----- 15788 * 15789 *+++MODE 2 15790 * 15791 * TCJ Nov 92 15792 * Addition of a MODE2 control register to add a control bit 15793 * for the NOKIA special subpage mode. 15794 * 15795 .ORG MODE20T, * AR = LAST OPERAND, BR = RCSTAT 15796 * OPCNT == 0 15797 * OPCNT = 1 15798 MA(RCSTAT), 15799 A(1), BR.F0>B, ADD, 15800 Y>RAM, 15801 JUMP(ST0F); ----- ----- 567 00000001 2F010103 ----- 15802 * 15803 .ORG MODE20F, * OPCNT != 0 15804 * UPDATE MREG2 15805 MA(MREG2), 15806 AR>A, B(0), OR, 15807 Y>RAM, 15808 JUMP(DI120); ----- ----- 566 0000059C 6E001110 ----- 15809 * 15810 *+++LANG 15811 * AR=LAST OPERAND, BR=RCSTAT 15812 .ORG LANG0T, *OPCNT==0 15813 *OPCNT=1 15814 MA(RCSTAT), 15815 A(1), BR.F0>B, ADD, 15816 Y>RAM, 15817 JUMP(ST0F); ----- ----- 563 00000001 2F010103 ----- 15818 .ORG LANG0F, *OPCNT!=0 15819 *OPCNT=0 15820 MA(RCSTAT), 15821 A(0), BR.F0>B, ADD, 15822 Y>RAM, 15823 JUMP(LANG1); ----- ----- 562 00000C5D 2F000103 ----- 15824 .ORG LANG1, *USRLAN=LAST OPERAND 15825 MA(USRLAN), 15826 AR>A, B(0), OR, 15827 Y>RAM, 15828 JUMP(DI120); ----- ----- C5D 0000059C 2D001110 ----- 15829 * 15830 *+++LANG2 15831 * 15832 * TCJ August 94, 211 Mods 15833 * Addtion of LANG2 command processing 15834 * 15835 * AR=LAST OPERAND, BR=RCSTAT 15836 .ORG LANG20T, *OPCNT==0 15837 *OPCNT=1 15838 MA(RCSTAT), 15839 A(1), BR.F0>B, ADD, 15840 Y>RAM, 15841 JUMP(ST0F); ----- ----- 571 00000001 2F010103 ----- 15842 15843 .ORG LANG20F, *OPCNT!=0 15844 *OPCNT=0 15845 MA(RCSTAT), 15846 A(0), BR.F0>B, ADD, 15847 Y>RAM, 15848 JUMP(LANG21); ----- ----- 570 00000C5E 2F000103 ----- 15849 15850 .ORG LANG21, *USRLAN2=LAST OPERAND 15851 MA(VDP3), 15852 AR>A, B(0), OR, 15853 Y>RAM, 15854 JUMP(DI120); ----- ----- C5E 0000059C 03001110 ----- 15855 * 15856 *+++CURSOR: CURSOR CONTROL ROUTINE 15857 * AR=LAST OPERAND, BR=RCSTAT, PR= INDEX TO 1ST OPERAND 15858 .ORG CURS0T, *OPCNT=2 (2 OPERANDS) 15859 MA(RCSTAT), 15860 A(2), BR.F0>B, ADD, 15861 Y>RAM, 15862 JUMP(ST0F); ----- ----- 565 00000001 2F020103 ----- 15863 * 15864 .ORG CURS0F, *LOAD CURSOR COLUMN 15865 *TPD=1ST OPERAND 15866 RVDP, 15867 MA(VDP6), 15868 AR>A, B(>3F), AND, 15869 Y>RAM, Y>IO, 15870 JUMP(CURS1); ----- ----- 564 00000C5F 063FC910 ----- 15871 .ORG CURS1, *LOAD CURSOR ROW, STYLE AND CON 15872 MA(VDP5), 15873 TPD>A, B(>DF), AND, 15874 Y>RAM, Y>IO, 15875 JUMP(DI100); ----- ----- C5F 000000D1 05DF4990 ----- 15876 *+++ROW 24 MODE 15877 * AR=POLREG, BR=RCSTAT, LAST Y WAS VBI 15878 .ORG ROW0T, *OLD OPCNT==0 15879 *OPCNT=1 15880 MA(RCSTAT), 15881 A(1), BR.F0>B, ADD, 15882 Y>RAM, 15883 JUMP(ST0F); ----- ----- 569 00000001 2F010103 ----- 15884 .ORG ROW0F, *IN VBI? 15885 JZ(DI110,ROW1T); ----- ----- 568 00002572 00000000 ----- 15886 *IF IN VBI, NEED TO DELAY 15887 *(this is so that further commands are delayed until packet 24 15888 *reception has been disabled if APIN=1 and R24EN=0) 15889 .ORG ROW1T, *B=SYS2 15890 MA(SYS2), RAM>BR, 15891 JUMP(ROW2); ----- ----- 573 00010C60 09000000 ----- 15892 .ORG ROW2, *A=LAST OPERAND 15893 *Y=OLD APIN 15894 MA(STORE), RAM>AR, 15895 A(APIN), BR>B, AND, 15896 JUMP(ROW3); ----- ----- C60 00020C61 77010801 ----- 15897 .ORG ROW3, *Y=NEW APIN 15898 *OLD APIN? 15899 *A=STOR0 15900 MA(STOR0), RAM>AR, 15901 AR>A, B(APIN), AND, 15902 JZ(ROW4F,ROW4T); ----- ----- C61 00022574 20010810 ----- 15903 .ORG ROW4F, *NOT SETTING APIN 15904 JUMP(ROW10); ----- ----- 574 000000D3 00000000 ----- 15905 .ORG ROW4T, *SETTING APIN? 15906 *RWL=DISPLAY PAGE 15907 MA(RWL), 15908 ARHI>A, B(0), OR, 15909 Y>RAM, Y>IO, 15910 JZ(ROW5F,ROW5T); ----- ----- 575 00002576 0B005120 ----- 15911 .ORG ROW5T, *NOT SETTING APIN 15912 JUMP(ROW10); ----- ----- 577 000000D3 00000000 ----- 15913 *SETTING APIN, CLEAR ROW 24 15914 .ORG ROW5F, *CALL CSCNB 15915 *RET4=3, RETURN TO ROW10 15916 MA(RET4), 15917 Y(3), 15918 Y>RAM, 15919 JUMP(CSCNB); ----- ----- 576 00000C62 79031100 ----- 15920 * B=SYS2 15921 .ORG ROW10, *CLEAR APIN, R24EN, R24OSD, READY FOR UPDATE 15922 MA(SYS2), 15923 A(>FF-APIN-R24EN-R24OSD), BR>B, AND, 15924 Y>RAM, 15925 JUMP(ROW11); ----- ----- 0D3 00000C63 093E0901 ----- 15926 .ORG ROW11, *A=LAST OPERAND 15927 MA(STORE), RAM>AR, 15928 * JUMP(ROW12); 15929 JUMP(ROW13); ----- ----- C63 00020C64 77000000 ----- 15930 * 15931 * TCJ April 94, 209 mods 15932 * 15933 *ORG ROW12, *UPDATE ROW 24 LANG REGISTER 15934 * MA(R24LAN), 15935 * AR>A, B(%00111110), AND, 15936 * Y>RAM, 15937 * JUMP(ROW13); 15938 * 15939 .ORG ROW13, *B=SYS2, EXTRACT APIN, R24EN, R24OSD, FROM OPERAND IN A 15940 MA(SYS2), RAM>BR, 15941 AR>A, B(APIN+R24EN+R24OSD), AND, 15942 Y>AR, 15943 JUMP(ROW14); ----- ----- C64 00230C65 09C10810 ----- 15944 .ORG ROW14, *UPDATE SYS2 15945 MA(SYS2), 15946 AR>A, BR>B, OR, 15947 Y>RAM, 15948 JUMP(ROW15); ----- ----- C65 00000C66 09001111 ----- 15949 .ORG ROW15, *A=EXPREG 15950 MA(EXPREG), RAM>AR, 15951 JUMP(ROW16); ----- ----- C66 00020C67 63000000 ----- 15952 .ORG ROW16, *CGAP=1, CPRF=1 15953 MA(EXPREG), 15954 AR>A, B(CGAP+CPRF), OR, 15955 Y>RAM, 15956 JUMP(DI120); ----- ----- C67 0000059C 630C1110 ----- 15957 *+++MPTR: MEMORY POINTER 15958 * RWL=7, BR=RCSTAT 15959 .ORG MPTR0T, *OPCNT==0 15960 *OPCNT=2 15961 MA(RCSTAT), 15962 A(2), BR.F0>B, ADD, 15963 Y>RAM, 15964 JUMP(ST0F); ----- ----- 56B 00000001 2F020103 ----- 15965 .ORG MPTR0F, *OPCNT!=0 15966 *CHRM=1 15967 MA(RCSTAT), 15968 A(CHRM), BR>B, OR, 15969 Y>RAM, 15970 JUMP(MPTR1); ----- ----- 56A 00000C68 2F801101 ----- 15971 .ORG MPTR1, *PR=-2 15972 *BR=LAST OPERAND 15973 MA(STORE), RAM>BR, 15974 Y(-2), 15975 Y>PR, 15976 JUMP(MPTR2); ----- ----- C68 00010C69 F7FE1000 ----- 15977 .ORG MPTR2, *TPD=1ST OPERAND 15978 *COLPTR=LAST OPERAND (MASK OUT LTC BIT) 15979 RVDP, 15980 MA(COLPTR), 15981 A(%00111111), BR>B, AND, 15982 Y>RAM, 15983 JUMP(MPTR3); ----- ----- C69 00000C6A 313F8901 ----- 15984 .ORG MPTR3, *AR=1ST OPERAND 15985 TPD>A, B(0), OR, 15986 Y>AR, 15987 JUMP(MPTR4); ----- ----- C6A 00220C6B 00001090 ----- 15988 .ORG MPTR4, *Y=LTC BIT 15989 A(%10000000), BR>B, AND, 15990 JUMP(MPTR5); ----- ----- C6B 00000C6C 00800801 ----- 15991 .ORG MPTR5, *LTC? 15992 *CLEAR MASK FIELD IN ROWPTR 15993 MA(ROWPTR), 15994 TPD>A, B(%00011111), AND, 15995 Y>RAM, 15996 JZ(MPTR6F,MPTR6T); ----- ----- C6C 00002578 301F0990 ----- 15997 .ORG MPTR6F, *LTC=1, POINTING TO A LATCH 15998 *ROWPTR=1ST OPERAND 15999 MA(ROWPTR), 16000 TPD>A, B(0), ADD, 16001 Y>RAM, 16002 JUMP(DI100); ----- ----- 578 000000D1 30000190 ----- 16003 * 16004 .ORG MPTR6T, *MPTR, COLPTR IS STORE, NEED TO GET LATCH 16005 *MOVE STORE FIELD DOWN TO NIBBLE BOUNDARY 16006 *AND MASK OUT IRRELEVANT BITS 16007 AR>>1>A, B(>70), AND, 16008 Y>AR, 16009 JUMP(MPTR7); ----- ----- 579 00220C6D 007008E0 ----- 16010 .ORG MPTR7, *PR=INDEX TO STORE TABLE 16011 ARHI>A, B(STOR0), ADD, 16012 Y>PR, 16013 JUMP(MPTR8); ----- ----- C6D 00000C6E 80200020 ----- 16014 .ORG MPTR8, *AR=BR=LATCH FOR STORE 16015 PR>MA, RAM>AR, RAM>BR, 16016 JUMP(MPTR9); ----- ----- C6E 00130C6F 00000000 ----- 16017 .ORG MPTR9, *AR=LATCH<<1, BR=ROWPTR 16018 MA(ROWPTR), RAM>BR, 16019 AR.F0>A, BR.F0>B, ADD, 16020 Y>AR, 16021 JUMP(MPTR10); ----- ----- C6F 00230C70 300000D3 ----- 16022 .ORG MPTR10, *PUT LATCH IN ROWPTR 16023 MA(ROWPTR), 16024 AR>A, BR>B, OR, 16025 Y>RAM, 16026 JUMP(DI100); ----- ----- C70 000000D1 30001111 ----- 16027 *+++SET CLOCK COLOURS 16028 * AR=VDP4, BR=RCSTAT 16029 .ORG COL0T, *OPCNT==0 16030 *OPCNT=1 16031 MA(RCSTAT), 16032 A(1), BR.F0>B, ADD, 16033 Y>RAM, 16034 JUMP(ST0F); ----- ----- 56D 00000001 2F010103 ----- 16035 .ORG COL0F, *B=LAST OPERAND 16036 *Y=CLOCK 16037 MA(STORE), RAM>BR, 16038 AR>A, B(CLOCK), AND, 16039 JUMP(COL1); ----- ----- 56C 00010C71 77800810 ----- 16040 .ORG COL1, *A=LAST OPERAND WITH CLOCK MASKED 16041 *IN CLOCK MODE? 16042 A(>FF-CLOCK), BR>B, AND, 16043 Y>AR, 16044 JZ(COL2F,COL2T); ----- ----- C71 0022257A 007F0801 ----- 16045 .ORG COL2F, *CLOCK MODE 16046 MA(VDP4), 16047 AR>A, B(CLOCK), OR, 16048 Y>RAM, Y>IO, 16049 JUMP(DI120); ----- ----- 57A 0000059C 04805110 ----- 16050 .ORG COL2T, *NOT CLOCK MODE 16051 MA(VDP4), 16052 AR>A, B(0), OR, 16053 Y>RAM, Y>IO, 16054 JUMP(DI120); ----- ----- 57B 0000059C 04005110 ----- 16055 *+++PLL MODE 16056 * AR=LAST OPERAND, BR=RCSTAT 16057 .ORG PLLM0T, *OPCNT==0 16058 *OPCNT=1 16059 MA(RCSTAT), 16060 A(1), BR.F0>B, ADD, 16061 Y>RAM, 16062 JUMP(ST0F); ----- ----- 56F 00000001 2F010103 ----- 16063 .ORG PLLM0F, *UPDATE USER PLL REGISTER 16064 *CALL SVDP 16065 MA(UPLL), 16066 AR>A, B(0), OR, 16067 Y>RAM, 16068 JUMP(DI120); ----- ----- 56E 0000059C 6F001110 ----- 16069 *///5- 16070 * BR=RCSTAT, AR=INSTRUCTION 16071 .ORG DI5X, *CASE INS HIGH NIB=>5 16072 *B=UPLL 16073 *Y=INSTRUCTION LO NIB 16074 MA(UPLL), RAM>BR, 16075 AR.0F>A, B(0), OR, 16076 JUMP(DI5X1); ----- ----- 205 00010C72 6F0010C0 ----- 16077 .ORG DI5X1, *A=UPLL WITH HPOS, FSYNC, SIX24, ISYNC AND ILCE CLEARED 16078 *###8 CAN TEST BIT RATHER THAN DO CASE TO DECODE 16079 A(>FF-HPOS-FSYNC-SIX24-ISYNC-ILCE), BR>B, AND, 16080 Y>AR, 16081 JY(DI50Y); ----- ----- C72 0022C6F0 00C80801 ----- 16082 .ORG DI50Y, *CASE INS >50 16083 *DRST 16084 MA(UPLL), 16085 AR>A, B(0), OR, 16086 Y>RAM, 16087 JUMP(DI120); ----- ----- 6F0 0000059C 6F001110 ----- 16088 .ORG DI51, *CASE INS >51 16089 *A 16090 MA(UPLL), 16091 AR>A, B(SIX24), OR, 16092 Y>RAM, 16093 JUMP(DI120); ----- ----- 6F1 0000059C 6F041110 ----- 16094 .ORG DI52, *CASE INS >52 16095 *I 16096 MA(UPLL), 16097 AR>A, B(ILCE), OR, 16098 Y>RAM, 16099 JUMP(DI120); ----- ----- 6F2 0000059C 6F011110 ----- 16100 .ORG DI53, *CASE INS >53 16101 JUMP(DI100); ----- ----- 6F3 000000D1 00000000 ----- 16102 .ORG DI54, *CASE INS >54 16103 *S 16104 MA(UPLL), 16105 AR>A, B(ISYNC), OR, 16106 Y>RAM, 16107 JUMP(DI120); ----- ----- 6F4 0000059C 6F021110 ----- 16108 .ORG DI55, *CASE INS >55 16109 *SA 16110 MA(UPLL), 16111 AR>A, B(ISYNC+SIX24), OR, 16112 Y>RAM, 16113 JUMP(DI120); ----- ----- 6F5 0000059C 6F061110 ----- 16114 .ORG DI56, *CASE INS >56 16115 *SI 16116 MA(UPLL), 16117 AR>A, B(ISYNC+ILCE), OR, 16118 Y>RAM, 16119 JUMP(DI120); ----- ----- 6F6 0000059C 6F031110 ----- 16120 .ORG DI57, *CASE INS >57 16121 JUMP(DI100); ----- ----- 6F7 000000D1 00000000 ----- 16122 .ORG DI58, *CASE INS >58 16123 *R 16124 MA(UPLL), 16125 AR>A, B(HPOS), OR, 16126 Y>RAM, 16127 JUMP(DI120); ----- ----- 6F8 0000059C 6F201110 ----- 16128 .ORG DI59, *CASE INS >59 16129 *RA 16130 MA(UPLL), 16131 AR>A, B(HPOS+SIX24), OR, 16132 Y>RAM, 16133 JUMP(DI120); ----- ----- 6F9 0000059C 6F241110 ----- 16134 .ORG DI5A, *CASE INS >5A 16135 *RI 16136 MA(UPLL), 16137 AR>A, B(HPOS+ILCE), OR, 16138 Y>RAM, 16139 JUMP(DI120); ----- ----- 6FA 0000059C 6F211110 ----- 16140 .ORG DI5B, *CASE INS >5B 16141 JUMP(DI100); ----- ----- 6FB 000000D1 00000000 ----- 16142 .ORG DI5C, *CASE INS >5C 16143 *RS 16144 MA(UPLL), 16145 AR>A, B(HPOS+ISYNC), OR, 16146 Y>RAM, 16147 JUMP(DI120); ----- ----- 6FC 0000059C 6F221110 ----- 16148 .ORG DI5D, *CASE INS >5D 16149 *RSA 16150 MA(UPLL), 16151 AR>A, B(HPOS+ISYNC+SIX24), OR, 16152 Y>RAM, 16153 JUMP(DI120); ----- ----- 6FD 0000059C 6F261110 ----- 16154 .ORG DI5E, *CASE INS >5E 16155 *RSI 16156 MA(UPLL), 16157 AR>A, B(HPOS+ISYNC+ILCE), OR, 16158 Y>RAM, 16159 JUMP(DI120); ----- ----- 6FE 0000059C 6F231110 ----- 16160 .ORG DI5F, *CASE INS >5F 16161 JUMP(DI100); ----- ----- 6FF 000000D1 00000000 ----- 16162 */// 16163 *///6- 16164 * BR=RCSTAT, AR=INSTRUCTION 16165 .ORG DI6X, *CASE INS HIGH NIB=>6 16166 *Y=INS LO NIB-8 16167 AR.0F>A, B(-8), ADD, 16168 JUMP(DI6X1); ----- ----- 206 00000C73 00F800C0 ----- 16169 .ORG DI6X1, *CASE INS LO NIB 3LSBS 16170 *INSTRUCTION IN TOP HALF? 16171 AR>A, B(7), AND, 16172 JN(DI6X2F,DI6X2T); ----- ----- C73 0000457C 00070810 ----- 16173 .ORG DI6X2F, *IN TOP HALF, EXIT 16174 JUMP(DI100); ----- ----- 57C 000000D1 00000000 ----- 16175 .ORG DI6X2T, *AR=SCREEN 16176 *Y=OPCNT 16177 MA(SCREEN), RAM>AR, 16178 A(0), BR.0F>B, ADD, 16179 JY(DI60Y); ----- ----- 57D 0002C260 60000002 ----- 16180 .ORG DI60Y, *CASE INS >60 16181 *SMENM 16182 *OPCNT==0? 16183 *AR=POLREG, Y=VBI 16184 MA(POLREG), RAM>AR, 16185 A(%01000000), RCS>B, AND, 16186 JZ(SMENM0F,SMENM0T); ----- ----- 260 0002257E 1040080B ----- 16187 .ORG DI61, *CASE INS >61 16188 *CMENM 16189 *BR=VPPRG1, Y=MENM 16190 MA(VPPRG1), RAM>BR, 16191 AR>A, B(MENM), AND, 16192 JUMP(CMENM0); ----- ----- 261 00010C74 61080810 ----- 16193 .ORG DI62, *CASE INS >62 16194 *DMEN0 16195 *AR=MNDP0+MENM 16196 *BR=SCREEN 16197 MA(SCREEN), RAM>BR, 16198 Y(MNDP0+MENM), 16199 Y>AR, 16200 JUMP(DMN0); ----- ----- 262 00230C75 60091000 ----- 16201 .ORG DI63, *CASE INS >63 16202 *DMEN1 16203 *AR=MNDP1+MENM 16204 *BR=SCREEN 16205 MA(SCREEN), RAM>BR, 16206 Y(MNDP1+MENM), 16207 Y>AR, 16208 JUMP(DMN0); ----- ----- 263 00230C75 600A1000 ----- 16209 *ENTRY POINT FROM CMENM CODE 16210 .ORG DI64, *CASE INS >64 16211 *DTPGE 16212 *MNDP0=0, MNDP1=0, TDISP=0 16213 MA(SCREEN), 16214 AR>A, B(%11111000), AND, 16215 Y>RAM, Y>AR, 16216 JUMP(DTPGE0); ----- ----- 264 00220C76 60F80910 ----- 16217 .ORG DI65, *CASE INS >65 16218 JUMP(DI100); ----- ----- 265 000000D1 00000000 ----- 16219 .ORG DI66, *CASE INS >66 16220 *CMEN0 16221 *PR=INDEX TO STORE 6 16222 *AR=POLREG 16223 MA(POLREG), RAM>AR, 16224 Y(STOR0+6), 16225 Y>PR, 16226 JUMP(CMEN0); ----- ----- 266 00020C77 90261000 ----- 16227 .ORG DI67, *CASE INS >67 16228 *CMEN1 16229 *PR=INDEX TO STORE 7 16230 *AR=POLREG 16231 MA(POLREG), RAM>AR, 16232 Y(STOR0+7), 16233 Y>PR, 16234 JUMP(CMEN0); ----- ----- 267 00020C77 90271000 ----- 16235 */// 16236 *+++SET MENU MODE 16237 * AR=POLREG, BR=RCSTAT, LAST Y WAS VBI 16238 .ORG SMENM0T, *OLD OPCNT==0 16239 *OPCNT=1 16240 MA(RCSTAT), 16241 A(1), BR.F0>B, ADD, 16242 Y>RAM, 16243 JUMP(ST0F); ----- ----- 57F 00000001 2F010103 ----- 16244 .ORG SMENM0F, *IN VBI? 16245 *PR=INDEX TO STORE 6 16246 Y(STOR6), 16247 Y>PR, 16248 JZ(SMENM1F,SMENM1T); ----- ----- 57E 00002580 80261000 ----- 16249 *IN VBI, NEED TO DELAY 16250 .ORG SMENM1F, *EXIT TO SET WAIT 16251 JUMP(DI110); ----- ----- 580 00000572 00000000 ----- 16252 *OUT OF VBI 16253 .ORG SMENM1T, *OPCNT=0 16254 MA(RCSTAT), 16255 A(0), BR.F0>B, ADD, 16256 Y>RAM, 16257 JUMP(SMENM2); ----- ----- 581 00000C78 2F000103 ----- 16258 .ORG SMENM2, *BR=SCREEN 16259 MA(SCREEN), RAM>BR, 16260 JUMP(SMENM2A); ----- ----- C78 00010C79 60000000 ----- 16261 .ORG SMENM2A, *Y=MENM 16262 *A=SYS2 16263 MA(SYS2), RAM>AR, 16264 A(MENM), BR>B, AND, 16265 JUMP(SMENM2B); ----- ----- C79 00020C7A 09080801 ----- 16266 .ORG SMENM2B, *MENM=1 16267 *MENU MODE ALREADY SET? 16268 MA(SCREEN), 16269 A(MENM), BR>B, OR, 16270 Y>RAM, 16271 JZ(SMENM3F,SMENM3T); ----- ----- C7A 00002582 60081101 ----- 16272 *MENU MODE ALREADY SET, SKIP INIT LOOP 16273 .ORG SMENM3F, *A= OPERAND 16274 MA(STORE), RAM>AR, 16275 JUMP(SMENM10T); ----- ----- 582 00020585 77000000 ----- 16276 *MENU MODE NOT SET, INITIALISE LATCHES 16277 * A=SYS2 16278 .ORG SMENM3T, *S6T1=0 16279 MA(SYS2), 16280 AR>A, B(>FF-S6T1), AND, 16281 Y>RAM, 16282 JUMP(SMENM3A); ----- ----- 583 00000C7B 09DF0910 ----- 16283 .ORG SMENM3A, *INIT LOOP COUNT, COUNT=2 16284 MA(COUNT), 16285 Y(2), 16286 Y>RAM, 16287 JUMP(SMENM10F); ----- ----- C7B 00000584 78021100 ----- 16288 *LOOP TO PUT NULL VALUES IN LATCHES OF STORES 6 AND 7 AND CLEAR THEM 16289 * PR=INDEX TO STORE 16290 .ORG SMENM10F, *A=LATCH IN STORE 16291 PR>MA, RAM>AR, 16292 JUMP(SMENM4); ----- ----- 584 00120C7C 00000000 ----- 16293 .ORG SMENM4, *PR=INDEX TO MAG LATCH OF STORE 16294 ARHI>A, B(M0), ADD, 16295 Y>PR, 16296 JUMP(SMENM4A); ----- ----- C7C 00000C7D 80100020 ----- 16297 .ORG SMENM4A, *BR=Mx 16298 PR>MA, RAM>BR, 16299 JUMP(SMENM4B); ----- ----- C7D 00110C7E 00000000 ----- 16300 .ORG SMENM4B, *SET Mx TO NULL MAGAZINE 16301 PR>MA, 16302 A(>0F), BR>B, OR, 16303 Y>RAM, Y>IO, 16304 JUMP(SMENM4C); ----- ----- C7E 00100C7F 000F5101 ----- 16305 .ORG SMENM4C, *PR=INDEX TO LATCH LAFx 16306 ARHI>A, B(LAF0), ADD, 16307 Y>PR, 16308 JUMP(SMENM4D); ----- ----- C7F 00000C80 80400020 ----- 16309 .ORG SMENM4D, *LAFx=MPG 16310 *CAP=VBICAP=CLR=OPN=BTTL=AITL=0 16311 PR>MA, 16312 Y(MPG), 16313 Y>RAM, 16314 JUMP(SMENM5); ----- ----- C80 00100C81 00041100 ----- 16315 *SET UP I/P PARS FOR CSCNA 16316 .ORG SMENM5, *RWL=AR 16317 MA(RWL), 16318 ARHI>A, B(0), OR, 16319 Y>RAM, Y>IO, 16320 JUMP(SMENM6); ----- ----- C81 00000C82 0B005120 ----- 16321 .ORG SMENM6, *RET4=3 16322 *CALL CSCNA TO CLEAR STORE 16323 *RET4=0, RETURN TO SMENM7Y 16324 MA(RET4), 16325 Y(0), 16326 Y>RAM, 16327 JUMP(CSCNA); ----- ----- C82 00000C83 79001100 ----- 16328 .ORG SMENM7Y, *BR=COUNT, PR=INDEX TO STORE 7 16329 MA(COUNT), RAM>BR, 16330 Y(STOR7), 16331 Y>PR, 16332 JUMP(SMENM8); ----- ----- 0D0 00010C84 F8271000 ----- 16333 .ORG SMENM8, *COUNT-- 16334 MA(COUNT), 16335 A(-1), BR>B, ADD, 16336 Y>RAM, 16337 JUMP(SMENM9); ----- ----- C84 00000C85 78FF0101 ----- 16338 .ORG SMENM9, *GO BACK FOR STORE 7? 16339 *A= OPERAND 16340 MA(STORE), RAM>AR, 16341 JZ(SMENM10F,SMENM10T); ----- ----- C85 00022584 77000000 ----- 16342 *LOOP END 16343 * A=OPERAND 16344 .ORG SMENM10T, *UPDATE RVL, CFU, EXPT, EXPB 16345 *P830F2? 16346 MA(VDPOSD), 16347 AR>A, B(%00001111), AND, 16348 Y>RAM, 16349 JUMP(SMENM13); ----- ----- 585 00000C86 2C0F0910 ----- 16350 .ORG SMENM13, *BR=EXPREG 16351 *ONLY WANT P830F2, PDC AND VPS IN OPERAND COPY 16352 MA(EXPREG), RAM>BR, 16353 AR>A, B(P830F2+PDC+VPS), AND, * TCJ Feb 94 16354 Y>AR, 16355 JUMP(SMENM14); ----- ----- C86 00230C87 63E00810 ----- 16356 .ORG SMENM14, *CLEAR OLD P830F2 AND PDC 16357 MA(EXPREG), 16358 A(>FF-P830F2-PDC-VPS), BR>B, AND, * TCJ Feb 94 16359 Y>RAM, 16360 JUMP(SMENM15); ----- ----- C87 00000C88 631F0901 ----- 16361 .ORG SMENM15, *B=EXPREG 16362 MA(EXPREG), RAM>BR, 16363 JUMP(SMENM16); ----- ----- C88 00010C89 63000000 ----- 16364 .ORG SMENM16, *UPDATE P830F2 AND PDC 16365 MA(EXPREG), 16366 AR>A, BR>B, OR, 16367 Y>RAM, 16368 JUMP(DI120); ----- ----- C89 0000059C 63001111 ----- 16369 *+++CLEAR MENU MODE 16370 * AR=SCREEN, BR=VPPRG1, LAST Y WAS MENM 16371 .ORG CMENM0, *ACTUALLY IN MENM? 16372 *MENM=0 16373 MA(SCREEN), 16374 AR>A, B(>FF-MENM), AND, 16375 Y>RAM, Y>AR, 16376 JZ(CMENM2F,CMENM2T); ----- ----- C74 00222586 60F70910 ----- 16377 .ORG CMENM2T, *NO, EXIT 16378 JUMP(DI100); ----- ----- 587 000000D1 00000000 ----- 16379 .ORG CMENM2F, *SORT BACKROUND LATCHES TO RELEASE STORES 6 AND 7 16380 *SBL=1 16381 MA(VPPRG1), 16382 A(SBL), BR>B, OR, 16383 Y>RAM, 16384 JUMP(CMENM3); ----- ----- 586 00000C8A 61801101 ----- 16385 .ORG CMENM3, *BR=EXPREG 16386 MA(EXPREG), RAM>BR, 16387 JUMP(CMENM4); ----- ----- C8A 00010C8B 63000000 ----- 16388 .ORG CMENM4, *P830F2=0, VPS=0, STOP RECEIVING EXTENSION PACKETS 16389 *A MUST BE SCREEN FOR DI64 16390 MA(EXPREG), 16391 A(>FF-P830F2-VPS), BR>B, AND, * TCJ Feb 94 16392 Y>RAM, 16393 JUMP(DI64); ----- ----- C8B 00000264 635F0901 ----- 16394 *+++DISPLAY MENU PAGE 16395 * BR=SCREEN, AR=COPY OF MNDP0 OR MNDP1 AND MENM 16396 .ORG DMN0, *Y=MENM 16397 A(MENM), BR>B, AND, 16398 JUMP(DMN1); ----- ----- C75 00000C8C 00080801 ----- 16399 .ORG DMN1, *MENM? 16400 *BR=SCREEN 16401 MA(SCREEN), RAM>BR, 16402 JZ(DMN2F,DMN2T); ----- ----- C8C 0001258E 60000000 ----- 16403 .ORG DMN2T, *NOT IN MENU MODE, INVALID COMMAND 16404 JUMP(DI100); ----- ----- 58F 000000D1 00000000 ----- 16405 .ORG DMN2F, *SET MNDP0 OR MNDP1 AS APPROPRIATE (TDISP=0) 16406 MA(SCREEN), 16407 AR.0F>A, BR.F0>B, OR, 16408 Y>RAM, 16409 JUMP(DI120); ----- ----- 58E 0000059C 600011C3 ----- 16410 *+++DISPLAY TELETEXT PAGE 16411 * AR=SCREEN WITH MENDP1=MENDP0=TDISP=0 16412 .ORG DTPGE0, *SCREEN MSN=0? 16413 JZ(DTPGE1F,DTPGE1T); ----- ----- C76 00002594 00000000 ----- 16414 .ORG DTPGE1T, *NO TELETEXT DISPLAY 16415 JUMP(DI120); ----- ----- 595 0000059C 00000000 ----- 16416 .ORG DTPGE1F, *TELETEXT DISPLAY 16417 *TDISP=1 16418 MA(SCREEN), 16419 AR>A, B(TDISP), OR, 16420 Y>RAM, 16421 JUMP(DI120); ----- ----- 594 0000059C 60041110 ----- 16422 *+++CLEAR MENU PAGE 16423 * AR=POLREG, PR=INDEX TO STORE FOR THIS MENU PAGE 16424 .ORG CMEN0, *BR=STORx 16425 *Y=VBI 16426 PR>MA, RAM>BR, 16427 A(%01000000), RCS>B, AND, 16428 JUMP(CMEN1); ----- ----- C77 00110C8D 0040080B ----- 16429 .ORG CMEN1, *RWL=STORE LATCH, VBI? 16430 MA(RWL), 16431 A(0), BRHI>B, OR, 16432 Y>RAM, Y>IO, 16433 JZ(CMEN2F,CMEN2T); ----- ----- C8D 00002596 0B00510C ----- 16434 *IN VBI, NEED TO DELAY 16435 .ORG CMEN2F, *WAIT=1 16436 MA(POLREG), 16437 AR>A, B(WAIT), OR, 16438 Y>RAM, 16439 JUMP(DI100); ----- ----- 596 000000D1 10401110 ----- 16440 *OUT OF VBI 16441 .ORG CMEN2T, *CALL CSCNA 16442 *RET4=1, RETURN TO DI100 16443 MA(RET4), 16444 Y(1), 16445 Y>RAM, 16446 JUMP(CSCNA); ----- ----- 597 00000C83 79011100 ----- 16447 *///7- 16448 * BR=RCSTAT, AR=INSTRUCTION 16449 .ORG DI7X, *CASE INS HIGH NIB=>7 16450 *BR=SCREEN 16451 *Y=VBI 16452 MA(SCREEN), RAM>BR, 16453 A(%01000000), RCS>B, AND, 16454 JUMP(DI7X1); ----- ----- 207 00010C8E 6040080B ----- 16455 .ORG DI7X1, *IN VBI? 16456 *Y=INS LO NIB 16457 AR.0F>A, B(0), OR, 16458 JZ(DI7X2F,DI7X2T); ----- ----- C8E 00002598 000010C0 ----- 16459 .ORG DI7X2F, *IN VBI, DELAY IT 16460 *A=POLREG 16461 MA(POLREG), RAM>AR, 16462 JUMP(DI110); ----- ----- 598 00020572 10000000 ----- 16463 .ORG DI7X2T, *CASE INS LO NIB=? 16464 JY(DI70Y); ----- ----- 599 0000C250 00000000 ----- 16465 .ORG DI70Y, *CASE INS >70 16466 *TV 16467 *SCREEN MSN=0, TDISP=0 16468 *GO AND CLEAR UPDATE 16469 MA(SCREEN), 16470 A(>FF-TDISP), BR.0F>B, AND, 16471 Y>RAM, 16472 JUMP(TEXT10F); ----- ----- 250 0000059A 60FB0902 ----- 16473 .ORG DI71, *CASE INS >71 16474 *TEXT 16475 *SCREEN=1 16476 MA(SCREEN), 16477 A(>10), BR.0F>B, ADD, 16478 Y>RAM, 16479 JUMP(TEXT0); ----- ----- 251 00000C8F 60100102 ----- 16480 .ORG DI72, *CASE INS >72 16481 JUMP(DI100); ----- ----- 252 000000D1 00000000 ----- 16482 .ORG DI73, *CASE INS >73 16483 *MIX 16484 *SCREEN=2 16485 MA(SCREEN), 16486 A(>20), BR.0F>B, ADD, 16487 Y>RAM, 16488 JUMP(TEXT0); ----- ----- 253 00000C8F 60200102 ----- 16489 .ORG DI74, *CASE INS >74 16490 JUMP(DI100); ----- ----- 254 000000D1 00000000 ----- 16491 .ORG DI75, *CASE INS >75 16492 *BOX 16493 *SCREEN=3 16494 MA(SCREEN), 16495 A(>30), BR.0F>B, ADD, 16496 Y>RAM, 16497 JUMP(TEXT0); ----- ----- 255 00000C8F 60300102 ----- 16498 .ORG DI76, *CASE INS >76 16499 JUMP(DI100); ----- ----- 256 000000D1 00000000 ----- 16500 .ORG DI77, *CASE INS >77 16501 JUMP(DI100); ----- ----- 257 000000D1 00000000 ----- 16502 .ORG DI78, *CASE INS >78 16503 *AUTO 16504 *SET A FOR NEW SYS1 16505 *PCM=0, FIND=1, FNRM=0, FTOP=0, FFLF=0 16506 Y(FIND), 16507 Y>AR, 16508 JUMP(SPCM0); ----- ----- 258 00220C90 00081000 ----- 16509 .ORG DI79, *CASE INS >79 16510 *NORMAL 16511 *SET A FOR NEW SYS1 16512 *PCM=0, FIND=0, FNRM=1, FTOP=0, FFLF=0 16513 Y(FNRM), 16514 Y>AR, 16515 JUMP(SPCM0); ----- ----- 259 00220C90 00041000 ----- 16516 .ORG DI7A, *CASE INS >7A 16517 *FLOF 16518 *SET A FOR NEW SYS1 16519 *PCM=0, FIND=0, FNRM=0, FTOP=0, FFLF=1 16520 Y(FFLF), 16521 Y>AR, 16522 JUMP(SPCM0); ----- ----- 25A 00220C90 00011000 ----- 16523 .ORG DI7B, *CASE INS >7B 16524 *TOP 16525 *SET A FOR NEW SYS1 16526 *PCM=0, FIND=1, FNRM=0, FTOP=1, FFLF=0 16527 Y(FIND+FTOP), 16528 Y>AR, 16529 JUMP(SPCM0); ----- ----- 25B 00220C90 000A1000 ----- 16530 .ORG DI7C, *CASE INS >7C 16531 *FAVP 16532 *A=SYS1 16533 MA(SYS1), RAM>AR, 16534 JUMP(FVP0); ----- ----- 25C 00020C91 08000000 ----- 16535 .ORG DI7D, *CASE INS >7D 16536 JUMP(DI100); ----- ----- 25D 000000D1 00000000 ----- 16537 .ORG DI7E, *CASE INS >7E 16538 JUMP(DI100); ----- ----- 25E 000000D1 00000000 ----- 16539 .ORG DI7F, *CASE INS >7F 16540 JUMP(DI100); ----- ----- 25F 000000D1 00000000 ----- 16541 */// 16542 *+++TEXT, MIX OR BOX DISPLAY 16543 * 16544 .ORG TEXT0, *SCREEN MSN IS NON ZERO (TEXT, MIX OR BOX) 16545 *CHECK IF TELETEXT OR MENU DISPLAY 16546 *Y=MNDP0+MNDP1, BR=UPDATED SCREEN 16547 MA(SCREEN), RAM>BR, 16548 A(MNDP0+MNDP1), BR>B, AND, 16549 JUMP(TEXT1); ----- ----- C8F 00010C92 60030801 ----- 16550 .ORG TEXT1, *MNDP0+MNDP1? 16551 JZ(TEXT10F,TEXT10T); ----- ----- C92 0000259A 00000000 ----- 16552 .ORG TEXT10T, *TELETEXT DISPLAY, SET TDISP 16553 MA(SCREEN), 16554 A(TDISP), BR>B, OR, 16555 Y>RAM, 16556 JUMP(TEXT10F); ----- ----- 59B 0000059A 60041101 ----- 16557 *ENTER HERE TO CLEAR UPDATE 16558 .ORG TEXT10F, *BR=VDPTXT 16559 MA(VDPTXT), RAM>BR, 16560 JUMP(TEXT11); ----- ----- 59A 00010C93 2B000000 ----- 16561 .ORG TEXT11, *UPD=C8YET=0 16562 MA(VDPTXT), 16563 A(>FF-UPD-C8YET), BR>B, AND, 16564 Y>RAM, 16565 JUMP(TEXT20); ----- ----- C93 00000C94 2BCF0901 ----- 16566 .ORG TEXT20, *A=EXPREG 16567 MA(EXPREG), RAM>AR, 16568 JUMP(TEXT21); ----- ----- C94 00020C95 63000000 ----- 16569 .ORG TEXT21, *CLEAR USER STATUS MODE 16570 *USM=0 16571 MA(EXPREG), 16572 AR>A, B(>FF-USM), AND, 16573 Y>AR, 16574 JUMP(TEXT22); ----- ----- C95 00220C96 63FD0810 ----- 16575 .ORG TEXT22, *CPRF=CGAP=1 16576 MA(EXPREG), 16577 AR>A, B(CPRF+CGAP), OR, 16578 Y>RAM, 16579 JUMP(TEXT30); ----- ----- C96 00000C97 630C1110 ----- 16580 *GOING INTO TV WITH INCOMPLETE MAIN PAGE? 16581 .ORG TEXT30, *B=LSTINS 16582 MA(LSTINS), RAM>BR, 16583 JUMP(TEXT31); ----- ----- C97 00010C98 2E000000 ----- 16584 .ORG TEXT31, *Y=LSTINS LO NIB 16585 *A=PEN 16586 MA(PEN), RAM>AR, 16587 A(0), BR.0F>B, OR, 16588 JUMP(TEXT32); ----- ----- C98 00020C99 1B001002 ----- 16589 .ORG TEXT32, *GOING TO TV? IF NOT, EXIT 16590 *Y=PEN-4 16591 ARHI>A, B(-4), ADD, 16592 JZ(DI120,TEXT33T); ----- ----- C99 0000259C 00FC0020 ----- 16593 .ORG TEXT33T, *SUB-PAGE MODE? 16594 *Y=PEN 16595 *A=VDPTXT 16596 MA(VDPTXT), RAM>AR, 16597 ARHI>A, B(0), OR, 16598 JN(TEXT34F,TEXT34T); ----- ----- 59D 0002459E 2B001020 ----- 16599 .ORG TEXT34F, *SUB-PAGE MODE, EXIT 16600 *CLEAR URVL 16601 MA(VDPTXT), 16602 AR>A, B(>FF-URVL), AND, 16603 Y>RAM, 16604 JUMP(DI120); ----- ----- 59E 0000059C 2BF70910 ----- 16605 .ORG TEXT34T, *MAIN PAGE MODE 16606 *INCOMPLETE MAIN PAGE? 16607 *CLEAR URVL 16608 MA(VDPTXT), 16609 AR>A, B(>FF-URVL), AND, 16610 Y>RAM, 16611 JZ(TEXT35F,TEXT35T); ----- ----- 59F 000025A8 2BF70910 ----- 16612 .ORG TEXT35T, *COMPLETE MAIN PAGE, NOTHING TO DO 16613 JUMP(DI120); ----- ----- 5A9 0000059C 00000000 ----- 16614 .ORG TEXT35F, *INCOMPLETE MAIN PAGE, CALL PPDP0 16615 *P=0, RETURN TO PPAGE2Y->CMPE0 16616 Y(0), 16617 Y>PR, 16618 JUMP(PPDP0); ----- ----- 5A8 000004BE 80001000 ----- 16619 *+++SET PAGE CAPTURE MODE 16620 * A=UPDATED SYS1 16621 .ORG SPCM0, *UPDATE SYS1 16622 MA(SYS1), 16623 AR>A, B(0), OR, 16624 Y>RAM, 16625 JUMP(SPCM0A); ----- ----- C90 00000C9A 08001110 ----- 16626 *ENTRY POINT FROM FAVP 16627 .ORG SPCM0A, *CALL INPMC0F 16628 *RETURN=1, RETURN TO SPCM1 16629 MA(RETURN), 16630 Y(1), 16631 Y>RAM, 16632 JUMP(INPCM0); ----- ----- C9A 00000901 7C011100 ----- 16633 .ORG SPCM1, *B=PEN 16634 MA(PEN), RAM>BR, 16635 JUMP(SPCM2); ----- ----- 621 00010C9B 1B000000 ----- 16636 .ORG SPCM2, *Y=PEN-4 16637 A(-4), BRHI>B, ADD, 16638 JUMP(SPCM3); ----- ----- C9B 00000C9C 00FC000C ----- 16639 .ORG SPCM3, *SUB-PAGE MODE? 16640 *Y=PEN 16641 A(0), BRHI>B, OR, 16642 JN(SPCM4F,SPCM4T); ----- ----- C9C 000045AA 0000100C ----- 16643 .ORG SPCM4F, *SUB-PAGE MODE, GO TO CMPE0 TO CLEAR IT 16644 JUMP(CMPE0); ----- ----- 5AA 000004DF 00000000 ----- 16645 .ORG SPCM4T, *COMPLETE MAIN PAGE ENTERED? 16646 JZ(SPCM5F,SPCM5T); ----- ----- 5AB 000025AC 00000000 ----- 16647 .ORG SPCM5T, *YES 16648 JUMP(DI100); ----- ----- 5AD 000000D1 00000000 ----- 16649 .ORG SPCM5F, *NO, GO TO LAST PAGE 16650 *CALL PPDP0 16651 *P=3, RETURN TO SPCM6 16652 *A=DPU, B=DPU 16653 MA(DPU), RAM>AR, RAM>BR, 16654 Y(3), 16655 Y>PR, 16656 JUMP(PPDP0); ----- ----- 5AC 000304BE EA031000 ----- 16657 .ORG SPCM6, 16658 JUMP(CMPE0); ----- ----- 49B 000004DF 00000000 ----- 16659 *+++SET FAVOURITE PAGE MODE 16660 * A=SYS1 16661 .ORG FVP0, *UPDATE SYS1 16662 *PCM=3 16663 MA(SYS1), 16664 AR>A, B(>30), OR, 16665 Y>RAM, 16666 JUMP(SPCM0A); ----- ----- C91 00000C9A 08301110 ----- 16667 */// 16668 *+++STOD: START TIME OUT DISPLAY 16669 *ENTRY POINT FROM KEY1DT, DIG6T, DIG7T 16670 * A=DHREG 16671 .ORG STOD0, *TOD=1 16672 MA(DHREG), 16673 AR>A, B(TOD), OR, 16674 Y>AR, 16675 JUMP(STOD1); ----- ----- BDD 00220C9D 32081010 ----- 16676 .ORG STOD1, *POOCD=0 16677 MA(DHREG), 16678 AR>A, B(>FF-POOCD), AND, 16679 Y>RAM, 16680 JUMP(STOD2); ----- ----- C9D 00000C9E 32DF0910 ----- 16681 .ORG STOD2, *INIT 5S TIME OUT 16682 MA(TIMOUT), 16683 Y(>FF), 16684 Y>RAM, 16685 JUMP(DI120); ----- ----- C9E 0000059C 3BFF1100 ----- 16686 *///COMMON EXIT TO CLEAR OPCNT 16687 .ORG DI100, *AR=RCSTAT 16688 MA(RCSTAT), RAM>AR, 16689 JUMP(DI101); ----- ----- 0D1 00020C9F 2F000000 ----- 16690 .ORG DI101, *OPCNT=0 16691 MA(RCSTAT), 16692 AR.F0>A, B(0), OR, 16693 Y>RAM, 16694 JUMP(ST0F); ----- ----- C9F 00000001 2F0011D0 ----- 16695 *///COMMON EXIT TO SET WAIT 16696 * A=POLREG 16697 .ORG DI110, *WAIT=1, EXIT WITHOUT CLEARING OPCNT 16698 MA(POLREG), 16699 AR>A, B(WAIT), OR, 16700 Y>RAM, 16701 JUMP(ST0F); ----- ----- 572 00000001 10401110 ----- 16702 *///COMMON EXIT TO CLEAR OPCNT AND CALL SVDP ROUTINE IN NEXT VPP 16703 .ORG DI120, *AR=VPPRG1 16704 MA(VPPRG1), RAM>AR, 16705 JUMP(DI121); ----- ----- 59C 00020CA0 61000000 ----- 16706 .ORG DI121, *CSVDP=1 16707 MA(VPPRG1), 16708 AR>A, B(CSVDP), OR, 16709 Y>RAM, 16710 JUMP(DI100); ----- ----- CA0 000000D1 61101110 ----- 16711 ************************************************************************ 16712 * section 5: sub-routines * 16713 ************************************************************************ 16714 * 16715 ***SVDP: SET VDP 16716 * 16717 * This routine updates the VDP registers according to VDPTXT or VDPOSD 16718 * according to whether the display page is teletext or a menu page. 16719 * This should be the main place where VDP registers are updated. COUNT 16720 * is used a temp store for VDP---. 16721 * 16722 .ORG SVDP0, *AR=SCREEN 16723 MA(SCREEN), RAM>AR, 16724 JUMP(UDPL0); ----- ----- 33C 00020CA1 60000000 ----- 16725 *UPDATE DISPLAY LATCH 16726 * AR=SCREEN 16727 .ORG UDPL0, *Y=SCREEN MSN (PIC, MIX, BOX, TEXT) 16728 AR.F0>A, B(0), OR, 16729 JUMP(UDPL1); ----- ----- CA1 00000CA2 000010D0 ----- 16730 .ORG UDPL1, *Y=MNDP1+MNDP0 16731 *TV MODE? 16732 *BR=STOR0 16733 MA(STOR0), RAM>BR, 16734 AR>A, B(MNDP1+MNDP0), AND, 16735 JZ(UDPL2F,UDPL2T); ----- ----- CA2 000125AE 20030810 ----- 16736 .ORG UDPL2T, *TV MODE, SET DPL=STORE 0 TO ALLOW CLOCK DISPLAY 16737 *AR=VDP0 16738 MA(VDP0), RAM>AR, 16739 JUMP(UDPL3T); ----- ----- 5AF 000205B9 00000000 ----- 16740 .ORG UDPL2F, *DISPLAY A MENU PAGE? 16741 *Y=MNDP0 16742 *AR=VDP0 16743 MA(VDP0), RAM>AR, 16744 AR>A, B(MNDP0), AND, 16745 JZ(UDPL3F,UDPL3T); ----- ----- 5AE 000225B8 00010810 ----- 16746 .ORG UDPL3T, *DISPLAY TELETEXT PAGE 16747 *SET DPL TO LATCH IN STORE 0 16748 *AR=VDP0 16749 MA(VDP0), 16750 AR.F0>A, BRHI>B, OR, 16751 Y>RAM, Y>IO, Y>AR, 16752 JUMP(SVDP1); ----- ----- 5B9 00220CA3 000051DC ----- 16753 .ORG UDPL3F, *DISPLAY WHICH MENU PAGE? 16754 *BR=STOR7 (LATCH FOR MENU PAGE 1) 16755 MA(STOR7), RAM>BR, 16756 JZ(UDPL4F,UDPL4T); ----- ----- 5B8 000125BA 27000000 ----- 16757 .ORG UDPL4F, *DISPLAY MENU PAGE 0 16758 *BR=STOR6 (LATCH FOR MENU PAGE 0) 16759 MA(STOR6), RAM>BR, 16760 JUMP(UDPL4T); ----- ----- 5BA 000105BB 26000000 ----- 16761 .ORG UDPL4T, *SET DPL TO MENU PAGE LATCH 16762 *AR=VDP0 16763 MA(VDP0), 16764 AR.F0>A, BRHI>B, OR, 16765 Y>RAM, Y>IO, Y>AR, 16766 JUMP(SVDP1); ----- ----- 5BB 00220CA3 000051DC ----- 16767 * AR=VDP0 16768 .ORG SVDP1, *RWL=DPL 16769 MA(RWL), 16770 AR.0F>A, B(0), OR, 16771 Y>RAM, Y>IO, 16772 JUMP(SVDP1A); ----- ----- CA3 00000CA4 0B0051C0 ----- 16773 .ORG SVDP1A, *AR=VDP1 16774 MA(VDP1), RAM>AR, 16775 JUMP(SVDP1B); ----- ----- CA4 00020CA5 01000000 ----- 16776 .ORG SVDP1B, *CLEAR BR24, EXPT, EXPB, BOX, MIX AND TEXT IN RAM COPY 16777 MA(VDP1), 16778 AR>A, B(>FF-BR24-EXPT-EXPB-BOX-MIX-TEXT), AND, 16779 Y>RAM, 16780 JUMP(SVDP1C); ----- ----- CA5 00000CA6 01480910 ----- 16781 .ORG SVDP1C, *BR=SCREEN 16782 MA(SCREEN), RAM>BR, 16783 JUMP(SVDP2); ----- ----- CA6 00010CA7 60000000 ----- 16784 .ORG SVDP2, *AR=VDP4 16785 *Y=SCREEN MSN 16786 MA(VDP4), RAM>AR, 16787 A(0), BR.F0>B, OR, 16788 JUMP(SVDP2A); ----- ----- CA7 00020CA8 04001003 ----- 16789 .ORG SVDP2A, *CLOCK=0 16790 *IN TV MODE? 16791 MA(VDP4), 16792 AR>A, B(>FF-CLOCK), AND, 16793 Y>RAM, Y>IO, 16794 JZ(SVDP3F,PIC0T); ----- ----- CA8 000025BC 047F4910 ----- 16795 *TV MODE 16796 .ORG PIC0T, *BR=VDPTXT 16797 MA(VDPTXT), RAM>BR, 16798 JUMP(PIC10); ----- ----- 5BD 00010CA9 2B000000 ----- 16799 .ORG PIC10, *Y=UCLK 16800 *AR=VDP0 16801 MA(VDP0), RAM>AR, 16802 A(UCLK), BR>B, AND, 16803 JUMP(PIC11); ----- ----- CA9 00020CAA 00800801 ----- 16804 *WORK OUT VDP0 IN A 16805 .ORG PIC11, *UCLK? 16806 *R24ON=R1T23=R0ON=0 16807 AR>A, B(>FF-R24ON-R1T23-R0ON), AND, 16808 Y>AR, 16809 JZ(PIC12F,PIC12T); ----- ----- CAA 002225BE 008F0810 ----- 16810 *IN CLOCK MODE 16811 .ORG PIC12F, *R0ON=1, B=VDP4 16812 MA(VDP4), RAM>BR, 16813 AR>A, B(R0ON), OR, 16814 Y>AR, 16815 JUMP(PIC13); ----- ----- 5BE 00230CAB 04101010 ----- 16816 .ORG PIC13, *CLOCK=1 16817 MA(VDP4), 16818 A(CLOCK), BR>B, OR, 16819 Y>RAM, Y>IO, 16820 JUMP(PIC13A); ----- ----- CAB 00000CAC 04805101 ----- 16821 .ORG PIC13A, *B=VDP1 16822 MA(VDP1), RAM>BR, 16823 JUMP(PIC14); ----- ----- CAC 00010CAD 01000000 ----- 16824 .ORG PIC14, *SET BOX MODE 16825 MA(VDP1), 16826 A(TEXT+BOX), BR>B, OR, 16827 Y>RAM, Y>IO, 16828 JUMP(PIC12T); ----- ----- CAD 000005BF 01055101 ----- 16829 * 16830 .ORG PIC12T, *B=EXPREG 16831 MA(EXPREG), RAM>BR, 16832 JUMP(PIC15); ----- ----- 5BF 00010CAE 63000000 ----- 16833 .ORG PIC15, *Y=USM 16834 A(USM), BR>B, AND, 16835 JUMP(PIC16); ----- ----- CAE 00000CAF 00020801 ----- 16836 .ORG PIC16, *USER STATUS MODE? 16837 *B=VDP1 16838 MA(VDP1), RAM>BR, 16839 JZ(PIC17F,PIC17T); ----- ----- CAF 000125C8 01000000 ----- 16840 .ORG PIC17T, *UPDATE VDP1 16841 MA(VDP1), 16842 A(0), BR>B, OR, 16843 Y>RAM, Y>IO, 16844 JUMP(PIC19); ----- ----- 5C9 00000CB0 01005101 ----- 16845 *USER STATUS MODE 16846 .ORG PIC17F, *DISPLAY STATUS IN A BOX 16847 *SET BOX MODE 16848 MA(VDP1), 16849 A(TEXT+BOX), BR>B, OR, 16850 Y>RAM, Y>IO, 16851 JUMP(PIC18); ----- ----- 5C8 00000CB1 01055101 ----- 16852 .ORG PIC18, *ENABLE ROW 24 16853 AR>A, B(R24ON), OR, 16854 Y>AR, 16855 JUMP(PIC19); ----- ----- CB1 00220CB0 00401010 ----- 16856 * 16857 .ORG PIC19, *UPDATE VDP0 16858 MA(VDP0), 16859 AR>A, B(0), OR, 16860 Y>RAM, Y>IO, 16861 JUMP(SVDP200); ----- ----- CB0 00000CB2 00005110 ----- 16862 *TEXT, BOX OR MIX MODE 16863 .ORG SVDP3F, *BR=SCREEN, PR=SPM INDEX 16864 MA(SCREEN), RAM>BR, 16865 Y(-14), 16866 Y>PR, 16867 JUMP(SVDP4); ----- ----- 5BC 00010CB3 E0F21000 ----- 16868 .ORG SVDP4, *Y=MNDP0+MNDP1 16869 *TPD=SPM 16870 RVDP, 16871 A(MNDP0+MNDP1), BR>B, AND, 16872 JUMP(SVDP5); ----- ----- CB3 00000CB4 00038801 ----- 16873 .ORG SVDP5, *MENU DISPLAY PAGE? 16874 JZ(SVDP6F,SVDP6T); ----- ----- CB4 000025CA 00000000 ----- 16875 *MENU PAGE LATCH, SKIP UPDATE PROCESSING 16876 .ORG SVDP6F, *OSD LATCH, AR=VDPOSD 16877 MA(VDPOSD), RAM>AR, 16878 JUMP(SVDP6A); ----- ----- 5CA 00020CB5 2C000000 ----- 16879 .ORG SVDP6A, *COUNT=AR 16880 MA(COUNT), 16881 AR>A, B(0), OR, 16882 Y>RAM, 16883 JUMP(SVDP6B); ----- ----- CB5 00000CB6 78001110 ----- 16884 .ORG SVDP6B, *B=VDP1 16885 *A=NEW EXPT AND EXPB (SHIFT UP UEXT+UEXB) 16886 MA(VDP1), RAM>BR, 16887 AR<<4>A, B(EXPT+EXPB), AND, 16888 Y>AR, 16889 JUMP(SVDP6C); ----- ----- CB6 00230CB7 01300830 ----- 16890 .ORG SVDP6C, *OR UEXT+UEXB INTO VDP1 16891 *UPDATE R24ON, R1T23, R0ON LATER 16892 MA(VDP1), 16893 AR>A, BR>B, OR, 16894 Y>RAM, *Y>IO, TCJ Jan 93 16895 JUMP(SVDP6D); ----- ----- CB7 00000CB8 01001111 ----- 16896 .ORG SVDP6D, *BR=SCREEN 16897 MA(SCREEN), RAM>BR, 16898 JUMP(SVDP6E); ----- ----- CB8 00010CB9 60000000 ----- 16899 .ORG SVDP6E, *Y=SCREEN 16900 *AR=VDP1 16901 MA(VDP1), RAM>AR, 16902 A(3), BRHI>B, AND, 16903 JUMP(SVDP6G); ----- ----- CB9 00020CBA 0103080C ----- 16904 .ORG SVDP6G, *Y=0 16905 *BR=COUNT 16906 MA(COUNT), RAM>BR, 16907 Y(0), 16908 JY(SVDP20Y); ----- ----- CBA 0001C090 78001000 ----- 16909 *TELETEXT LATCH, DO UPDATE PROCESSING 16910 .ORG SVDP6T, *AR=VDPTXT 16911 MA(VDPTXT), RAM>AR, 16912 JUMP(SVDP7); ----- ----- 5CB 00020CBB 2B000000 ----- 16913 .ORG SVDP7, *COUNT=AR 16914 MA(COUNT), 16915 AR>A, B(0), OR, 16916 Y>RAM, 16917 JUMP(SVDP7A); ----- ----- CBB 00000CBC 78001110 ----- 16918 .ORG SVDP7A, *B=VDP1 16919 *A=NEW EXPT AND EXPB (SHIFT UP UEXT+UEXB) 16920 MA(VDP1), RAM>BR, 16921 AR<<4>A, B(EXPT+EXPB), AND, 16922 Y>AR, 16923 JUMP(SVDP8); ----- ----- CBC 00230CBD 01300830 ----- 16924 .ORG SVDP8, *OR UEXT+UEXB INTO VDP1 16925 *UPDATE R24ON, R1T23, R0ON LATER 16926 MA(VDP1), 16927 AR>A, BR>B, OR, 16928 Y>RAM, *Y>IO, TCJ Jan 93 16929 JUMP(SVDP8A); ----- ----- CBD 00000CBE 01001111 ----- 16930 .ORG SVDP8A, *BR=VDPTXT 16931 MA(VDPTXT), RAM>BR, 16932 JUMP(SVDP9); ----- ----- CBE 00010CBF 2B000000 ----- 16933 .ORG SVDP9, *Y=UPD+C8YET>>4 16934 *AR=SCREEN 16935 MA(SCREEN), RAM>AR, 16936 A(3), BRHI>B, AND, 16937 JUMP(SVDP9A); ----- ----- CBF 00020CC0 6003080C ----- 16938 .ORG SVDP9A, *CASE UPD+C8YET=? 16939 *Y=SCREEN 16940 *AR=VDP1 16941 MA(VDP1), RAM>AR, 16942 ARHI>A, B(3), AND, 16943 JY(SVDP10Y); ----- ----- CC0 0002C080 01030820 ----- 16944 *ENTRY POINT AFTER CLEARING UPDATE IF PAGE IS SUBT OR NWSF 16945 .ORG SVDP10Y, *CASE NO UPD OR C8YET 16946 *BR=SCREEN 16947 MA(SCREEN), RAM>BR, 16948 JUMP(SVDP14); ----- ----- 080 00010CC1 60000000 ----- 16949 .ORG SVDP11, *CASE C8YET 16950 *BR=SCREEN 16951 MA(SCREEN), RAM>BR, 16952 JUMP(SVDP14); ----- ----- 081 00010CC1 60000000 ----- 16953 .ORG SVDP12, *CASE UPD 16954 *UPDATE MODE BUT PAGE NOT UPDATED 16955 *A=VDP0 16956 MA(VDP0), RAM>AR, 16957 JUMP(SVDP12A); ----- ----- 082 00020CC2 00000000 ----- 16958 .ORG SVDP12A, *R0ON=1, R1T23=0, R24ON=0 16959 MA(VDP0), 16960 AR.0F>A, B(R0ON), OR, 16961 Y>RAM, Y>IO, 16962 JUMP(SVDP12B); ----- ----- CC2 00000CC3 001051C0 ----- 16963 .ORG SVDP12B, *A=DHREG 16964 MA(DHREG), RAM>AR, 16965 JUMP(SVDP13JT); ----- ----- CC3 000205CF 32000000 ----- 16966 * 16967 .ORG SVDP13, *CASE UPD AND C8YET 16968 *Y=NWSF+SUBT 16969 TPD>A, B(NWSF+SUBT), AND, 16970 JUMP(SVDP13A); ----- ----- 083 00000CC4 00C00890 ----- 16971 .ORG SVDP13A, *NWSF OR SUBT? 16972 *BR=VDPTXT 16973 MA(VDPTXT), RAM>BR, 16974 JZ(SVDP13BF,SVDP13BT); ----- ----- CC4 000125CC 2B000000 ----- 16975 *NWSF OR SUBT, DISPLAY PAGE STRAIGHT AWAY 16976 .ORG SVDP13BF, *UPD=0 16977 MA(VDPTXT), 16978 A(>FF-UPD), BR>B, AND, 16979 Y>RAM, 16980 JUMP(SVDP10Y); ----- ----- 5CC 00000080 2BDF0901 ----- 16981 *DISPLAY UPDATED PAGE NUMBER 16982 *FIRST SET R1T23 FOR NOKIA ALARM CLOCK 16983 .ORG SVDP13BT, *A=VDP0 16984 MA(VDP0), RAM>AR, 16985 JUMP(SVDP13BA); ----- ----- 5CD 00020CC5 00000000 ----- 16986 .ORG SVDP13BA, *R0ON=1, R1T23=1, R24ON=0 16987 MA(VDP0), 16988 AR.0F>A, B(R0ON+R1T23), OR, 16989 Y>RAM, Y>IO, 16990 JUMP(SVDP13BB); ----- ----- CC5 00000CC6 003051C0 ----- 16991 * 16992 .ORG SVDP13BB, *B=PEN 16993 MA(PEN), RAM>BR, 16994 JUMP(SVDP13G); ----- ----- CC6 00010CC7 1B000000 ----- 16995 .ORG SVDP13G, *A=DHREG, Y=PEN-4 16996 MA(DHREG), RAM>AR, 16997 A(-4), BRHI>B, ADD, 16998 JUMP(SVDP13H); ----- ----- CC7 00020CC8 32FC000C ----- 16999 .ORG SVDP13H, *SUB-PAGE MODE? 17000 *A=ICP+NRH+TOD 17001 AR>A, B(ICP+NRH+TOD), AND, 17002 Y>AR, 17003 JN(SVDP13JF,SVDP13JT); ----- ----- CC8 002245CE 00580810 ----- 17004 *SUB-PAGE MODE 17005 .ORG SVDP13JF, *SUB-PAGE MODE 17006 *Y=ICP+!NRH+TOD 17007 AR>A, B(NRH), XOR, 17008 JUMP(SVDP13M); ----- ----- 5CE 00000CC9 00101810 ----- 17009 *NOT SUB-PAGE MODE, DISPLAY ROW 24 IF TOD SET 17010 *ENTRY POINT FROM SVDP12 17011 .ORG SVDP13JT, *Y=TOD 17012 AR>A, B(TOD), AND, 17013 JUMP(SVDP13M); ----- ----- 5CF 00000CC9 00080810 ----- 17014 *UPDATE VDP0 17015 .ORG SVDP13M, *DISPLAY ROW 24? 17016 *A=VDP0 17017 MA(VDP0), RAM>AR, 17018 JZ(SVDP13PF,SVDP13PT); ----- ----- CC9 000225D0 00000000 ----- 17019 .ORG SVDP13PF, *ENABLE ROW24 17020 *R24ON=1 17021 MA(VDP0), 17022 AR>A, B(R24ON), OR, 17023 Y>RAM, Y>IO, 17024 JUMP(SVDP13PT); ----- ----- 5D0 000005D1 00405110 ----- 17025 * 17026 .ORG SVDP13PT, *A=VDP1 17027 MA(VDP1), RAM>AR, 17028 JUMP(SVDP13R); ----- ----- 5D1 00020CCA 01000000 ----- 17029 .ORG SVDP13R, *SET BOX MODE 17030 *GO AND UPDATE VDP2 AND VDP3 17031 MA(VDP1), 17032 AR>A, B(TEXT+BOX), OR, 17033 Y>RAM, Y>IO, 17034 JUMP(SVDP50T); ----- ----- CCA 000005F7 01055110 ----- 17035 * 17036 .ORG SVDP14, *Y=SCREEN 17037 *AR=VDP1 17038 MA(VDP1), RAM>AR, 17039 A(3), BRHI>B, AND, 17040 JUMP(SVDP18); ----- ----- CC1 00020CCB 0103080C ----- 17041 .ORG SVDP18, *Y=SUBT+NWSF 17042 *BR=COUNT 17043 MA(COUNT), RAM>BR, 17044 TPD>A, B(SUBT+NWSF), AND, 17045 JY(SVDP20Y); ----- ----- CCB 0001C090 78C00890 ----- 17046 *MENU AND TELETEXT ROUTINES JOIN UP HERE 17047 * COUNT= VDPTXT OR VDPOSD 17048 .ORG SVDP20Y, *PICTURE, ERROR ###1 17049 *BASE FOR CASE ONLY! DO THE SAME AS TEXT! 17050 *NOT MENU DISPLAY PAGE AND (NWSF+SUBT)? 17051 *AR=TEXT, BR=VDP1 17052 *VDP1 HAS TEXT, MIX, BOX MASKED 17053 MA(VDP1), RAM>BR, 17054 A(TEXT), B(TEXT), OR, 17055 Y>AR, 17056 JZ(SVDP22AF,SVDP22AT); ----- ----- 090 002325D2 01011000 ----- 17057 .ORG SVDP21, *CASE SCREEN=1, TEXT 17058 *NOT MENU DISPLAY PAGE AND (NWSF+SUBT)? 17059 *AR=TEXT, BR=VDP1 17060 *VDP1 HAS TEXT, MIX, BOX MASKED 17061 MA(VDP1), RAM>BR, 17062 A(TEXT), B(TEXT), OR, 17063 Y>AR, 17064 JZ(SVDP22AF,SVDP22AT); ----- ----- 091 002325D2 01011000 ----- 17065 .ORG SVDP22, *CASE SCREEN=2, MIX 17066 *NOT MENU DISPLAY PAGE AND (NWSF+SUBT)? 17067 *AR=TEXT+MIX, BR=VDP1 17068 *VDP1 HAS TEXT, MIX, BOX MASKED 17069 MA(VDP1), RAM>BR, 17070 A(TEXT+MIX), B(TEXT+MIX), OR, 17071 Y>AR, 17072 JZ(SVDP22AF,SVDP22AT); ----- ----- 092 002325D2 01031000 ----- 17073 .ORG SVDP22AF, *NOT MENU PAGE AND SUBT OR NWSF 17074 *SET BOX MODE 17075 MA(VDP1), 17076 A(TEXT+BOX), BR>B, OR, 17077 Y>RAM, Y>IO, 17078 JUMP(SVDP24); ----- ----- 5D2 00000CCC 01055101 ----- 17079 .ORG SVDP22AT, *SET TEXT OR MIX 17080 MA(VDP1), 17081 AR>A, BR>B, OR, 17082 Y>RAM, Y>IO, 17083 JUMP(SVDP24); ----- ----- 5D3 00000CCC 01005111 ----- 17084 .ORG SVDP23, *SET BOX 17085 *VDP1 HAS TEXT, MIX, BOX MASKED 17086 MA(VDP1), 17087 AR>A, B(TEXT+BOX), OR, 17088 Y>RAM, Y>IO, 17089 JUMP(SVDP24); ----- ----- 093 00000CCC 01055110 ----- 17090 **COMPLETED UPDATE OF TEXT, BOX AND MIX BITS IN VDP1 17091 .ORG SVDP24, *B=COUNT 17092 MA(COUNT), RAM>BR, 17093 JUMP(SVDP25); ----- ----- CCC 00010CCD 78000000 ----- 17094 .ORG SVDP25, *Y=URVL 17095 *BR=SCREEN 17096 MA(SCREEN), RAM>BR, 17097 A(URVL), BR>B, AND, 17098 JUMP(SVDP26); ----- ----- CCD 00010CCE 60080801 ----- 17099 .ORG SVDP26, *URVL? 17100 *Y=MNDP0+MNDP1, AR=VDP1 17101 MA(VDP1), RAM>AR, 17102 A(MNDP0+MNDP1), BR>B, AND, 17103 JZ(SVDP27F,SVDP27T); ----- ----- CCE 000225D4 01030801 ----- 17104 .ORG SVDP27F, *URVL, SET RVL BIT 17105 *MENU DISPLAY PAGE? 17106 MA(VDP1), 17107 AR>A, B(RVL), OR, 17108 Y>RAM, Y>IO, 17109 JZ(SVDP28F,SVDP28T); ----- ----- 5D4 000025D6 01085110 ----- 17110 .ORG SVDP27T, *CLR RVL BIT 17111 *MENU DISPLAY PAGE? 17112 MA(VDP1), 17113 AR>A, B(>FF-RVL), AND, 17114 Y>RAM, Y>IO, 17115 JZ(SVDP28F,SVDP28T); ----- ----- 5D5 000025D6 01F74910 ----- 17116 *+++THIS LATCH IS IN OSD MODE 17117 .ORG SVDP28F, *MENU DISPLAY PAGE 17118 *Y=MNDP1 17119 *AR=VDP0 17120 MA(VDP0), RAM>AR, 17121 A(MNDP1), BR>B, AND, 17122 JUMP(SVDP30); ----- ----- 5D6 00020CCF 00020801 ----- 17123 .ORG SVDP30, *ENABLE ALL ROWS, MNDP1? 17124 MA(VDP0), 17125 AR.0F>A, B(R24ON+R1T23+R0ON), OR, 17126 Y>RAM, Y>IO, 17127 JZ(SVDP31F,SVDP31T); ----- ----- CCF 000025D8 007051C0 ----- 17128 .ORG SVDP31F, *MNDP1, DISPLAY PAGE ROW 24 IS STORED IN ROW 24 17129 *INHIBIT ROW 24 DISPLAY 17130 MA(VDP0), 17131 AR.0F>A, B(R1T23+R0ON), OR, 17132 Y>RAM, Y>IO, 17133 JUMP(SVDP31T); ----- ----- 5D8 000005D9 003051C0 ----- 17134 * 17135 .ORG SVDP31T, *AR=USRLAN 17136 MA(USRLAN), RAM>AR, 17137 JUMP(SVDP32); ----- ----- 5D9 00020CD0 2D000000 ----- 17138 .ORG SVDP32, *VDP2=USRLAN 17139 MA(VDP2), 17140 AR>A, B(0), OR, 17141 Y>RAM, 17142 * Y>IO, *<---- !TCJ! VDP2 write 17143 * JUMP(SVDP33); 17144 JUMP(SVDP200); ----- ----- CD0 00000CB2 02001110 ----- 17145 * 17146 *.ORG SVDP33, *VDP3=USRLAN 17147 * MA(VDP3), 17148 * AR>A, B(0), OR, Y>AR, 17149 * Y>IO, *<---- !TCJ! VDP3 write 17150 * JUMP(SVDP200); 17151 *+++THIS LATCH IS IN TELETEXT MODE 17152 *+++WORK OUT VDP0 IN AR, DISPLAY ROW 0 AND ROWS 1 TO 23? 17153 .ORG SVDP28T, *NOT A MENU DISPLAY PAGE 17154 *PR=-13 (POINT TO CG) 17155 A(-13), B(-13), OR, 17156 Y>PR, 17157 JUMP(SVDP40); ----- ----- 5D7 00000CD1 80F31000 ----- 17158 .ORG SVDP40, *TPD=CG 17159 RVDP, 17160 JUMP(SVDP40A); ----- ----- CD1 00000CD2 00008000 ----- 17161 .ORG SVDP40A, *Y=IHD 17162 *A=VDP0 17163 MA(VDP0), RAM>AR, 17164 TPD>A, B(%1000), AND, 17165 JUMP(SVDP41); ----- ----- CD2 00020CD3 00080890 ----- 17166 .ORG SVDP41, *Y=SPH, IHD? 17167 *BR=VDPTXT 17168 MA(VDPTXT), RAM>BR, 17169 TPD>A, B(%0001), AND, 17170 JZ(SVDP42F,SVDP42T); ----- ----- CD3 000125DA 2B010890 ----- 17171 .ORG SVDP42F, *IHD, R0ON=1, R1T23=0, R24ON=0 17172 *B=SYS2 17173 MA(SYS2), RAM>BR, 17174 AR.0F>A, B(R0ON), OR, 17175 Y>AR, 17176 JUMP(SVDP44); ----- ----- 5DA 00230CD4 091010C0 ----- 17177 .ORG SVDP42T, *NOT IHD, SPH? 17178 *Y=STOP 17179 *B=DHREG 17180 MA(DHREG), RAM>BR, 17181 A(STOP), BR>B, AND, 17182 JZ(SVDP43F,SVDP43T); ----- ----- 5DB 000125DC 32040801 ----- 17183 .ORG SVDP43T, *NO SPH, NO IHD R0ON=1, RIT23=1, R24ON=0 17184 *B=SYS2 17185 MA(SYS2), RAM>BR, 17186 AR.0F>A, B(R0ON+R1T23), OR, 17187 Y>AR, 17188 JUMP(SVDP44); ----- ----- 5DD 00230CD4 093010C0 ----- 17189 *SPH BIT SET, OK TO SUPPRESS IT? 17190 .ORG SVDP43F, *SPH 17191 *PAGE HELD? 17192 *Y=NRH 17193 A(NRH), BR>B, AND, 17194 JZ(SVDP43AF,SVDP43AT); ----- ----- 5DC 000025DE 00100801 ----- 17195 .ORG SVDP43AF, *HELD PAGE, DO NOT SUPRESS HEADER 17196 *NO SPH, NO IHD R0ON=1, RIT23=1, R24ON=0 17197 *B=SYS2 17198 MA(SYS2), RAM>BR, 17199 AR.0F>A, B(R0ON+R1T23), OR, 17200 Y>AR, 17201 JUMP(SVDP44); ----- ----- 5DE 00230CD4 093010C0 ----- 17202 .ORG SVDP43AT, *PAGE NOT HELD 17203 *ROLLING HEADER? 17204 *Y=ICP+TOD 17205 A(ICP+TOD), BR>B, AND, 17206 JZ(SVDP43BF,SVDP43BT); ----- ----- 5DF 000025E4 00480801 ----- 17207 .ORG SVDP43BT, *ROLLING HEADER, DO NOT SUPRESS HEADER 17208 *NO SPH, NO IHD R0ON=1, RIT23=1, R24ON=0 17209 *B=SYS2 17210 MA(SYS2), RAM>BR, 17211 AR.0F>A, B(R0ON+R1T23), OR, 17212 Y>AR, 17213 JUMP(SVDP44); ----- ----- 5E5 00230CD4 093010C0 ----- 17214 .ORG SVDP43BF, *PAGE NOT HELD AND HEADER NOT ROLLING 17215 *INCOMPLETE PAGE OR TOD? 17216 JZ(SVDP43CF,SVDP43CT); ----- ----- 5E4 000025E6 00000000 ----- 17217 .ORG SVDP43CF, *INCOMPLETE PAGE 17218 *NO SPH, NO IHD R0ON=1, RIT23=1, R24ON=0 17219 *B=SYS2 17220 MA(SYS2), RAM>BR, 17221 AR.0F>A, B(R0ON+R1T23), OR, 17222 Y>AR, 17223 JUMP(SVDP44); ----- ----- 5E6 00230CD4 093010C0 ----- 17224 *IHD=0, NRH=1, ICP=0, STOP=0: OK TO SUPRESS HEADER 17225 .ORG SVDP43CT, *R0ON=0, R1T23=1, R24ON=0 17226 *B=SYS2 17227 MA(SYS2), RAM>BR, 17228 AR.0F>A, B(R1T23), OR, 17229 Y>AR, 17230 JUMP(SVDP44); ----- ----- 5E7 00230CD4 092010C0 ----- 17231 *+++WORKING OUT VDP0 IN AR, DISPLAY ROW 24? 17232 * B=SYS2 17233 .ORG SVDP44, *Y=APIN 17234 *B=DHREG 17235 MA(DHREG), RAM>BR, 17236 A(APIN), BR>B, AND, 17237 JUMP(SVDP45); ----- ----- CD4 00010CD5 32010801 ----- 17238 .ORG SVDP45, *AUTO PROMPT GENERATION OFF? 17239 *Y=TOD+ICP 17240 A(TOD+ICP), BR>B, AND, 17241 JZ(SVDP45AF,SVDP45AT); ----- ----- CD5 000025EC 00480801 ----- 17242 *AUTO PROMPT OFF 17243 .ORG SVDP45AF, *APIN==1 17244 *R24ON=1 17245 MA(VDP0), 17246 AR>A, B(R24ON), OR, 17247 Y>RAM, Y>IO, 17248 JUMP(SVDP50T); ----- ----- 5EC 000005F7 00405110 ----- 17249 *AUTO PROMPT ON 17250 .ORG SVDP45AT, *TOD OR ICP? 17251 *Y=NRH 17252 *B=VPPRG2 17253 MA(VPPRG2), RAM>BR, 17254 A(NRH), BR>B, AND, 17255 JZ(SVDP46AF,SVDP46AT); ----- ----- 5ED 000125EE 62100801 ----- 17256 .ORG SVDP46AT, *NOT TOD OR ICP, ROLLING THE HEADER? 17257 *Y=SUBT 17258 A(SUBT), BR>B, AND, 17259 JZ(SVDP47F,SVDP47T); ----- ----- 5EF 000025F0 00800801 ----- 17260 .ORG SVDP46AF, *TOD OR ICP 17261 *R24ON=1 17262 MA(VDP0), 17263 AR>A, B(R24ON), OR, 17264 Y>RAM, Y>IO, 17265 JUMP(SVDP50T); ----- ----- 5EE 000005F7 00405110 ----- 17266 .ORG SVDP47T, *HEADER IS ROLLING 17267 *R24ON=1 17268 MA(VDP0), 17269 AR>A, B(R24ON), OR, 17270 Y>RAM, Y>IO, 17271 JUMP(SVDP50T); ----- ----- 5F1 000005F7 00405110 ----- 17272 .ORG SVDP47F, *SUBTITLE PAGE? 17273 *Y=NWSF, B=MREG0 17274 MA(MREG0), RAM>BR, 17275 A(NWSF), BR>B, AND, 17276 JZ(SVDP49BF,SVDP49BT); ----- ----- 5F0 000125F2 39400801 ----- 17277 .ORG SVDP49BF, *SUBT, R24ON=0 17278 *R24ON=0 17279 MA(VDP0), 17280 AR>A, B(0), OR, 17281 Y>RAM, Y>IO, 17282 JUMP(SVDP50T); ----- ----- 5F2 000005F7 00005110 ----- 17283 .ORG SVDP49BT, *NOT SUBT, NWSF? 17284 *Y=CNR24D 17285 A(CNR24D), BR>B, AND, 17286 JZ(SVDP49CF,SVDP49CT); ----- ----- 5F3 000025F4 00400801 ----- 17287 .ORG SVDP49CT, *NOT SUBT OR NWSF 17288 *R24ON=1 17289 MA(VDP0), 17290 AR>A, B(R24ON), OR, 17291 Y>RAM, Y>IO, 17292 JUMP(SVDP50T); ----- ----- 5F5 000005F7 00405110 ----- 17293 .ORG SVDP49CF, *NWSF, CNR24D? 17294 *R24ON=1 17295 MA(VDP0), 17296 AR>A, B(R24ON), OR, 17297 Y>RAM, Y>IO, 17298 JZ(SVDP49DF,SVDP50T); ----- ----- 5F4 000025F6 00405110 ----- 17299 .ORG SVDP49DF, *CNR24D AND NWSF 17300 *R24ON=0 17301 MA(VDP0), 17302 AR>A, B(0), OR, 17303 Y>RAM, Y>IO, 17304 JUMP(SVDP50T); ----- ----- 5F6 000005F7 00005110 ----- 17305 *CHECK IF R24ON, R1T23, R0ON ARE OVERIDDEN BY R24OSD=1 17306 .ORG SVDP50T, *B=SYS2 17307 MA(SYS2), RAM>BR, 17308 JUMP(SVDP51); ----- ----- 5F7 00010CD6 09000000 ----- 17309 .ORG SVDP51, *Y=R24OSD 17310 *A=VDP0 17311 MA(VDP0), RAM>AR, 17312 A(R24OSD), BR>B, AND, 17313 JUMP(SVDP52); ----- ----- CD6 00020CD7 00400801 ----- 17314 .ORG SVDP52, *R24OSD? 17315 *PR=CG POINTER 17316 *BR=USRLAN 17317 MA(USRLAN), RAM>BR, 17318 Y(-13), 17319 Y>PR, 17320 JZ(SVDP53F,SVDP53T); ----- ----- CD7 000125F8 ADF31000 ----- 17321 .ORG SVDP53F, *ROW 24 OSDS ENABLED 17322 *R24ON=1, R1T23=0, R0ON=0 17323 MA(VDP0), 17324 AR.0F>A, B(R24ON), OR, 17325 Y>RAM, Y>IO, 17326 JUMP(SVDP53T); ----- ----- 5F8 000005F9 004051C0 ----- 17327 *+++COMPLETED VDP0 UPDATE 17328 *+++VDP2 UPDATE 17329 .ORG SVDP53T, *Y=FLM 17330 RVDP, 17331 A(FLM), BR>B, AND, 17332 JUMP(SVDP54); ----- ----- 5F9 00000CD8 00808801 ----- 17333 .ORG SVDP54, *FLM? 17334 *AR=CGB 17335 TPD.F0>A, B(0), ADD, 17336 Y>AR, 17337 JZ(SVDP55F,SVDP55T); ----- ----- CD8 002225FA 000000B0 ----- 17338 .ORG SVDP55F, *FORCED LANG MODE 17339 *VDP2=USRLAN 17340 MA(VDP2), 17341 A(0), BR>B, OR, 17342 Y>RAM, 17343 * Y>IO, *<---- !TCJ! VDP2 write 17344 * JUMP(SVDP60); 17345 * 17346 JUMP(SVDP200); * TCJ April 94, 209 mods ----- ----- 5FA 00000CB2 02001101 ----- 17347 * 17348 .ORG SVDP55T, *NOT FORCED LANG MODE 17349 *UPDATE WITH CBITS FROM CGB 17350 * TCJ August 94, 211 mods 17351 * combine LG and C bits in AR 17352 ARHI>A, BR.F0>B, OR, 17353 Y>AR, 17354 JUMP(SVDP56); ----- ----- 5FB 00220CD9 00001023 ----- 17355 * 17356 .ORG SVDP56, *Update VDP2 17357 *Removing SWITCH and ILANG bits from USRLAN 17358 MA(VDP2), 17359 AR>A, B(>BE), AND, 17360 Y>RAM, 17361 JUMP(SVDP200); ----- ----- CD9 00000CB2 02BE0910 ----- 17362 * 17363 * TCJ April 94, 209 mods 17364 * Special processing for R24LAN removed 17365 * 17366 *ORG SVDP60, *B=SYS2 17367 * MA(SYS2), RAM>BR, 17368 * JUMP(SVDP60A); 17369 *ORG SVDP60A, *B=SYS1 17370 * *Y=APIN 17371 * MA(SYS1), RAM>BR, 17372 * A(APIN), BR>B, AND, 17373 * JUMP(SVDP61); 17374 *ORG SVDP61, *Y=PCM-1, AUTO PROMPTS INHIBITED? 17375 * *B=PEN 17376 * MA(PEN), RAM>BR, 17377 * A(-1), BRHI>B, ADD, 17378 * JZ(SVDP62F,SVDP62T); 17379 *AUTO PROMPTS INHIBITED 17380 *ORG SVDP62F, *APIN=1 17381 * *A=R24LAN 17382 * MA(R24LAN), RAM>AR, 17383 * JUMP(SVDP62A); 17384 *ORG SVDP62A, *VDP3=R24LAN 17385 * MA(VDP3), 17386 * AR>A, B(0), OR, Y>AR, 17387 * Y>IO, *<---- !TCJ! VDP3 write 17388 * JUMP(SVDP200); 17389 *ORG SVDP62, *Y=PEN-4 17390 * *TOP MODE? 17391 * *B=VDP2 17392 * MA(VDP2), RAM>BR, 17393 * A(-4), BRHI>B, ADD, 17394 * JZ(SVDP63F,SVDP63T); 17395 *ORG SVDP63F, *NOT TOP 17396 * *VDP3=VDP2 17397 * MA(VDP3), 17398 * A(0), BR>B, OR, Y>AR, 17399 * Y>IO, *<---- !TCJ! VDP3 write 17400 * JUMP(SVDP200); 17401 * 17402 *ORG SVDP63T, *TOP MODE 17403 * *SUB-PAGE MODE? 17404 * *A=AITLAN 17405 * MA(AITLAN), RAM>AR, 17406 * JN(SVDP64F,SVDP64T); 17407 *ORG SVDP64F, *TOP MENU NOT DISPLAYED 17408 * *VDP3=VDP2 17409 * MA(VDP3), 17410 * A(0), BR>B, OR, Y>AR, 17411 * Y>IO, *<---- !TCJ! VDP3 write 17412 * JUMP(SVDP200); 17413 *ORG SVDP64T, *TOP MENU DISPLAYED 17414 * *USE LANGUAGE FROM THE AIT TABLE 17415 * *VDP3 HI NIB= VDP2 HI NIB 17416 * *VDP3 LO NIB= AITLAN 17417 * MA(VDP3), 17418 * ARHI>A, BR.F0>B, OR, 17419 * Y>AR, 17420 * Y>IO, *<---- !TCJ! VDP3 write 17421 * JUMP(SVDP65); 17422 *ORG SVDP65, *A=VDP1 17423 * MA(VDP1), RAM>BR, 17424 * JUMP(SVDP66); 17425 *ORG SVDP66, *BR24=1 (CAN'T FIT BOX CHARS IN TOP MENU) 17426 * MA(VDP1), 17427 * A(BR24), BR>B, OR, 17428 * Y>RAM, Y>IO, 17429 * JUMP(SVDP200); 17430 * 17431 * TCJ Sep 94, 17432 * Translate Language for VDP2 17433 * 17434 .ORG SVDP200, * fetch current display language 17435 MA(VDP2), RAM>AR, 17436 JUMP(SVDP201); ----- ----- CB2 00020CDA 02000000 ----- 17437 * 17438 .ORG SVDP201, * Y = LGn 17439 ARHI>A, B(>03), AND, 17440 JUMP(SVDP202); ----- ----- CDA 00000CDB 00030820 ----- 17441 * 17442 .ORG SVDP202, * Y = Cn 17443 AR>>1>A, B(>07), AND, 17444 JY(SVDP203.0); ----- ----- CDB 0000C590 000708E0 ----- 17445 * 17446 .ORG SVDP203.0, * LG == 0, Language group %00 17447 * Leave only SWITCH and ILANG bits in AR 17448 AR>A, B(>41), AND, 17449 Y>AR, 17450 JY(SVDP204.0); ----- ----- 590 0022C5A0 00410810 ----- 17451 * 17452 .ORG SVDP204.0, * LG == 0, C == 0, ENGLISH 17453 AR>A, B(>7E), OR, 17454 MA(VDP2), Y>IO, 17455 JUMP(SVDP205); ----- ----- 5A0 00000CDC 027E5010 ----- 17456 * 17457 .ORG SVDP204.1, * LG == 0, C == 1, FRENCH 17458 AR>A, B(>50), OR, 17459 MA(VDP2), Y>IO, 17460 JUMP(SVDP205); ----- ----- 5A1 00000CDC 02505010 ----- 17461 * 17462 .ORG SVDP204.2, * LG == 0, C == 2, SWEDISH 17463 AR>A, B(>52), OR, 17464 MA(VDP2), Y>IO, 17465 JUMP(SVDP205); ----- ----- 5A2 00000CDC 02525010 ----- 17466 * 17467 .ORG SVDP204.3, * LG == 0, C == 3, CZECH / SLOVAKIAN 17468 AR>A, B(>62), OR, 17469 MA(VDP2), Y>IO, 17470 JUMP(SVDP205); ----- ----- 5A3 00000CDC 02625010 ----- 17471 * 17472 .ORG SVDP204.4, * LG == 0, C == 4, GERMAN 17473 AR>A, B(>40), OR, 17474 MA(VDP2), Y>IO, 17475 JUMP(SVDP205); ----- ----- 5A4 00000CDC 02405010 ----- 17476 * 17477 .ORG SVDP204.5, * LG == 0, C == 5, ENGLISH 17478 AR>A, B(>7E), OR, 17479 MA(VDP2), Y>IO, 17480 JUMP(SVDP205); ----- ----- 5A5 00000CDC 027E5010 ----- 17481 * 17482 .ORG SVDP204.6, * LG == 0, C == 6, ITALIAN 17483 AR>A, B(>42), OR, 17484 MA(VDP2), Y>IO, 17485 JUMP(SVDP205); ----- ----- 5A6 00000CDC 02425010 ----- 17486 * 17487 .ORG SVDP204.7, * LG == 0, C == 7, GREEK 17488 Y(>7F), * SET TWIST AND >1F LANGUAGE 17489 MA(VDP2), Y>IO, * STORE IN VDP 2 17490 JUMP(SVDP209); ----- ----- 5A7 00000CDD 027F5000 ----- 17491 * 17492 .ORG SVDP209, 17493 Y(>7E), * SET DUAL AND >1F LANGUAGE 17494 MA(VDP3), Y>IO, * STORE IN VDP 3 17495 JUMP(SVDP212); ----- ----- CDD 00000CDE 037E5000 ----- 17496 * 17497 .ORG SVDP203.1, * LG == 1, Language group %01 17498 * Leave only SWITCH and ILANG bits in AR 17499 AR>A, B(>41), AND, 17500 Y>AR, 17501 JY(SVDP206.0); ----- ----- 591 0022C5B0 00410810 ----- 17502 * 17503 .ORG SVDP206.0, * LG == 1, C == 0, ENGLISH 17504 AR>A, B(>7E), OR, 17505 MA(VDP2), Y>IO, 17506 JUMP(SVDP205); ----- ----- 5B0 00000CDC 027E5010 ----- 17507 * 17508 .ORG SVDP206.1, * LG == 1, C == 1, FRENCH 17509 AR>A, B(>50), OR, 17510 MA(VDP2), Y>IO, 17511 JUMP(SVDP205); ----- ----- 5B1 00000CDC 02505010 ----- 17512 * 17513 .ORG SVDP206.2, * LG == 1, C == 2, SWEDISH 17514 AR>A, B(>52), OR, 17515 MA(VDP2), Y>IO, 17516 JUMP(SVDP205); ----- ----- 5B2 00000CDC 02525010 ----- 17517 * 17518 .ORG SVDP206.3, * LG == 1, C == 3, CZECH / SLOVAKIAN 17519 AR>A, B(>62), OR, 17520 MA(VDP2), Y>IO, 17521 JUMP(SVDP205); ----- ----- 5B3 00000CDC 02625010 ----- 17522 * 17523 .ORG SVDP206.4, * LG == 1, C == 4, GERMAN 17524 AR>A, B(>40), OR, 17525 MA(VDP2), Y>IO, 17526 JUMP(SVDP205); ----- ----- 5B4 00000CDC 02405010 ----- 17527 * 17528 .ORG SVDP206.5, * LG == 1, C == 5, SERBO-CROAT 17529 AR>A, B(>64), OR, 17530 MA(VDP2), Y>IO, 17531 JUMP(SVDP205); ----- ----- 5B5 00000CDC 02645010 ----- 17532 * 17533 .ORG SVDP206.6, * LG == 1, C == 6, ITALIAN 17534 AR>A, B(>42), OR, 17535 MA(VDP2), Y>IO, 17536 JUMP(SVDP205); ----- ----- 5B6 00000CDC 02425010 ----- 17537 * 17538 .ORG SVDP206.7, * LG == 1, C == 7, RUMANIAN 17539 AR>A, B(>66), OR, 17540 MA(VDP2), Y>IO, 17541 JUMP(SVDP205); ----- ----- 5B7 00000CDC 02665010 ----- 17542 * 17543 .ORG SVDP203.2, * LG == 2, Language group %10 17544 * Leave only SWITCH and ILANG bits in AR 17545 AR>A, B(>41), AND, 17546 Y>AR, 17547 JY(SVDP207.0); ----- ----- 592 0022C5C0 00410810 ----- 17548 * 17549 .ORG SVDP207.0, * LG == 2, C == 0, ENGLISH 17550 AR>A, B(>7E), OR, 17551 MA(VDP2), Y>IO, 17552 JUMP(SVDP205); ----- ----- 5C0 00000CDC 027E5010 ----- 17553 * 17554 .ORG SVDP207.1, * LG == 2, C == 1, FRENCH 17555 AR>A, B(>50), OR, 17556 MA(VDP2), Y>IO, 17557 JUMP(SVDP205); ----- ----- 5C1 00000CDC 02505010 ----- 17558 * 17559 .ORG SVDP207.2, * LG == 2, C == 2, SWEDISH 17560 AR>A, B(>52), OR, 17561 MA(VDP2), Y>IO, 17562 JUMP(SVDP205); ----- ----- 5C2 00000CDC 02525010 ----- 17563 * 17564 .ORG SVDP207.3, * LG == 2, C == 3, TURKISH 17565 AR>A, B(>20), OR, 17566 MA(VDP2), Y>IO, 17567 JUMP(SVDP205); ----- ----- 5C3 00000CDC 02205010 ----- 17568 * 17569 .ORG SVDP207.4, * LG == 2, C == 4, GERMAN 17570 AR>A, B(>40), OR, 17571 MA(VDP2), Y>IO, 17572 JUMP(SVDP205); ----- ----- 5C4 00000CDC 02405010 ----- 17573 * 17574 .ORG SVDP207.5, * LG == 2, C == 5, ENGLISH 17575 AR>A, B(>7E), OR, 17576 MA(VDP2), Y>IO, 17577 JUMP(SVDP205); ----- ----- 5C5 00000CDC 027E5010 ----- 17578 * 17579 .ORG SVDP207.6, * LG == 2, C == 6, ITALIAN 17580 AR>A, B(>42), OR, 17581 MA(VDP2), Y>IO, 17582 JUMP(SVDP205); ----- ----- 5C6 00000CDC 02425010 ----- 17583 * 17584 .ORG SVDP207.7, * LG == 2, C == 7, GREEK 17585 Y(>7F), * SET TWIST AND >1F LANGUAGE 17586 MA(VDP2), Y>IO, * STORE IN VDP 2 17587 JUMP(SVDP209); ----- ----- 5C7 00000CDD 027F5000 ----- 17588 * 17589 * 17590 .ORG SVDP203.3, * LG == 3, Language group %11 17591 * Leave only SWITCH and ILANG bits in AR 17592 AR>A, B(>41), AND, 17593 Y>AR, 17594 JY(SVDP204.0); ----- ----- 593 0022C5A0 00410810 ----- 17595 * 17596 *.ORG SVDP203.3, * LG == 3, Language group %11 17597 * * Leave only SWITCH and ILANG bits in AR 17598 * JUMP(SVDP203.0); 17599 ** 17600 *.ORG SVDP203.3, * LG == 3, Language group %11 17601 * * Leave only SWITCH and ILANG bits in AR 17602 * AR>A, B(>41), AND, 17603 * Y>AR, 17604 * JY(SVDP208.0); 17605 ** 17606 *.ORG SVDP208.0, * LG == 3, C == 0, ENGLISH 17607 * AR>A, B(>7E), OR, 17608 * MA(VDP2), Y>IO, 17609 * JUMP(SVDP209); 17610 ** 17611 *.ORG SVDP208.1, * LG == 3, C == 1, RUSSIAN 17612 * Y(>7F), * SET TWIST AND >1F LANGUAGE 17613 * MA(VDP2), Y>IO, * STORE IN VDP 2 17614 * JUMP(SVDP209); 17615 ** 17616 *.ORG SVDP209, 17617 * Y(>7E), * SET DUAL AND >1F LANGUAGE 17618 * MA(VDP3), Y>IO, * STORE IN VDP 3 17619 * JUMP(SVDP212); 17620 ** 17621 *.ORG SVDP208.2, * LG == 3, C == 2, ESTONIAN 17622 * AR>A, B(>62), OR, 17623 * MA(VDP2), Y>IO, 17624 * JUMP(SVDP209); 17625 ** 17626 *.ORG SVDP208.3, * LG == 3, C == 3, CZECH / SLOVAKIAN 17627 * AR>A, B(>52), OR, 17628 * MA(VDP2), Y>IO, 17629 * JUMP(SVDP209); 17630 ** 17631 *.ORG SVDP208.4, * LG == 3, C == 4, GERMAN 17632 * AR>A, B(>40), OR, 17633 * MA(VDP2), Y>IO, 17634 * JUMP(SVDP209); 17635 ** 17636 *.ORG SVDP208.5, * LG == 3, C == 5, UKRANIAN 17637 * Y(>7F), 17638 * MA(VDP2), Y>IO, 17639 * JUMP(SVDP208XX); 17640 ** 17641 *.ORG SVDP208XX, 17642 * Y(>66), 17643 * MA(VDP3), Y>IO, 17644 * JUMP(SVDP212); 17645 ** 17646 *.ORG SVDP208.6, * LG == 3, C == 6, LETTISH / LITHUANIAN 17647 * AR>A, B(>64), OR, 17648 * MA(VDP2), Y>IO, 17649 * JUMP(SVDP209); 17650 ** 17651 *.ORG SVDP208.7, * LG == 3, C == 7, ENGLISH 17652 * AR>A, B(>7E), OR, 17653 * MA(VDP2), Y>IO, 17654 * JUMP(SVDP209); 17655 * 17656 * Set up VDP3 value 17657 * 17658 .ORG SVDP205, 17659 A(0), B(>7E), 17660 OR, 17661 MA(VDP3), Y>IO, 17662 JUMP(SVDP212); ----- ----- CDC 00000CDE 037E5000 ----- 17663 *.ORG SVDP205, 17664 * MA(USRLAN), RAM>BR, * GET USER LANGUAGE DATA 17665 * Y(>40), Y>AR, 17666 * JUMP(SVDP210); 17667 ** 17668 *.ORG SVDP210, 17669 * A(FLM), BR>B, * TEST THE FORCE LANGUAGE MODE BIT 17670 * AND, 17671 * JUMP(SVDP211); 17672 ** 17673 *.ORG SVDP211, 17674 * MA(VDP3), RAM>BR, * get RAM version of VDP3 17675 * JZ(SVDP214F,SVDP214T); * jump to F if FLM bit set 17676 ** 17677 *.ORG SVDP214F, 17678 * A(>08), BR>B, * add 8 to RAM version of VDP3 and put in A reg 17679 * ADD, 17680 * Y>AR, 17681 * JUMP(SVDP214T); 17682 ** 17683 *.ORG SVDP214T, 17684 * AR>A, B(>64), * or >64 into RAM version of VDP3 (+8) and store in VDP 17685 * OR, 17686 * MA(VDP3), Y>IO, 17687 * JUMP(SVDP212); 17688 * 17689 * SET THE BIT IN VDPREG2 TO CALL THE 17690 * SET PLL REGISTERS ROUTINE. 17691 * 17692 .ORG SVDP212, *B=VPPRG2 17693 MA(VPPRG2), RAM>BR, 17694 JUMP(SVDP213); ----- ----- CDE 00010CDF 62000000 ----- 17695 * 17696 .ORG SVDP213, *CSPLL=1 17697 MA(VPPRG2), 17698 A(CSPLL), BR>B, OR, 17699 Y>RAM, 17700 JUMP(WPN0); ----- ----- CDF 00000CE0 62041101 ----- 17701 * 17702 *+++ WPN: WRITE PAGE NUMBER IN TOP LEFT HAND CORNER 17703 * 17704 * This routine generates the display in the top left hand eight 17705 * bytes of store 0. If a page number is required, this 17706 * routine calls PND to for the page number characters. All 17707 * other characters (eg green for rolling headers) are calculated 17708 * in this routine. 17709 * 17710 .ORG WPN0, *B=SCREEN 17711 *P=0, POINT TO FIRST LOC 17712 MA(SCREEN), RAM>BR, 17713 Y(0), 17714 Y>PR, 17715 JUMP(WPN1); ----- ----- CE0 00010CE1 E0001000 ----- 17716 .ORG WPN1, *Y=TDISP 17717 *A=STOR0 17718 MA(STOR0), RAM>AR, 17719 A(TDISP), BR>B, AND, 17720 JUMP(WPN2); ----- ----- CE1 00020CE2 20040801 ----- 17721 .ORG WPN2, *TELETEXT DISPLAY? 17722 *RWL=STOR0 17723 MA(RWL), 17724 ARHI>A, B(0), OR, 17725 Y>RAM, Y>IO, 17726 JZ(WPN3F,WPN3T); ----- ----- CE2 000025FC 0B005120 ----- 17727 .ORG WPN3T, *NO TELETEXT DISPLAY, JUST NEED TO INHIBIT PAGE NO 17728 *BOX FOR CLOCK DISPLAYS 17729 Y(>20), 17730 Y>DR, 17731 JUMP(PND80Y); ----- ----- 5FD 00001070 00201000 ----- 17732 *TELETEXT DISPLAY 17733 *UPDATE COLS 0 AND 7 17734 .ORG WPN3F, *0TH COL='BOX' 17735 Y(>0B), 17736 Y>DR, 17737 JUMP(WPN10); ----- ----- 5FC 00001CE3 000B1000 ----- 17738 .ORG WPN10, *P=7 17739 Y(7), 17740 Y>PR, 17741 JUMP(WPN11); ----- ----- CE3 00000CE4 80071000 ----- 17742 .ORG WPN11, *7TH COL=' ' 17743 Y(>20), 17744 Y>DR, 17745 JUMP(WPN12); ----- ----- CE4 00001CE5 00201000 ----- 17746 *UPDATE COL 6 17747 .ORG WPN12, *P=6 17748 *B=DHREG 17749 MA(DHREG), RAM>BR, 17750 Y(6), 17751 Y>PR, 17752 JUMP(WPN12A); ----- ----- CE5 00010CE6 B2061000 ----- 17753 .ORG WPN12A, *Y=NRH 17754 *A=VDPTXT 17755 MA(VDPTXT), RAM>AR, 17756 A(NRH), BR>B, AND, 17757 JUMP(WPN14); ----- ----- CE6 00020CE7 2B100801 ----- 17758 .ORG WPN14, *ROLLING HEADERS? 17759 *A=UPD+C8YET 17760 AR>A, B(UPD+C8YET), AND, 17761 Y>AR, 17762 JZ(WPN15F,WPN15T); ----- ----- CE7 002225FE 00300810 ----- 17763 *HEADER ROLLING 17764 .ORG WPN15T, *6TH COL=ALPHA GREEN 17765 Y(>02), 17766 Y>DR, 17767 JUMP(WPN17F); ----- ----- 5FF 00001600 00021000 ----- 17768 *HEADER NOT ROLLING 17769 .ORG WPN15F, *Y=UPD INVERTED +C8YET INVERTED 17770 AR>A, B(UPD+C8YET), XOR, 17771 JUMP(WPN16); ----- ----- 5FE 00000CE8 00301810 ----- 17772 .ORG WPN16, *UPD=1, C8YET=1? 17773 *6TH COL=' ' 17774 Y(>20), 17775 Y>DR, 17776 JZ(WPN17F,WPN17T); ----- ----- CE8 00003600 00201000 ----- 17777 .ORG WPN17T, *PAGE UPDATED IN UPDATE 17778 *Y=TOD 17779 A(TOD), BR>B, AND, 17780 JUMP(WPN19T); ----- ----- 601 00000603 00080801 ----- 17781 * 17782 .ORG WPN17F, *Y=UPD INVERTED +C8YET 17783 AR>A, B(UPD), XOR, 17784 JUMP(WPN18); ----- ----- 600 00000CE9 00201810 ----- 17785 .ORG WPN18, *Y=TOD 17786 *UPD=1, C8YET=0? 17787 A(TOD), BR>B, AND, 17788 JZ(WPN19F,WPN19T); ----- ----- CE9 00002602 00080801 ----- 17789 .ORG WPN19F, *A=DHREG 17790 MA(DHREG), RAM>AR, 17791 JUMP(WPN20F); ----- ----- 602 00020604 32000000 ----- 17792 * 17793 .ORG WPN19T, *PAGE NOT YET UPDATED IN UPDATE 17794 *TOD? 17795 *A=DHREG 17796 MA(DHREG), RAM>AR, 17797 JZ(WPN20F,WPN20T); ----- ----- 603 00022604 32000000 ----- 17798 .ORG WPN20T, *NO TIME OUT DISPLAY 17799 *6TH COL=END BOX 17800 *A=DHREG 17801 MA(DHREG), RAM>AR, 17802 Y(>0A), 17803 Y>DR, 17804 JUMP(WPN20F); ----- ----- 605 00021604 320A1000 ----- 17805 *UPDATE ENDIG 17806 * A=DHREG 17807 .ORG WPN20F, *Y=TOD+ICP 17808 *B=VDPTXT 17809 MA(VDPTXT), RAM>BR, 17810 AR>A, B(TOD+ICP), AND, 17811 JUMP(WPN21); ----- ----- 604 00010CEA 2B480810 ----- 17812 .ORG WPN21, *TOD+ICP? 17813 *Y=UPD 17814 *B=PEN 17815 MA(PEN), RAM>BR, 17816 A(UPD), BR>B, AND, 17817 JZ(WPN22F,WPN22T); ----- ----- CEA 00012606 1B200801 ----- 17818 .ORG WPN22F, *TOD+ICP 17819 *ENDIG=1 17820 MA(DHREG), 17821 AR>A, B(ENDIG), OR, 17822 Y>RAM, 17823 JUMP(WPN25T); ----- ----- 606 0000060D 32041110 ----- 17824 .ORG WPN22T, *Y=PEN-4, UPDATE MODE? 17825 *B=VDP0 17826 MA(VDP0), RAM>BR, 17827 A(-4), BRHI>B, ADD, 17828 JZ(WPN22AF,WPN22AT); ----- ----- 607 00012608 00FC000C ----- 17829 .ORG WPN22AF, *UPDATE MODE 17830 *ENDIG=1 17831 MA(DHREG), 17832 AR>A, B(ENDIG), OR, 17833 Y>RAM, 17834 JUMP(WPN25T); ----- ----- 608 0000060D 32041110 ----- 17835 .ORG WPN22AT, *Y=R24ON 17836 *SUB-PAGE MODE? 17837 A(R24ON), BR>B, AND, 17838 JN(WPN23F,WPN23T); ----- ----- 609 0000460A 00400801 ----- 17839 .ORG WPN23T, *MAIN PAGE MODE 17840 *ENDIG=0 17841 MA(DHREG), 17842 AR>A, B(>FF-ENDIG), AND, 17843 Y>RAM, 17844 JUMP(WPN25T); ----- ----- 60B 0000060D 32FB0910 ----- 17845 .ORG WPN23F, *SUB-PAGE MODE 17846 *ROW 24 ENABLED? 17847 *ELSE ENDIG=0 17848 MA(DHREG), 17849 AR>A, B(>FF-ENDIG), AND, 17850 Y>RAM, 17851 JZ(WPN25F,WPN25T); ----- ----- 60A 0000260C 32FB0910 ----- 17852 .ORG WPN25F, *ROW 24 ENABLED 17853 *ENDIG=1 17854 MA(DHREG), 17855 AR>A, B(ENDIG), OR, 17856 Y>RAM, 17857 JUMP(WPN25T); ----- ----- 60C 0000060D 32041110 ----- 17858 *UPDATE COLS 2,3,4,5 17859 .ORG WPN25T, *B=MREG0 17860 MA(MREG0), RAM>BR, 17861 JUMP(WPN26); ----- ----- 60D 00010CEB 39000000 ----- 17862 .ORG WPN26, *P=3 17863 *A=VDPTXT 17864 MA(VDPTXT), RAM>AR, 17865 Y(3), 17866 Y>PR, 17867 JUMP(WPN30); ----- ----- CEB 00020CEC AB031000 ----- 17868 .ORG WPN30, *Y=DISERR 17869 A(DISERR), BR>B, AND, 17870 JUMP(WPN31); ----- ----- CEC 00000CED 00080801 ----- 17871 .ORG WPN31, *Y=STOP 17872 *DISPLAYING ERROR COUNT? 17873 AR>A, B(STOP), AND, 17874 JZ(WPN32F,WPN32T); ----- ----- CED 0000260E 00040810 ----- 17875 *DISPLAYING ERROR COUNT 17876 .ORG WPN32F, *A=ERRCNT 17877 MA(ERRCNT), RAM>AR, 17878 JUMP(WPN33); ----- ----- 60E 00020CEE 3A000000 ----- 17879 .ORG WPN33, *3RD COL= ERRCNT HI NIB 17880 ARHI>A, B(>30), OR, 17881 Y>DR, 17882 JUMP(WPN34); ----- ----- CEE 00001CEF 00301020 ----- 17883 .ORG WPN34, *P=4 17884 Y(4), 17885 Y>PR, 17886 JUMP(WPN35); ----- ----- CEF 00000CF0 80041000 ----- 17887 .ORG WPN35, *4TH COL= ERRCNT LO NIB 17888 *EXIT TO 'STOP' CODE 17889 AR.0F>A, B(>30), OR, 17890 Y>DR, 17891 JUMP(WPN110); ----- ----- CF0 00001CF1 003010C0 ----- 17892 *END OF ERROR COUNT 17893 .ORG WPN32T, *Y=STP 17894 *PAGE HELD? 17895 A(STP), BR>B, AND, 17896 JZ(WPN40F,WPN40T); ----- ----- 60F 00002610 00010801 ----- 17897 .ORG WPN40T, *PAGE NOT HELD 17898 *A=UPD+C8YET 17899 AR>A, B(UPD+C8YET), AND, 17900 Y>AR, 17901 JUMP(WPN50); ----- ----- 611 00220CF2 00300810 ----- 17902 .ORG WPN40F, *PAGE HELD 17903 *'STOP' DISPLAY ENABLED? 17904 * 17905 * TCJ May 94, 17906 * Disable 'STOP' option, only write the HOLD dymbol 17907 * 17908 * JZ(WPN41F,WPN41T); 17909 JUMP(WPN41T); ----- ----- 610 00000CF3 00000000 ----- 17910 * 17911 *WRITE 'STOP' 17912 *.ORG WPN41F, *PR=2 17913 * Y(2), 17914 * Y>PR, 17915 * JUMP(WPN72); 17916 *.ORG WPN72, *2ND COL='S' 17917 * Y(>53), 17918 * Y>DR, 17919 * JUMP(WPN73); 17920 *.ORG WPN73, *PR=3 17921 * Y(3), 17922 * Y>PR, 17923 * JUMP(WPN74); 17924 *.ORG WPN74, *3RD COL='T' 17925 * Y(>54), 17926 * Y>DR, 17927 * JUMP(WPN75); 17928 *.ORG WPN75, *PR=4 17929 * Y(4), 17930 * Y>PR, 17931 * JUMP(WPN76); 17932 *.ORG WPN76, *4TH COL='O' 17933 * Y(>4F), 17934 * Y>DR, 17935 * JUMP(WPN77); 17936 *.ORG WPN77, *PR=5 17937 * Y(5), 17938 * Y>PR, 17939 * JUMP(WPN78); 17940 *.ORG WPN78, *5TH COL='P' 17941 * Y(>50), 17942 * Y>DR, 17943 * JUMP(WPN100); 17944 *END OF 'STOP' 17945 *WRITE HOLD SYMBOL 17946 .ORG WPN41T, *3RD COL=LHS HOLD SYMBOL 17947 Y(>89), 17948 Y>DR, 17949 JUMP(WPN42); ----- ----- CF3 00001CF4 00891000 ----- 17950 .ORG WPN42, *PR=4 17951 Y(4), 17952 Y>PR, 17953 JUMP(WPN43); ----- ----- CF4 00000CF5 80041000 ----- 17954 .ORG WPN43, *4TH COL=RHS HOLD SYMBOL 17955 Y(>87), 17956 Y>DR, 17957 JUMP(WPN110); ----- ----- CF5 00001CF1 00871000 ----- 17958 *END OF HOLD SYMBOL 17959 * A=UPD+C8YET 17960 .ORG WPN50, *Y=C8YET+!UPD 17961 AR>A, B(UPD), XOR, 17962 JUMP(WPN50A); ----- ----- CF2 00000CF6 00201810 ----- 17963 .ORG WPN50A, *UPDATE BUT PAGE NOT UPDATED? 17964 *Y=!C8YET+!UPD 17965 *A=DHREG 17966 MA(DHREG), RAM>AR, 17967 AR>A, B(UPD+C8YET), XOR, 17968 JZ(WPN51F,WPN51T); ----- ----- CF6 00022612 32301810 ----- 17969 *WRITE UPDATE SYMBOL 17970 .ORG WPN51T, *3RD COL=LHS UPDATE SYMBOL 17971 *B=MREG1 17972 MA(MREG1), RAM>BR, 17973 Y(>89), 17974 Y>DR, 17975 JUMP(WPN52); ----- ----- 613 00011CF7 65891000 ----- 17976 .ORG WPN52, *Y=UPSYM 17977 A(UPSYM), BR>B, AND, 17978 JUMP(WPN52A); ----- ----- CF7 00000CF8 00200801 ----- 17979 .ORG WPN52A, *PR=4 17980 *UPDATE SYMBOL MODE? 17981 Y(4), 17982 Y>PR, 17983 JZ(WPN53F,WPN53T); ----- ----- CF8 00002614 80041000 ----- 17984 .ORG WPN53T, *4TH COL=RHS TEXT SYMBOL (GRUNDIG MODE) 17985 Y(>88), 17986 Y>DR, 17987 JUMP(WPN110); ----- ----- 615 00001CF1 00881000 ----- 17988 .ORG WPN53F, *4TH COL=RHS UPDATE SYMBOL (NOKIA MODE) 17989 Y(>C2), *CRH June 96, 212 mods 17990 Y>DR, 17991 JUMP(WPN110); ----- ----- 614 00001CF1 00C21000 ----- 17992 * 17993 * TCJ April 94, 209 mods 17994 * We no longer need to go into OSD mode 17995 * to display the OSD characters. 17996 * 17997 * 17998 *.ORG WPN53A, *SET OSD NATIONAL OPTION 17999 * MA(VDP2), 18000 * Y(>30), Y>RAM, * TODO: do I need to change this ? 18001 * JUMP(TCJWPN00); 18002 * 18003 *.ORG TCJWPN00, 18004 * MA(VDP2), 18005 * Y(>00), Y>IO, * TODO: do I need to change this ? 18006 * JUMP(WPN110); 18007 * 18008 *END OF UPDATE SYMBOL 18009 * A=DHREG 18010 * 18011 .ORG WPN51F, *UPDATE AND PAGE UPDATED? 18012 *A=NRH+ICP+TOD 18013 AR>A, B(NRH+ICP+TOD), AND, 18014 Y>AR, 18015 JZ(WPN60F,WPN60T); ----- ----- 612 00222616 00580810 ----- 18016 *WRITE UPDATED PAGE 18017 *ORG WPN60T, *SEE BELOW 18018 *UPDATE COL 1 18019 *WRITE PAGE NUMBER WITH BOXED HEADER 18020 .ORG WPN60T, *P=1 18021 Y(1), 18022 Y>PR, 18023 JUMP(WPN81F); ----- ----- 617 00000618 80011000 ----- 18024 *WRITE PAGE NUMBER WITHOUT A BOXED HEADER 18025 * A=NRH+ICP+TOD 18026 .ORG WPN60F, *Y=!NRH+ICP+TOD 18027 AR>A, B(NRH), XOR, 18028 JUMP(WPN80); ----- ----- 616 00000CF9 00101810 ----- 18029 .ORG WPN80, *ROLLING HEADER, TIMED OUT DISPLAY OR INCOMPLETE PAGE? 18030 *P=1 18031 Y(1), 18032 Y>PR, 18033 JZ(WPN81F,WPN81T); ----- ----- CF9 00002618 80011000 ----- 18034 * 18035 .ORG WPN81F, *1ST COL=BOX 18036 Y(>0B), 18037 Y>DR, 18038 JUMP(PND0); ----- ----- 618 00001CFA 000B1000 ----- 18039 .ORG WPN81T, *1ST COL=' ' 18040 Y(>20), 18041 Y>DR, 18042 JUMP(PND0); ----- ----- 619 00001CFA 00201000 ----- 18043 *BOX NON PAGE DISPLAY (EG HOLD SYMBOL) 18044 .ORG WPN100, *P=1 18045 Y(1), 18046 Y>PR, 18047 JUMP(WPN101); ----- ----- CFF 00000CFB 80011000 ----- 18048 .ORG WPN101, *1ST COL=BOX 18049 Y(>0B), 18050 Y>DR, 18051 JUMP(PND80Y); ----- ----- CFB 00001070 000B1000 ----- 18052 *WRITE SPACES TO COLS 2 AND 5 18053 .ORG WPN110, *P=2 18054 Y(2), 18055 Y>PR, 18056 JUMP(WPN111); ----- ----- CF1 00000CFC 80021000 ----- 18057 .ORG WPN111, *2ND COL=' ' 18058 Y(>20), 18059 Y>DR, 18060 JUMP(WPN112); ----- ----- CFC 00001CFD 00201000 ----- 18061 .ORG WPN112, *P=5 18062 Y(5), 18063 Y>PR, 18064 JUMP(WPN113); ----- ----- CFD 00000CFE 80051000 ----- 18065 .ORG WPN113, *2ND COL=' ' 18066 Y(>20), 18067 Y>DR, 18068 JUMP(WPN100); ----- ----- CFE 00001CFF 00201000 ----- 18069 * 18070 .ORG PND0, *POINT TO PAGE NUMBER MAGS 18071 Y(2), 18072 Y>PR, 18073 JUMP(PND1); ----- ----- CFA 00000D01 80021000 ----- 18074 .ORG PND1, *CALL PND10, AND PND50T TO WRITE MAIN PAGE NUMBER 18075 *WITH PRE-FIX 18076 *RETURN=0, RETURN TO PND70 18077 MA(RETURN), 18078 Y(0), 18079 Y>RAM, 18080 JUMP(PND10); ----- ----- D01 00000AF3 7C001100 ----- 18081 * 18082 *+++WRITE MAIN PAGE NUMBER WITH PRE-FIX OR SUB-PAGE NUMBER WITH '/' 18083 * (skip pre-fix if called by out-of-cycle display, ie if RETURN=3) 18084 * 18085 * input pars are:- 18086 * P, RWL address of page number prefix or '/' 18087 * RETURN: return pointer 18088 * 18089 *ENTRY POINT FOR MAIN PAGE NUMBER 18090 *ENTRY POINT FROM PAGE OUT OF CYCLE DISPLAY (CMPE54) 18091 .ORG PND10, *A=STORE=0 (INIT DIGIT LOOP COUNT) 18092 MA(STORE), 18093 Y(0), 18094 Y>AR, Y>RAM, 18095 JUMP(PND20); ----- ----- AF3 00220D04 77001100 ----- 18096 *ENTRY POINT FOR SUB-PAGE NUMBER 18097 .ORG PND15, *A=STORE=4 18098 MA(STORE), 18099 Y(4), 18100 Y>AR, Y>RAM, 18101 JUMP(PND20); ----- ----- AF6 00220D04 77041100 ----- 18102 *WRITE NEXT DIGIT 18103 * P= POINTER TO DIGIT 18104 .ORG PND20, *Y=STORE 18105 *BR=DPM 18106 MA(DPM), RAM>BR, 18107 AR>A, B(>F), AND, 18108 JUMP(PND22); ----- ----- D04 00010D05 680F0810 ----- 18109 .ORG PND22, *CASE STORE=? 18110 *STORE++ 18111 MA(STORE), 18112 AR>A, B(1), ADD, 18113 Y>RAM, 18114 JY(PND30Y); ----- ----- D05 0000C410 77010110 ----- 18115 *WRITE MAIN PAGE NUMBER 18116 .ORG PND30Y, *CASE OLD STORE=0 18117 *WRITE MAG 18118 *AR=DPM, Y=DPM 18119 MA(DPM), RAM>AR, 18120 A(0), BR.F0>B, OR, 18121 JUMP(PND30A); ----- ----- 410 00020D06 68001003 ----- 18122 .ORG PND30A, *DPM=0? 18123 JZ(PND40F,PND30BT); ----- ----- D06 0000261A 00000000 ----- 18124 .ORG PND30BT, *DPM=0, DISPLAY '8' 18125 *AR=>80 18126 Y(>80), 18127 Y>AR, 18128 JUMP(PND40F); ----- ----- 61B 0022061A 00801000 ----- 18129 .ORG PND31, *CASE OLD STORE=1 18130 *WRITE TENS 18131 *AR=DPT 18132 MA(DPT), RAM>AR, 18133 JUMP(PND40F); ----- ----- 411 0002061A 69000000 ----- 18134 .ORG PND32, *CASE OLD STORE=2 18135 *WRITE UNITS 18136 *AR=DPU 18137 MA(DPU), RAM>AR, 18138 JUMP(PND40F); ----- ----- 412 0002061A 6A000000 ----- 18139 .ORG PND33, *CASE OLD STORE=3 18140 *COMPLETED DISPLAYING A MAIN-PAGE NUMBER 18141 *A=RETURN 18142 MA(RETURN), RAM>AR, 18143 JUMP(PND33A); ----- ----- 413 00020D07 7C000000 ----- 18144 .ORG PND33A, *Y=RETURN-3 18145 AR>A, B(-3), ADD, 18146 JUMP(PND33B); ----- ----- D07 00000D08 00FD0010 ----- 18147 .ORG PND33B, *CALLED BY OUT-OF-CYCLE DISPLAY? 18148 *IF YES, RETURN TO CMPE55T (DON'T WANT PREFIX) 18149 JZ(PND33CF,CMPE55T); ----- ----- D08 0000261C 00000000 ----- 18150 .ORG PND33CF, *NO, CALL PND50T TO FIND PREFIX 18151 JUMP(PND50T); ----- ----- 61C 00000A86 00000000 ----- 18152 *WRITE SUB-PAGE NUMBER 18153 .ORG PND34, *CASE OLD STORE=4 18154 *WRITE '/' AND THEN SUB-PAGE THOUS 18155 *A=USPM 18156 MA(USPM), RAM>AR, 18157 Y(>2F), 18158 Y>DR, 18159 JUMP(PND40F); ----- ----- 414 0002161A 5B2F1000 ----- 18160 .ORG PND35, *CASE OLD STORE=5 18161 *WRITE SUB-PAGE HUNDREDS 18162 *A=USPC 18163 MA(USPC), RAM>AR, 18164 JUMP(PND40F); ----- ----- 415 0002061A 5A000000 ----- 18165 .ORG PND36, *CASE OLD STORE=6 18166 *WRITE SUB-PAGE TENS 18167 *A=USPX 18168 MA(USPX), RAM>AR, 18169 JUMP(PND40F); ----- ----- 416 0002061A 59000000 ----- 18170 .ORG PND37, *CASE OLD STORE=7 18171 *WRITE SUB-PAGE UNITS 18172 *A=USPI 18173 MA(USPI), RAM>AR, 18174 JUMP(PND40F); ----- ----- 417 0002061A 58000000 ----- 18175 .ORG PND38, *CASE OLD STORE=8 18176 *SUB-PAGE COMPLETED 18177 *POINT TO START POINT FOR DASHES 18178 *A=DHREG 18179 MA(DHREG), RAM>AR, 18180 Y(-53), 18181 Y>PR, 18182 JUMP(GAP340); ----- ----- 418 00020D09 B2CB1000 ----- 18183 *COMMON DIGIT WRITE CODE 18184 .ORG PND40F, *PUT DPx OR USPx IN A LOW NIB 18185 ARHI>A, B(0), OR, 18186 Y>AR, 18187 JUMP(PND40A); ----- ----- 61A 00220D0A 00001020 ----- 18188 .ORG PND40A, *Y=AR-10 18189 PR>BR, 18190 AR.0F>A, B(-10), ADD, 18191 JUMP(PND41); ----- ----- D0A 00410D0B 00F600C0 ----- 18192 .ORG PND41, *HEX PAGE NUMBER? 18193 *INCREMENT POINTER 18194 A(1), BR>B, ADD, 18195 Y>PR, 18196 JN(PND42F,PND42T); ----- ----- D0B 0000461E 80010001 ----- 18197 .ORG PND42T, *WRITE DECIMAL PAGE NUMBER 18198 *AR=STORE 18199 MA(STORE), RAM>AR, 18200 AR.0F>A, B(>30), ADD, 18201 Y>DR, 18202 JUMP(PND20); ----- ----- 61F 00021D04 773000C0 ----- 18203 .ORG PND42F, *WRITE HEX PAGE NUMBER 18204 *FINISHED SUB-PAGE? 18205 *AR=STORE 18206 MA(STORE), RAM>AR, 18207 AR.0F>A, B(>37), ADD, 18208 Y>DR, 18209 JUMP(PND20); ----- ----- 61E 00021D04 773700C0 ----- 18210 * 18211 *+++CALCULATE AND DISPLAY PREFIX LETTER 18212 * This routine works out the page prefix character according to 18213 * to the langugue bits 18214 * 18215 * input pars are:- 18216 * RETURN:- return pointer 18217 * return pars are:- 18218 * A: the page prefix letter 18219 * 18220 * TCJ April 94, 209 mods. 18221 * 18222 * JUMP(PND50A); 18223 *.ORG PND50A, *MASK FLM AND SERIAL FLAG IN VDP2 COPY IN AR 18224 * AR>A, B(%00111110), AND, 18225 * Y>AR, 18226 * JUMP(PND51); 18227 *.ORG PND51, *Y=CBITS XOR GERMAN 18228 * AR.0F>A, B(>08), XOR, 18229 * JUMP(PND52); 18230 *.ORG PND52, *Y=CBITS XOR CZECH/TURKISH 18231 * *GERMAN? 18232 * *BR=MREG1 18233 * MA(MREG1), RAM>BR, 18234 * AR.0F>A, B(>06), XOR, 18235 * JZ(PND53F,PND53T); 18236 *.ORG PND53T, *GERMAN, PREFIX IS 'S' 18237 * *AR='S' 18238 * Y(>53), 18239 * Y>AR, 18240 * JUMP(PND56F); 18241 *.ORG PND53F, *Y=CBITS XOR SWE/FIN/HUNG 18242 * *CZECH/TURKISH? 18243 * AR.0F>A, B(>04), XOR, 18244 * JZ(PND54F,PND54T); 18245 *.ORG PND54T, *CZECH/TURKISH, PREFIX IS 'S' 18246 * *AR='S' 18247 * Y(>53), 18248 * Y>AR, 18249 * JUMP(PND56F); 18250 *.ORG PND54F, *Y=VDP2 XOR POLISH 18251 * *SWE/FIN/HUNG? 18252 * AR>A, B(>10), XOR, 18253 * JZ(PND55F,PND55T); 18254 *.ORG PND55T, *SWE/FIN/HUNG, PREFIX IS 'S' 18255 * *AR='S' 18256 * Y(>53), 18257 * Y>AR, 18258 * JUMP(PND56F); 18259 *.ORG PND55F, *Y=VDP2 XOR SERBO-CROAT 18260 * *POLISH? 18261 * AR>A, B(>1A), XOR, 18262 * JZ(PND55AF,PND55AT); 18263 *.ORG PND55AT, *POLISH, PREFIX IS 'S' 18264 * *AR='S' 18265 * Y(>53), 18266 * Y>AR, 18267 * JUMP(PND56F); 18268 *.ORG PND55AF, *SERBO-CROAT? 18269 * *ELSE PREFIX IS 'P' 18270 * Y(>50), 18271 * Y>AR, 18272 * JZ(PND56F,PND56T); 18273 *.ORG PND56T, *SERBO-CROAT, PREFIX IS 'S' 18274 * *AR='S' 18275 * Y(>53), 18276 * Y>AR, 18277 * JUMP(PND56F); 18278 * 18279 * TCJ August 94, 211 Mods 18280 * Prefix generation changed for the 211 18281 * 18282 .ORG PND50T, *AR=VDP2 18283 MA(VDP2), RAM>AR, 18284 JUMP(PND51A); ----- ----- A86 00020D0C 02000000 ----- 18285 * 18286 .ORG PND51A, 18287 MA(MREG1), RAM>BR, * force p - bug fix - Colin Hinson 280696 18288 AR>A, B(ILANG), 18289 AND, 18290 JUMP(PND51B); ----- ----- D0C 00010D0D 65010810 ----- 18291 * 18292 .ORG PND51B, 18293 ARHI>A, B(>03), AND, 18294 JZ(PND52F,PND52T); ----- ----- D0D 00002624 00030820 ----- 18295 * 18296 .ORG PND52F, 18297 Y(>53), Y>AR, 18298 JUMP(PND56F); ----- ----- 624 00220D0E 00531000 ----- 18299 * 18300 .ORG PND52T, 18301 AR>>1>A, B(>07), AND, 18302 JY(PND53.0); ----- ----- 625 0000C100 000708E0 ----- 18303 * 18304 .ORG PND53.0, * Language group %00 18305 JY(PND54A.0); ----- ----- 100 0000C110 00000000 ----- 18306 * 18307 .ORG PND54A.0, * LG == 0, C == 0, ENGLISH 18308 Y(>50), Y>AR, 18309 JUMP(PND56F); ----- ----- 110 00220D0E 00501000 ----- 18310 * 18311 .ORG PND54A.1, * LG == 0, C == 1, FRENCH 18312 Y(>50), Y>AR, 18313 JUMP(PND56F); ----- ----- 111 00220D0E 00501000 ----- 18314 * 18315 .ORG PND54A.2, * LG == 0, C == 2, SWEDISH 18316 Y(>53), Y>AR, 18317 JUMP(PND56F); ----- ----- 112 00220D0E 00531000 ----- 18318 * 18319 .ORG PND54A.3, * LG == 0, C == 3, CZECH / SLOVAKIAN 18320 Y(>53), Y>AR, 18321 JUMP(PND56F); ----- ----- 113 00220D0E 00531000 ----- 18322 * 18323 .ORG PND54A.4, * LG == 0, C == 4, GERMAN 18324 Y(>53), Y>AR, 18325 JUMP(PND56F); ----- ----- 114 00220D0E 00531000 ----- 18326 * 18327 .ORG PND54A.5, * LG == 0, C == 5, ENGLISH 18328 Y(>50), Y>AR, 18329 JUMP(PND56F); ----- ----- 115 00220D0E 00501000 ----- 18330 * 18331 .ORG PND54A.6, * LG == 0, C == 6, ITALIAN 18332 Y(>50), Y>AR, 18333 JUMP(PND56F); ----- ----- 116 00220D0E 00501000 ----- 18334 * 18335 .ORG PND54A.7, * LG == 0, C == 7, GREEK 18336 MA(M0), RAM>BR, * CRUDE, BUT NEED TO ENSURE BIT 3 NOT SET (FPPP) 18337 Y(>51), Y>AR, 18338 JUMP(PND56F); ----- ----- 117 00230D0E 10511000 ----- 18339 * 18340 .ORG PND53.1, * Language group %01 18341 JY(PND54B.0); ----- ----- 101 0000C120 00000000 ----- 18342 * 18343 .ORG PND54B.0, * LG == 1, C == 0, ENGLISH 18344 Y(>50), Y>AR, 18345 JUMP(PND56F); ----- ----- 120 00220D0E 00501000 ----- 18346 * 18347 .ORG PND54B.1, * LG == 1, C == 1, FRENCH 18348 Y(>50), Y>AR, 18349 JUMP(PND56F); ----- ----- 121 00220D0E 00501000 ----- 18350 * 18351 .ORG PND54B.2, * LG == 1, C == 2, SWEDISH 18352 Y(>53), Y>AR, 18353 JUMP(PND56F); ----- ----- 122 00220D0E 00531000 ----- 18354 * 18355 .ORG PND54B.3, * LG == 1, C == 3, CZECH / SLOVAKIAN 18356 Y(>53), Y>AR, 18357 JUMP(PND56F); ----- ----- 123 00220D0E 00531000 ----- 18358 * 18359 .ORG PND54B.4, * LG == 1, C == 4, GERMAN 18360 Y(>53), Y>AR, 18361 JUMP(PND56F); ----- ----- 124 00220D0E 00531000 ----- 18362 * 18363 .ORG PND54B.5, * LG == 1, C == 5, SERBO-CROAT 18364 Y(>53), Y>AR, 18365 JUMP(PND56F); ----- ----- 125 00220D0E 00531000 ----- 18366 * 18367 .ORG PND54B.6, * LG == 1, C == 6, ITALIAN 18368 Y(>50), Y>AR, 18369 JUMP(PND56F); ----- ----- 126 00220D0E 00501000 ----- 18370 * 18371 .ORG PND54B.7, * LG == 1, C == 7, RUMANIAN 18372 Y(>50), Y>AR, 18373 JUMP(PND56F); ----- ----- 127 00220D0E 00501000 ----- 18374 * 18375 .ORG PND53.2, * Language group %10 18376 JY(PND54C.0); ----- ----- 102 0000C130 00000000 ----- 18377 * 18378 .ORG PND54C.0, * LG == 2, C == 0, ENGLISH 18379 Y(>50), Y>AR, 18380 JUMP(PND56F); ----- ----- 130 00220D0E 00501000 ----- 18381 * 18382 .ORG PND54C.1, * LG == 2, C == 1, FRENCH 18383 Y(>50), Y>AR, 18384 JUMP(PND56F); ----- ----- 131 00220D0E 00501000 ----- 18385 * 18386 .ORG PND54C.2, * LG == 2, C == 2, SWEDISH 18387 Y(>53), Y>AR, 18388 JUMP(PND56F); ----- ----- 132 00220D0E 00531000 ----- 18389 * 18390 .ORG PND54C.3, * LG == 2, C == 3, TURKISH 18391 Y(>53), Y>AR, 18392 JUMP(PND56F); ----- ----- 133 00220D0E 00531000 ----- 18393 * 18394 .ORG PND54C.4, * LG == 2, C == 4, GERMAN 18395 Y(>53), Y>AR, 18396 JUMP(PND56F); ----- ----- 134 00220D0E 00531000 ----- 18397 * 18398 .ORG PND54C.5, * LG == 2, C == 5, ENGLISH 18399 Y(>50), Y>AR, 18400 JUMP(PND56F); ----- ----- 135 00220D0E 00501000 ----- 18401 * 18402 .ORG PND54C.6, * LG == 2, C == 6, ITALIAN 18403 Y(>50), Y>AR, 18404 JUMP(PND56F); ----- ----- 136 00220D0E 00501000 ----- 18405 * 18406 .ORG PND54C.7, * LG == 2, C == 7, GREEK 18407 MA(M0), RAM>BR, * CRUDE, BUT NEED TO ENSURE BIT 3 NOT SET (FPPP) 18408 Y(>51), Y>AR, 18409 JUMP(PND56F); ----- ----- 137 00230D0E 10511000 ----- 18410 * 18411 .ORG PND53.3, * Language group %11 18412 JY(PND54D.0); ----- ----- 103 0000C140 00000000 ----- 18413 * 18414 .ORG PND54D.0, * LG == 3, C == 0, ENGLISH 18415 Y(>50), Y>AR, 18416 JUMP(PND56F); ----- ----- 140 00220D0E 00501000 ----- 18417 * 18418 .ORG PND54D.1, * LG == 3, C == 1, FRENCH 18419 Y(>50), Y>AR, 18420 JUMP(PND56F); ----- ----- 141 00220D0E 00501000 ----- 18421 * 18422 .ORG PND54D.2, * LG == 3, C == 2, SWEDISH 18423 Y(>53), Y>AR, 18424 JUMP(PND56F); ----- ----- 142 00220D0E 00531000 ----- 18425 * 18426 .ORG PND54D.3, * LG == 3, C == 3, CZECH / SLOVAKIAN 18427 Y(>53), Y>AR, 18428 JUMP(PND56F); ----- ----- 143 00220D0E 00531000 ----- 18429 * 18430 .ORG PND54D.4, * LG == 3, C == 4, GERMAN 18431 Y(>53), Y>AR, 18432 JUMP(PND56F); ----- ----- 144 00220D0E 00531000 ----- 18433 * 18434 .ORG PND54D.5, * LG == 3, C == 5, ENGLISH 18435 Y(>50), Y>AR, 18436 JUMP(PND56F); ----- ----- 145 00220D0E 00501000 ----- 18437 * 18438 .ORG PND54D.6, * LG == 3, C == 6, ITALIAN 18439 Y(>50), Y>AR, 18440 JUMP(PND56F); ----- ----- 146 00220D0E 00501000 ----- 18441 * 18442 .ORG PND54D.7, * LG == 3, C == 7, GREEK 18443 MA(M0), RAM>BR, * CRUDE, BUT NEED TO ENSURE BIT 3 NOT SET (FPPP) 18444 Y(>51), Y>AR, 18445 JUMP(PND56F); ----- ----- 147 00230D0E 10511000 ----- 18446 * 18447 *AR=PREFIX CHARACTER, BR=MREG1 18448 .ORG PND56F, *Y=FPPP, B=RETURN 18449 MA(RETURN), RAM>BR, 18450 A(FPPP), BR>B, AND, 18451 JUMP(PND61); ----- ----- D0E 00010D0F 7C080801 ----- 18452 .ORG PND61, *Y=RETURN 18453 *PAGE PRE-FIX FORCED TO 'P' ? 18454 A(3), BR>B, AND, 18455 JZ(PND61AF,PND61AT); ----- ----- D0F 00002626 00030801 ----- 18456 .ORG PND61AF, *SET A TO 'P' CASE RETURN=? 18457 Y(>50), 18458 Y>AR, 18459 JY(PND62Y); ----- ----- 626 0022C050 00501000 ----- 18460 .ORG PND61AT, *CASE RETURN=? 18461 JY(PND62Y); ----- ----- 627 0000C050 00000000 ----- 18462 * 18463 .ORG PND62Y, *POINT TO PREFIX LETTER 18464 Y(2), 18465 Y>PR, 18466 JUMP(PND63); ----- ----- 050 00000D12 80021000 ----- 18467 .ORG PND63, *WRITE PAGE PREFIX CHARACTER 18468 *A=DHREG 18469 MA(DHREG), RAM>AR, 18470 AR>A, B(0), OR, 18471 Y>DR, 18472 JUMP(PND70); ----- ----- D12 00021D13 32001010 ----- 18473 *WRITE DASHES 18474 * A=DHREG 18475 .ORG PND70, *INVERT POOCD 18476 AR>A, B(POOCD), XOR, 18477 Y>AR, 18478 JUMP(PND70A); ----- ----- D13 00220D14 00201810 ----- 18479 .ORG PND70A, *Y=!POOCD+NRH 18480 *A=PEN 18481 MA(PEN), RAM>AR, 18482 AR>A, B(POOCD+NRH), AND, 18483 JUMP(PND70B); ----- ----- D14 00020D15 1B300810 ----- 18484 .ORG PND70B, *IS THERE A OOC DISPLAY? 18485 *Y=PEN-4 18486 ARHI>A, B(-4), ADD, 18487 JZ(PND71F,PND71T); ----- ----- D15 00002628 00FC0020 ----- 18488 .ORG PND71F, *SUB-PAGE MODE? 18489 *MASK OFF TWO LSBS OF PEN TO GIVE NUMBER OF DASHES 18490 ARHI>A, B(3), AND, 18491 Y>AR, 18492 JN(PND71AF,PND71AT); ----- ----- 628 0022462A 00030820 ----- 18493 .ORG PND71T, *OOC DISPLAY, NEED THREE DASHES 18494 *A=3 18495 Y(3), 18496 Y>AR, 18497 JUMP(PND71AT); ----- ----- 629 0022062B 00031000 ----- 18498 .ORG PND71AF, *SUB-PAGE MODE, NO DASHES 18499 Y(0), 18500 Y>AR, 18501 JUMP(PND71AT); ----- ----- 62A 0022062B 00001000 ----- 18502 * A=NUMBER OF DASHES, RETURN=0 18503 .ORG PND71AT, *PR=6, POINT TO LOCATION AFTER LAST DASH 18504 *CALL PND72 TO WRITE DASHES 18505 *RETURN=0, RETURN TO PND80Y 18506 Y(6), 18507 Y>PR, 18508 JUMP(PND72); ----- ----- 62B 00000AF8 80061000 ----- 18509 * 18510 *+++WRITE DASHES ROUTINE 18511 * 18512 * input pars are:- 18513 * P: location after last dash 18514 * A: number of dashes 18515 * RETURN: return pointer 18516 * 18517 .ORG PND72, *DEC DASH COUNT 18518 *BR=PR 18519 *AR=AR-1 18520 PR>BR, 18521 AR>A, B(-1), ADD, 18522 Y>AR, 18523 JUMP(PND73); ----- ----- AF8 00630D16 00FF0010 ----- 18524 .ORG PND73, *POINT TO NEXT DASH, MORE DASHES? 18525 *PR=BR-1 18526 *BR=RETURN 18527 MA(RETURN), RAM>BR, 18528 A(-1), BR>B, ADD, 18529 Y>PR, 18530 JN(PND74F,PND74T); ----- ----- D16 0001462C FCFF0001 ----- 18531 .ORG PND74F, *WRITE A DASH 18532 Y(>2D), 18533 Y>DR, 18534 JUMP(PND72); ----- ----- 62C 00001AF8 002D1000 ----- 18535 * 18536 .ORG PND74T, *Y=RETURN 18537 A(1), BR>B, AND, 18538 JUMP(PND76); ----- ----- 62D 00000D17 00010801 ----- 18539 .ORG PND76, *CASE RETURN 18540 JY(PND80Y); ----- ----- D17 0000C070 00000000 ----- 18541 * 18542 .ORG PND80Y, *COMMON EXIT FROM PND 18543 JUMP(VPP600T); ----- ----- 070 0000033D 00000000 ----- 18544 * 18545 *+++SET PLL REGISTERS 18546 * 18547 * This routine updates PLLRG1-3 according to UPLL, whether the 18548 * decoder is in picture, mix/box or text (as indicated by VDP1) 18549 * and whether the quality algorithm is indicating a good or bad 18550 * signal. The new PLLRG1 is worked out in A, PLLRG1 is updated 18551 * at the end of the routine 18552 * 18553 * B=UPLL 18554 .ORG SPLL0, *PUT NEW R24T, HPOS, UEL, SIX24, ILCE IN A 18555 *CLEAR MUTE, INSYNC, LOCK 18556 *B=VDP1 18557 MA(VDP1), RAM>BR, 18558 A(R24T+HPOS+UEL+SIX24+ILCE), BR>B, AND, 18559 Y>AR, 18560 JUMP(SPLL1); ----- ----- 352 00230D18 016D0801 ----- 18561 .ORG SPLL1, *Y=TEXT 18562 A(TEXT), BR>B, AND, 18563 JUMP(SPLL2); ----- ----- D18 00000D19 00010801 ----- 18564 .ORG SPLL2, *Y=MIX+BOX 18565 *TEXT=0? 18566 A(MIX+BOX), BR>B, AND, 18567 JZ(SPLL3F,SPLL3T); ----- ----- D19 0000262E 00060801 ----- 18568 .ORG SPLL3F, *TEXT=1, MIX OR BOX? 18569 JZ(SPLL4F,SPLL4T); ----- ----- 62E 00002634 00000000 ----- 18570 .ORG SPLL3T, *PICTURE MODE 18571 JUMP(SPLL4F); ----- ----- 62F 00000634 00000000 ----- 18572 .ORG SPLL4T, *TEXT MODE 18573 *INSYNC=1 18574 *B=STSWD0 18575 MA(STSWD0), RAM>BR, 18576 AR>A, B(INSYNC), OR, 18577 Y>AR, 18578 JUMP(SPLL10); ----- ----- 635 00230D1A 64101010 ----- 18579 .ORG SPLL4F, *NOT TEXT MODE 18580 *SET INTERLACE MODE 18581 AR>A, B(ILCE), OR, 18582 Y>AR, 18583 JUMP(SPLL5); ----- ----- 634 00220D1B 00011010 ----- 18584 .ORG SPLL5, *SIX24=0 18585 *B=STSWD0 18586 MA(STSWD0), RAM>BR, 18587 AR>A, B(>FF-SIX24), AND, 18588 Y>AR, 18589 JUMP(SPLL10); ----- ----- D1B 00230D1A 64FB0810 ----- 18590 * 18591 .ORG SPLL10, *Y=BADFLG 18592 A(BADFLG), BR>B, AND, 18593 JUMP(SPLL11); ----- ----- D1A 00000D1C 00100801 ----- 18594 .ORG SPLL11, *QUALITY? 18595 *B=VDP1 18596 MA(VDP1), RAM>BR, 18597 JZ(SPLL20F,SPLL20T); ----- ----- D1C 00012636 01000000 ----- 18598 *BAD QUALITY 18599 .ORG SPLL20F, *Y=BOX+MIX 18600 *B=UPLL 18601 MA(UPLL), RAM>BR, 18602 A(BOX+MIX), BR>B, AND, 18603 JUMP(SPLL21); ----- ----- 636 00010D1D 6F060801 ----- 18604 .ORG SPLL21, *Y=ISYNC 18605 *IN BOX OR MIX MODE? 18606 A(ISYNC), BR>B, AND, 18607 JZ(SPLL22F,SPLL22T); ----- ----- D1D 00002638 00020801 ----- 18608 .ORG SPLL22F, *IN BOX OR MIX 18609 *ISYNC? 18610 JZ(SPLL22AF,SPLL22AT); ----- ----- 638 0000263A 00000000 ----- 18611 .ORG SPLL22AF, *BOX/MIX, BAD AND ISYNC 18612 *INSYNC=1 18613 AR>A, B(INSYNC), OR, 18614 Y>AR, 18615 JUMP(SPLL22T); ----- ----- 63A 00220639 00101010 ----- 18616 .ORG SPLL22AT, *NOT BOX/MIX, BAD AND ISYNC 18617 JUMP(SPLL22T); ----- ----- 63B 00000639 00000000 ----- 18618 * 18619 .ORG SPLL22T, *B=MREG1 18620 MA(MREG1), RAM>BR, 18621 JUMP(SPLL22A); ----- ----- 639 00010D1E 65000000 ----- 18622 .ORG SPLL22A, *Y=IFRUN 18623 A(IFRUN), BR>B, AND, 18624 JUMP(SPLL22B); ----- ----- D1E 00000D1F 00800801 ----- 18625 .ORG SPLL22B, *Y=SIX24 18626 *INHIBIT FREE-RUN? 18627 AR>A, B(SIX24), AND, 18628 JZ(SPLL22CF,SPLL22CT); ----- ----- D1F 0000263C 00040810 ----- 18629 .ORG SPLL22CF, *SIX24? 18630 *MUTE=1 18631 *JUMP TO GOOD CODE TO SET LOCK AND UPDATE PLL COEFFS 18632 *B=PLLRG2 18633 MA(PLLRG2), RAM>BR, 18634 AR>A, B(MUTE), OR, 18635 Y>AR, 18636 JZ(SPLL31F,SPLL31T); ----- ----- 63C 0023263E 0D801010 ----- 18637 *GO TO FREE RUN 18638 .ORG SPLL22CT, *MUTE=1 18639 AR>A, B(MUTE), OR, 18640 Y>AR, 18641 JUMP(SPLL23); ----- ----- 63D 00220D20 00801010 ----- 18642 .ORG SPLL23, *SET FINE COEFFS FOR FREE-RUN 18643 MA(PLLRG2), 18644 Y(>2D), 18645 Y>IO, 18646 JUMP(SPLL24); ----- ----- D20 00000D21 0D2D5000 ----- 18647 .ORG SPLL24, *SET COURSE COEFFS FOR FREE-RUN 18648 MA(PLLRG3), 18649 Y(>2D), 18650 Y>IO, 18651 JUMP(SPLL40); ----- ----- D21 00000D22 0E2D5000 ----- 18652 *GOOD QUALITY 18653 .ORG SPLL20T, *Y=SIX24 18654 AR>A, B(SIX24), AND, 18655 JUMP(SPLL30); ----- ----- 637 00000D23 00040810 ----- 18656 .ORG SPLL30, *MUTE=0 18657 *IN SIX24 MODE? 18658 *B=PLLRG2 18659 MA(PLLRG2), RAM>BR, 18660 AR>A, B(>FF-MUTE), AND, 18661 Y>AR, 18662 JZ(SPLL31F,SPLL31T); ----- ----- D23 0023263E 0D7F0810 ----- 18663 *ENTRY FROM BAD CODE IF FREE-RUN INHIBITED AND SIX24=0 18664 .ORG SPLL31T, *NOT SIX24 MODE, TRY TO LOCK 18665 AR>A, B(LOCK), OR, 18666 Y>AR, 18667 JUMP(SPLL31F); ----- ----- 63F 0022063E 00021010 ----- 18668 *ENTRY FROM BAD CODE IF FREE-RUN INHIBITED AND SIX24=1 18669 .ORG SPLL31F, *LOAD FINE COEFFS 18670 MA(PLLRG2), 18671 A(0), BR>B, OR, 18672 Y>IO, 18673 JUMP(SPLL32); ----- ----- 63E 00000D24 0D005001 ----- 18674 .ORG SPLL32, *B=PLLRG3 18675 MA(PLLRG3), RAM>BR, 18676 JUMP(SPLL33); ----- ----- D24 00010D25 0E000000 ----- 18677 .ORG SPLL33, *LOAD COURSE COEFFS 18678 MA(PLLRG3), 18679 A(0), BR>B, OR, 18680 Y>IO, 18681 JUMP(SPLL40); ----- ----- D25 00000D22 0E005001 ----- 18682 * 18683 .ORG SPLL40, *B=UPLL 18684 MA(UPLL), RAM>BR, 18685 JUMP(SPLL50); ----- ----- D22 00010D26 6F000000 ----- 18686 .ORG SPLL50, *Y=FSYNC 18687 A(FSYNC), BR>B, AND, 18688 JUMP(SPLL51); ----- ----- D26 00000D27 00100801 ----- 18689 .ORG SPLL51, *Y=ISYNC, FSYNC? 18690 A(ISYNC), BR>B, AND, 18691 JZ(SPLL52F,SPLL52T); ----- ----- D27 00002640 00020801 ----- 18692 .ORG SPLL52F, *FSYNC, ISYNC? 18693 JZ(SPLL53F,SPLL53T); ----- ----- 640 00002642 00000000 ----- 18694 .ORG SPLL53F, *FSYNC=1, ISYNC=1 18695 *INSYNC=1 18696 AR>A, B(INSYNC), OR, 18697 Y>AR, 18698 JUMP(SPLL52T); ----- ----- 642 00220641 00101010 ----- 18699 .ORG SPLL53T, *FSYNC=1, ISYNC=0 18700 *INSYNC=0 18701 AR>A, B(>FF-INSYNC), AND, 18702 Y>AR, 18703 JUMP(SPLL52T); ----- ----- 643 00220641 00EF0810 ----- 18704 * WORKING OUT NEW PLLRG1 IN A, B=UPLL 18705 .ORG SPLL52T, *Y=INSYNC 18706 AR>A, B(INSYNC), AND, 18707 JUMP(SPLL54); ----- ----- 641 00000D28 00100810 ----- 18708 .ORG SPLL54, *Y=MUTEM, INSYNC? 18709 *B=STSWD0 18710 MA(STSWD0), RAM>BR, 18711 A(MUTEM), BR>B, AND, 18712 JZ(SPLL55F,SPLL55T); ----- ----- D28 00012644 64800801 ----- 18713 *INSYNC=0 18714 .ORG SPLL55T, *EXTERNAL SYNC, POFF=0 18715 *MUTEM? 18716 MA(STSWD0), 18717 A(>FF-POFF), BR>B, AND, 18718 Y>RAM, 18719 JZ(SPLL56F,SPLL56T); ----- ----- 645 00002646 64BF0901 ----- 18720 .ORG SPLL56F, *MUTEM=1 18721 JUMP(SPLL60); ----- ----- 646 00000D29 00000000 ----- 18722 .ORG SPLL56T, *MUTEM=0, ONLY SET MUTE IF INTERNAL SYNC 18723 *MUTE=0 18724 AR>A, B(>FF-MUTE), AND, 18725 Y>AR, 18726 JUMP(SPLL60); ----- ----- 647 00220D29 007F0810 ----- 18727 *INSYNC=1 18728 .ORG SPLL55F, *INTERNAL SYNC, POFF=1 18729 MA(STSWD0), 18730 A(POFF), BR>B, OR, 18731 Y>RAM, 18732 JUMP(SPLL60); ----- ----- 644 00000D29 64401101 ----- 18733 * 18734 * TCJ June 93 18735 * Option in MODE2 added to invert MUTE signal 18736 * 18737 .ORG SPLL60, *R24B=!R24T 18738 MA(MREG2), RAM>AR, 18739 AR>A, B(R24T), XOR, 18740 Y>PR, 18741 JUMP(TCJSPLL61); ----- ----- D29 00020D2A EE401810 ----- 18742 * 18743 .ORG TCJSPLL61, *BR=new PLLRG1 value 18744 *AR=MREG2 & XMUTE 18745 AR>A, B(XMUTE), AND, 18746 Y>AR, PR>BR, 18747 JUMP(TCJSPLL62); ----- ----- D2A 00630D2B 00800810 ----- 18748 * 18749 .ORG TCJSPLL62, *UPDATE PLLRG1 18750 MA(PLLRG1), 18751 AR>A, BR>B, XOR, 18752 Y>IO, Y>RAM, 18753 JUMP(VPP703F); ----- ----- D2B 00000353 0C005911 ----- 18754 * 18755 ***WAIT: WAIT FOR BYTES 18756 * AR= number of bytes, RETURN= pointer to return address 18757 .ORG WAIT0F, *BYTE READY? 18758 MA(RETURN), RAM>BR, 18759 JBYTE(WAIT1F,WAIT1T); ----- ----- 64E 0001864C 7C000000 ----- 18760 .ORG WAIT1F, *LINE READY? 18761 JLINE(WAIT0F,WAIT0T); ----- ----- 64C 0000664E 00000000 ----- 18762 .ORG WAIT0T, *LINE READY, ERROR 18763 CBRDY, 18764 JUMP(PL0); ----- ----- 64F 000007F7 00002000 ----- 18765 .ORG WAIT1T, *AR=AR-1 2ND 18766 CBRDY, 18767 AR>A, B(-1), ADD, 18768 Y>AR, 18769 JUMP(WAIT2); ----- ----- 64D 00220D2C 00FF2010 ----- 18770 .ORG WAIT2, *Y=RETURN, LAST BYTE? 3RD 18771 A(0), BR>B, OR, 18772 JZ(WAIT3F,WAIT3T); ----- ----- D2C 00002650 00001001 ----- 18773 .ORG WAIT3F, *ANOTHER BYTE 18774 JBYTE(WAIT1F,WAIT1T); ----- ----- 650 0000864C 00000000 ----- 18775 .ORG WAIT3T, *LAST BYTE, CASE RETURN 4TH 18776 *Y=HAM 18777 A(0), HAM>B, OR, 18778 JY(CGB5Y); ----- ----- 651 0008C030 00001007 ----- 18779 * 18780 *+++POINT TO TELETEXT PAGE MEMORY 18781 * This routine updates the RWL and PR according to page memory 18782 * address stored in ROWPTR and COLPTR and increments the address. 18783 * 18784 * input pars are:- 18785 * B: ROWPTR (row and latch) 18786 * COLPTR: column pointer 18787 * return pars are:- 18788 * TPD: page data pointed to by ROWPTR and 18789 * COLPTR 18790 * ROWPTR,COLPTR: new pointer after increment 18791 * A: old row 18792 * B: old col 18793 * local variables used are:- 18794 * TEST, RET2 18795 * 18796 .ORG POINT0F, *AR=ROW 18797 *TEST=OLD ROW 18798 MA(TEST), 18799 A(%00011111), BR>B, AND, 18800 Y>AR, Y>RAM, 18801 JUMP(POINT1); ----- ----- B3D 00220D2D 701F0901 ----- 18802 .ORG POINT1, *PR=ROW*40 18803 *A=COLPTR 18804 MA(COLPTR), RAM>AR, 18805 AR<<3>A, AR<<5>B, ADD, 18806 Y>PR, 18807 JUMP(POINT2); ----- ----- D2D 00020D2E B1000059 ----- 18808 .ORG POINT2, *BR=PR 18809 *RET2=OLD COLPTR 18810 PR>BR, 18811 MA(RET2), 18812 AR>A, B(0), OR, 18813 Y>RAM, 18814 JUMP(POINT3); ----- ----- D2E 00410D2F 7B001110 ----- 18815 .ORG POINT3, *PR=AR+BR 18816 *AR=ROWPTR 18817 MA(ROWPTR), RAM>AR, 18818 AR>A, BR>B, ADD, 18819 Y>PR, 18820 JUMP(POINT4); ----- ----- D2F 00020D30 B0000011 ----- 18821 .ORG POINT4, *AR=LCH*2 18822 *BR=COLPTR 18823 MA(COLPTR), RAM>BR, 18824 ARHI>A, B(0), ADD, 18825 Y>AR, 18826 JUMP(POINT5); ----- ----- D30 00230D31 31000020 ----- 18827 .ORG POINT5, *RWL=LCH 18828 MA(RWL), 18829 AR>>1>A, B(7), AND, 18830 Y>RAM, Y>IO, 18831 JUMP(POINT6); ----- ----- D31 00000D32 0B0749E0 ----- 18832 .ORG POINT6, *Y=COLPTR-39 18833 *AR=ROWPTR 18834 MA(ROWPTR), RAM>AR, 18835 A(-39), BR>B, ADD, 18836 JUMP(POINT7); ----- ----- D32 00020D33 30D90001 ----- 18837 .ORG POINT7, *COLPTR=0 18838 MA(COLPTR), 18839 A(0), B(0), AND, 18840 Y>RAM, 18841 JZ(POINT8F,POINT8T); ----- ----- D33 00002652 31000900 ----- 18842 .ORG POINT8F, *INC COLPTR 18843 MA(COLPTR), 18844 A(1), BR>B, ADD, 18845 Y>RAM, 18846 JUMP(POINT9); ----- ----- 652 00000D34 31010101 ----- 18847 .ORG POINT8T, *INC ROW 18848 MA(ROWPTR), 18849 AR>A, B(1), ADD, 18850 Y>RAM, 18851 JUMP(POINT9); ----- ----- 653 00000D34 30010110 ----- 18852 .ORG POINT9, *AR=RETURN 18853 MA(RETURN), RAM>AR, 18854 JUMP(POINT10); ----- ----- D34 00020D35 7C000000 ----- 18855 .ORG POINT10, *Y=RETURN 18856 *B=OLD COL 18857 MA(RET2), RAM>BR, 18858 AR>A, B(1), AND, 18859 JUMP(POINT11); ----- ----- D35 00010D36 7B010810 ----- 18860 .ORG POINT11, *CASE RETURN=? 18861 *RVDP IS FOR RC60A 18862 *A=OLD ROW 18863 RVDP, 18864 MA(TEST), RAM>AR, 18865 JY(RC40Y); ----- ----- D36 0002C0C0 70008000 ----- 18866 * 18867 *+++CLEAR SCREEN ROUTINES 18868 * RET4=RETURN POINTER 18869 *+++CLEAR ROWS 1-24 AND PAGE RELATED DATA IN RWL 18870 .ORG CSCNA, *P=-8 18871 Y(-8), 18872 Y>PR, 18873 JUMP(CSCNA1); ----- ----- C83 00000D37 80F81000 ----- 18874 *ENTRY FROM CSCNC 18875 .ORG CSCNA1, *A=0 18876 Y(0), 18877 Y>AR, 18878 JUMP(CSCN3F); ----- ----- D37 00220654 00001000 ----- 18879 *+++CLEAR ROW24 OF RWL 18880 .ORG CSCNB, *P=-25 18881 Y(-25), 18882 Y>PR, 18883 JUMP(CSCNB1); ----- ----- C62 00000D38 80E71000 ----- 18884 .ORG CSCNB1, *A=-64 18885 Y(-64), 18886 Y>AR, 18887 JUMP(CSCN3F); ----- ----- D38 00220654 00C01000 ----- 18888 *+++CLEAR ROWS 1-23 OF RWL 18889 .ORG CSCNC, *P=-65 18890 Y(-65), 18891 Y>PR, 18892 JUMP(CSCNA1); ----- ----- D5B 00000D37 80BF1000 ----- 18893 *+++CLEAR PAGE RELATED DATA IN RWL 18894 .ORG CSCND, *P=-8 18895 Y(-8), 18896 Y>PR, 18897 JUMP(CSCND1); ----- ----- D5C 00000D39 80F81000 ----- 18898 .ORG CSCND1, *A=-24 18899 Y(-24), 18900 Y>AR, 18901 JUMP(CSCN3F); ----- ----- D39 00220654 00E81000 ----- 18902 *+++CLEAR MEM FROM PR TO AR INCLUSIVE IN RWL 18903 .ORG CSCN3F, *PR>BR, DR=>20, 18904 PR>BR, 18905 A(>20), B(>20), OR, 18906 Y>DR, 18907 JUMP(CSCN1); ----- ----- 654 00411D3A 00201000 ----- 18908 .ORG CSCN1, *Y=BR-AR 18909 NAR>A, BR>B, ADD, O>CIN, 18910 JUMP(CSCN2); ----- ----- D3A 00000D3B 00000441 ----- 18911 .ORG CSCN2, *LAST BYTE? 18912 *DEC P 18913 *BR=RET4 18914 MA(RET4), RAM>BR, 18915 A(-1), BR>B, ADD, 18916 Y>PR, 18917 JZ(CSCN3F,CSCN3T); ----- ----- D3B 00012654 F9FF0001 ----- 18918 *+++CLEARED LAST BYTE 18919 .ORG CSCN3T, *Y=RET4 18920 *B=SYS2 FOR ROW10 18921 MA(SYS2), RAM>BR, 18922 A(7), BR>B, AND, 18923 JUMP(CSCN4); ----- ----- 655 00010D3C 09070801 ----- 18924 .ORG CSCN4, * 18925 *AR=STOR1 (FOR INPCM41) 18926 MA(STOR1), RAM>AR, 18927 JY(SMENM7Y); ----- ----- D3C 0002C0D0 21000000 ----- 18928 * 18929 *+++MASK ROUTINE 18930 * 18931 * AR=THISRW=current row, RETURN is return pointer 18932 * This routine takes the current row and updates PR to point 18933 * to the clear row byte and places a mask for the bit for this 18934 * row in AR. It also places the row marker byte in TPD, B and RET2. 18935 * 18936 * This routine is also called by PDC triplet post-processing to 18937 * find the bit which should be set to indicate a particular DC 18938 * has been received. 18939 * 18940 * STORE is used as a temp store 18941 * 18942 *LOAD PR WITH POINTER TO CLEAR ROW MARKER BYTE 18943 *LOAD STORE WITH NUMBER FROM 0-7 INDICATING MARKER BIT 18944 .ORG MASK0, *Y=THISRW-17 18945 AR>A, B(-17), ADD, 18946 JUMP(MASK5); ----- ----- 7F9 00000D3D 00EF0010 ----- 18947 .ORG MASK5, *THISRW<17? 18948 *Y=THISRW-9 18949 AR>A, B(-9), ADD, 18950 JN(MASK6F,MASK6T); ----- ----- D3D 00004656 00F70010 ----- 18951 .ORG MASK6T, *THISRW<17 18952 *THISRW<9? 18953 *SPAREBY08 18954 *PR=-8 18955 Y(-8), 18956 Y>PR, 18957 JN(MASK7F,MASK7T); ----- ----- 657 00004658 80F81000 ----- 18958 *ROWS 17 TO 24 18959 .ORG MASK6F, *THISRW>=17 18960 *SPAREBY10 18961 *PR=-10 18962 Y(-10), 18963 Y>PR, 18964 JUMP(MASK8); ----- ----- 656 00000D3E 80F61000 ----- 18965 .ORG MASK8, *STORE=THISRW-17 18966 MA(STORE), 18967 AR>A, B(-17), ADD, 18968 Y>RAM, Y>AR, 18969 JUMP(MASK10); ----- ----- D3E 00220D3F 77EF0110 ----- 18970 *ROWS 9 TO 16 18971 .ORG MASK7F, *PR=-9 18972 *SPAREBY09 18973 Y(-9), 18974 Y>PR, 18975 JUMP(MASK9); ----- ----- 658 00000D40 80F71000 ----- 18976 .ORG MASK9, *STORE=THISRW-9 18977 MA(STORE), 18978 AR>A, B(-9), ADD, 18979 Y>RAM, Y>AR, 18980 JUMP(MASK10); ----- ----- D40 00220D3F 77F70110 ----- 18981 *ROWS 1 TO 8 18982 * PR=-8 18983 .ORG MASK7T, *STORE=THISRW-1 18984 MA(STORE), 18985 AR>A, B(-1), ADD, 18986 Y>RAM, Y>AR, 18987 JUMP(MASK10); ----- ----- 659 00220D3F 77FF0110 ----- 18988 *CONVERT STORE INTO MASK FOR ROW MARKER BYTE 18989 .ORG MASK10, *STORE=7-STORE 18990 RVDP, 18991 MA(STORE), 18992 NAR>A, B(>07), ADD, O>CIN, 18993 Y>RAM, 18994 JUMP(MASK11); ----- ----- D3F 00000D41 77078540 ----- 18995 .ORG MASK11, *AR=>80, MASK BIT START POINT (AVOID SIGN EXTEND) 18996 *BR=STORE 18997 MA(STORE), RAM>BR, 18998 A(>40), B(>40), ADD, 18999 Y>AR, 19000 JUMP(MASK12); ----- ----- D41 00230D42 77400000 ----- 19001 * 19002 .ORG MASK12, *STORE=STORE-1 19003 MA(STORE), 19004 A(-1), BR>B, ADD, 19005 Y>RAM, 19006 JUMP(MASK13); ----- ----- D42 00000D43 77FF0101 ----- 19007 .ORG MASK13, *STORE<0? 19008 *Y=MARKER BYTE AND MASK 19009 *USE RET2 AS TEMP STORE FOR MARKER BYTE 19010 MA(RET2), 19011 TPD>A, B(0), ADD, 19012 Y>RAM, 19013 JN(MASK14F,MASK14T); ----- ----- D43 0000465A 7B000190 ----- 19014 .ORG MASK14F, *SHIFT MASK BIT TO THE RIGHT 19015 *BR=STORE 19016 MA(STORE), RAM>BR, 19017 AR>>1>A, B(0), ADD, 19018 Y>AR, 19019 JUMP(MASK12); ----- ----- 65A 00230D42 770000E0 ----- 19020 *EXIT FROM MASK ROUTINE 19021 .ORG MASK14T, *BR=RETURN 19022 MA(RETURN), RAM>BR, 19023 JUMP(MASK14A); ----- ----- 65B 00010D44 7C000000 ----- 19024 .ORG MASK14A, *Y=RETURN 19025 A(3), BR>B, AND, 19026 JUMP(MASK14B); ----- ----- D44 00000D45 00030801 ----- 19027 .ORG MASK14B, *BR=MARKER BYTE 19028 MA(RET2), RAM>BR, 19029 JY(VPP215Y); ----- ----- D45 0001C0E0 7B000000 ----- 19030 * 19031 *+++CLOSE DOWN TELETEXT 19032 * 19033 * This routine closes any open mags and clears VBICAP and CAP 19034 * in all the latch flags. This is necessary when switching off 19035 * teletext due to a bad signal. 19036 * 19037 * input pars are:- 19038 * RETURN: return pointer 19039 * 19040 .ORG CDTXT0, *INIT LOOP 19041 Y(7), 19042 Y>AR, 19043 JUMP(CDTXT10F); ----- ----- 9A7 0022065C 00071000 ----- 19044 *LOOP START 19045 .ORG CDTXT10F, *P=MFx POINTER 19046 AR>A, B(MF0), ADD, 19047 Y>PR, 19048 JUMP(CDTXT11); ----- ----- 65C 00000D46 80580010 ----- 19049 .ORG CDTXT11, *B=MFx 19050 PR>MA, RAM>BR, 19051 JUMP(CDTXT12); ----- ----- D46 00110D47 00000000 ----- 19052 .ORG CDTXT12, *CLOSE IT (MLP=0, MO=0) 19053 PR>MA, 19054 A(0), BR.F0>B, OR, 19055 Y>RAM, 19056 JUMP(CDTXT13); ----- ----- D47 00100D48 00001103 ----- 19057 .ORG CDTXT13, *P=LAFx POINTER 19058 AR>A, B(LAF0), ADD, 19059 Y>PR, 19060 JUMP(CDTXT14); ----- ----- D48 00000D49 80400010 ----- 19061 .ORG CDTXT14, *B=LAFx 19062 *DEC LOOP 19063 PR>MA, RAM>BR, 19064 AR>A, B(-1), ADD, 19065 Y>AR, 19066 JUMP(CDTXT15); ----- ----- D49 00330D4A 00FF0010 ----- 19067 .ORG CDTXT15, *CLEAR VBICAP, CAP AND OPN 19068 *LOOP END? 19069 PR>MA, 19070 A(>FF-VBICAP-CAP-OPN), BR>B, AND, 19071 Y>RAM, 19072 JN(CDTXT10F,CDTXT10T); ----- ----- D4A 0010465C 002F0901 ----- 19073 *LOOP END 19074 .ORG CDTXT10T, *A=RETURN 19075 MA(RETURN), RAM>AR, 19076 JUMP(CDTXT20); ----- ----- 65D 00020D4B 7C000000 ----- 19077 .ORG CDTXT20, *Y=RETURN 19078 AR>A, B(1), AND, 19079 JUMP(CDTXT21); ----- ----- D4B 00000D4C 00010810 ----- 19080 .ORG CDTXT21, *RETURN=? 19081 JZ(VPP665F,STXT10T); ----- ----- D4C 0000265E 00000000 ----- 19082 ************************************************************************ 19083 * section 6: initialisation * 19084 ************************************************************************ 19085 .ORG HRST0, *H/W RESET ENTRY POINT 19086 *CLEAR HFLGS 19087 RSTRXTX, 19088 MA(HFLGS), 19089 A(0), B(0), ADD, 19090 Y>RAM, 19091 JUMP(SRST0); ----- ----- 000 00000B59 7F000300 ----- 19092 *+++ENTRY FROM SRST 19093 .ORG SRST0, *CLEAR REST OF SCRATCH RAM 19094 *PR=>7F 19095 CBRDY, 19096 A(>7F), B(>7F), OR, 19097 Y>PR, 19098 JUMP(SRST1); ----- ----- B59 00000D4D 807F3000 ----- 19099 .ORG SRST1, *BR=>7F 19100 PR>BR, 19101 JUMP(SRST3F); ----- ----- D4D 00410660 00000000 ----- 19102 * 19103 .ORG SRST3F, *PR=BR-1 19104 A(-1), BR>B, ADD, 19105 Y>PR, 19106 JUMP(SRST2); ----- ----- 660 00000D4E 80FF0001 ----- 19107 .ORG SRST2, *CLEAR LOC 19108 *PR==0? 19109 PR>MA, PR>BR, 19110 A(0), B(0), AND, 19111 Y>RAM, Y>IO, 19112 JZ(SRST3F,SRST3T); ----- ----- D4E 00512660 00004900 ----- 19113 *+++CLEAR PAGE MEMORY 19114 .ORG SRST3T, *INIT PAGE LOOP 19115 Y(8), 19116 Y>AR, 19117 JUMP(SRST7T); ----- ----- 661 00220665 00081000 ----- 19118 * 19119 .ORG SRST7T, *AR=AR-1 19120 *DEC LOOP VARIABLE AND SET READ/WRITE LATCH 19121 MA(RWL), 19122 AR>A, B(-1), ADD, 19123 Y>AR, Y>IO, 19124 JUMP(SRST4); ----- ----- 665 00220D4F 0BFF4010 ----- 19125 .ORG SRST4, *PR=0 19126 *AR<0? (LAST PAGE?) 19127 Y(0), 19128 Y>PR, 19129 JN(SRST5F,SRST5T); ----- ----- D4F 00004662 80001000 ----- 19130 .ORG SRST5F, *BR=0 19131 *CLEAR PAGE LOC 19132 PR>BR, 19133 Y(>20), 19134 Y>DR, 19135 JUMP(SRST7F); ----- ----- 662 00411664 00201000 ----- 19136 *CLEAR A PAGE 19137 .ORG SRST7F, *DEC SCREEN POINTER 19138 A(-1), BR>B, ADD, 19139 Y>PR, 19140 JUMP(SRST6); ----- ----- 664 00000D50 80FF0001 ----- 19141 .ORG SRST6, *COMPLETED THE PAGE? 19142 *CLEAR PAGE LOC 19143 *BR=PR 19144 PR>BR, 19145 Y(>20), 19146 Y>DR, 19147 JZ(SRST7F,SRST7T); ----- ----- D50 00413664 00201000 ----- 19148 *+++INIT STORE TABLE 19149 .ORG SRST5T, *AR=7 19150 *Y MUST NOT BE -VE FOR SRST14 19151 Y(7), 19152 Y>AR, 19153 JUMP(SRST14); ----- ----- 663 00220D51 00071000 ----- 19154 .ORG SRST14, *PR=AR+STOR0 19155 *BR=EXPREG 19156 MA(EXPREG), RAM>BR, 19157 AR>A, B(STOR0), ADD, 19158 Y>PR, 19159 JN(SRST15F,SRST15T); ----- ----- D51 00014666 E3200010 ----- 19160 .ORG SRST15F, *BR=STORx 19161 PR>MA, RAM>BR, 19162 JUMP(SRST16); ----- ----- 666 00110D52 00000000 ----- 19163 .ORG SRST16, *INIT STORx 19164 PR>MA, 19165 AR<<4>A, BR.0F>B, ADD, 19166 Y>RAM, 19167 JUMP(SRST17); ----- ----- D52 00100D53 00000132 ----- 19168 .ORG SRST17, *DEC AR 19169 AR>A, B(-1), ADD, 19170 Y>AR, 19171 JUMP(SRST14); ----- ----- D53 00220D51 00FF0010 ----- 19172 *+++NON-ZERO INITIALISATIONS 19173 .ORG SRST15T, *SET CLOCK TO YELLOW ON BLUE 19174 MA(VDP4), 19175 Y(>43), 19176 Y>RAM, Y>IO, 19177 JUMP(SRST20); ----- ----- 667 00000D54 04435100 ----- 19178 .ORG SRST20, *SET HYSTERISIS END STOP TO 3 19179 MA(HYSREG), 19180 Y(>30), 19181 Y>RAM, 19182 JUMP(SRST21); ----- ----- D54 00000D55 67301100 ----- 19183 *SET DEFAULT PLL COEFFS TO VALUES IN VAS'S MSG01378767 13/8/92 19184 .ORG SRST21, *SET FINE COEFFS TO 00 19185 MA(PLLRG2), 19186 Y(>00), 19187 Y>RAM, 19188 JUMP(SRST22); ----- ----- D55 00000D56 0D001100 ----- 19189 .ORG SRST22, *SET COARSE COEFFS TO 24 19190 MA(PLLRG3), 19191 Y(>24), 19192 Y>RAM, 19193 JUMP(SRST23); ----- ----- D56 00000D57 0E241100 ----- 19194 * 19195 * TCJ September 94, 19196 * 211 intialisation. 19197 * 19198 .ORG SRST23, * Set inital LANG2 to RUSSIAN 19199 Y(>00), *(was 32 for Russian =lg 11, lang=C12) 19200 MA(VDP3), Y>RAM, 19201 JUMP(SRST24); ----- ----- D57 00000D58 03001100 ----- 19202 * 19203 .ORG SRST24, * Set initial LANG to goup 3 19204 Y(>00), *(was 30 for russian (lg=11) 19205 MA(USRLAN), Y>RAM, 19206 JUMP(CHNG3); ----- ----- D58 000000D4 2D001100 ----- 19207 * 19208 *+++CHANGE CHANNEL INITIALISATION 19209 * 19210 *ENTRY POINT TO CLEAR DISPLAY PAGE 19211 .ORG CHNG0, *B=SYS2 19212 MA(SYS2), RAM>BR, 19213 JUMP(CHNG1); ----- ----- B5A 00010D59 09000000 ----- 19214 .ORG CHNG1, *A=STOR0 19215 *Y=APIN 19216 MA(STOR0), RAM>AR, 19217 A(APIN), BR>B, AND, 19218 JUMP(CHNG1A); ----- ----- D59 00020D5A 20010801 ----- 19219 .ORG CHNG1A, *RWL= DISPLAY PAGE LATCH 19220 *AUTO MENUS DISABLED? 19221 MA(RWL), 19222 ARHI>A, B(0), OR, 19223 Y>RAM, Y>IO, 19224 JZ(CHNG2F,CHNG2T); ----- ----- D5A 00002668 0B005120 ----- 19225 *CLEAR ROWS 1-24 AND PAGE RELATED DATA 19226 .ORG CHNG2T, *CALL CSCNA 19227 *RET4=4, RETURN TO CHNG3 19228 MA(RET4), 19229 Y(4), 19230 Y>RAM, 19231 JUMP(CSCNA); ----- ----- 669 00000C83 79041100 ----- 19232 *AUTO MENUS DISABLED, DO NOT CLEAR ROW 24 19233 .ORG CHNG2F, *CLEAR ROWS 1-23 19234 *CALL CSCNC 19235 *RET4=6, RETURN TO CHNG2A 19236 MA(RET4), 19237 Y(6), 19238 Y>RAM, 19239 JUMP(CSCNC); ----- ----- 668 00000D5B 79061100 ----- 19240 .ORG CHNG2A, *CLEAR PAGE RELATED DATA 19241 *CALL CSCND 19242 *RET4=7, RETURN TO CHNG2B 19243 MA(RET4), 19244 Y(7), 19245 Y>RAM, 19246 JUMP(CSCND); ----- ----- 0D6 00000D5C 79071100 ----- 19247 .ORG CHNG2B, 19248 JUMP(CHNG3); ----- ----- 0D7 000000D4 00000000 ----- 19249 *CLEAR NON-DISPLAY TELETEXT PAGES AND INITIALISE LATCH FLAGS 19250 .ORG CHNG3, *INIT LOOP VARIABLE 19251 MA(LOCAL), 19252 Y(8), 19253 Y>RAM, 19254 JUMP(CHNG4); ----- ----- 0D4 000000D5 72081100 ----- 19255 * 19256 .ORG CHNG4, *A=LOOP 19257 MA(LOCAL), RAM>AR, 19258 JUMP(CHNG5); ----- ----- 0D5 00020D5D 72000000 ----- 19259 .ORG CHNG5, *DEC LOOP 19260 MA(LOCAL), 19261 AR>A, B(-1), ADD, 19262 Y>RAM, Y>AR, 19263 JUMP(CHNG6); ----- ----- D5D 00220D5E 72FF0110 ----- 19264 .ORG CHNG6, *MORE LATCHES? 19265 *B=STORE0 19266 *P=INDEX TO LATCH FLAGS 19267 MA(STOR0), RAM>BR, 19268 AR>A, B(LAF0), ADD, 19269 Y>PR, 19270 JN(CHNG7F,CHNG7T); ----- ----- D5E 0001466A A0400010 ----- 19271 .ORG CHNG7F, *COMPARE THIS LATCH WITH DISPLAY LATCH 19272 *B=LAFx 19273 PR>MA, RAM>BR, 19274 AR>A, BRHI>B, XOR, 19275 JUMP(CHNG8); ----- ----- 66A 00110D5F 0000181C ----- 19276 .ORG CHNG8, *DISPLAY LATCH? 19277 *Y=MENU PAGE FLAG 19278 A(MPG), BR>B, AND, 19279 JZ(CHNG9F,CHNG9T); ----- ----- D5F 0000266C 00040801 ----- 19280 .ORG CHNG9T, *DISPLAY LATCH 19281 *CLEAR LAFx 19282 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 19283 PR>MA, 19284 Y(0), 19285 Y>RAM, 19286 JUMP(CHNG4); ----- ----- 66D 001000D5 00001100 ----- 19287 .ORG CHNG9F, *MENU PAGE? 19288 *RET4=5 19289 MA(RET4), 19290 Y(5), 19291 Y>RAM, 19292 JZ(CHNG10F,CHNG10T); ----- ----- 66C 0000266E 79051100 ----- 19293 .ORG CHNG10F, *MENU PAGE, DO NOT CLEAR 19294 JUMP(CHNG4); ----- ----- 66E 000000D5 00000000 ----- 19295 .ORG CHNG10T, *TELETEXT PAGE, CLEAR IT 19296 *RWL=THIS LATCH 19297 MA(RWL), 19298 AR>A, B(0), OR, 19299 Y>RAM, Y>IO, 19300 JUMP(CHNG11); ----- ----- 66F 00000D60 0B005110 ----- 19301 .ORG CHNG11, *CLEAR LAFx 19302 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 19303 *CALL CSCNA 19304 *RET4=5, RETURN TO CHNG4 19305 PR>MA, 19306 Y(0), 19307 Y>RAM, 19308 JUMP(CSCNA); ----- ----- D60 00100C83 00001100 ----- 19309 * 19310 .ORG CHNG7T, *INITIALISE TOP FLAGS 19311 *TOPRG1=0 19312 *(BTTERR=BTTCAP=BTTP=BTTUP=BTT UPDATE CODE=0) 19313 MA(TOPRG1), 19314 Y(0), 19315 Y>RAM, 19316 JUMP(CHNG12); ----- ----- 66B 00000D61 37001100 ----- 19317 .ORG CHNG12, *POINT TO LATCH CONTAINING FORMAT 1 PACKET COUNT 19318 MA(RWL), 19319 Y(0), 19320 Y>RAM, Y>IO, 19321 JUMP(CHNG12A); ----- ----- D61 00000D62 0B005100 ----- 19322 .ORG CHNG12A, *A=HYSREG 19323 *POINT TO FORMAT 1 PACKET COUNT 19324 MA(HYSREG), RAM>AR, 19325 Y(-7), 19326 Y>PR, 19327 JUMP(CHNG13); ----- ----- D62 00020D63 E7F91000 ----- 19328 .ORG CHNG13, *INIT HYSTERISIS COUNT 19329 MA(HYSREG), 19330 AR.F0>A, B(0), OR, 19331 Y>RAM, 19332 JUMP(CHNG14); ----- ----- D63 00000D64 670011D0 ----- 19333 .ORG CHNG14, *A=STSWD0 19334 MA(STSWD0), RAM>AR, 19335 JUMP(CHNG15); ----- ----- D64 00020D65 64000000 ----- 19336 .ORG CHNG15, *BADFLG=1 19337 MA(STSWD0), 19338 AR>A, B(BADFLG), OR, 19339 Y>AR, 19340 JUMP(CHNG16); ----- ----- D65 00220D66 64101010 ----- 19341 .ORG CHNG16, *TFLG=0, FFLG=0 19342 MA(STSWD0), 19343 AR>A, B(>FF-TFLG-FFLG), AND, 19344 Y>RAM, 19345 JUMP(CHNG18); ----- ----- D66 00000D67 645F0910 ----- 19346 .ORG CHNG18, *INITIALISE ERROR COUNT 19347 *INITIALISE FORMAT 1 PACKET COUNT 19348 MA(ERRCNT), 19349 Y(0), 19350 Y>RAM, Y>DR, 19351 JUMP(CHNG19); ----- ----- D67 00001D68 3A001100 ----- 19352 .ORG CHNG19, *INITIALISE INVENTORY COUNT 19353 MA(INVCNT), 19354 Y(0), 19355 Y>RAM, 19356 JUMP(CHNG20); ----- ----- D68 00000D69 38001100 ----- 19357 .ORG CHNG20, *A=VDPTXT 19358 MA(VDPTXT), RAM>AR, 19359 JUMP(CHNG21); ----- ----- D69 00020D6A 2B000000 ----- 19360 .ORG CHNG21, *CLEAR UPD, C8YET, URVL, UEXT, UEXB 19361 MA(VDPTXT), 19362 AR>A, B(>FF-UPD-C8YET-URVL-UEXT-UEXB), AND, 19363 Y>RAM, 19364 JUMP(CHNG21A); ----- ----- D6A 00000D6B 2BC40910 ----- 19365 * 19366 .ORG CHNG21A, *Fetch ststus byte containing TVPS flag 19367 MA(SYS2), RAM>AR, 19368 JUMP(CHNG21B); ----- ----- D6B 00020D6C 09000000 ----- 19369 * 19370 .ORG CHNG21B, *Clear the TVPS flag 19371 MA(SYS2), 19372 AR>A, B(>FF-TVPS), AND, 19373 Y>RAM, 19374 JUMP(CHNG22); ----- ----- D6C 00000D6D 09EF0910 ----- 19375 * 19376 *NULLIFY FAVOURITE PAGES 19377 .ORG CHNG22, *RWL=LATCH 5 19378 MA(RWL), 19379 Y(5), 19380 Y>RAM, Y>IO, 19381 JUMP(CHNG23); ----- ----- D6D 00000D6E 0B055100 ----- 19382 .ORG CHNG23, *INIT LATCH COUNT 19383 Y(2), 19384 Y>AR, 19385 JUMP(CHNG24F); ----- ----- D6E 00220672 00021000 ----- 19386 *LATCH LOOP START 19387 .ORG CHNG24F, *POINT TO FIRST FAVOURITE PAGE DIGIT IN LATCH 19388 Y(-7), 19389 Y>PR, 19390 JUMP(CHNG25F); ----- ----- 672 00000670 80F91000 ----- 19391 *BYTE LOOP START 19392 .ORG CHNG25F, *SET MSB TO NULLIFY DIGIT 19393 *B=POINTER 19394 PR>BR, 19395 Y(>80), 19396 Y>DR, 19397 JUMP(CHNG26); ----- ----- 670 00411D6F 00801000 ----- 19398 .ORG CHNG26, *Y=POINTER+2 19399 A(2), BR>B, ADD, 19400 JUMP(CHNG27); ----- ----- D6F 00000D70 00020001 ----- 19401 .ORG CHNG27, *POINTER++, LAST BYTE? 19402 A(1), BR>B, ADD, 19403 Y>PR, 19404 JZ(CHNG25F,CHNG25T); ----- ----- D70 00002670 80010001 ----- 19405 *END OF BYTE LOOP 19406 .ORG CHNG25T, *LATCH COUNT-- 19407 AR>A, B(-1), ADD, 19408 Y>AR, 19409 JUMP(CHNG28); ----- ----- 671 00220D71 00FF0010 ----- 19410 .ORG CHNG28, *RWL=LATCH 6 19411 *LAST LATCH? 19412 MA(RWL), 19413 Y(6), 19414 Y>RAM, Y>IO, 19415 JZ(CHNG24F,CHNG24T); ----- ----- D71 00002672 0B065100 ----- 19416 *END OF LATCH LOOP 19417 .ORG CHNG24T, *A=SYS1 19418 MA(SYS1), RAM>AR, 19419 JUMP(CHNG48); ----- ----- 673 00020D72 08000000 ----- 19420 .ORG CHNG48, *ALWAYS START OFF IN NORMAL 19421 *PCM=0, FIND=1 19422 MA(SYS1), 19423 AR.0F>A, B(FIND), OR, 19424 Y>RAM, 19425 JUMP(CHNG49); ----- ----- D72 00000D73 080811C0 ----- 19426 .ORG CHNG49, *CALL INPCM TO INIT PAGE CAPTURE MODE 19427 *RETURN=0, RETURN TO CHNG50Y 19428 MA(RETURN), 19429 Y(0), 19430 Y>RAM, 19431 JUMP(INPCM0); ----- ----- D73 00000901 7C001100 ----- 19432 .ORG CHNG50Y, *BR=EXPREG 19433 MA(EXPREG), RAM>BR, 19434 JUMP(CHNG51); ----- ----- 620 00010D74 63000000 ----- 19435 .ORG CHNG51, *Y=USM 19436 A(USM), BR>B, AND, 19437 JUMP(CHNG52); ----- ----- D74 00000D75 00020801 ----- 19438 .ORG CHNG52, *USER STATUS MODE? 19439 JZ(CHNG55F,CHNG55T); ----- ----- D75 00002674 00000000 ----- 19440 .ORG CHNG55F, *CPRF=1 (CLEAR ROW 24 BEFORE COPYING STATUS) 19441 *SINP=1 (SEARCH FOR PACKET 8/30 INIT PAGE) 19442 MA(EXPREG), 19443 A(CPRF+SINP), BR>B, OR, 19444 Y>AR, 19445 JUMP(CHNG56); ----- ----- 674 00220D76 63141001 ----- 19446 .ORG CHNG55T, *SINP=1 (SEARCH FOR PACKET 8/30 INIT PAGE) 19447 MA(EXPREG), 19448 A(SINP), BR>B, OR, 19449 Y>AR, *TCJ Flof initail page 19450 * JUMP(CHNG59); 19451 JUMP(CHNG56); ----- ----- 675 00220D76 63101001 ----- 19452 * 19453 * TCJ June 93 19454 * To correct use of old 8/30 status on channel change bug. 19455 * clear SRTC to force wait for new 8/30. Old version only 19456 * cleared this flag if USM was set. 19457 * 19458 .ORG CHNG56, *SRTC=0 (WAIT FOR NEW STATUS) 19459 MA(EXPREG), 19460 AR>A, B(>FF-SRTC), AND, 19461 Y>RAM, 19462 JUMP(CHNG59); ----- ----- D76 00000D77 63FE0910 ----- 19463 * 19464 .ORG CHNG59, *INIT SUB-PAGE REGISTERS 19465 *(CMPE ONLY DOES THIS IF SUB-PAGE MODE SET) 19466 *A=1, RETURN TO CHNG59A, 19467 Y(1), 19468 Y>AR, 19469 JUMP(INSPRG0); ----- ----- D77 002208C0 00011000 ----- 19470 * B=LSTINS 19471 .ORG CHNG59A, *Y=LSTINS XOR >06 19472 A(>06), BR>B, XOR, 19473 JUMP(CHNG59B); ----- ----- 6B1 00000D78 00061801 ----- 19474 .ORG CHNG59B, *CHNGE3? 19475 *Y=LSTINS XOR >07 19476 A(>07), BR>B, XOR, 19477 JZ(CHNG60F,CHNG60T); ----- ----- D78 00002676 00071801 ----- 19478 .ORG CHNG60T, *CHNGE3, DO NOT INIT TO PAGE 100 19479 *COUNT=>7 (INHIBIT SINP CLEAR, CLEAR BROWSE AND HOLD) 19480 MA(COUNT), 19481 Y(7), 19482 Y>RAM, 19483 JUMP(CMPE1); ----- ----- 677 00000BCD 78071100 ----- 19484 .ORG CHNG60F, *CHNGE4? 19485 *COUNT=>7 (INHIBIT SINP CLEAR, CLEAR BROWSE AND HOLD) 19486 MA(COUNT), 19487 Y(7), 19488 Y>RAM, 19489 JZ(CHNG60AF,CHNG60AT); ----- ----- 676 0000267C 78071100 ----- 19490 .ORG CHNG60AT, *CHNGE4, DO NOT INIT TO PAGE 100 19491 JUMP(CMPE1); ----- ----- 67D 00000BCD 00000000 ----- 19492 *+++INIT TO DISPLAY AND PREVIOUS PAGE TO 100 19493 *ENTRY POINT FROM INDEX KEY ROUTINE (IKR13F) 19494 .ORG CHNG60AF, *DPM=>11 19495 MA(DPM), 19496 Y(>11), 19497 Y>RAM, 19498 JUMP(CHNG61); ----- ----- 67C 00000D79 68111100 ----- 19499 .ORG CHNG61, *DPT=0 19500 MA(DPT), 19501 Y(0), 19502 Y>RAM, 19503 JUMP(CHNG62); ----- ----- D79 00000D7A 69001100 ----- 19504 .ORG CHNG62, *DPU=0 19505 MA(DPU), 19506 Y(0), 19507 Y>RAM, 19508 JUMP(CMPE1); ----- ----- D7A 00000BCD 6A001100 ----- 19509 * 19510 *+++INPCM: INITIALISE PAGE CAPTURE MODE 19511 * This routine assumes that sub-page mode is not set or will 19512 * be cleared. 19513 * 19514 * RETURN=RETURN POINTER 19515 .ORG INPCM0, *B=SYS2 19516 MA(SYS2), RAM>BR, 19517 JUMP(INPCM0A); ----- ----- 901 00010D7B 09000000 ----- 19518 .ORG INPCM0A, *S6T1=0 19519 MA(SYS2), 19520 A(>FF-S6T1), BR>B, AND, 19521 Y>RAM, 19522 JUMP(INPCM1); ----- ----- D7B 00000D7C 09DF0901 ----- 19523 *LOOP TO CLEAR APPROPRIATE LATCH FLAGS 19524 .ORG INPCM1, *INIT LOOP VARIABLE 19525 *LOCAL=8 19526 MA(LOCAL), 19527 Y(8), 19528 Y>RAM, 19529 JUMP(INPCM2T); ----- ----- D7C 00000D7D 72081100 ----- 19530 *LOOP START 19531 .ORG INPCM2T, *A=LOOP 19532 MA(LOCAL), RAM>AR, 19533 JUMP(INPCM3); ----- ----- D7D 00020D7E 72000000 ----- 19534 .ORG INPCM3, *LOOP-- 19535 MA(LOCAL), 19536 AR>A, B(-1), ADD, 19537 Y>RAM, Y>AR, 19538 JUMP(INPCM10); ----- ----- D7E 00220D7F 72FF0110 ----- 19539 .ORG INPCM10, *P=INDEX TO LAFx 19540 *FINISHED? 19541 *B=STOR0 19542 MA(STOR0), RAM>BR, 19543 AR>A, B(LAF0), ADD, 19544 Y>PR, 19545 JN(INPCM11F,INPCM11T); ----- ----- D7F 0001467E A0400010 ----- 19546 .ORG INPCM11T, *YES, EXIT 19547 *B=SYS1 19548 MA(SYS1), RAM>BR, 19549 JUMP(INPCM15); ----- ----- 67F 00010D80 08000000 ----- 19550 .ORG INPCM11F, *COMPARE LATCH WITH LATCH FOR DISPLAY PAGE 19551 AR>A, BRHI>B, XOR, 19552 JUMP(INPCM11A); ----- ----- 67E 00000D81 0000181C ----- 19553 .ORG INPCM11A, *B=LAFx 19554 *IS THIS THE DISPLAY PAGE? 19555 PR>MA, RAM>BR, 19556 JZ(INPCM12F,INPCM12T); ----- ----- D81 00112680 00000000 ----- 19557 *THIS IS THE DISPLAY LATCH, DO NOT INITIALISE IT 19558 .ORG INPCM12T, * 19559 JUMP(INPCM2T); ----- ----- 681 00000D7D 00000000 ----- 19560 *NOT THE DISPLAY LATCH 19561 .ORG INPCM12F, *Y=AITL 19562 *B=STOR1 19563 MA(STOR1), RAM>BR, 19564 A(AITL), BR>B, AND, 19565 JUMP(INPCM13); ----- ----- 680 00010D82 21010801 ----- 19566 .ORG INPCM13, *Y= THIS LATCH XOR LATCH FOR STORE 1, AITL? 19567 *A=LAFx 19568 PR>MA, RAM>AR, 19569 AR>A, BRHI>B, XOR, 19570 JZ(INPCM14F,INPCM14T); ----- ----- D82 00122682 0000181C ----- 19571 .ORG INPCM14F, *AIT TOP TABLE 19572 *CLEAR LAFx 19573 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 19574 PR>MA, 19575 Y(0), 19576 Y>RAM, 19577 JUMP(INPCM2T); ----- ----- 682 00100D7D 00001100 ----- 19578 .ORG INPCM14T, *IS THIS STORE 1 LATCH? 19579 *Y=BTTL, B=SYS1 19580 MA(SYS1), RAM>BR, 19581 AR>A, B(BTTL), AND, 19582 JZ(INPCM14AF,INPCM14AT); ----- ----- 683 00012684 08020810 ----- 19583 .ORG INPCM14AF, *NO, EXIT 19584 JUMP(INPCM2T); ----- ----- 684 00000D7D 00000000 ----- 19585 .ORG INPCM14AT, *STORE 1 LATCH, BTTL? 19586 *Y=PCM-2 19587 *A=STOR1 19588 MA(STOR1), RAM>AR, 19589 A(-2), BRHI>B, ADD, 19590 JZ(INPCM14BF,INPCM14BT); ----- ----- 685 00022686 21FE000C ----- 19591 .ORG INPCM14BF, *BTT, GOING TO FLOF MODE? 19592 *RET4=2 19593 MA(RET4), 19594 Y(2), 19595 Y>RAM, 19596 JZ(INPCM14CF,INPCM14CT); ----- ----- 686 00002688 79021100 ----- 19597 .ORG INPCM14CF, *LATCH IS A BTT, 19598 *NEW MODE IS NOT FLOF SO LEAVE IT 19599 JUMP(INPCM2T); ----- ----- 688 00000D7D 00000000 ----- 19600 .ORG INPCM14CT, *LATCH IS A BTT 19601 *NEW MODE IS FLOF SO CLEAR IT 19602 *CLEAR LAFx 19603 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 19604 PR>MA, 19605 Y(0), 19606 Y>RAM, 19607 JUMP(INPCM14DT); ----- ----- 689 0010068B 00001100 ----- 19608 .ORG INPCM14BT, *NOT A BTT, FLOF MODE? 19609 *RET4=2 19610 MA(RET4), 19611 Y(2), 19612 Y>RAM, 19613 JZ(INPCM14DF,INPCM14DT); ----- ----- 687 0000268A 79021100 ----- 19614 .ORG INPCM14DT, *LATCH NOT A BTT 19615 *NEW MODE IS FLOF SO LEAVE IT 19616 JUMP(INPCM2T); ----- ----- 68B 00000D7D 00000000 ----- 19617 *CLEAR STORE 1 19618 .ORG INPCM14DF, *LATCH NOT A BTT 19619 *NEW MODE IS NOT FLOF SO CLEAR IT 19620 *RWL= LATCH FOR STORE 1 19621 *CALL CSCNA TO CLEAR BTT 19622 *RET4=2, RETURN TO INPCM14E 19623 MA(RWL), 19624 ARHI>A, B(0), OR, 19625 Y>RAM, Y>IO, 19626 JUMP(CSCNA); ----- ----- 68A 00000C83 0B005120 ----- 19627 .ORG INPCM14E, *CLEAR INVENTORY COUNT 19628 MA(INVCNT), 19629 Y(0), 19630 Y>RAM, 19631 JUMP(INPCM2T); ----- ----- 0D2 00000D7D 38001100 ----- 19632 *INIT LATCH FLAGS ACCORDING TO PAGE CAPTURE MODE 19633 * BR=SYS1 19634 .ORG INPCM15, *Y=PCM 19635 *A=LTK 19636 MA(LTK), RAM>AR, 19637 A(3), BRHI>B, AND, 19638 JUMP(INPCM20); ----- ----- D80 00020D83 1103080C ----- 19639 .ORG INPCM20, *CASE PAGE CAPTURE MODE 19640 *B=STOR3 19641 MA(STOR3), RAM>BR, 19642 JY(INPCM30Y); ----- ----- D83 0001C630 23000000 ----- 19643 *ENTRY POINT FROM TOP AND FAVP INIT 19644 .ORG INPCM30Y, *NORMAL MODE 19645 *AR=STOR1 19646 MA(STOR1), RAM>AR, 19647 JUMP(INPCM40); ----- ----- 630 00020D84 21000000 ----- 19648 .ORG INPCM31, *TOP MODE 19649 *INIT LAST TOP KEY (LTK=0) 19650 *GO TO NORMAL CODE 19651 *OTHER TOP INIT IS DONE IN BTTP AND BTTUP CODE 19652 MA(LTK), 19653 AR.0F>A, B(0), OR, 19654 Y>RAM, 19655 JUMP(INPCM30Y); ----- ----- 631 00000630 110011C0 ----- 19656 .ORG INPCM32, *FLOF MODE 19657 *CLEAR TOP FLAGS 19658 * 19659 * Do not set CGAP and CPRF like other modes because this will 19660 * erase row 24 when initialising FLOF after displaying a legal 19661 * FLOF page which has been captured in background memory. 19662 * 19663 MA(TOPRG1), 19664 Y(0), 19665 Y>RAM, 19666 JUMP(INPCM70); ----- ----- 632 00000D85 37001100 ----- 19667 .ORG INPCM33, *FAVP MODE, DO THE SAME AS NORMAL 19668 JUMP(INPCM30Y); ----- ----- 633 00000630 00000000 ----- 19669 *INITIALISE NORMAL MODE AND TOP MODE 19670 * AR=STOR1 19671 .ORG INPCM40, *P=INDEX TO LAFx 19672 ARHI>A, B(LAF0), ADD, 19673 Y>PR, 19674 JUMP(INPCM41); ----- ----- D84 00000D86 80400020 ----- 19675 .ORG INPCM41, *B=LAFx 19676 PR>MA, RAM>BR, 19677 JUMP(INPCM42); ----- ----- D86 00110D87 00000000 ----- 19678 .ORG INPCM42, *BTTL=1 19679 PR>MA, 19680 A(BTTL), BR>B, OR, 19681 Y>RAM, 19682 JUMP(INPCM43); ----- ----- D87 00100D88 00021101 ----- 19683 .ORG INPCM43, *P=INDEX TO LATCH MAGS 19684 ARHI>A, B(M0), ADD, 19685 Y>PR, 19686 JUMP(INPCM44); ----- ----- D88 00000D89 80100020 ----- 19687 .ORG INPCM44, *B=Mx 19688 PR>MA, RAM>BR, 19689 JUMP(INPCM45); ----- ----- D89 00110D8A 00000000 ----- 19690 .ORG INPCM45, *SET LATCH TO NULL VALUE 19691 PR>MA, 19692 A(>0F), BR.F0>B, OR, 19693 Y>RAM, Y>IO, 19694 JUMP(INPCM60); ----- ----- D8A 00100D8B 000F5103 ----- 19695 .ORG INPCM60, *B=EXPREG 19696 MA(EXPREG), RAM>BR, 19697 JUMP(INPCM61); ----- ----- D8B 00010D8C 63000000 ----- 19698 .ORG INPCM61, *GENERATE A PROMPT (CLEAR ROW FIRST) 19699 *CGAP=1, CPRF=1 19700 MA(EXPREG), 19701 A(CGAP+CPRF), BR>B, OR, 19702 Y>RAM, 19703 JUMP(INPCM70); ----- ----- D8C 00000D85 630C1101 ----- 19704 *COMMON CODE FOR ALL PAGE CAPTURE MODES 19705 *CLEAR SUB-PAGE REGISTERS TO CLEAR AIT SET UPS 19706 .ORG INPCM70, *CALL INSPRG0 19707 *A=3, RETURN TO INPCM80 19708 Y(3), 19709 Y>AR, 19710 JUMP(INSPRG0); ----- ----- D85 002208C0 00031000 ----- 19711 *EXIT 19712 .ORG INPCM80, *A=RETURN 19713 MA(RETURN), RAM>AR, 19714 JUMP(INPCM81); ----- ----- 6B3 00020D8D 7C000000 ----- 19715 .ORG INPCM81, *Y=RETURN 19716 *B=VPPRG1 19717 MA(VPPRG1), RAM>BR, 19718 AR>A, B(3), AND, 19719 JUMP(INPCM82); ----- ----- D8D 00010D8E 61030810 ----- 19720 .ORG INPCM82, *CASE RETURN=? 19721 *SORT BACK GROUND LATCHES 19722 MA(VPPRG1), 19723 A(SBL), BR>B, OR, 19724 Y>RAM, 19725 * 19726 * All INPCM calls should end up at CMPE0/1 to clear sub-page 19727 * mode unless the call can only occur when main page mode is set 19728 * (eg TPP calls). 19729 * 19730 JY(CHNG50Y); ----- ----- D8E 0000C620 61801101 ----- 19731 * 19732 *INSPRG: INITIALISE SUB-PAGE REGISTERS 19733 * A=RETURN POINTER 19734 .ORG INSPRG0, *LFPCL0=NULL 19735 MA(SPREG0), 19736 Y(>F0), 19737 Y>RAM, 19738 JUMP(INSPRG1); ----- ----- 8C0 00000D8F 54F01100 ----- 19739 .ORG INSPRG1, *LFPCL1=NULL 19740 MA(SPREG1), 19741 Y(>F0), 19742 Y>RAM, 19743 JUMP(INSPRG2); ----- ----- D8F 00000D9A 55F01100 ----- 19744 .ORG INSPRG2, *LFPCL2=NULL 19745 MA(SPREG2), 19746 Y(>F0), 19747 Y>RAM, 19748 JUMP(INSPRG3); ----- ----- D9A 00000D9B 56F01100 ----- 19749 .ORG INSPRG3, *LFSP0=NULL 19750 *(ALSO SP0I=0) 19751 MA(LFSP0), 19752 * MA(SP0I), 19753 Y(>0F), 19754 Y>RAM, 19755 JUMP(INSPRG4); ----- ----- D9B 00000D9C 480F1100 ----- 19756 .ORG INSPRG4, *LFSP1=NULL 19757 *(ALSO SP0X=0) 19758 MA(LFSP1), 19759 * MA(SP0X), 19760 Y(>0F), 19761 Y>RAM, 19762 JUMP(INSPRG5); ----- ----- D9C 00000D9D 490F1100 ----- 19763 .ORG INSPRG5, *Y=RETURN POINTER 19764 *BR=LSTINS 19765 MA(LSTINS), RAM>BR, 19766 AR>A, B(3), AND, 19767 JUMP(INSPRG6); ----- ----- D9D 00010D9E 2E030810 ----- 19768 .ORG INSPRG6, *LFSP2=NULL 19769 *(ALSO SP0C=0) 19770 MA(LFSP2), 19771 * MA(SP0C), 19772 Y(>0F), 19773 Y>RAM, 19774 JY(TPP50Y); ----- ----- D9E 0000C6B0 4A0F1100 ----- 19775 *.END 19776 ************************************************************************ 19777 * * 19778 * EUROTEXT: TEST Microcode SHC * 19779 * * 19780 * CONCATANATED ON 19/01/93 BY SHC * 19781 * * 19782 ************************************************************************ 19783 *IDT 'EUROTEST' * 8 character label for .OBJ file * 19784 *SIZ >E00; * 19785 *TITL 'EUROTEXT Test Microcode' * 19786 *ETFO * EUROTEXT format, 64 bit object and no variable bit reverse * 19787 *OUT 56; * 19788 * * 19789 *Design rules:- -RVDP before TPD * 19790 * -one instruction between JBYTE and CBRDY * 19791 * -if RVDP and Y>DR in the same instruction, TPD will * 19792 * be updated in the next instruction and the write will * 19793 * occur in the next instruction * 19794 * -can't do a RVDP in the instruction after a Y>DR * 19795 * * 19796 *----------------------------------------------------------------------* 19797 ************************************************************************ 19798 * TEST MICROCODE DEFINITIONS ONLY * 19799 ************************************************************************ 19800 * C 19801 * P AB JJJD P RVB AAAABBBB 19802 * CERFFLL MMML< ROM > L< RAM > VDR CE MMMMMMMM 19803 * MMMEEDD PPPD D DPDSSIXWSSSSSSSS 19804 * SSA10TT 210TBA9876543210 T654321076543210 PCY10NTE32103210 19805 * 19806 * ||||||| |||||||||||||||| |||||||||||||||| |||||||||||||||| 19807 * 19808 *A INPUT TO ALU 19809 * 19810 *DEF A(?), 0000000 0000000000000000 00000000???????? 00000000ZZZZ0000; 19811 *DEF AR>A, 0000000 0000000000000000 0000000000000000 00000000ZZZ10000; 19812 .DEF TPD7>A, 0000000 0000000000000000 0000000000000000 000000001ZZ10000; 19813 .DEF TPD8>A, 0000000 0000000000000000 0000000000000000 0000000011110000; 19814 * 19815 *B INPUT TO ALU 19816 * 19817 *DEF B(?), 0000000 0000000000000000 00000000???????? 000000000000ZZZZ; 19818 *DEF BR>B, 0000000 0000000000000000 0000000000000000 000000000000ZZZ1; 19819 * 19820 *A AND B INPUT TO ALU 19821 * 19822 *DEF Y(?), 0000000 0000000000000000 00000000???????? 0001Z000ZZZZZZZZ; 19823 * 19824 *ALU OPERATIONS 19825 * 19826 *DEF ADD, 0000000 0000000000000000 0000000000000000 000ZZ00000000000; 19827 *DEF XOR, 0000000 0000000000000000 0000000000000000 0001100000000000; 19828 *DEF BIT8, 0000000 0000000000000000 0000000000000000 0001010000000000; 19829 * 19830 *ALU O/PS + REGISTER LOADS 19831 * 19832 .DEF Y>SRAM, 0000000 0000000000000000 0000000000000000 0000000100000000; 19833 * Y TO DR WITH Y8 = Y7 19834 *DEF Y>DR, 0000000 0001000000000000 0000000000000000 0000000000000000; 19835 * Y TO DR WITH Y8 = 0 19836 .DEF Y>DRCLR,0000000 0001000000000000 0000000000000000 0001010000000000; 19837 *DEF Y>PR, 0000000 0000000000000000 1000000000000000 0000000000000000; 19838 .DEF Y>APA, 0000000 0000000000000000 0000101100000000 0100000000000000; 19839 *DEF PR>BR, 1000001 0000000000000000 0000000000000000 0000000000000000; 19840 .DEF PR>SRA, 0010000 0000000000000000 0000000000000000 0000000000000000; 19841 .DEF RAMA(?),00Z0000 0000000000000000 0???????00000000 0000000000000000; 19842 .DEF RAMO>AR,0Z00010 0000000000000000 0000000000000000 0000000000000000; 19843 .DEF MD>TPD, 0000000 0000000000000000 0000000000000000 1000000000000000; 19844 * 19845 *JUMP INSTRUCTIONS 19846 * 19847 *DEF JUMP(?),0000000 ZZZ0???????????? 0000000000000000 0000000000000000; 19848 *DEF JZ(?,?),0000000 ZZ10???????????? 0000000000000000 0000000000000000; 19849 *DEF JN(?,?),0000000 Z1Z0???????????? 0000000000000000 0000000000000000; 19850 *DEF JLINE(?,?), 19851 * 0000000 Z110???????????? 0000000000000000 0000000000000000; 19852 *DEF JBYTE(?,?), 19853 * 0000000 1ZZ0???????????? 0000000000000000 0000000000000000; 19854 *DEF JRC(?,?), 19855 * 0000000 1Z10???????????? 0000000000000000 0000000000000000; 19856 *DEF JY(?), 0000000 11Z0???????????? 0000000000000000 0000000000000000; 19857 .DEF J7(?), 0000000 1110???????????? 0000000000000000 0000000000000000; 19858 *CASE JY; 19859 * 19860 * ||||||| |||||||||||||||| |||||||||||||||| |||||||||||||||| 19861 * 19862 * C 19863 * P AB JJJD P RVB AAAABBBB 19864 * CERFFCC MMMC< ROM > C< RAM > VDR CE MMMMMMMM 19865 * MMMEELL PPPL L DPDSSIXWSSSSSSSS 19866 * SSA10KK 210KBA9876543210 K654321076543210 PCY10NTE32103210 19867 * 19868 ************************************************************************ 19869 * 19870 * TEST LOCKED INSTRUCTION 19871 * ======================= 19872 * 19873 .EQU TESTLOCKED, >DFF; 19874 * 19875 *----------------------------------------------------------------------- 19876 * 19877 .ORG TESTLOCKED, * 19878 JUMP(TESTLOCKED); ----- ----- DFF 00000DFF 00000000 ----- 19879 * 19880 ************************************************************************ 19881 * 19882 * SRAM BIST TEST 19883 * ============== 19884 * 19885 * STEVE COOPER : 22/06/92 19886 * ======================= 19887 * 19888 * +------+-------+------+--------+--------------+ 19889 * | READ | WRITE | DIR | CYCLES | ERROR LOCK | 19890 * +------+-------+------+--------+--------------+ 19891 * | | | | | | 19892 * | -- | 00 | DOWN | 257 | ----------- | 19893 * | 00 | FF | UP | 514 | SRAMBIST7F | 19894 * | FF | 00 | UP | 514 | SRAMBIST13F | 19895 * | 00 | FF | DOWN | 641 | SRAMBIST19F | 19896 * | FF | 00 | DOWN | 641 | SRAMBIST26F | 19897 * | 00 | 55 | UP | 514 | SRAMBIST33F | 19898 * | 55 | AA | UP | 514 | SRAMBIST39F | 19899 * | AA | -- | UP | 386 | SRAMBIST45F | 19900 * | | | | | | 19901 * +------+-------+------+--------+--------------+ 19902 * 19903 * THIS SRAM TEST REQUIRES 3981 CLOCKS. 19904 * 19905 ************************************************************************ 19906 * 19907 .EQU SRAMBIST, >D00; 19908 .EQU SRAMBIST0, SRAMBIST + >0; 19909 .EQU PRAMBIST, >D02; 19910 .EQU SRAMBIST43F, PRAMBIST + >0; 19911 .EQU PRAMBIST0, PRAMBIST + >1; 19912 .EQU PRAMBIST74F, >D10; * MUST BE EVEN 19913 .EQU PRAMBISTPASS, >D11; * MUST BE ODD 19914 * 19915 *----------------------------------------------------------------------- 19916 * 19917 * LOAD SRAM WITH <00. 19918 * 19919 .ORG SRAMBIST0, * SET Y TO >07F 19920 Y(>7F), * STORE IN PQ 19921 Y>PR, 19922 JUMP(SRAMBIST1); ----- ----- D00 00000D9F 807F1000 ----- 19923 * 19924 .ORG SRAMBIST1, * WRITE >0 TO SRAM 19925 Y(0), * PASS ADDRESS TO BREG 19926 Y>SRAM, * WHEN ADDRESS = 0 JUMP 19927 PR>BR, 19928 PR>SRA, 19929 JZ(SRAMBIST2F,SRAMBIST3T); ----- ----- D9F 0051268C 00001100 ----- 19930 * 19931 .ORG SRAMBIST2F, * DECREMENT PREG 19932 A(-1), 19933 BR>B, 19934 ADD, 19935 Y>PR, 19936 JUMP(SRAMBIST1); ----- ----- 68C 00000D9F 80FF0001 ----- 19937 * 19938 *----------------------------------------------------------------------- 19939 * 19940 * READ <00 FROM SRAM, LOCK IF NOT CORRECT, LOAD SRAM WITH 80), * SET Y TO >80 19946 Y>PR, * STORE IN PREG 19947 JUMP(SRAMBIST4); ----- ----- 68D 00000DA0 80801000 ----- 19948 * 19949 .ORG SRAMBIST4, * READ SRAM INTO ALATCH 19950 PR>SRA, * STORE ADDRESS IN BREG 19951 RAMO>AR, * JUMP TO NEXT ROUTINE IF PQ 19952 PR>BR, * ADDRESS = >000 19953 JZ(SRAMBIST5F,SRAMBIST9T); ----- ----- DA0 0053268E 00000000 ----- 19954 * 19955 .ORG SRAMBIST5F, * COMPARE RAMO WITH >000 19956 AR>A, 19957 B(0), 19958 XOR, 19959 JUMP(SRAMBIST6); ----- ----- 68E 00000DA1 00001810 ----- 19960 * 19961 .ORG SRAMBIST6, * WRITE >FF TO SRAM 19962 Y(>FF), * JUMP TO LOCK ADDRESS IF NOT 19963 PR>SRA, * CORRECT 19964 Y>SRAM, 19965 JZ(SRAMBIST7F,SRAMBIST8T); ----- ----- DA1 00102690 00FF1100 ----- 19966 * 19967 * LOCK LOCATION FOR READ >00, WRITE >FF, INCREMENTING ADDRESSES. 19968 * 19969 .ORG SRAMBIST7F, 19970 JUMP(SRAMBIST7F); ----- ----- 690 00000690 00000000 ----- 19971 * 19972 .ORG SRAMBIST8T, * INCREMENT PREG 19973 A(1), 19974 BR>B, 19975 ADD, 19976 Y>PR, 19977 JUMP(SRAMBIST4); ----- ----- 691 00000DA0 80010001 ----- 19978 * 19979 *----------------------------------------------------------------------- 19980 * 19981 * READ 80), * SET Y TO >80 19987 Y>PR, * STORE IN PREG 19988 JUMP(SRAMBIST10); ----- ----- 68F 00000DA2 80801000 ----- 19989 * 19990 .ORG SRAMBIST10, * READ SRAM INTO ALATCH 19991 PR>SRA, * STORE ADDRESS IN BREG 19992 RAMO>AR, * JUMP TO NEXT ROUTINE IF PQ 19993 PR>BR, * ADDRESS = >000 19994 JZ(SRAMBIST11F,SRAMBIST15T); ----- ----- DA2 00532692 00000000 ----- 19995 * 19996 .ORG SRAMBIST11F, * COMPARE RAMO WITH >3FF 19997 AR>A, 19998 B(>FF), 19999 XOR, 20000 JUMP(SRAMBIST12); ----- ----- 692 00000DA3 00FF1810 ----- 20001 * 20002 .ORG SRAMBIST12, * WRITE >00 TO SRAM 20003 Y(0), * JUMP TO LOCK ADDRESS IF NOT 20004 PR>SRA, * CORRECT 20005 Y>SRAM, 20006 JZ(SRAMBIST13F,SRAMBIST14T); ----- ----- DA3 00102698 00001100 ----- 20007 * 20008 * LOCK LOCATION FOR READ >FF, WRITE >00, INCREMENTING ADDRESSES. 20009 * 20010 .ORG SRAMBIST13F, 20011 JUMP(SRAMBIST13F); ----- ----- 698 00000698 00000000 ----- 20012 * 20013 .ORG SRAMBIST14T, * INCREMENT PREG 20014 A(1), 20015 BR>B, 20016 ADD, 20017 Y>PR, 20018 JUMP(SRAMBIST10); ----- ----- 699 00000DA2 80010001 ----- 20019 * 20020 *----------------------------------------------------------------------- 20021 * 20022 * READ <00 FROM SRAM, LOCK IF NOT CORRECT, LOAD SRAM WITH 7F), * SET Y TO >7F 20028 Y>PR, * STORE IN PREG 20029 JUMP(SRAMBIST16F); ----- ----- 693 0000069C 807F1000 ----- 20030 * 20031 .ORG SRAMBIST16F, * READ SRAM INTO ALATCH 20032 PR>SRA, 20033 RAMO>AR, 20034 PR>BR, * STORE ADDRESS IN BREG 20035 JUMP(SRAMBIST17); ----- ----- 69C 00530DA4 00000000 ----- 20036 * 20037 .ORG SRAMBIST17, * COMPARE RAMO WITH >00 20038 AR>A, 20039 B(0), 20040 XOR, 20041 JUMP(SRAMBIST18); ----- ----- DA4 00000DA5 00001810 ----- 20042 * 20043 .ORG SRAMBIST18, * WRITE >FF TO SRAM 20044 Y(>FF), * JUMP TO LOCK ADDRESS IF NOT 20045 PR>SRA, * CORRECT 20046 Y>SRAM, 20047 JZ(SRAMBIST19F,SRAMBIST20T); ----- ----- DA5 0010269A 00FF1100 ----- 20048 * 20049 * LOCK LOCATION FOR READ >00, WRITE >FF, DECREMENTING ADDRESSES. 20050 * 20051 .ORG SRAMBIST19F, 20052 JUMP(SRAMBIST19F); ----- ----- 69A 0000069A 00000000 ----- 20053 * 20054 .ORG SRAMBIST20T, * READ PQ ADDRESS FROM BREG. 20055 A(0), 20056 BR>B, 20057 ADD, 20058 JUMP(SRAMBIST21); ----- ----- 69B 00000DA6 00000001 ----- 20059 * 20060 .ORG SRAMBIST21, * DECREMENT PREG 20061 A(-1), * JUMP TO NEXT ROUTINE IF PQ 20062 BR>B, * ADDRESS = >000 20063 ADD, 20064 Y>PR, 20065 JZ(SRAMBIST16F,SRAMBIST22T); ----- ----- DA6 0000269C 80FF0001 ----- 20066 * 20067 *----------------------------------------------------------------------- 20068 * 20069 * READ 7F), * SET Y TO >7F 20075 Y>PR, * STORE IN PREG 20076 JUMP(SRAMBIST23F); ----- ----- 69D 000006A0 807F1000 ----- 20077 * 20078 .ORG SRAMBIST23F, * READ SRAM INTO ALATCH 20079 PR>SRA, 20080 RAMO>AR, 20081 PR>BR, * STORE ADDRESS IN BREG 20082 JUMP(SRAMBIST24); ----- ----- 6A0 00530DA7 00000000 ----- 20083 * 20084 .ORG SRAMBIST24, * COMPARE RAMO WITH >FF 20085 AR>A, 20086 B(>FF), 20087 XOR, 20088 JUMP(SRAMBIST25); ----- ----- DA7 00000DA8 00FF1810 ----- 20089 * 20090 .ORG SRAMBIST25, * WRITE >00 TO SRAM 20091 Y(>00), * JUMP TO LOCK ADDRESS IF NOT 20092 PR>SRA, * CORRECT 20093 Y>SRAM, 20094 JZ(SRAMBIST26F,SRAMBIST27T); ----- ----- DA8 0010269E 00001100 ----- 20095 * 20096 * LOCK LOCATION FOR READ >FF, WRITE >00, DECREMENTING ADDRESSES. 20097 * 20098 .ORG SRAMBIST26F, 20099 JUMP(SRAMBIST26F); ----- ----- 69E 0000069E 00000000 ----- 20100 * 20101 .ORG SRAMBIST27T, * READ PQ ADDRESS FROM BREG. 20102 A(0), 20103 BR>B, 20104 ADD, 20105 JUMP(SRAMBIST28); ----- ----- 69F 00000DA9 00000001 ----- 20106 * 20107 .ORG SRAMBIST28, * DECREMENT PREG 20108 A(-1), * JUMP TO NEXT ROUTINE IF PQ 20109 BR>B, * ADDRESS = >000 20110 ADD, 20111 Y>PR, 20112 JZ(SRAMBIST23F,SRAMBIST29T); ----- ----- DA9 000026A0 80FF0001 ----- 20113 * 20114 *----------------------------------------------------------------------- 20115 * 20116 * READ <00 FROM SRAM, LOCK IF NOT CORRECT, LOAD SRAM WITH <55. 20117 * 20118 * INCREMENTING ADDRESSES 20119 * 20120 .ORG SRAMBIST29T, 20121 Y(>80), * SET Y TO >80 20122 Y>PR, * STORE IN PREG 20123 JUMP(SRAMBIST30); ----- ----- 6A1 00000DAA 80801000 ----- 20124 * 20125 .ORG SRAMBIST30, * READ SRAM INTO ALATCH 20126 PR>SRA, * STORE ADDRESS IN BREG 20127 RAMO>AR, * JUMP TO NEXT ROUTINE IF PQ 20128 PR>BR, * ADDRESS = >000 20129 JZ(SRAMBIST31F,SRAMBIST35T); ----- ----- DAA 005326A2 00000000 ----- 20130 * 20131 .ORG SRAMBIST31F, * COMPARE RAMO WITH >00 20132 AR>A, 20133 B(0), 20134 XOR, 20135 JUMP(SRAMBIST32); ----- ----- 6A2 00000DAB 00001810 ----- 20136 * 20137 .ORG SRAMBIST32, * WRITE >55 TO SRAM 20138 Y(>55), * JUMP TO LOCK ADDRESS IF NOT 20139 PR>SRA, * CORRECT 20140 Y>SRAM, 20141 JZ(SRAMBIST33F,SRAMBIST34T); ----- ----- DAB 001026A4 00551100 ----- 20142 * 20143 * LOCK LOCATION FOR READ >00, WRITE >55, INCREMENTING ADDRESSES. 20144 * 20145 .ORG SRAMBIST33F, 20146 JUMP(SRAMBIST33F); ----- ----- 6A4 000006A4 00000000 ----- 20147 * 20148 .ORG SRAMBIST34T, * INCREMENT PREG 20149 A(1), 20150 BR>B, 20151 ADD, 20152 Y>PR, 20153 JUMP(SRAMBIST30); ----- ----- 6A5 00000DAA 80010001 ----- 20154 * 20155 *----------------------------------------------------------------------- 20156 * 20157 * READ <55 FROM SRAM, LOCK IF NOT CORRECT, LOAD SRAM WITH 80), * SET Y TO >80 20163 Y>PR, * STORE IN PREG 20164 JUMP(SRAMBIST36); ----- ----- 6A3 00000DAC 80801000 ----- 20165 * 20166 .ORG SRAMBIST36, * READ SRAM INTO ALATCH 20167 PR>SRA, * STORE ADDRESS IN BREG 20168 RAMO>AR, * JUMP TO NEXT ROUTINE IF PQ 20169 PR>BR, * ADDRESS = >000 20170 JZ(SRAMBIST37F,SRAMBIST41T); ----- ----- DAC 005326A6 00000000 ----- 20171 * 20172 .ORG SRAMBIST37F, * COMPARE RAMO WITH >55 20173 AR>A, 20174 B(>55), 20175 XOR, 20176 JUMP(SRAMBIST38); ----- ----- 6A6 00000DAD 00551810 ----- 20177 * 20178 .ORG SRAMBIST38, * WRITE >AA TO SRAM 20179 Y(>AA), * JUMP TO LOCK ADDRESS IF NOT 20180 PR>SRA, * CORRECT 20181 Y>SRAM, 20182 JZ(SRAMBIST39F,SRAMBIST40T); ----- ----- DAD 001026A8 00AA1100 ----- 20183 * 20184 * LOCK LOCATION FOR READ >55, WRITE >AA, INCREMENTING ADDRESSES. 20185 * 20186 .ORG SRAMBIST39F, 20187 JUMP(SRAMBIST39F); ----- ----- 6A8 000006A8 00000000 ----- 20188 * 20189 .ORG SRAMBIST40T, * INCREMENT PREG 20190 A(1), 20191 BR>B, 20192 ADD, 20193 Y>PR, 20194 JUMP(SRAMBIST36); ----- ----- 6A9 00000DAC 80010001 ----- 20195 * 20196 *----------------------------------------------------------------------- 20197 * 20198 * READ 80), * SET Y TO >80 20204 Y>PR, * STORE IN PREG 20205 JUMP(SRAMBIST42T); ----- ----- 6A7 000006AB 80801000 ----- 20206 * 20207 .ORG SRAMBIST42T, * READ SRAM INTO ALATCH 20208 PR>SRA, * STORE ADDRESS IN BREG 20209 RAMO>AR, * JUMP TO NEXT ROUTINE IF PQ 20210 PR>BR, * ADDRESS = >000 20211 JZ(SRAMBIST43F,PRAMBIST0); ----- ----- 6AB 00532D02 00000000 ----- 20212 * 20213 * JZ(SRAMBIST43F,SRAMBISTPASS); 20214 * 20215 .ORG SRAMBIST43F, * COMPARE RAMO WITH >AA 20216 AR>A, 20217 B(>AA), 20218 XOR, 20219 JUMP(SRAMBIST44); ----- ----- D02 00000DAE 00AA1810 ----- 20220 * 20221 .ORG SRAMBIST44, * INCREMENT PREG 20222 A(1), * JUMP TO LOCK ADDRESS IF NOT 20223 BR>B, * CORRECT 20224 ADD, 20225 Y>PR, 20226 JZ(SRAMBIST45F,SRAMBIST42T); ----- ----- DAE 000026AA 80010001 ----- 20227 * 20228 * LOCK LOCATION FOR READ >AA. 20229 * 20230 .ORG SRAMBIST45F, 20231 JUMP(SRAMBIST45F); ----- ----- 6AA 000006AA 00000000 ----- 20232 * 20233 *----------------------------------------------------------------------- 20234 * 20235 *ORG SRAMBISTPASS, 20236 * JUMP(SRAMBISTPASS); 20237 * 20238 ************************************************************************ 20239 * 20240 * PRAM BIST TEST 20241 * ============== 20242 * 20243 * STEVE COOPER : 22/06/92 20244 * ======================= 20245 * 20246 * +------+-----+-------+------+--------+--------------+ 20247 * | READ | AMS | WRITE | DIR | CYCLES | ERROR LOCK | 20248 * +------+-----+-------+------+--------+--------------+ 20249 * | | | | | | | 20250 * | --- | - | 000 | DOWN | 16410 | ----------- | 20251 * | 000 | F | 1FF | UP | 40993 | PRAMBIST12F | 20252 * | 1FF | F | 000 | UP | 40993 | PRAMBIST23F | 20253 * | 000 | F | 1FF | DOWN | 40985 | PRAMBIST34F | 20254 * | 1FF | F | 000 | DOWN | 40985 | PRAMBIST45F | 20255 * | 000 | F | 055 | UP | 40993 | PRAMBIST56F | 20256 * | 055 | F | 0AA | UP | 40993 | PRAMBIST67F | 20257 * | 3AA/ | 9/ | --- | UP | 49185 | PRAMBIST78F/ | BIT7 = BIT7 20258 * | 02A | 9 | | | | PRAMBIST81F | BIT7 = BIT8 20259 * | | | | | | | 20260 * +------+-----+-------+------+--------+--------------+ 20261 * 20262 * ERROR FREE RUN LOCKS AT PRAMBISTPASS. 20263 * 20264 * THIS TEST REQUIRES 311537 CLOCKS APPROX. 20265 * 20266 ************************************************************************ 20267 * 20268 *EQU PRAMBIST, >D01; 20269 *EQU PRAMBIST0, PRAMBIST + >0; 20270 *EQU PRAMBISTPASS, >D30; 20271 * 20272 *----------------------------------------------------------------------- 20273 * 20274 * LOAD PRAM WITH <000. 20275 * 20276 * DECREMENTING ADDRESSES. 20277 * 20278 .ORG PRAMBIST0, * SET Y TO >7 20279 Y(7), * STORE IN APA 20280 Y>APA, * STORE IN SRAM[11] TO CONTROL 20281 Y>SRAM, * WRITING LOOP 20282 JUMP(PRAMBIST1F); ----- ----- D03 000006AE 0B075100 ----- 20283 * 20284 .ORG PRAMBIST1F, * SET Y TO >3FF 20285 Y(>FF), * STORE IN PQ 20286 Y>PR, 20287 JUMP(PRAMBIST2); ----- ----- 6AE 00000DAF 80FF1000 ----- 20288 * 20289 .ORG PRAMBIST2, * WRITE >0 TO PRAM 20290 Y(0), * PASS ADDRESS TO BREG 20291 Y>DR, * WHEN ADDRESS = 0 JUMP 20292 PR>BR, 20293 JZ(PRAMBIST3F,PRAMBIST4T); ----- ----- DAF 004136AC 00001000 ----- 20294 * 20295 .ORG PRAMBIST3F, * DECREMENT PREG 20296 A(-1), 20297 BR>B, 20298 ADD, 20299 Y>PR, 20300 JUMP(PRAMBIST2); ----- ----- 6AC 00000DAF 80FF0001 ----- 20301 * 20302 .ORG PRAMBIST4T, * READ APA VALUE FROM SRAM[11] 20303 RAMA(11), * INTO AREG 20304 RAMO>AR, 20305 JUMP(PRAMBIST5); ----- ----- 6AD 00020DB0 0B000000 ----- 20306 * 20307 .ORG PRAMBIST5, * PUT APA VALUE ON Y BUS 20308 AR>A, 20309 B(0), 20310 ADD, 20311 JUMP(PRAMBIST6); ----- ----- DB0 00000DB1 00000010 ----- 20312 * 20313 .ORG PRAMBIST6, * DECREMENT APA VALUE AND LOAD 20314 AR>A, * NEW VALUE INTO SRAM[11] 20315 B(-1), 20316 ADD, 20317 Y>APA, 20318 Y>SRAM, 20319 JZ(PRAMBIST1F,PRAMBIST7T); ----- ----- DB1 000026AE 0BFF4110 ----- 20320 * 20321 *----------------------------------------------------------------------- 20322 * 20323 * READ <000 FROM PRAM, LOCK IF NOT CORRECT, LOAD PRAM WITH <1FF. 20324 * 20325 * INCREMENTING ADDRESSES. 20326 * 20327 .ORG PRAMBIST7T, * SET Y TO >3F8 20328 Y(>F8), * STORE IN APA 20329 Y>APA, * STORE IN SRAM[11] TO CONTROL 20330 Y>SRAM, * WRITING LOOP 20331 JUMP(PRAMBIST8F); ----- ----- 6AF 000006B8 0BF85100 ----- 20332 * 20333 .ORG PRAMBIST8F, 20334 Y(0), * SET Y TO >0 20335 Y>PR, * STORE IN PREG 20336 JUMP(PRAMBIST9F); ----- ----- 6B8 000006B6 80001000 ----- 20337 * 20338 .ORG PRAMBIST9F, * READ PRAM IN PRLATCH 20339 MD>TPD, * STORE ADDRESS IN BREG 20340 PR>BR, 20341 JUMP(PRAMBIST10); ----- ----- 6B6 00410DB2 00008000 ----- 20342 * 20343 .ORG PRAMBIST10, * COMPARE TPD WITH >000 20344 TPD8>A, 20345 B(0), 20346 XOR, 20347 JUMP(PRAMBIST11); ----- ----- DB2 00000DB3 000018F0 ----- 20348 * 20349 .ORG PRAMBIST11, * WRITE >1FF TO PRAM 20350 Y(>FF), * JUMP TO LOCK ADDRESS IF NOT 20351 Y>DR, * CORRECT 20352 JZ(PRAMBIST12F,PRAMBIST13T); ----- ----- DB3 000036B4 00FF1000 ----- 20353 * 20354 * LOCK LOCATION FOR READ >000, WRITE >1FF, INCREMENTING ADDRESSES. 20355 * 20356 .ORG PRAMBIST12F, 20357 JUMP(PRAMBIST12F); ----- ----- 6B4 000006B4 00000000 ----- 20358 * 20359 .ORG PRAMBIST13T, * INCREMENT PREG 20360 A(1), 20361 BR>B, 20362 ADD, 20363 Y>PR, 20364 JUMP(PRAMBIST14); ----- ----- 6B5 00000DB4 80010001 ----- 20365 * 20366 .ORG PRAMBIST14, * IF PQ ADDRESS = 0 THEN JUMP. 20367 JZ(PRAMBIST9F,PRAMBIST15T); ----- ----- DB4 000026B6 00000000 ----- 20368 * 20369 .ORG PRAMBIST15T, * READ APA VALUE FROM SRAM[11] 20370 RAMA(11), * INTO AREG 20371 RAMO>AR, 20372 JUMP(PRAMBIST16); ----- ----- 6B7 00020DB5 0B000000 ----- 20373 * 20374 .ORG PRAMBIST16, * INCREMENT APA VALUE AND LOAD 20375 AR>A, * NEW VALUE INTO SRAM[11] 20376 B(1), 20377 ADD, 20378 Y>APA, 20379 Y>SRAM, 20380 JUMP(PRAMBIST17); ----- ----- DB5 00000DB6 0B014110 ----- 20381 * 20382 .ORG PRAMBIST17, * IF APA ADDRESS = 0 THEN JUMP 20383 JZ(PRAMBIST8F,PRAMBIST18T); * TO NEXT ROUTINE ----- ----- DB6 000026B8 00000000 ----- 20384 * 20385 *----------------------------------------------------------------------- 20386 * 20387 * READ <1FF FROM PRAM, LOCK IF NOT CORRECT, LOAD PRAM WITH <000. 20388 * 20389 * INCREMENTING ADDRESSES. 20390 * 20391 .ORG PRAMBIST18T, * SET Y TO >3F8 20392 Y(>F8), * STORE IN APA 20393 Y>APA, * STORE IN SRAM[11] TO CONTROL 20394 Y>SRAM, * WRITING LOOP 20395 JUMP(PRAMBIST19F); ----- ----- 6B9 000006BE 0BF85100 ----- 20396 * 20397 .ORG PRAMBIST19F, 20398 Y(0), * SET Y TO >0 20399 Y>PR, * STORE IN PREG 20400 JUMP(PRAMBIST20F); ----- ----- 6BE 000006BC 80001000 ----- 20401 * 20402 .ORG PRAMBIST20F, * READ PRAM IN PRLATCH 20403 MD>TPD, * STORE ADDRESS IN BREG 20404 PR>BR, 20405 JUMP(PRAMBIST21); ----- ----- 6BC 00410DB7 00008000 ----- 20406 * 20407 .ORG PRAMBIST21, * COMPARE TPD WITH >1FF 20408 TPD8>A, 20409 B(>FF), 20410 XOR, 20411 JUMP(PRAMBIST22); ----- ----- DB7 00000DB8 00FF18F0 ----- 20412 * 20413 .ORG PRAMBIST22, * WRITE >000 TO PRAM 20414 Y(0), * JUMP TO LOCK ADDRESS IF NOT 20415 Y>DR, * CORRECT 20416 JZ(PRAMBIST23F,PRAMBIST24T); ----- ----- DB8 000036BA 00001000 ----- 20417 * 20418 * LOCK LOCATION FOR READ >1FF, WRITE >000, INCREMENTING ADDRESSES. 20419 * 20420 .ORG PRAMBIST23F, 20421 JUMP(PRAMBIST23F); ----- ----- 6BA 000006BA 00000000 ----- 20422 * 20423 .ORG PRAMBIST24T, * INCREMENT PREG 20424 A(1), 20425 BR>B, 20426 ADD, 20427 Y>PR, 20428 JUMP(PRAMBIST25); ----- ----- 6BB 00000DB9 80010001 ----- 20429 * 20430 .ORG PRAMBIST25, * IF PQ ADDRESS = 0 THEN JUMP. 20431 JZ(PRAMBIST20F,PRAMBIST26T); ----- ----- DB9 000026BC 00000000 ----- 20432 * 20433 .ORG PRAMBIST26T, * READ APA VALUE FROM SRAM[11] 20434 RAMA(11), * INTO AREG 20435 RAMO>AR, 20436 JUMP(PRAMBIST27); ----- ----- 6BD 00020DBA 0B000000 ----- 20437 * 20438 .ORG PRAMBIST27, * INCREMENT APA VALUE AND LOAD 20439 AR>A, * NEW VALUE INTO SRAM[11] 20440 B(1), 20441 ADD, 20442 Y>APA, 20443 Y>SRAM, 20444 JUMP(PRAMBIST28); ----- ----- DBA 00000DBB 0B014110 ----- 20445 * 20446 .ORG PRAMBIST28, * IF APA ADDRESS = 0 THEN JUMP 20447 JZ(PRAMBIST19F,PRAMBIST29T); * TO NEXT ROUTINE ----- ----- DBB 000026BE 00000000 ----- 20448 * 20449 *----------------------------------------------------------------------- 20450 * 20451 * READ <000 FROM PRAM, LOCK IF NOT CORRECT, LOAD PRAM WITH <1FF. 20452 * 20453 * DECREMENTING ADDRESSES. 20454 * 20455 .ORG PRAMBIST29T, * SET Y TO >7 20456 Y(7), * STORE IN APA 20457 Y>APA, * STORE IN SRAM[11] TO CONTROL 20458 Y>SRAM, * WRITING LOOP 20459 JUMP(PRAMBIST30F); ----- ----- 6BF 000006C8 0B075100 ----- 20460 * 20461 .ORG PRAMBIST30F, 20462 Y(>FF), * SET Y TO >3FF 20463 Y>PR, * STORE IN PREG 20464 JUMP(PRAMBIST31); ----- ----- 6C8 00000DBC 80FF1000 ----- 20465 * 20466 .ORG PRAMBIST31, * READ PRAM IN PRLATCH 20467 MD>TPD, * STORE PQ ADDRESS IN BREG 20468 PR>BR, 20469 JUMP(PRAMBIST32); ----- ----- DBC 00410DBD 00008000 ----- 20470 * 20471 .ORG PRAMBIST32, * COMPARE TPD WITH >000 20472 TPD8>A, 20473 B(0), 20474 XOR, 20475 JUMP(PRAMBIST33); ----- ----- DBD 00000DBE 000018F0 ----- 20476 * 20477 .ORG PRAMBIST33, 20478 A(0), * JUMP TO LOCK ADDRESS IF 20479 BR>B, * COMPARISON NOT CORRECT 20480 ADD, * READ PQ ADDRESS FROM BREG 20481 JZ(PRAMBIST34F,PRAMBIST35T); ----- ----- DBE 000026C4 00000001 ----- 20482 * 20483 * LOCK LOCATION FOR READ >1FF, WRITE >000, DECREMENTING ADDRESSES. 20484 * 20485 .ORG PRAMBIST34F, 20486 JUMP(PRAMBIST34F); ----- ----- 6C4 000006C4 00000000 ----- 20487 * 20488 .ORG PRAMBIST35T, * WRITE >1FF TO PRAM 20489 Y(>FF), * IF PQ ADDRESS = 0 THEN JUMP 20490 Y>DR, 20491 JZ(PRAMBIST36F,PRAMBIST37T); ----- ----- 6C5 000036C6 00FF1000 ----- 20492 * 20493 .ORG PRAMBIST36F, * DECREMENT PREG 20494 A(-1), 20495 BR>B, 20496 ADD, 20497 Y>PR, 20498 JUMP(PRAMBIST31); ----- ----- 6C6 00000DBC 80FF0001 ----- 20499 * 20500 .ORG PRAMBIST37T, * READ APA VALUE FROM SRAM[11] 20501 RAMA(11), * INTO AREG 20502 RAMO>AR, 20503 JUMP(PRAMBIST38); ----- ----- 6C7 00020DBF 0B000000 ----- 20504 * 20505 .ORG PRAMBIST38, * READ AREG VALUE 20506 AR>A, 20507 B(0), 20508 ADD, 20509 JUMP(PRAMBIST39); ----- ----- DBF 00000DC0 00000010 ----- 20510 * 20511 .ORG PRAMBIST39, * DECREMENT APA VALUE AND LOAD 20512 AR>A, * NEW VALUE INTO SRAM[11] 20513 B(-1), * IF APA ADDRESS = 0 THEN JUMP 20514 ADD, * TO NEXT ROUTINE 20515 Y>APA, 20516 Y>SRAM, 20517 JZ(PRAMBIST30F,PRAMBIST40T); ----- ----- DC0 000026C8 0BFF4110 ----- 20518 * 20519 *----------------------------------------------------------------------- 20520 * 20521 * READ <1FF FROM PRAM, LOCK IF NOT CORRECT, LOAD PRAM WITH <000. 20522 * 20523 * DECREMENTING ADDRESSES. 20524 * 20525 .ORG PRAMBIST40T, * SET Y TO >7 20526 Y(7), * STORE IN APA 20527 Y>APA, * STORE IN SRAM[11] TO CONTROL 20528 Y>SRAM, * WRITING LOOP 20529 JUMP(PRAMBIST41F); ----- ----- 6C9 000006CE 0B075100 ----- 20530 * 20531 .ORG PRAMBIST41F, 20532 Y(>FF), * SET Y TO >3FF 20533 Y>PR, * STORE IN PREG 20534 JUMP(PRAMBIST42); ----- ----- 6CE 00000DC1 80FF1000 ----- 20535 * 20536 .ORG PRAMBIST42, * READ PRAM IN PRLATCH 20537 MD>TPD, * STORE PQ ADDRESS IN BREG 20538 PR>BR, 20539 JUMP(PRAMBIST43); ----- ----- DC1 00410DC2 00008000 ----- 20540 * 20541 .ORG PRAMBIST43, * COMPARE TPD WITH >1FF 20542 TPD8>A, 20543 B(>FF), 20544 XOR, 20545 JUMP(PRAMBIST44); ----- ----- DC2 00000DC3 00FF18F0 ----- 20546 * 20547 .ORG PRAMBIST44, 20548 A(0), * JUMP TO LOCK ADDRESS IF 20549 BR>B, * COMPARISON NOT CORRECT 20550 ADD, * READ PQ ADDRESS FROM BREG 20551 JZ(PRAMBIST45F,PRAMBIST46T); ----- ----- DC3 000026CA 00000001 ----- 20552 * 20553 * LOCK LOCATION FOR READ >1FF, WRITE >000, DECREMENTING ADDRESSES. 20554 * 20555 .ORG PRAMBIST45F, 20556 JUMP(PRAMBIST45F); ----- ----- 6CA 000006CA 00000000 ----- 20557 * 20558 .ORG PRAMBIST46T, * WRITE >000 TO PRAM 20559 Y(0), * IF PQ ADDRESS = 0 THEN JUMP 20560 Y>DR, 20561 JZ(PRAMBIST47F,PRAMBIST48T); ----- ----- 6CB 000036CC 00001000 ----- 20562 * 20563 .ORG PRAMBIST47F, * DECREMENT PREG 20564 A(-1), 20565 BR>B, 20566 ADD, 20567 Y>PR, 20568 JUMP(PRAMBIST42); ----- ----- 6CC 00000DC1 80FF0001 ----- 20569 * 20570 .ORG PRAMBIST48T, * READ APA VALUE FROM SRAM[11] 20571 RAMA(11), * INTO AREG 20572 RAMO>AR, 20573 JUMP(PRAMBIST49); ----- ----- 6CD 00020DC4 0B000000 ----- 20574 * 20575 .ORG PRAMBIST49, * READ AREG VALUE 20576 AR>A, 20577 B(0), 20578 ADD, 20579 JUMP(PRAMBIST50); ----- ----- DC4 00000DC5 00000010 ----- 20580 * 20581 .ORG PRAMBIST50, * DECREMENT APA VALUE AND LOAD 20582 AR>A, * NEW VALUE INTO SRAM[11] 20583 B(-1), * IF APA ADDRESS = 0 THEN JUMP 20584 ADD, * TO NEXT ROUTINE 20585 Y>APA, 20586 Y>SRAM, 20587 JZ(PRAMBIST41F,PRAMBIST51T); ----- ----- DC5 000026CE 0BFF4110 ----- 20588 * 20589 *----------------------------------------------------------------------- 20590 * 20591 * READ <000 FROM PRAM, LOCK IF NOT CORRECT, LOAD PRAM WITH <055. 20592 * 20593 * INCREMENTING ADDRESSES. 20594 * 20595 .ORG PRAMBIST51T, * SET Y TO >3F8 20596 Y(>F8), * STORE IN APA 20597 Y>APA, * STORE IN SRAM[11] TO CONTROL 20598 Y>SRAM, * WRITING LOOP 20599 JUMP(PRAMBIST52F); ----- ----- 6CF 000006D4 0BF85100 ----- 20600 * 20601 .ORG PRAMBIST52F, 20602 Y(0), * SET Y TO >0 20603 Y>PR, * STORE IN PREG 20604 JUMP(PRAMBIST53F); ----- ----- 6D4 000006D2 80001000 ----- 20605 * 20606 .ORG PRAMBIST53F, * READ PRAM IN PRLATCH 20607 MD>TPD, * STORE ADDRESS IN BREG 20608 PR>BR, 20609 JUMP(PRAMBIST54); ----- ----- 6D2 00410DC6 00008000 ----- 20610 * 20611 .ORG PRAMBIST54, * COMPARE TPD WITH >000 20612 TPD8>A, 20613 B(0), 20614 XOR, 20615 JUMP(PRAMBIST55); ----- ----- DC6 00000DC7 000018F0 ----- 20616 * 20617 .ORG PRAMBIST55, * WRITE >055 TO PRAM 20618 Y(>55), * JUMP TO LOCK ADDRESS IF NOT 20619 Y>DR, * CORRECT 20620 JZ(PRAMBIST56F,PRAMBIST57T); ----- ----- DC7 000036D0 00551000 ----- 20621 * 20622 * LOCK LOCATION FOR READ >000, WRITE >055, INCREMENTING ADDRESSES. 20623 * 20624 .ORG PRAMBIST56F, 20625 JUMP(PRAMBIST56F); ----- ----- 6D0 000006D0 00000000 ----- 20626 * 20627 .ORG PRAMBIST57T, * INCREMENT PREG 20628 A(1), 20629 BR>B, 20630 ADD, 20631 Y>PR, 20632 JUMP(PRAMBIST58); ----- ----- 6D1 00000DC8 80010001 ----- 20633 * 20634 .ORG PRAMBIST58, * IF PQ ADDRESS = 0 THEN JUMP. 20635 JZ(PRAMBIST53F,PRAMBIST59T); ----- ----- DC8 000026D2 00000000 ----- 20636 * 20637 .ORG PRAMBIST59T, * READ APA VALUE FROM SRAM[11] 20638 RAMA(11), * INTO AREG 20639 RAMO>AR, 20640 JUMP(PRAMBIST60); ----- ----- 6D3 00020DC9 0B000000 ----- 20641 * 20642 .ORG PRAMBIST60, * INCREMENT APA VALUE AND LOAD 20643 AR>A, * NEW VALUE INTO SRAM[11] 20644 B(1), 20645 ADD, 20646 Y>APA, 20647 Y>SRAM, 20648 JUMP(PRAMBIST61); ----- ----- DC9 00000DCA 0B014110 ----- 20649 * 20650 .ORG PRAMBIST61, * IF APA ADDRESS = 0 THEN JUMP 20651 JZ(PRAMBIST52F,PRAMBIST62T); * TO NEXT ROUTINE ----- ----- DCA 000026D4 00000000 ----- 20652 * 20653 *----------------------------------------------------------------------- 20654 * 20655 * READ <055 FROM PRAM, LOCK IF NOT CORRECT, LOAD PRAM WITH <0AA. 20656 * 20657 * INCREMENTING ADDRESSES. 20658 * 20659 .ORG PRAMBIST62T, * SET Y TO >3F8 20660 Y(>F8), * STORE IN APA 20661 Y>APA, * STORE IN SRAM[11] TO CONTROL 20662 Y>SRAM, * WRITING LOOP 20663 JUMP(PRAMBIST63F); ----- ----- 6D5 000006DA 0BF85100 ----- 20664 * 20665 .ORG PRAMBIST63F, 20666 Y(0), * SET Y TO >0 20667 Y>PR, * STORE IN PREG 20668 JUMP(PRAMBIST64F); ----- ----- 6DA 000006D8 80001000 ----- 20669 * 20670 .ORG PRAMBIST64F, * READ PRAM IN PRLATCH 20671 MD>TPD, * STORE ADDRESS IN BREG 20672 PR>BR, 20673 JUMP(PRAMBIST65); ----- ----- 6D8 00410DCB 00008000 ----- 20674 * 20675 .ORG PRAMBIST65, * COMPARE TPD WITH >055 20676 TPD8>A, 20677 B(>55), 20678 XOR, 20679 JUMP(PRAMBIST66); ----- ----- DCB 00000DCC 005518F0 ----- 20680 * 20681 .ORG PRAMBIST66, * WRITE >0AA TO PRAM 20682 Y(>AA), * JUMP TO LOCK ADDRESS IF NOT 20683 Y>DRCLR, * CORRECT 20684 JZ(PRAMBIST67F,PRAMBIST68T); ----- ----- DCC 000036D6 00AA1400 ----- 20685 * 20686 * LOCK LOCATION FOR READ >055, WRITE >0AA, INCREMENTING ADDRESSES. 20687 * 20688 .ORG PRAMBIST67F, 20689 JUMP(PRAMBIST67F); ----- ----- 6D6 000006D6 00000000 ----- 20690 * 20691 .ORG PRAMBIST68T, * INCREMENT PREG 20692 A(1), 20693 BR>B, 20694 ADD, 20695 Y>PR, 20696 JUMP(PRAMBIST69); ----- ----- 6D7 00000DCD 80010001 ----- 20697 * 20698 .ORG PRAMBIST69, * IF PQ ADDRESS = 0 THEN JUMP. 20699 JZ(PRAMBIST64F,PRAMBIST70T); ----- ----- DCD 000026D8 00000000 ----- 20700 * 20701 .ORG PRAMBIST70T, * READ APA VALUE FROM SRAM[11] 20702 RAMA(11), * INTO AREG 20703 RAMO>AR, 20704 JUMP(PRAMBIST71); ----- ----- 6D9 00020DCE 0B000000 ----- 20705 * 20706 .ORG PRAMBIST71, * INCREMENT APA VALUE AND LOAD 20707 AR>A, * NEW VALUE INTO SRAM[11] 20708 B(1), 20709 ADD, 20710 Y>APA, 20711 Y>SRAM, 20712 JUMP(PRAMBIST72); ----- ----- DCE 00000DCF 0B014110 ----- 20713 * 20714 .ORG PRAMBIST72, * IF APA ADDRESS = 0 THEN JUMP 20715 JZ(PRAMBIST63F,PRAMBIST73T); * TO NEXT ROUTINE ----- ----- DCF 000026DA 00000000 ----- 20716 * 20717 *----------------------------------------------------------------------- 20718 * 20719 * READ <0AA FROM PRAM, LOCK IF NOT CORRECT. 20720 * 20721 * INCREMENTING ADDRESSES. 20722 * 20723 .ORG PRAMBIST73T, * SET Y TO >3F8 20724 Y(>F8), * STORE IN APA 20725 Y>APA, * STORE IN SRAM[11] TO CONTROL 20726 Y>SRAM, * WRITING LOOP 20727 JUMP(PRAMBIST74F); ----- ----- 6DB 00000D10 0BF85100 ----- 20728 * 20729 .ORG PRAMBIST74F, 20730 Y(0), * SET Y TO >0 20731 Y>PR, * STORE IN PREG 20732 JUMP(PRAMBIST75F); ----- ----- D10 000006E0 80001000 ----- 20733 * 20734 .ORG PRAMBIST75F, * READ PRAM IN PRLATCH 20735 MD>TPD, * BIT7 = BIT7 20736 PR>BR, * STORE PQ ADDRESS IN BREG 20737 JUMP(PRAMBIST76); ----- ----- 6E0 00410DD0 00008000 ----- 20738 * 20739 .ORG PRAMBIST76, * COMPARE TPD WITH >1AA 20740 TPD7>A, 20741 B(>AA), 20742 XOR, 20743 JUMP(PRAMBIST77); ----- ----- DD0 00000DD1 00AA1890 ----- 20744 * 20745 .ORG PRAMBIST77, * READ PRAM IN PRLATCH 20746 MD>TPD, * BIT7 = BIT8 20747 BIT8, * JUMP TO LOCK ADDRESS IF 20748 JZ(PRAMBIST78F,PRAMBIST79T); * COMPARISON NOT CORRECT ----- ----- DD1 000026DC 00009400 ----- 20749 * 20750 * LOCK LOCATION FOR READ >0AA, BIT7 = BIT7. 20751 * 20752 .ORG PRAMBIST78F, 20753 JUMP(PRAMBIST78F); ----- ----- 6DC 000006DC 00000000 ----- 20754 * 20755 .ORG PRAMBIST79T, * COMPARE TPD WITH >02A 20756 TPD7>A, 20757 B(>2A), 20758 XOR, 20759 JUMP(PRAMBIST80); ----- ----- 6DD 00000DD2 002A1890 ----- 20760 * 20761 .ORG PRAMBIST80, * INCREMENT PREG 20762 A(1), 20763 BR>B, 20764 ADD, 20765 Y>PR, 20766 JZ(PRAMBIST81F,PRAMBIST82T); ----- ----- DD2 000026DE 80010001 ----- 20767 * 20768 * LOCK LOCATION FOR READ >0AA, BIT7 = BIT8. 20769 * 20770 .ORG PRAMBIST81F, 20771 JUMP(PRAMBIST81F); ----- ----- 6DE 000006DE 00000000 ----- 20772 * 20773 .ORG PRAMBIST82T, * IF PQ ADDRESS = 0 THEN JUMP. 20774 JZ(PRAMBIST75F,PRAMBIST83T); ----- ----- 6DF 000026E0 00000000 ----- 20775 * 20776 .ORG PRAMBIST83T, * READ APA VALUE FROM SRAM[11] 20777 RAMA(11), * INTO AREG 20778 RAMO>AR, 20779 JUMP(PRAMBIST84); ----- ----- 6E1 00020DD3 0B000000 ----- 20780 * 20781 .ORG PRAMBIST84, * INCREMENT APA VALUE AND LOAD 20782 AR>A, * NEW VALUE INTO SRAM[11] 20783 B(1), 20784 ADD, 20785 Y>APA, 20786 Y>SRAM, 20787 JUMP(PRAMBIST85); ----- ----- DD3 00000DD4 0B014110 ----- 20788 * 20789 .ORG PRAMBIST85, * IF APA ADDRESS = 0 THEN JUMP 20790 JZ(PRAMBIST74F,PRAMBISTPASS); * TO NEXT ROUTINE ----- ----- DD4 00002D10 00000000 ----- 20791 * 20792 *----------------------------------------------------------------------- 20793 * 20794 .ORG PRAMBISTPASS, 20795 JUMP(PRAMBISTPASS); ----- ----- D11 00000D11 00000000 ----- 20796 * 20797 ************************************************************************ 20798 * 20799 * JUMP LOGIC TEST 20800 * =============== 20801 * 20802 * STEVE COOPER : 25/06/92 20803 * ======================= 20804 * 20805 * THE JUMPLOGIC IS DISABLED DURING MICROCODE SIGNATURE TESTING. THE 20806 * JUMP LOGIC THERFORE NEEDS TESTING SEPARATELY. 20807 * 20808 * THE TESTS FOR THIS LOGIC HAVE BEEN GENERATED USING TESTSCAN. 20809 * 20810 * THE FOLLOWING INPUTS TO THE JUMP LOGIC ARE SET BY SCANNING THE 20811 * REQUIRED VALUES :- 20812 * 20813 * BYTERDY 20814 * LINERDY 20815 * RCIFS_4 20816 * VBI 20817 * Y_9 20818 * Y_3 20819 * Y_2 20820 * Y_1 20821 * Y_0 20822 * 20823 * THE FOLLOWING INPUTS TO THE JUMP LOGIC ARE SET BY ADDRESSING SPECIAL 20824 * TEST INSTRUCTIONS IN THE TEST MICROCODE :- 20825 * 20826 * RD_47 (JMP2) 20827 * RD_46 (JMP1) 20828 * RD_45 (JMP0) 20829 * RD_35 (ROMA3) 20830 * RD_34 (ROMA2) 20831 * RD_33 (ROMA1) 20832 * RD_32 (ROMA0) 20833 * 20834 * THE RESULTANT VALUES IN UA[35:32] ARE THEN SCANNED OUT. 20835 * 20836 * SINCE THESE TESTS ARE AIMED AT TESTING THE JUMPLOGIC ONLY, ROMA0 TO 20837 * ROMA3 ARE HELD AT ZERO DURING THESE TESTS, THESE BITS HAVING BEEN 20838 * TESTED DURING MICROCODE SIGNATURE TESTING. 20839 * 20840 ************************************************************************ 20841 * 20842 .EQU JMPTESTBASE0, >D90; 20843 .EQU JMPTESTBASE1, JMPTESTBASE0 + >1; 20844 .EQU JMPTEST0, JMPTESTBASE0 + >2; 20845 .EQU JMPTEST1, JMPTESTBASE0 + >3; 20846 .EQU JMPTEST2, JMPTESTBASE0 + >4; 20847 .EQU JMPTEST3, JMPTESTBASE0 + >5; 20848 .EQU JMPTEST4, JMPTESTBASE0 + >6; 20849 .EQU JMPTEST5, JMPTESTBASE0 + >7; 20850 .EQU JMPTEST6, JMPTESTBASE0 + >8; 20851 .EQU JMPTEST7, JMPTESTBASE0 + >9; 20852 * 20853 *----------------------------------------------------------------------- 20854 * 20855 .ORG JMPTESTBASE0, * ADDRESS MUST BE XX0 20856 JUMP(JMPTESTBASE0); ----- ----- D90 00000D90 00000000 ----- 20857 * 20858 .ORG JMPTESTBASE1, 20859 JUMP(JMPTESTBASE1); ----- ----- D91 00000D91 00000000 ----- 20860 * 20861 .ORG JMPTEST0, * JMP[2:0] = 000 20862 JUMP(JMPTESTBASE0); ----- ----- D92 00000D90 00000000 ----- 20863 * 20864 .ORG JMPTEST1, * JMP[2:0] = 001 20865 JZ(JMPTESTBASE0,JMPTESTBASE1); ----- ----- D93 00002D90 00000000 ----- 20866 * 20867 .ORG JMPTEST2, * JMP[2:0] = 010 20868 JN(JMPTESTBASE0,JMPTESTBASE1); ----- ----- D94 00004D90 00000000 ----- 20869 * 20870 .ORG JMPTEST3, * JMP[2:0] = 011 20871 JLINE(JMPTESTBASE0,JMPTESTBASE1); ----- ----- D95 00006D90 00000000 ----- 20872 * 20873 .ORG JMPTEST4, * JMP[2:0] = 100 20874 JBYTE(JMPTESTBASE0,JMPTESTBASE1); ----- ----- D96 00008D90 00000000 ----- 20875 * 20876 .ORG JMPTEST5, * JMP[2:0] = 101 20877 JRC(JMPTESTBASE0,JMPTESTBASE1); ----- ----- D97 0000AD90 00000000 ----- 20878 * 20879 .ORG JMPTEST6, * JMP[2:0] = 110 20880 JY(JMPTESTBASE0); ----- ----- D98 0000CD90 00000000 ----- 20881 * 20882 .ORG JMPTEST7, * JMP[2:0] = 111 20883 J7(JMPTESTBASE0); ----- ----- D99 0000ED90 00000000 ----- 20884 * 20885 *----------------------------------------------------------------------- 20886 * 20887 .END 20888 ÿ