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-00-0' *8 character label for .OBJ file * 00055 .SIZ >D6F; *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 * * 00059 *### marks interesting points for future reference (eg bits where code * 00060 * could be compressed) * 00061 * * 00062 *Design rules:- -RVDP before TPD * 00063 * -one instruction between JBYTE and CBRDY * 00064 * -if RVDP and Y>DR in the same instruction, TPD will * 00065 * be updated in the next instruction and the write will * 00066 * occur in the next instruction * 00067 * -can't do a RVDP in the instruction after a Y>DR * 00068 * * 00069 *Assembler:- * 00070 * -does not error jumps to non-existent .ORGs * 00071 * * 00072 * section 1: poll for event * 00073 * section 2: recieve teletext line * 00074 * section 3: VBI post processing * 00075 * section 4: service interface * 00076 * section 5: sub-routines * 00077 * section 6: initialisation * 00078 * section 7: misc/ temporary * 00079 *----------------------------------------------------------------------* 00080 * C 00081 * P AB JJJD P RVB AAAABBBB 00082 * CERFFLL MMML< ROM > L< RAM > VDR CE MMMMMMMM 00083 * MMMEEDD PPPD D DPDSSIXWSSSSSSSS 00084 * SSA10TT 210TBA9876543210 T654321076543210 PCY10NTE32103210 00085 * ||||||| |||||||||||||||| |||||||||||||||| |||||||||||||||| 00086 *A INPUT TO ALU 00087 .DEF A(?), 0000000 0000000000000000 00000000???????? 00000000ZZZZ0000; 00088 .DEF AR>A, 0000000 0000000000000000 0000000000000000 00000000ZZZ10000; 00089 .DEF ARHI>A, 0000000 0000000000000000 0000000000000000 00000000ZZ1Z0000; 00090 .DEF AR<<4>A, 0000000 0000000000000000 0000000000000000 00000000ZZ110000; 00091 .DEF NAR>A, 0000000 0000000000000000 0000000000000000 00000000Z1ZZ0000; 00092 .DEF AR<<3>A, 0000000 0000000000000000 0000000000000000 00000000Z1Z10000; 00093 .DEF NAR.0F>A, 0000000 0000000000000000 0000000000000000 00000000Z11Z0000; 00094 .DEF PCL>A, 0000000 0000000000000000 0000000000000000 00000000Z1110000; 00095 .DEF CTL>A, 0000000 0000000000000000 0000000000000000 000000001ZZZ0000; 00096 .DEF TPD>A, 0000000 0000000000000000 0000000000000000 000000001ZZ10000; 00097 .DEF TPD.0F>A, 0000000 0000000000000000 0000000000000000 000000001Z1Z0000; 00098 .DEF TPD.F0>A, 0000000 0000000000000000 0000000000000000 000000001Z110000; 00099 .DEF AR.0F>A, 0000000 0000000000000000 0000000000000000 0000000011ZZ0000; 00100 .DEF AR.F0>A, 0000000 0000000000000000 0000000000000000 0000000011Z10000; 00101 .DEF AR>>1>A, 0000000 0000000000000000 0000000000000000 00000000111Z0000; 00102 *B INPUT TO ALU 00103 .DEF B(?), 0000000 0000000000000000 00000000???????? 000000000000ZZZZ; 00104 .DEF BR>B, 0000000 0000000000000000 0000000000000000 000000000000ZZZ1; 00105 .DEF BR.0F>B, 0000000 0000000000000000 0000000000000000 000000000000ZZ1Z; 00106 .DEF BR.F0>B, 0000000 0000000000000000 0000000000000000 000000000000ZZ11; 00107 .DEF BR>>4>B, 0000000 0000000000000000 0000000000000000 000000000000Z1ZZ; 00108 .DEF AR<<5>B, 0000000 0000000000000000 0000000000000000 0000000000001ZZ1; 00109 .DEF RCD>B, 0000000 0000000000000000 0000000000000000 0000000000001Z1Z; 00110 .DEF RCS>B, 0000000 0000000000000000 0000000000000000 0000000000001Z11; 00111 .DEF BRHI>B, 0000000 0000000000000000 0000000000000000 00000000000011ZZ; 00112 .DEF PLL>B, 0000000 0000000000000000 0000000000000000 000000000000111Z; 00113 .DEF GPIO>B, 0000000 0000000000000000 0000000000000000 0000000000001111; 00114 *A AND B INPUT TO ALU 00115 .DEF Y(?), 0000000 0000000000000000 00000000???????? 0001Z000ZZZZZZZZ; 00116 *FRONT END DEFS 00117 .DEF DATA>B, 000ZZ00 0000000000000000 0000000000000000 000000000000Z1Z1; 00118 .DEF PTY>B, 000Z100 0000000000000000 0000000000000000 000000000000Z1Z1; 00119 .DEF HAM>B, 0001Z00 0000000000000000 0000000000000000 000000000000Z111; 00120 .DEF ROW>B, 0001100 0000000000000000 0000000000000000 000000000000Z1Z1; 00121 .DEF P26AD>B, 000ZZ00 0000000000000000 0000000000000000 0000000000001ZZZ; 00122 .DEF P26MO>B, 000Z100 0000000000000000 0000000000000000 0000000000001ZZZ; 00123 .DEF P26CH>B, 0001Z00 0000000000000000 0000000000000000 0000000000001ZZZ; 00124 .DEF CBRDY, 0000000 0000000000000000 0000000000000000 0010000000000000; 00125 *ALU OPERATIONS 00126 .DEF ADD, 0000000 0000000000000000 0000000000000000 000ZZ00000000000; 00127 .DEF AND, 0000000 0000000000000000 0000000000000000 000Z100000000000; 00128 .DEF OR, 0000000 0000000000000000 0000000000000000 0001Z00000000000; 00129 .DEF XOR, 0000000 0000000000000000 0000000000000000 0001100000000000; 00130 .DEF BIT8, 0000000 0000000000000000 0000000000000000 0001010000000000; 00131 .DEF Z>CIN, 0000000 0000000000000000 0000000000000000 00000Z0000000000; 00132 .DEF O>CIN, 0000000 0000000000000000 0000000000000000 0000010000000000; 00133 *JUMP INSTRUCTIONS 00134 .DEF JUMP(?), 0000000 ZZZ0???????????? 0000000000000000 0000000000000000; 00135 .DEF JZ(?,?), 0000000 ZZ10???????????? 0000000000000000 0000000000000000; 00136 .DEF JN(?,?), 0000000 Z1Z0???????????? 0000000000000000 0000000000000000; 00137 .DEF JLINE(?,?),0000000 Z110???????????? 0000000000000000 0000000000000000; 00138 .DEF JBYTE(?,?),0000000 1ZZ0???????????? 0000000000000000 0000000000000000; 00139 .DEF JRC(?,?), 0000000 1Z10???????????? 0000000000000000 0000000000000000; 00140 .DEF JY(?), 0000000 11Z0???????????? 0000000000000000 0000000000000000; 00141 *ALU O/PS + REGISTER LOADS 00142 .DEF Y>RAM, 0000000 0000000000000000 0000000000000000 0000000100000000; 00143 .DEF Y>DR, 0000000 0001000000000000 0000000000000000 0000000000000000; 00144 *(COPY Y7 TO Y8) 00145 .DEF Y>DCLR, 0000000 0001000000000000 0000000000000000 0001010000000000; 00146 *(CLEAR Y8) 00147 .DEF Y>PR, 0000000 0000000000000000 1000000000000000 0000000000000000; 00148 .DEF Y>AR, 0100010 0000000000000000 0000000000000000 0000000000000000; 00149 .DEF Y>IO, 0000000 0000000000000000 0000000000000000 0100000000000000; 00150 .DEF Y>RCI, 000Z100 0000000000000000 0000000000000000 0000001000000000; 00151 .DEF RVDP, 0000000 0000000000000000 0000000000000000 1000000000000000; 00152 .DEF MA(?), 00Z0000 0000000000000000 0???????00000000 0000000000000000; 00153 .DEF PR>MA, 0010000 0000000000000000 0000000000000000 0000000000000000; 00154 .DEF RAM>AR, 0Z00010 0000000000000000 0000000000000000 0000000000000000; 00155 .DEF RAM>BR, Z000001 0000000000000000 0000000000000000 0000000000000000; 00156 .DEF PR>BR, 1000001 0000000000000000 0000000000000000 0000000000000000; 00157 *CONTROL INTERFACE 00158 .DEF RSTRXTX, 000ZZ00 0000000000000000 0000000000000000 0000001000000000; 00159 * ||||||| |||||||||||||||| |||||||||||||||| |||||||||||||||| 00160 * C 00161 * P AB JJJD P RVB AAAABBBB 00162 * CERFFCC MMMC< ROM > C< RAM > VDR CE MMMMMMMM 00163 * MMMEELL PPPL L DPDSSIXWSSSSSSSS 00164 * SSA10KK 210KBA9876543210 K654321076543210 PCY10NTE32103210 00165 *----------------------------------------------------------------------* 00166 * SCRATCH RAM REGISTER EQUATES 00167 *----------------------------------------------------------------------* 00168 * 00169 .EQU VDP0, >00;*IO+RAM| +R24ON+R1T23+R0ON |DPL | 00170 .EQU VDP1, >01;*IO+RAM|BR24 +BR0 +EXPT +EXPB |RVL +BOX +MIX +TEXT | 00171 .EQU VDP2, >02;*IO+RAM| +TWIST+LF1 +LF0 |C14 +C13 +C12 +ILANG| 00172 .EQU VDP3, >03;*IO | +DUAL +LF1 +LF0 |C14 +C13 +C12 + | 00173 .EQU VDP4, >04;*IO+RAM|CLOCK+ + + | + + + | 00174 .EQU VDP5, >05;*IO+RAM|STYLE+CON + +ROW4 |ROW3 +ROW2 +ROW1 +ROW0 | 00175 .EQU VDP6, >06;*IO+RAM| + +COL5 +COL4 |COL3 +COL2 +COL1 +COL0 | 00176 .EQU VDP7, >07;*IO+RAM|TXTBG+FRAME+ + | +FSC2 +FSC1 +FSC0 | 00177 * 00178 .EQU P26MO, >08;*IO | + + +packet 26 mode latch | 00179 .EQU P26CH, >09;*IO | +packet 26 character latch | 00180 .EQU P26EN, >0A;*IO |packet 26 enable | 00181 * 00182 .EQU SYS1, >08;* RAM|page capture mode |FIND +FNRM +FTOP +FFLF | 00183 .EQU SYS2, >09;* RAM|R24EN+R24OS+S6T1 +TVPS |RP24 +CPYR2+R24RT+APIN | 00184 .EQU VPSERR,>0A;* RAM| + + + | + + + | 00185 .EQU RWL, >0B;*IO+RAM| ? + ? + ? + ? |read/write latch | 00186 .EQU PLLRG1,>0C;*IO*RAM|MUTE +R24B +HPOS +INSYN|UEL +SIX24+LOCK +ILCE | 00187 .EQU PLLRG2,>0D;*IO+RAM| - + - +PLL fine coeffs | 00188 .EQU PLLRG3,>0E;*IO+RAM| - + - +PLL coarse coeffs | 00189 * 00190 .EQU GPIO, >0F;*IO+RAM| + +DDF2 +DDF1 | + +FLAG2+FLAG1| 00191 * 00192 .EQU M0, >10;*IO+RAM|-----------------------|latch 0 mag | 00193 .EQU POLREG,>10;* RAM|VBIFL+WAIT +VBITF+LFTOG|-----------------------| 00194 .EQU M1, >11;*IO+RAM|-----------------------|latch 1 mag | 00195 .EQU LTK, >11;* RAM|last TOP key |-----------------------| 00196 .EQU M2, >12;*IO+RAM| + + + |latch 2 mag | 00197 .EQU FLFREG,>12;*IO+RAM|FULFL+P27FL+ - + - |-----------------------| 00198 .EQU M3, >13;*IO+RAM|-----------------------|latch 3 mag | 00199 .EQU AITLAN,>13;* RAM| +C14 +C13 +C12 |-----------------------| 00200 .EQU M4, >14;*IO+RAM|---------------------- |latch 4 mag | 00201 .EQU STSWD1,>14;* RAM| + +FLOCK+ |-----------------------| 00202 .EQU M5, >15;*IO+RAM|-----------------------|latch 5 mag | 00203 .EQU ROTATE,>15;* RAM| + +NBY +ROTT |latch 5 mag | 00204 .EQU M6, >16;*IO+RAM| + + + |latch 6 mag | 00205 .EQU M7, >17;*IO+RAM| + + + |latch 7 mag | 00206 .EQU T0, >18;*IO+RAM| + + + |latch 0 tens | 00207 .EQU T1, >19;*IO+RAM| + + + |latch 1 tens | 00208 .EQU T2, >1A;*IO+RAM| + + + |latch 2 tens | 00209 .EQU T3, >1B;*IO+RAM|-----------------------|latch 3 tens | 00210 .EQU T4, >1C;*IO+RAM|-----------------------|latch 4 tens | 00211 .EQU T5, >1D;*IO+RAM|-----------------------|latch 5 tens | 00212 .EQU T6, >1E;*IO+RAM|-----------------------|latch 6 tens | 00213 .EQU T7, >1F;*IO+RAM|-----------------------|latch 7 tens | 00214 .EQU PEN, >1B;* RAM|page entry state |-----------------------| 00215 *EQU >1C;* RAM| + + + |-----------------------| 00216 *EQU >1D;* RAM| + + + |-----------------------| 00217 *EQU >1E;* RAM| + + + |-----------------------| 00218 *EQU >1F;* RAM| + + + |-----------------------| 00219 .EQU U0, >20;*IO+RAM|-----------------------|latch 0 units | 00220 .EQU U1, >21;*IO+RAM|-----------------------|latch 1 units | 00221 .EQU U2, >22;*IO+RAM|-----------------------|latch 2 units | 00222 .EQU U3, >23;*IO+RAM|-----------------------|latch 3 units | 00223 .EQU U4, >24;*IO+RAM|-----------------------|latch 4 units | 00224 .EQU U5, >25;*IO+RAM|-----------------------|latch 5 units | 00225 .EQU U6, >26;*IO+RAM|-----------------------|latch 6 units | 00226 .EQU U7, >27;*IO+RAM|-----------------------|latch 7 units | 00227 .EQU STOR0, >20;* RAM|store 0 |-----------------------| 00228 .EQU STOR1, >21;* RAM| |-----------------------| 00229 .EQU STOR2, >22;* RAM| store table |-----------------------| 00230 .EQU STOR3, >23;* RAM| containing |-----------------------| 00231 .EQU STOR4, >24;* RAM| pointers to |-----------------------| 00232 .EQU STOR5, >25;* RAM| latches |-----------------------| 00233 .EQU STOR6, >26;* RAM| |-----------------------| 00234 .EQU STOR7, >27;* RAM|store 7 |-----------------------| 00235 .EQU RCM, >28;*IO+RAM|TOFF +AOFF + + |rcvd mag | 00236 .EQU RCT, >29;*IO+RAM| ? + ? + ? + ? |rcvd tens | 00237 .EQU RCU, >2A;*IO+RAM| ? + ? + ? + ? |rcvd units | 00238 .EQU VDPTXT,>2B;* RAM|UCLK + +UPD +C8YET|URVL +STOP +UEXT +UEXB | 00239 .EQU VDPOSD,>2C;* RAM| + + + |URVL +CFU +UEXT +UEXB | 00240 .EQU USRLAN,>2D;* RAM|FLM +TWIST+LF1 +LF0 |C14 +C13 +C12 + | 00241 .EQU LSTINS,>2E;* RAM|last instruction | 00242 .EQU RCSTAT,>2F;* RAM|CHRM +RMODE |OPCNT | 00243 .EQU ROWPTR,>30;* RAM|LCH2 +LCH1 +LCH0 +ROW4 |ROW3 +ROW2 +ROW1 +ROW0 | 00244 .EQU COLPTR,>31;* RAM| + +COL5 +COL4 |COL3 +COL2 +COL1 +COL0 | 00245 .EQU DHREG, >32;* RAM|HOFF +ICP +POOCD+NRH |TOD +ENDIG+STBRW+BWSE | 00246 .EQU CGA, >33;* RAM| ? + ? + ? + ? |control group A | 00247 .EQU CGB, >34;* RAM| ? + ? + ? + ? |control group B | 00248 .EQU LAFR, >35;* RAM|store for current latch flags | 00249 .EQU MFR, >36;* RAM| + + + |mag flags, rcvd mag | 00250 .EQU TOPRG1,>37;* RAM|BTTER+BTTCA+BTTP +BTTUP|last BTT update code | 00251 .EQU INVCNT,>38;* RAM|inventory page count, LSB is complete flag | 00252 .EQU MREG0, >39;* RAM|DETO +CNR24+CAEXP+ERROV|DISER+PMNM +COOC +STP | 00253 .EQU ERRCNT,>3A;* RAM|error count | 00254 .EQU TIMOUT,>3B;* RAM|OOC display time out | 00255 .EQU RSPI, >3C;* RAM| ? + ? + ? + ? |rcvd sub-page units | 00256 .EQU RSPX, >3D;* RAM| ? + ? + ? + ? |rcvd sub-page tens | 00257 .EQU RSPC, >3E;* RAM| ? + ? + ? + ? |rcvd sub-page hundreds | 00258 .EQU RSPM, >3F;* RAM| ? + ? + ? + ? |rcvd sub-page thousands| 00259 * 00260 .EQU LAF0, >40;* RAM|latch flags, latch 0 | 00261 .EQU LAF1, >41;* RAM|latch flags, latch 1 | 00262 .EQU LAF2, >42;* RAM| " | 00263 .EQU LAF3, >43;* RAM|CAP +VBICA+CLR +OPN | +MPG +BTTL +AITL | 00264 .EQU LAF4, >44;* RAM| (LAFx) | 00265 .EQU LAF5, >45;* RAM| " | 00266 .EQU LAF6, >46;* RAM|latch flags, latch 6 | 00267 .EQU LAF7, >47;* RAM|latch flags, latch 7 | 00268 * 00269 .EQU LFSP0, >48;* RAM|-----------------------|latch for sub-page 0 | 00270 .EQU LFSP1, >49;* RAM|-----------------------|latch for sub-page 1 | 00271 .EQU LFSP2, >4A;* RAM|-----------------------|latch for sub-page 2 | 00272 *EQU >4B;* RAM|-----------------------| + + + | 00273 .EQU AITCNT,>4C;* RAM|-----------------------|AITs left to capture | 00274 *EQU >4D;* RAM|-----------------------| + + + | 00275 *EQU >4E;* RAM|-----------------------| + + + | 00276 *EQU >4F;* RAM|-----------------------| + + + | 00277 *EQU >50;* RAM|-----------------------| + + + | 00278 *EQU >51;* RAM|-----------------------| + + + | 00279 *EQU >52;* RAM|-----------------------| + + + | 00280 *EQU >53;* RAM|-----------------------| + + + | 00281 * 00282 .EQU SP0I, >48;* RAM|req sub-page 0, units |-----------------------| 00283 .EQU SP0X, >49;* RAM|req sub-page 0, tens |-----------------------| 00284 .EQU SP0C, >4A;* RAM|req sub-page 0, h'dreds|-----------------------| 00285 .EQU SP0M, >4B;* RAM|req sub-page 0, th'ands|-----------------------| 00286 .EQU SP1I, >4C;* RAM|req sub-page 1, units |-----------------------| 00287 .EQU SP1X, >4D;* RAM|req sub-page 1, tens |-----------------------| 00288 .EQU SP1C, >4E;* RAM|req sub-page 1, h'dreds|-----------------------| 00289 .EQU SP1M, >4F;* RAM|req sub-page 1, th'ands|-----------------------| 00290 .EQU SP2I, >50;* RAM|req sub-page 2, units |-----------------------| 00291 .EQU SP2X, >51;* RAM|req sub-page 2, tens |-----------------------| 00292 .EQU SP2C, >52;* RAM|req sub-page 2, h'dreds|-----------------------| 00293 .EQU SP2M, >53;* RAM|req sub-page 2, th'ands|-----------------------| 00294 * 00295 .EQU SPREG0,>54;* RAM|LFPCL0 | +MSP2 +MSP1 +MSP0 | 00296 .EQU SPREG1,>55;* RAM|LFPCL1 | +MSP2 +MSP1 +MSP0 | 00297 .EQU SPREG2,>56;* RAM|LFPCL2 | +MSP2 +MSP1 +MSP0 | 00298 .EQU SPFRC, >57;* RAM| ? + ? + ? + ? | +FSP2 +FSP1 +FSP0 | 00299 * 00300 .EQU USPI, >58;* RAM|user sub-page units |-----------------------| 00301 .EQU USPX, >59;* RAM|user sub-page tens |-----------------------| 00302 .EQU USPC, >5A;* RAM|user sub-page hundreds |-----------------------| 00303 .EQU USPM, >5B;* RAM|user sub-page th'ands |-----------------------| 00304 *EQU >5C;* RAM| + + + |-----------------------| 00305 *EQU >5D;* RAM| + + + |-----------------------| 00306 *EQU >5E;* RAM| + + + |-----------------------| 00307 *EQU >5F;* RAM| + + + |-----------------------| 00308 * 00309 .EQU MF0, >58;* RAM|-----------------------|mag flags, mag 0 | 00310 .EQU MF1, >59;* RAM|-----------------------|mag flags, mag 1 | 00311 .EQU MF2, >5A;* RAM|-----------------------| " | 00312 .EQU MF3, >5B;* RAM|-----------------------|MOP +MLP | 00313 .EQU MF4, >5C;* RAM|-----------------------| " | 00314 .EQU MF5, >5D;* RAM|-----------------------|mag flags, mag 5 | 00315 .EQU MF6, >5E;* RAM|-----------------------|mag flags, mag 6 | 00316 .EQU MF7, >5F;* RAM|-----------------------|mag flags, mag 7 | 00317 * 00318 .EQU SCREEN,>60;* RAM|picture, text, box, mix|MENM +TDISP+MNDP1+MNDP0| 00319 .EQU VPPRG1,>61;* RAM|SBL +SLFB +PMPN +CSVDP| - +HOSP +PCSP +SPIN | 00320 .EQU VPPRG2,>62;* RAM|SUBT +NWSF + +DPFC |USPR +CSPLL+DPC +DPHC | 00321 .EQU EXPREG,>63;* RAM|P830F+PDC +VPS +SINP |CGAP +CPRF +USM +SRTC | 00322 .EQU STSWD0,>64;* RAM|TFLG +POFF +FFLG +BADFL| + + + | 00323 .EQU MREG1, >65;* RAM|IFRUN+ADDST+UPSYM+THRSH|FPPP +DETV +RKM +RIB | 00324 .EQU LINCNT,>66;* RAM|number of teletext lines in the last VBI | 00325 .EQU HYSREG,>67;* RAM|hysterisis end stop |hysterisis count | 00326 .EQU DPM, >68;* RAM|display page mag |last page mag | 00327 .EQU DPT, >69;* RAM|display page tens |last page tens | 00328 .EQU DPU, >6A;* RAM|display page units |last page units | 00329 .EQU OGLCNT,>6B;* RAM|on-going teletext line count | 00330 .EQU PDCRG1,>6C;* RAM|flags indicate which DC P26 have been captured | 00331 .EQU PDCRG2,>6D;* RAM|flags indicate which DC P26 have been captured | 00332 .EQU MREG2, >6E;* RAM| + + + | +NMOFF+EVODD+SPALT| 00333 .EQU UPLL, >6F;* RAM|MUTEM+R24T +HPOS +FSYNC|UEL +SIX24+ISYNC+ILCE | 00334 *Local variables, these can be used for local temporary storage. If a 00335 *a sub-routine is called, need to check that the local variable is not 00336 *modified by the sub-routine code unless the variable is an input 00337 *parameter. 00338 .EQU TEST, >70;* RAM| + + + | + + + | 00339 .EQU OLDSTR,>71;* RAM|old store 0 |old store 7 | 00340 .EQU LOCAL, >72;* RAM| + + + | + + + | 00341 .EQU MASK, >73;* RAM| + + + | + + + | 00342 .EQU PM, >74;* RAM|page magazine routines|-----------------------| 00343 .EQU PT, >75;* RAM|page tens pars for|-----------------------| 00344 .EQU PU, >76;* RAM|page units i/p |-----------------------| 00345 .EQU STORE, >77;* RAM| + + + | + + + | 00346 .EQU COUNT, >78;* RAM| + + + | + + + | 00347 .EQU RET4, >79;* RAM| + + + | + + + | 00348 .EQU RET3, >7A;* RAM| + + + | + + + | 00349 .EQU RET2, >7B;* RAM| + + + | + + + | 00350 .EQU RETURN,>7C;* RAM| + + + | + + + | 00351 .EQU THISRW,>7D;* RAM| + + + | + + + | 00352 *end of local variables 00353 .EQU LPPREG,>7E;* RAM|line post processing register | 00354 .EQU HFLGS, >7F;* RAM|host read byte count | 00355 * 00356 *----------------------------------------------------------------------* 00357 * SCRATCH RAM FLAG EQUATES 00358 *----------------------------------------------------------------------* 00359 **** VDP0; *VDP REGISTER 0 (SEE VDP SPEC) 00360 * ----------------------------------------------------------------- 00361 * | |R24ON |R1T23 |R0ON | |DPL | 00362 * ----------------------------------------------------------------- 00363 .EQU R24ON, >40; * 00364 .EQU R1T23, >20; * 00365 .EQU R0ON, >10; * 00366 .EQU DPL, >0F; *DISPLAY LATCH 00367 *----------------------------------------------------------------------* 00368 **** VDP1; *VDP REGISTER 1 (SEE VDP SPEC) 00369 * ----------------------------------------------------------------- 00370 * |BR24 |BR0 |EXPT |EXPB |RVL |BOX |MIX |TEXT | 00371 * ----------------------------------------------------------------- 00372 .EQU BR24, >80; * 00373 .EQU BR0, >40; * 00374 .EQU EXPT, >20; * 00375 .EQU EXPB, >10; * 00376 .EQU RVL, >08; * 00377 .EQU BOX, >04; * 00378 .EQU MIX, >02; * 00379 .EQU TEXT, >01; * 00380 *----------------------------------------------------------------------* 00381 **** VDP3; *VDP REGISTER 3 (SEE VDP SPEC) 00382 * ----------------------------------------------------------------- 00383 * | | | | | | | | | 00384 * ----------------------------------------------------------------- 00385 *----------------------------------------------------------------------* 00386 **** VDP4; *VDP REGISTER 3 (SEE VDP SPEC) 00387 * ----------------------------------------------------------------- 00388 * |CLOCK | | | | | | | | 00389 * ----------------------------------------------------------------- 00390 .EQU CLOCK, >80; *CLOCK MODE 00391 *----------------------------------------------------------------------* 00392 **** SYS1; *SYSTEM MODE REGISTER 1 00393 * ----------------------------------------------------------------- 00394 * | |PCM |FIND |FNRM |FTOP |FFLF | 00395 * ----------------------------------------------------------------- 00396 * 00397 * case(PCM==0): NORMAL mode 00398 * case(PCM==1): TOP mode 00399 * case(PCM==2): FLOF mode 00400 * case(PCM==3): FAVP mode 00401 * 00402 .EQU FIND, >08; *FIND PAGE CAPTURE MODE IN AUTO 00403 * When set, the decoder will switch to FLOF mode when a display page 00404 * with correct FLOF is received if FNRM=FTOP=0. FIND is cleared once 00405 * FLOF is selected. If a BTT is captured when FRM=FTOP=0 and FIND is 00406 * set, the decoder will go to TOP mode. In this case, FIND is not 00407 * cleared so that the decoder can still switch to FLOF (ie FLOF has 00408 * priority over TOP). 00409 .EQU FNRM, >04; *FORCED NORMAL MODE 00410 * The decoder has been forced to NORMAL. 00411 .EQU FTOP, >02; *FORCED TOP MODE 00412 * The decoder has been forced to TOP. 00413 .EQU FFLF, >01; *FORCED FLOF MODE 00414 * The decoder has been forced to FLOF. 00415 *----------------------------------------------------------------------* 00416 **** SYS2, *SYSTEM MODE REGISTER 2 00417 * ----------------------------------------------------------------- 00418 * |R24EN |R24OSD |S6T1 |TVPS |RP24 |CPYR24 |R24RTC |APIN | 00419 * ----------------------------------------------------------------- 00420 .EQU R24EN, >80; *RECEPTION OF PACKET 24 ENABLED (IF APIN=1) 00421 .EQU R24OSD, >40; *ROW 24 OSDS 00422 * This flag inhibits the display of rows 0-23 of the teletext 00423 * page. This allows row 24 to be used for OSDs without the 00424 * need to set menu page mode. 00425 .EQU S6T1, >20; *STORE 6 CONTAINS TOP 1 00426 * In TOP mode, store 6 is set for TOP1 unless menu mode is set. 00427 * This flag is tested on sub-page clear to see if store 6 should be 00428 * swapped back to store 4 00429 .EQU TVPS, >10; *RECEIVED A VPS PACKET 00430 .EQU RP24, >08; *RECEIVE PACKET 24 00431 * This flag enables packet 24 for the display page to be copied 00432 * from store 6 when CPYR24=1 and R24RTC=1. 00433 .EQU CPYR24, >04; *COPY ROW 24 00434 * When set, this flag causes the display page row 24 to be copied 00435 * from store 6 to the display page in the next VPP if 00436 * RP24 and R24RTC are set. 00437 .EQU R24RTC, >02; *ROW 24 READY TO COPY 00438 * This flag indicates that a row 24 for the display page has been 00439 * captured in store 6. 00440 .EQU APIN, >01; *AUTOMATIC PROMPTS INHIBITED 00441 *----------------------------------------------------------------------* 00442 **** PLLRG1, *PLL REGISTER 1 00443 * ----------------------------------------------------------------- 00444 * |MUTE |R24B |HPOS |INSYNC |UEL |SIX24 |LOCK |ILCE | 00445 * ----------------------------------------------------------------- 00446 .EQU MUTE, >80; *MUTE OUTPUT ACTIVE 00447 .EQU R24B, >40; *ROW 24 BOTTOM ROW 00448 .EQU HPOS, >20; *SHIFT TO RIGHT 00449 .EQU INSYNC, >10; *ENABLE INTERNAL SYNC 00450 .EQU UEL, >08; *UNLOCKED EXTRA LINE 00451 .EQU SIX24, >04; *624 LINES PER FRAME 00452 .EQU LOCK, >02; *TRY TO LOCK TO INCOMMING FIELD SYNC 00453 .EQU ILCE, >01; *INTERLACE MODE 00454 *----------------------------------------------------------------------* 00455 **** UPLL, *USER PLL MODE 00456 * ----------------------------------------------------------------- 00457 * |MUTEM |R24T |HPOS |FSYNC |UEL |SIX24 |ISYNC |ILCE | 00458 * ----------------------------------------------------------------- 00459 .EQU MUTEM, >80; *MUTE MODE 00460 .EQU R24T, >40; *ROW 24 TOP ROW 00461 .EQU FSYNC, >10; *FORCE SYNC SWITCH MODE 00462 .EQU ISYNC, >02; *INTERNAL SYNC MODE 00463 *ELSE THE SAME AS PLLRG1 00464 *----------------------------------------------------------------------* 00465 **** POLREG, *POLLING REGISTER 00466 * --------------------------------- 00467 * |VBIFLG |WAIT |VBITF |LFTOG | 00468 * --------------------------------- 00469 .EQU VBIFLG, >80; *VBI FLAG 00470 * This flag indicates the last tested state of the VBI state. 00471 .EQU WAIT, >40; *WAIT 00472 * This flag is set to stop the interface from being serviced until 00473 * the end of VBI. 00474 .EQU VBITF, >20; *VBI THIS FIELD 00475 * A VBI has been detected since the last time the field toggle 00476 * line changed state. 00477 .EQU LFTOG, >10; *LAST FIELD TOGGLE 00478 * This flag is used to detect a change of state on the field 00479 * toggle line. 00480 *----------------------------------------------------------------------* 00481 **** LTK, *LAST TOP KEY 00482 * This nibble holds the last TOP key entered. This is used when 00483 * initialising TOP latches. 00484 * --------------------------------- 00485 * | | | | | 00486 * --------------------------------- 00487 * If LTK=0, RED key or initialisation 00488 * If LTK=1, GREEN or this page is a TV page 00489 * If LTK=2, YELLOW key 00490 * If LTK=4, BLUE key 00491 *----------------------------------------------------------------------* 00492 **** FLFREG, *FLOF REGISTER 00493 * This register holds the FLOF status of the displayed page and 00494 * is updated every time the display page is captured. 00495 * --------------------------------- 00496 * |FULFLF |P27FLF | - | - | 00497 * --------------------------------- 00498 .EQU FULFLF, >80; *FULL FLOF 00499 * A packet 27 with the display row 24 flag set, and a packet 24 00500 * for the display page has been received. 00501 .EQU P27FLF, >40; *PACKET 27 FLOF 00502 * A packet 27 for the display page has been received with either 00503 * the display row 24 flag not set or no packet 24. 00504 *----------------------------------------------------------------------* 00505 **** STSWD1, *STATUS WORD 1 REGISTER 00506 * --------------------------------- 00507 * | | |FLOCK | | 00508 * --------------------------------- 00509 .EQU FLOCK, >20; *FIELD LOCK 00510 * This flag is set if a VBI was detected during the last field 00511 * toggle period. 00512 *----------------------------------------------------------------------* 00513 **** ROTATE, *ROTATE IN BLOCK FLAGS 00514 * These flags control the rotate in block function, if either 00515 * is set, the rotate will be inhibited. 00516 * --------------------------------- 00517 * | | |NBY |ROTT | 00518 * --------------------------------- 00519 .EQU NBY, >20; *NO BLOCK FOUND YET 00520 .EQU ROTT, >10; *ALREADY ROTATED IN A BLOCK 00521 *----------------------------------------------------------------------* 00522 **** PEN, *PAGE ENTRY STATE 00523 * The nibble tracks the digit entry sequence, the 2 lsbs are the 00524 * number of '-' required for incomplete pages. The third lsb 00525 * indicates sub-page mode. 00526 * --------------------------------- 00527 * | | | | | 00528 * --------------------------------- 00529 * If PEN=0, complete main page entered P100 00530 * If PEN=1, main page tens entered P10- 00531 * If PEN=2, main page mag entered P1-- 00532 * If PEN=4, complete sub-page entered 1234 00533 * If PEN=5, sub-page tens entered 123- 00534 * If PEN=6, sub-page hundreds entered 12-- 00535 * If PEN=7, sub-page thousands entered 1--- 00536 *----------------------------------------------------------------------* 00537 **** RCM, *RECEIVED MAGAZINE 00538 * ----------------------------------------------------------------- 00539 * |TOFF |AOFF | | |received magazine | 00540 * ----------------------------------------------------------------- 00541 .EQU TOFF, >80; *TELETEXT OFF 00542 * This flag is set by STOP and cleared by START to inhibit and 00543 * re-start teletext reception. 00544 .EQU AOFF, >40; *AUTO TELETEXT OFF 00545 * This flag is used to inhibit teletext reception when the 00546 * automatic teletext reception threshold is enabled. 00547 *----------------------------------------------------------------------* 00548 **** VDPTXT *VDP FLAGS FOR TELETEXT DISPLAYS 00549 * This register is an input registers for the SVDP routine. 00550 * Together with the page related status data stored in 00551 * page RAM, it defines how the displayed page is displayed. 00552 * ----------------------------------------------------------------- 00553 * |UCLK | |UPD |C8YET |URVL |STOP |UEXT |UEXB | 00554 * ----------------------------------------------------------------- 00555 .EQU UCLK, >80; *USER CLOCK MODE 00556 .EQU UPD, >20; *UPDATE MODE 00557 .EQU C8YET, >10; *C8 HEADER BIT RECEIVED YET 00558 * This flag is cleared when UPD is set and set when a header 00559 * of the displayed page with C8 set is received, on first capture 00560 * of a page or on page number entry. This is the time 00561 * when the user is prompted with the page number rather than the 00562 * update symbol in update mode. UPD and C8YET therefore define 00563 * the current update mode. 00564 .EQU URVL, >08; *USER REVEAL 00565 * This bit is toggled by the high level reveal function. It 00566 * must be cleared if the displayed page is cleared for any 00567 * reason. 00568 .EQU STOP, >04; *STOP OR HOLD 00569 .EQU UEXT, >02; *USER EXPAND TOP 00570 .EQU UEXB, >01; *USER EXPAND BOTTOM 00571 *----------------------------------------------------------------------* 00572 **** VDPOSD *VDP FLAGS FOR MENU PAGES 00573 * This register is an input parameter for the SVDP routine. 00574 * ----------------------------------------------------------------- 00575 * | | | | |URVL |CFU |UEXT |UEXB | 00576 * ----------------------------------------------------------------- 00577 *EQU URVL, >08; *USER REVEAL 00578 .EQU CFU, >04; *CLOCK FIELD OF MENU PAGE UPDATED 00579 * When set, this flag enables the display of concealed characters 00580 * in the menu page display. 00581 *EQU UEXT, >02; *USER EXPAND TOP 00582 *EQU UEXB, >01; *USER EXPAND BOTTOM 00583 *----------------------------------------------------------------------* 00584 **** USRLAN, *USER LANGUAGE 00585 * 00586 * TCJ April 94, 00587 * TWIST and ILANG added. 00588 * 00589 * This register is updated via the user interface. It defines 00590 * the language used for OSD displays and the default language 00591 * used for teletext displays. 00592 * If FLM=0, the C bits are updated by teletext headers. 00593 * If FLM=1, the C bits are not updated by teletext headers. 00594 * ----------------------------------------------------------------- 00595 * |FLM |TWIST |LF1 |LF0 |C14 |C13 |C12 |ILANG | 00596 * ----------------------------------------------------------------- 00597 .EQU FLM, >80; *FORCED LANGUAGE MODE 00598 * This bit is set when the teletext display is to be forced to 00599 * a language (defined by USRLAN). 00600 .EQU TWIST, >40; *ENABLE TWIST MODE 00601 * When set, enables the twist (>1B) serial attribute. 00602 .EQU ILANG, >01; *INITIAL LANGUAGE 00603 * Defines the initial languge for the start of a display row, when 00604 * 0 the defaults to LATIN at start of a line. If set to a 1, defaults 00605 * to CYRILIC. 00606 * 00607 *----------------------------------------------------------------------* 00608 **** RCSTAT, *REMOTE CONTROL STATE 00609 * ----------------------------------------------------------------- 00610 * |CHRM |RMODE |OPCNT | 00611 * ----------------------------------------------------------------- 00612 .EQU CHRM, >80; *CHARACTER MODE 00613 .EQU RMODE, >70; *READ DATA MODE 00614 * These three bits indicate what data should be written to the I2C 00615 * interface the next time the host reads a byte. 00616 .EQU OPCNT, >0F; *OPERAND COUNT 00617 * These bits contain the number of operands to be received for 00618 * multi-operand commands. If non-zero, the RC code will 00619 * use LSTINS and OPCNT to work out what to do with the 00620 * received byte. 00621 *----------------------------------------------------------------------* 00622 **** DHREG; *DISPLAY HEADER REGISTER 00623 * ----------------------------------------------------------------- 00624 * |HOFF |ICP |POOCD |NRH |TOD |ENDIG | |BWSE | 00625 * ----------------------------------------------------------------- 00626 .EQU HOFF, >80; *HEADER OFF 00627 * This bit used by high level functions to inhibit the reception 00628 * of the display page header characters. 00629 .EQU ICP, >40; *INCOMPLETE PAGE 00630 * When set, this flag inhibits UPDATE and suppressed header, and 00631 * causes the header to be boxed. 00632 .EQU POOCD, >20; *PAGE OUT OF CYCLE DISPLAY 00633 .EQU NRH, >10; *ROLLING HEADER 00634 * This bit is used by low level functions to switch on/ off a 00635 * rolling header display. 00636 .EQU TOD, >08; *TIME OUT DISPLAY 00637 * When this flag is set, row 0 and row 24 of the teletext display 00638 * are always enabled and boxed (FLOF or APIN can override). 00639 .EQU ENDIG, >04; *ENABLE DIGIT 00640 * This flag enables digit entry in box mode if DETO is set. 00641 .EQU STBRW, >02; *SUBTITLE BROWSE 00642 .EQU BWSE, >01; *BROWSE 00643 * This is set when STORE 0 has been initialised to receive the 00644 * next received page. If this flag is set, then the next header 00645 * of a page not in a latch (if a decimal page and not a subtitle) 00646 * causes STORE 0 to receive that page. 00647 *----------------------------------------------------------------------* 00648 **** TOPRG1, *TOP REGISTER 1 00649 * ----------------------------------------------------------------- 00650 * |BTTERR |BTTCAP |BTTP |BTTUP |last BTT update code | 00651 * ----------------------------------------------------------------- 00652 .EQU BTTERR, >80; *BTT ERR 00653 * This flag is cleared when a latch is opened to receive a BTT and 00654 * is set if an error in the BTT is detected. It gives an indication 00655 * to the reliability of currently stored BTT data. 00656 .EQU BTTCAP, >40; *BTT CAPTURED 00657 * This flag indicates that a BTT has been captured in STOR1. It 00658 * is cleared on a channel change and when STOR1 is initialised 00659 * to receive something else (eg in FLOF mode). 00660 .EQU BTTP, >20; *BTT PROCESSING TO DO 00661 * This flag initiates VBI post processing of a captured BTT, it 00662 * is cleared when the processing is complete. 00663 .EQU BTTUP, >10; *UPDATED BTT PROCESSING TO DO 00664 * This flag initiates VBI post processing of a captured BTT 00665 * which has been 'updated'. This could mean that an update has 00666 * been indicated in the BTT sub-code, or that BTT processing 00667 * needs to be done for the first time. This flag causes the AIT 00668 * latches to be re-initialised. It is cleared when the processing 00669 * is complete. 00670 *----------------------------------------------------------------------* 00671 **** MREG0, *MODE REGISTER 0 00672 * ----------------------------------------------------------------- 00673 * |DETO |CNR24D |CAEXP |ERROVF |DISERR |PMNM |COOCD |STP | 00674 * ----------------------------------------------------------------- 00675 .EQU DETO, >80; *DIGIT ENTRY TIME-OUTS ENABLED 00676 * This flag enables causes a digit entry key to time out a header 00677 * display if the decoder is in box mode. The user has to press 00678 * the digit while the header is displayed for it to be accepted. 00679 .EQU CNR24D, >40; *CLEAR NEWSFLASH ROW 24 DISPLAY 00680 * This flag disables the display of row 24 on newsflash pages. 00681 .EQU CAEXP, >20; *CLEAR AUTO-EXPAND 00682 * This flag prevents the decoder from switchin from expand bottom 00683 * to expand top on page number entry. 00684 .EQU ERROVF, >10; *ENABLE ERROR OVERFLOW 00685 * This flag enables ths error count to overflow. 00686 .EQU DISERR, >08; *DISPLAY ERROR COUNT 00687 * This flag enables a display of the error count in the page field 00688 * for system de-bug. 00689 .EQU PMNM, >04; *PLUS MINUS NORMAL MENU 00690 * This flag selects the Grundig style normal menu 00691 .EQU COOCD, >02; *CLEAR OUT OF CYCLE DISPLAY 00692 .EQU STP, >01; *DISPLAY 'STOP' INSTEAD OF HOLD SYMBOL 00693 * 00694 *----------------------------------------------------------------------* 00695 * TCJ Nov 92 - Addition of MODE2 control mode register 00696 * Jan 94 - Addition of NMOFF flag 00697 * 00698 * MREG2, 00699 * ---------------------------------------------------------------- 00700 * | XMUTE | | | | | NMOFF | EVODD |SPALT | 00701 * ---------------------------------------------------------------- 00702 .EQU XMUTE, >80; * Inverted mute signal 00703 * Forces the MUTE output to be inverted. 00704 .EQU SPALT, >01; * Alternate subpage mode. 00705 * Forces the subpage mode to capture the next two subpages transmitted 00706 * after the display page. Default mode is to capture the next two 00707 * numerical subpages. 00708 .EQU EVODD, >02; * Alternate EVEN/ODD signal 00709 * When set enables the alternate EVEN/ODD signal behaviour of 00710 * FLAG2. 00711 .EQU NMOFF, >04; * Disables Normal Mode prompt 00712 * When set the normal mode row 24 prompt will be disabled from being 00713 * displayed until the inventory page is complete. This has the effect 00714 * that under most circumstances on a FLOF or TOP channel, row 24 will 00715 * stay blank until FLOF mode or TOP mode id initiated. 00716 * 00717 *----------------------------------------------------------------------* 00718 **** SPREGx, *SUB-PAGE REGISTER FOR S-P LATCH x 00719 * There is a sub-page register for each sub-page latch 00720 * containing:- 00721 * LFPCLx The latch number to test against PCL. 00722 * This is necessary because we may be looking for more than one 00723 * sub-page of a main page. 00724 * ----------------------------------------------------------------- 00725 * |LFPCLx | |MSP2 |MSP1 |MSP0 | 00726 * ----------------------------------------------------------------- 00727 .EQU MSP, >07; *SUB-PAGE LATCH MARKER FIELD 00728 .EQU MSP0, >01; *marker for sub-page capture latch 0 00729 .EQU MSP1, >02; *marker for sub-page capture latch 1 00730 .EQU MSP2, >04; *marker for sub-page capture latch 2 00731 *----------------------------------------------------------------------* 00732 * TCJ Nov 92 00733 * SPFRC, *FORCE SUB-PAGE CAPTURE 00734 * ----------------------------------------------------------------- 00735 * | | | | | |FSP2 |FSP1 |FSP0 | 00736 * ----------------------------------------------------------------- 00737 * 00738 .EQU FSP0, >01; 00739 .EQU FSP1, >02; 00740 .EQU FSP2, >04; 00741 * 00742 *----------------------------------------------------------------------* 00743 **** LAFx, >??; *LATCH FLAGS- LATCH x 00744 * These registers contain latch related status. 00745 * ----------------------------------------------------------------- 00746 * |CAP |VBICAP |CLR |OPN | |MPG |BTTL |AITL | 00747 * ----------------------------------------------------------------- 00748 .EQU CAP, >80; *PAGE HAS BEEN CAPTURED 00749 * This flag is cleared when a latch is initialised and set by the 00750 * VBI post processing code when the page has been captured. 00751 .EQU VBICAP, >40; *PAGE HAS BEEN CAPTURED DURING THE LAST VBI 00752 * This flag is used to indicate to the VBI code that the latch 00753 * has captured a page. It is set in the header post processing 00754 * and cleared by the VBI code at the end of each VBI. 00755 .EQU CLR, >20; *CLEAR LATCH 00756 * This flag is used to indicate to the VBI code that this latch 00757 * should be cleared (eg by C4 or for first capture). 00758 .EQU OPN, >10; *LATCH IS OPEN 00759 * This flag is set while the latch is open. It can be used to 00760 * inhibit some processing (eg BTT processing) until the page 00761 * has been terminated. However, it must be used very 00762 * carefully as some pages are never terminated (eg BBC 00763 * subtitles). 00764 .EQU MPG, >04; *LATCH IS SET TO RECIEVE A MENU PAGE 00765 .EQU BTTL, >02; *LATCH IS SET TO RECIEVE A BTT 00766 .EQU AITL, >01; *LATCH IS SET TO RECIEVE AN AIT 00767 * N.B. If BTT or AITL is set, the page should not be 00768 * displayed if the page is entered by the user, and the latch 00769 * should not be shuffled when the user selects a page which 00770 * is stored in non-displayed RAM. 00771 *----------------------------------------------------------------------* 00772 **** MFx, MFR; *MAGAZINE FLAGS 00773 * These registers contain magazine related status. The flags 00774 * are used to find the appropriate latch when a magazine is 00775 * received. 00776 * ----------------------------------------------------------------- 00777 * | | | | |MOP | MLP | 00778 * ----------------------------------------------------------------- 00779 .EQU MOP, >08; *MAG OPEN FLAG 00780 .EQU MLP, >07; *MAG LATCH POINTER 00781 * When the header processing code opens a magazine, it places the 00782 * page capture latch output in this field. This points the row 00783 * reception code to the correct page in memory. 00784 *----------------------------------------------------------------------* 00785 **** SCREEN, * 00786 * ----------------------------------------------------------------- 00787 * |picture, teletext, mix and box |MENM |TDISP |MNDP1 |MNDP0 | 00788 * ----------------------------------------------------------------- 00789 * The MSN defines the user selected screen, this may differ 00790 * from the actual screen mode (eg in update). 00791 * case(SCREEN==0):PIC 00792 * case(SCREEN==1):TXT 00793 * case(SCREEN==2):MIX 00794 * case(SCREEN==3):BOX 00795 .EQU MENM, >08; *MENU MODE 00796 .EQU TDISP, >04; *TELETEXT DISPLAY 00797 * This flag indicates that there is a teletext display. This flag 00798 * is used to enable teletext functions. 00799 .EQU MNDP1, >02; *MENU DISPLAY PAGE 1 00800 * This flag indicates that the current display page is menu 00801 * page 1 (store 7). 00802 .EQU MNDP0, >01; *MENU DISPLAY PAGE 0 00803 * This flag indicates that the current display page is menu 00804 * page 0 (store 6). 00805 * N.B. If neither MNDPx or TDISP is set, the clock function can be 00806 * enabled. 00807 *----------------------------------------------------------------------* 00808 **** VPPRG1, *VBI POST PROCESSING REGISTER 00809 * ----------------------------------------------------------------- 00810 * |SBL |SLFB |PMPN |CSVDP | - |HOSP |PCSP |SPIN | 00811 * ----------------------------------------------------------------- 00812 .EQU SBL, >80; *SORT BACKGROUND LATCHES 00813 * This flag causes the VBI post processing code to 'sort' the 00814 * non-displayed latches. This is necessary, for example, when 00815 * a new TOP table has been received. 00816 .EQU SLFB, >40; *SET LATCH FOR BROWSE 00817 * This flag is set when the BROWSE command is received. At the end 00818 * of the next VBI, STORE 0 will be initialised to receive the next 00819 * received page and the BWSE flag is set to direct the header code 00820 * to capture it. 00821 .EQU PMPN, >20; *PROCESS NEW PAGE NUMBER 00822 * This flag is set to tell the VPP routine to process a new page 00823 * number. 00824 .EQU CSVDP, >10; *CALL SET VDP REGISTERS ROUTINE 00825 * This flag is set to call the SVDP routine at the end of the next 00826 * VBI. The SVDP routine updates all the VDP registers 00827 .EQU HOSP, >04; *HOLD DISPLAYED SUB-PAGE 00828 .EQU PCSP, >02; *PROCESS COMPLETE SUB-PAGE IN SPLM CODE 00829 .EQU SPIN, >01; *SUB-PAGE PAGE LATCH INIT 00830 * This flag causes sub-page latch initialisation in SPLM 00831 *----------------------------------------------------------------------* 00832 **** VPPRG2, *VBI POST PROCESSING REGISTER 00833 * ----------------------------------------------------------------- 00834 * |SUBT |NWSF | |DPFC |USPR |CSPLL |DPC |DPHC | 00835 * ----------------------------------------------------------------- 00836 .EQU SUBT, >80; *STORE 0 IS A SUBTITLE PAGE 00837 .EQU NWSF, >40; *STORE 0 IS A NEWSFLASH PAGE 00838 .EQU DPFC, >10; *DISPLAY PAGE FIRST CAPTURE 00839 * This flag indicates to the VPP code that the display page 00840 * has just been captured for the first time. 00841 .EQU USPR, >08; *UPDATE SUB-PAGE REGISTERS IN TOP MODE 00842 .EQU CSPLL, >04; *CALL SET PLL REGISTERS ROUTINE 00843 .EQU DPC, >02; *DISPLAY PAGE CAPTURED 00844 * This flag indicates that the display page was captured during 00845 * the last VBI. 00846 .EQU DPHC, >01; *DISPLAY PAGE HEADER CAPTURED 00847 * This flag indicates that a header of the displayed page was 00848 * captured during the last VBI period. 00849 *----------------------------------------------------------------------* 00850 **** EXPREG, *EXTENSION PACKETS REGISTER 00851 * ----------------------------------------------------------------- 00852 * |P830F2 |PDC |VPS |SINP |CGAP |CPRF |USM |SRTC | 00853 * ----------------------------------------------------------------- 00854 .EQU P830F2, >80; *CAPTURE PACKET 8/30 FORMAT 2 00855 .EQU PDC, >40; *CAPTURE PDC PACKET 26S 00856 .EQU VPS, >20; *CAPTURE VPS PACKET 00857 .EQU SINP, >10; *SEARCH FOR PACKET 8/30 INITIAL PAGE 00858 * This flag is set on a channel change initialisation to enable 00859 * the packet 8/30 initial page for the new channel to be received. 00860 .EQU CGAP, >08; *CALL GENERATE A PROMPT ROUTINE IN VPP 00861 * If this flag is set, the VBI post processing code will generate 00862 * a prompt (if APIN=0). 00863 .EQU CPRF, >04; *CLEAR PROMPT FIRST 00864 * If this flag is set, the GAP code will clear row 24 before 00865 * generating a prompt. 00866 .EQU USM, >02; *USER STATUS MODE 00867 * This mode is set when the packet 8/30 field is being 00868 * automatically displayed by the status function. 00869 .EQU SRTC, >01; *STATUS READY TO COPY 00870 * This flag is set when the packet 8/30 status field is captured. 00871 * If USM=1 and SRTC=1, the VBI post processing code clears SRTC 00872 * and copies the status info to store 0. 00873 *----------------------------------------------------------------------* 00874 **** STSWD0, *STATUS WORD 0 REGISTER 00875 * ----------------------------------------------------------------- 00876 * |TFLG |POFF |FFLG |BADFLG | | | | | 00877 * ----------------------------------------------------------------- 00878 .EQU TFLG, >80; *TOP FLAG 00879 .EQU POFF, >40; *PICTURE OFF FLAG 00880 * This flag is set if the sync switch is set to internal sync. 00881 .EQU FFLG, >20; *FLOF FLAG 00882 .EQU BADFLG, >10; *BAD QUALITY FLAG 00883 *----------------------------------------------------------------------* 00884 **** MREG1, *MODE REGISTER 1 00885 * ----------------------------------------------------------------- 00886 * |IFRUN |ADDSTS |UPSYM |THRSH |FPPP |DETV |RKM |RIB | 00887 * ----------------------------------------------------------------- 00888 .EQU IFRUN, >80; *INHIBIT FREE-RUN 00889 * If set, this prevents the free-run PLL coeffs being loaded if 00890 * the quality algorithm indicates a bad signal. The decoder will 00891 * always try to lock (unless 624 mode is set). 00892 .EQU ADDSTS, >40; *ADDITIONAL STATUS BYTES SELECTED 00893 .EQU UPSYM, >20; *UPDATE SYMBOL MODE (SET NOKIA MODE) 00894 .EQU THRSH, >10; *TELETEXT THRESHOLD ACTIVE 00895 .EQU FPPP, >08; *FORCE PAGE PREFIX TO P 00896 .EQU DETV, >04; *DIGIT ENTRY ENABLED IN TV MODE 00897 .EQU RKM, >02; *RED KEY MODE (SET NOKIA MODE) 00898 .EQU RIB, >01; *ROTATE IN GROUP (SET NOKIA MODE) 00899 *----------------------------------------------------------------------* 00900 **** LPPREG, >29; *LINE POST PROCESSING REGISTER 00901 * ----------------------------------------------------------------- 00902 * | | | | | | | | | 00903 * ----------------------------------------------------------------- 00904 * If LPPREG=0, no post processing to do 00905 * If LPPREG=1, process a header of a page not in a latch. 00906 * If LPPREG=2, process a header of a page in a latch. 00907 * If LPPREG=3, packet 1-24 stored 00908 * If LPPREG=4, there was a ROW or MAG hamming error 00909 * If LPPREG=5, there was a UNITS or TENS hamming error 00910 * If LPPREG=6, packet 26 received and PDC triplets stored 00911 * If LPPREG=7, packet 8/30 format 2 00912 * If LPPREG=8, process header in browse mode 00913 * If LPPREG=9, packet 8/30 format 1 00914 * If LPPREG=10, process BTT line with error 00915 * If LPPREG=11, packet 24 received 00916 *----------------------------------------------------------------------* 00917 **** HFLGS, *HARD FLAGS (!!! NOT RESET BY SRST!!!) 00918 * ----------------------------------------------------------------- 00919 * | | | | | | | | | 00920 * ----------------------------------------------------------------- 00921 *----------------------------------------------------------------------* 00922 **** MASK, *TEMPORARY MASK FOR BTT AND SUB-PAGE CHECKS 00923 * ----------------------------------------------------------------- 00924 * | | | | |BTTM |MSP | 00925 * ----------------------------------------------------------------- 00926 .EQU BTTM, >08; *BTT MASK BIT FOR SUB-PAGE CHECK CODE 00927 *EQU MSP, >07; *SUB-PAGE LATCH MARKER FIELD (SEE SPREGx) 00928 *----------------------------------------------------------------------* 00929 **** ****, * 00930 * ----------------------------------------------------------------- 00931 * | | | | | | | | | 00932 * ----------------------------------------------------------------- 00933 *EQU 00934 *----------------------------------------------------------------------* 00935 *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++* 00936 * 00937 * MICROCODE ADDRESS EQUATES 00938 * 00939 *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++* 00940 * 00941 .EQU HRST0, >000; * Harware reset, must be >000 00942 * 00943 .EQU I30Y, >010; *CASE ROW-24 00944 .EQU I31, >011; * 00945 .EQU I32, >012; * 00946 .EQU I33, >013; * 00947 .EQU I34, >014; * 00948 .EQU I35, >015; * 00949 *EQU >016; *UNUSED 00950 .EQU I37, >017; 00951 * 00952 .EQU DR10Y, >018; *CASE 00953 .EQU DR11, >019; * 00954 .EQU DR12, >01A; * 00955 * 00956 .EQU HD20Y, >020; *CASE PCL 00957 .EQU HD21, >021; * 00958 .EQU HD22, >022; * 00959 .EQU HD23, >023; * 00960 .EQU HD24, >024; * 00961 .EQU HD25, >025; * 00962 .EQU HD26, >026; * 00963 .EQU HD27, >027; * 00964 * 00965 .EQU CGB5Y, >030; *RETURN FROM WAIT 00966 .EQU BSD7, >031; * 00967 .EQU BSD9, >032; * 00968 .EQU BSD71B, >033; * 00969 .EQU PLP45, >034; * 00970 .EQU PLP55, >035; * 00971 .EQU PLP24B, >036; * 00972 .EQU VPS006, >037; * 00973 .EQU VPS014, >038; * 00974 * 00975 .EQU CGAXX.0, >040; *CASE 00976 .EQU CGAXX.1, >041; * 00977 .EQU CGAXX.2, >042; * 00978 .EQU CGAXX.3, >043; * 00979 .EQU CGAXX.4, >044; * 00980 .EQU CGAXX.5, >045; * 00981 .EQU CGAXX.6, >046; * 00982 .EQU CGAXX.7, >047; * 00983 * 00984 .EQU PND62Y, >050; *CASE RETURN FROM PND50T 00985 .EQU GAP51, >051; * 00986 .EQU GAP310, >052; * 00987 *EQU CMPE55T, >053; *(ACTUALLY EXITS BEFORE CASE) 00988 * 00989 .EQU CKR200Y, >060; *CASE RETURN FROM GFL0 00990 .EQU IKR20, >061; * 00991 .EQU FPFS210, >062; * 00992 .EQU GAP62B, >063; * 00993 * 00994 .EQU PND80Y, >070; *CASE RETURN FROM PND72 00995 .EQU GAP342, >071; * 00996 * 00997 .EQU SVDP10Y, >080; *CASE UPD+C8YET 00998 .EQU SVDP11, >081; * 00999 .EQU SVDP12, >082; * 01000 .EQU SVDP13, >083; * 01001 * 01002 .EQU SVDP20Y, >090; *CASE SCREEN 01003 .EQU SVDP21, >091; * 01004 .EQU SVDP22, >092; * 01005 .EQU SVDP23, >093; * 01006 * 01007 .EQU VPP500Y, >0A0; *CASE RETURN FROM CBR0 01008 .EQU FPFS410, >0A1; * 01009 .EQU FPFS430, >0A2; * 01010 * 01011 .EQU PLP20Y, >0B0; *CASE LINK IN PLP CODE 01012 .EQU PLP21, >0B1; * 01013 .EQU PLP22, >0B2; * 01014 .EQU PLP23, >0B3; * 01015 .EQU PLP24, >0B4; * 01016 .EQU PLP25, >0B5; * 01017 .EQU PLP26, >0B6; * 01018 * 01019 .EQU RC40Y, >0C0; *CASE RETURN FROM POINT0F 01020 .EQU RC60A, >0C1; * 01021 * 01022 .EQU SMENM7Y, >0D0; *CASE RETURN FROM CSCN 01023 .EQU DI100, >0D1; * 01024 .EQU INPCM14E, >0D2; * 01025 .EQU ROW10, >0D3; * 01026 .EQU CHNG3, >0D4; * 01027 .EQU CHNG4, >0D5; * 01028 .EQU CHNG2A, >0D6; * 01029 .EQU CHNG2B, >0D7; * 01030 * 01031 .EQU VPP215Y, >0E0; *CASE RETURN FROM MASK0 01032 .EQU LPP20, >0E1; * 01033 .EQU LPP110, >0E2; * 01034 * 01035 .EQU RC60Y, >0F0; *CASE RMODE 01036 .EQU RC61, >0F1; * 01037 .EQU RC62, >0F2; * 01038 .EQU RC63, >0F3; * 01039 .EQU RC64, >0F4; * 01040 .EQU RC65, >0F5; * 01041 .EQU RC66, >0F6; * 01042 .EQU RC67, >0F7; * 01043 * 01044 .EQU PND53.0, >100; *CASE 01045 .EQU PND53.1, >101; * 01046 .EQU PND53.2, >102; * 01047 .EQU PND53.3, >103; * 01048 * 01049 .EQU PND54A.0, >110; *CASE 01050 .EQU PND54A.1, >111; * 01051 .EQU PND54A.2, >112; * 01052 .EQU PND54A.3, >113; * 01053 .EQU PND54A.4, >114; * 01054 .EQU PND54A.5, >115; * 01055 .EQU PND54A.6, >116; * 01056 .EQU PND54A.7, >117; * 01057 * 01058 .EQU PND54B.0, >120; *CASE 01059 .EQU PND54B.1, >121; * 01060 .EQU PND54B.2, >122; * 01061 .EQU PND54B.3, >123; * 01062 .EQU PND54B.4, >124; * 01063 .EQU PND54B.5, >125; * 01064 .EQU PND54B.6, >126; * 01065 .EQU PND54B.7, >127; * 01066 * 01067 .EQU PND54C.0, >130; *CASE 01068 .EQU PND54C.1, >131; * 01069 .EQU PND54C.2, >132; * 01070 .EQU PND54C.3, >133; * 01071 .EQU PND54C.4, >134; * 01072 .EQU PND54C.5, >135; * 01073 .EQU PND54C.6, >136; * 01074 .EQU PND54C.7, >137; * 01075 * 01076 .EQU PND54D.0, >140; *CASE 01077 .EQU PND54D.1, >141; * 01078 .EQU PND54D.2, >142; * 01079 .EQU PND54D.3, >143; * 01080 .EQU PND54D.4, >144; * 01081 .EQU PND54D.5, >145; * 01082 .EQU PND54D.6, >146; * 01083 .EQU PND54D.7, >147; * 01084 * 01085 .EQU DI0XY, >200; *CASE 01086 .EQU DI1X, >201; * 01087 .EQU DI2X, >202; * 01088 .EQU DI3X, >203; * 01089 .EQU DI4X, >204; * 01090 .EQU DI5X, >205; * 01091 .EQU DI6X, >206; * 01092 .EQU DI7X, >207; * 01093 * 01094 .EQU GFP20Y, >208; *CASE 01095 .EQU GFP21, >209; * 01096 .EQU GFP22, >20A; * 01097 .EQU GFP23, >20B; * 01098 * 01099 .EQU DI00Y, >210; *CASE 01100 .EQU DI01, >211; * 01101 .EQU DI02, >212; * 01102 .EQU DI03, >213; * 01103 .EQU DI04, >214; * 01104 .EQU DI05, >215; * 01105 .EQU DI06, >216; * 01106 .EQU DI07, >217; * 01107 .EQU DI08, >218; * 01108 .EQU DI09, >219; * 01109 .EQU DI0A, >21A; * 01110 .EQU DI0B, >21B; * 01111 .EQU DI0C, >21C; * 01112 .EQU DI0D, >21D; * 01113 .EQU DI0E, >21E; * 01114 .EQU DI0F, >21F; * 01115 * 01116 .EQU DI10Y, >220; *CASE 01117 .EQU DI11, >221; * 01118 .EQU DI12, >222; * 01119 .EQU DI13, >223; * 01120 .EQU DI14, >224; * 01121 .EQU DI15, >225; * 01122 .EQU DI16, >226; * 01123 .EQU DI17, >227; * 01124 .EQU DI18, >228; * 01125 .EQU DI19, >229; * 01126 .EQU DI1A, >22A; * 01127 .EQU DI1B, >22B; * 01128 .EQU DI1C, >22C; * 01129 .EQU DI1D, >22D; * 01130 .EQU DI1E, >22E; * 01131 .EQU DI1F, >22F; * 01132 * 01133 .EQU CKR30Y, >230; *CASE 01134 .EQU CKR31, >231; * 01135 .EQU CKR32, >232; * 01136 .EQU CKR33, >233; * 01137 * 01138 .EQU DIG10Y, >238; *CASE PAGE ENTRY STATE 01139 .EQU DIG11, >239; * 01140 .EQU DIG12, >23A; * 01141 *EQU >23B; * 01142 .EQU DIG14, >23C; * 01143 .EQU DIG15, >23D; * 01144 .EQU DIG16, >23E; * 01145 .EQU DIG17, >23F; * 01146 * 01147 .EQU DI40Y, >240; *CASE 01148 .EQU DI41, >241; * 01149 .EQU DI42, >242; * 01150 .EQU DI43, >243; * 01151 .EQU DI44, >244; * 01152 .EQU DI45, >245; * 01153 .EQU DI46, >246; * 01154 .EQU DI47, >247; * 01155 .EQU DI48, >248; * 01156 .EQU DI49, >249; * 01157 .EQU DI4A, >24A; * 01158 .EQU DI4B, >24B; * 01159 .EQU DI4C, >24C; * 01160 .EQU DI4D, >24D; * 01161 .EQU DI4E, >24E; * 01162 .EQU DI4F, >24F; * 01163 * 01164 .EQU DI70Y, >250; *CASE 01165 .EQU DI71, >251; * 01166 .EQU DI72, >252; * 01167 .EQU DI73, >253; * 01168 .EQU DI74, >254; * 01169 .EQU DI75, >255; * 01170 .EQU DI76, >256; * 01171 .EQU DI77, >257; * 01172 .EQU DI78, >258; * 01173 .EQU DI79, >259; * 01174 .EQU DI7A, >25A; * 01175 .EQU DI7B, >25B; * 01176 .EQU DI7C, >25C; * 01177 .EQU DI7D, >25D; * 01178 .EQU DI7E, >25E; * 01179 .EQU DI7F, >25F; * 01180 * 01181 .EQU DI60Y, >260; *CASE 01182 .EQU DI61, >261; * 01183 .EQU DI62, >262; * 01184 .EQU DI63, >263; * 01185 .EQU DI64, >264; * 01186 .EQU DI65, >265; * 01187 .EQU DI66, >266; * 01188 .EQU DI67, >267; * 01189 * 01190 .EQU FPFS60Y, >270; *CASE RETURN FROM GFP0T 01191 .EQU GAP63B, >271; * 01192 .EQU CKR300, >272; * 01193 * 01194 .EQU SST2Y, >290; *CASE RETURN FROM PIL0 01195 .EQU VPP254, >291; * 01196 .EQU VPP370, >292; * 01197 .EQU FPFS333, >293; * 01198 .EQU GAP63E, >294; * 01199 * 01200 .EQU SST5Y, >298; *CASE RETURN FROM INLA0 01201 .EQU VPP263, >299; * 01202 *EQU >29A; * 01203 *EQU >29B; *DO NOT USE! (RETURN=3 EXITS PXTOLA CODE) 01204 * 01205 .EQU FPFS30Y, >2AC; *CASE 01206 .EQU FPFS31, >2AD; * 01207 .EQU FPFS32, >2AE; * 01208 .EQU FPFS33, >2AF; * 01209 * 01210 .EQU FPFS50Y, >2B4; *CASE 01211 .EQU FPFS51, >2B5; * 01212 .EQU FPFS52, >2B6; * 01213 .EQU FPFS53, >2B7; * 01214 * 01215 .EQU SPLM22Y, >2C0; *CASE RETURN FROM CSP0 01216 .EQU SPLM42, >2C1; * 01217 * 01218 .EQU DIG30Y, >2D8; *CASE RETURN FROM PPB0 01219 *EQU >2D9; * 01220 .EQU DIP2, >2DA; * 01221 .EQU LPP30, >2DB; * 01222 .EQU CKR2, >2DC; * 01223 .EQU CKR210, >2DD; * 01224 .EQU IKR10, >2DE; * 01225 * 01226 .EQU DIP8Y.0, >2E0; *CASE 01227 .EQU DIP8Y.1, >2E1; * 01228 .EQU DIP8Y.2, >2E2; * 01229 .EQU DIP8Y.3, >2E3; * 01230 * 01231 .EQU SAT20Y, >2E8; *CASE 01232 .EQU SAT21, >2E9; * 01233 .EQU SAT22, >2EA; * 01234 .EQU SAT23, >2EB; * 01235 * 01236 .EQU EXP10Y, >348; *CASE UEXT+UEXB 01237 .EQU EXP11, >349; * 01238 .EQU EXP12, >34A; * 01239 .EQU EXP13, >34B; * 01240 * 01241 .EQU LPP10Y, >370; *CASE LPPREG 01242 .EQU LPP11, >371; * 01243 .EQU LPP12, >372; * 01244 .EQU LPP13, >373; * 01245 .EQU LPP14, >374; * 01246 .EQU LPP15, >375; * 01247 .EQU LPP16, >376; * 01248 .EQU LPP17, >377; * 01249 .EQU LPP18, >378; * 01250 .EQU LPP19, >379; * 01251 .EQU LPP1A, >37A; * 01252 * 01253 .EQU DI30Y, >3B0; *CASE 01254 .EQU DI31, >3B1; * 01255 .EQU DI32, >3B2; * 01256 .EQU DI33, >3B3; * 01257 .EQU DI34, >3B4; * 01258 .EQU DI35, >3B5; * 01259 .EQU DI36, >3B6; * 01260 .EQU DI37, >3B7; * 01261 .EQU DI38, >3B8; * 01262 .EQU DI39, >3B9; * 01263 .EQU DI3A, >3BA; * 01264 .EQU DI3B, >3BB; * 01265 .EQU DI3C, >3BC; * 01266 .EQU DI3D, >3BD; * 01267 .EQU DI3E, >3BE; * 01268 .EQU DI3F, >3BF; * 01269 * 01270 .EQU VPP250Y, >3F0; *CASE RETURN FROM DPTP 01271 *EQU >3F1; * 01272 * 01273 .EQU PND30Y, >410; *CASE 01274 .EQU PND31, >411; * 01275 .EQU PND32, >412; * 01276 .EQU PND33, >413; * 01277 .EQU PND34, >414; * 01278 .EQU PND35, >415; * 01279 .EQU PND36, >416; * 01280 .EQU PND37, >417; * 01281 .EQU PND38, >418; * 01282 * 01283 .EQU SPLM0.0, >430; * CASE return from FSP0T 01284 .EQU DIP30.1, >431; * 01285 .EQU TCJVPP05.2, >432; * 01286 * 01287 .EQU DIP40Y, >440; *CASE RETURN FROM DISP0 01288 .EQU SPLM110, >441; * 01289 .EQU SPLM300, >442; * 01290 .EQU SPLM400, >443; * 01291 * 01292 .EQU TCJVPP08.0, >450; * Case 01293 .EQU TCJVPP08.1, >451; * 01294 .EQU TCJVPP08.2, >452; * 01295 .EQU TCJVPP08.3, >453; * 01296 * 01297 .EQU TCJVPP63.0, >480; * CASE 01298 .EQU TCJVPP63.1, >481; * 01299 .EQU TCJVPP63.2, >482; * 01300 .EQU TCJVPP63.3, >483; * 01301 * 01302 .EQU PPAGE2Y, >498; *CASE RETURN FROM PPDP0 01303 .EQU PMPE4, >499; * 01304 .EQU SPMOD5, >49A; * 01305 .EQU SPCM6, >49B; * 01306 .EQU DIP1B, >49C; * 01307 * 01308 .EQU GFP50Y, >540; *CASE 01309 .EQU GFP51, >541; * 01310 .EQU GFP52, >542; * 01311 .EQU GFP53, >543; * 01312 * 01313 .EQU GNP0Y, >544; *CASE 01314 *EQU XXXX, >545; * 01315 .EQU GAP62, >546; * 01316 .EQU GAP63, >547; * 01317 * 01318 .EQU CGAZZ.0, >548; *CASE 01319 .EQU CGAZZ.1, >549; * 01320 .EQU CGAZZ.2, >54A; * 01321 .EQU CGAZZ.3, >54B; * 01322 .EQU CGAZZ.4, >54C; * 01323 .EQU CGAZZ.5, >54D; * 01324 .EQU CGAZZ.6, >54E; * 01325 .EQU CGAZZ.7, >54F; * 01326 * 01327 .EQU BSD40Y, >588; *CASE RETURN FROM RDD AND RPD 01328 .EQU BSD30, >589; * 01329 .EQU BSD20, >58A; * 01330 .EQU BSD50, >58B; * 01331 .EQU BSD60, >58C; * 01332 * 01333 .EQU SVDP203.0, >590; *CASE 01334 .EQU SVDP203.1, >591; * 01335 .EQU SVDP203.2, >592; * 01336 .EQU SVDP203.3, >593; * 01337 * 01338 .EQU SVDP204.0, >5A0; *CASE 01339 .EQU SVDP204.1, >5A1; * 01340 .EQU SVDP204.2, >5A2; * 01341 .EQU SVDP204.3, >5A3; * 01342 .EQU SVDP204.4, >5A4; * 01343 .EQU SVDP204.5, >5A5; * 01344 .EQU SVDP204.6, >5A6; * 01345 .EQU SVDP204.7, >5A7; * 01346 * 01347 .EQU SVDP206.0, >5B0; *CASE 01348 .EQU SVDP206.1, >5B1; * 01349 .EQU SVDP206.2, >5B2; * 01350 .EQU SVDP206.3, >5B3; * 01351 .EQU SVDP206.4, >5B4; * 01352 .EQU SVDP206.5, >5B5; * 01353 .EQU SVDP206.6, >5B6; * 01354 .EQU SVDP206.7, >5B7; * 01355 * 01356 .EQU SVDP207.0, >5C0; *CASE 01357 .EQU SVDP207.1, >5C1; * 01358 .EQU SVDP207.2, >5C2; * 01359 .EQU SVDP207.3, >5C3; * 01360 .EQU SVDP207.4, >5C4; * 01361 .EQU SVDP207.5, >5C5; * 01362 .EQU SVDP207.6, >5C6; * 01363 .EQU SVDP207.7, >5C7; * 01364 * 01365 .EQU SVDP208.0, >5D0; *CASE 01366 .EQU SVDP208.1, >5D1; * 01367 .EQU SVDP208.2, >5D2; * 01368 .EQU SVDP208.3, >5D3; * 01369 .EQU SVDP208.4, >5D4; * 01370 .EQU SVDP208.5, >5D5; * 01371 .EQU SVDP208.6, >5D6; * 01372 .EQU SVDP208.7, >5D7; * 01373 * 01374 .EQU GAP90Y, >5E0; *CASE 01375 .EQU GAP91, >5E1; * 01376 .EQU GAP92, >5E2; * 01377 .EQU GAP93, >5E3; * 01378 * 01379 .EQU GAP70Y, >5E8; *CASE 01380 .EQU GAP71, >5E9; * 01381 .EQU GAP72, >5EA; * 01382 .EQU GAP73, >5EB; * 01383 * 01384 .EQU CHNG50Y, >620; *CASE RETURN FROM INPCM0 01385 .EQU SPCM1, >621; * 01386 .EQU TPP0, >622; * 01387 .EQU PPP100, >623; * 01388 * 01389 .EQU INPCM30Y, >630; *CASE PAGE CAPTURE MODE 01390 .EQU INPCM31, >631; * 01391 .EQU INPCM32, >632; * 01392 .EQU INPCM33, >633; * 01393 * 01394 .EQU TPP30Y, >648; *CASE 01395 .EQU TPP31, >649; *? 01396 .EQU TPP32, >64A; *? 01397 .EQU TPP33, >64B; *? 01398 * 01399 .EQU TPP70Y, >678; *CASE COUNT 01400 .EQU TPP71, >679; * 01401 .EQU TPP72, >67A; * 01402 .EQU TPP73, >67B; * 01403 * 01404 .EQU TPP92Y, >694; *CASE 01405 .EQU TPP93, >695; * 01406 .EQU TPP94, >696; * 01407 * 01408 .EQU TPP50Y, >6B0; *CASE RETURN FROM INSPRG0 01409 .EQU CHNG59A, >6B1; * 01410 .EQU CMPE5, >6B2; * 01411 .EQU INPCM80, >6B3; * 01412 * 01413 .EQU VPP360Y, >6C0; *CASE 01414 .EQU VPP361, >6C1; * 01415 .EQU VPP362, >6C2; * 01416 * 01417 .EQU DI50Y, >6F0; *CASE 01418 .EQU DI51, >6F1; * 01419 .EQU DI52, >6F2; * 01420 .EQU DI53, >6F3; * 01421 .EQU DI54, >6F4; * 01422 .EQU DI55, >6F5; * 01423 .EQU DI56, >6F6; * 01424 .EQU DI57, >6F7; * 01425 .EQU DI58, >6F8; * 01426 .EQU DI59, >6F9; * 01427 .EQU DI5A, >6FA; * 01428 .EQU DI5B, >6FB; * 01429 .EQU DI5C, >6FC; * 01430 .EQU DI5D, >6FD; * 01431 .EQU DI5E, >6FE; * 01432 .EQU DI5F, >6FF; * 01433 * 01434 .EQU DIP20Y, >730; *CASE RETURN FROM INTPN0 01435 .EQU FPFS332, >731; * 01436 .EQU GAP133G, >732; * 01437 .EQU IKR50, >733; * 01438 .EQU GAP160, >734; * 01439 * 01440 .EQU PNTIN46Y, >740; *CASE RETURN FROM DBB0 01441 .EQU SBT33, >741; * 01442 * 01443 .EQU DBB10Y, >750; *CASE ON BTT CODE 01444 .EQU DBB11, >751; * 01445 .EQU DBB12, >752; * 01446 .EQU DBB13, >753; * 01447 .EQU DBB14, >754; * 01448 .EQU DBB15, >755; * 01449 .EQU DBB16, >756; * 01450 .EQU DBB17, >757; * 01451 .EQU DBB18, >758; * 01452 .EQU DBB19, >759; * 01453 .EQU DBB1A, >75A; * 01454 .EQU DBB1B, >75B; * 01455 * 01456 .EQU FSP20Y.0, >760; *CASE 01457 .EQU FSP20Y.1, >761; * 01458 .EQU FSP20Y.2, >762; * 01459 .EQU FSP20Y.3, >763; * 01460 * 01461 .EQU FPFS110Y, >768; *CASE 01462 .EQU FPFS111, >769; * 01463 .EQU FPFS112, >76A; * 01464 .EQU FPFS113, >76B; * 01465 * 01466 .EQU GAP134Y, >778; *CASE RETURN FROM SAT0 01467 .EQU GAP171, >779; * 01468 * 01469 .EQU GAP136Y, >780; *CASE RETURN FROM COP0 01470 .EQU GAP173, >781; * 01471 * 01472 .EQU GAP40Y, >788; *CASE PCM 01473 .EQU GAP41, >789; * 01474 .EQU GAP42, >78A; * 01475 .EQU GAP43, >78B; * 01476 * 01477 .EQU DIP4Y, >790; *CASE RETURN FROM PNTIN0 01478 .EQU FPFS320, >791; * 01479 .EQU CKR4, >792; * 01480 .EQU FPFS41, >793; * 01481 .EQU GAP132, >794; *NEW 01482 .EQU GAP122, >795; * 01483 .EQU GAP138, >796; * 01484 .EQU UPI7, >797; * 01485 .EQU FPFS105, >798; * 01486 .EQU CMPE40, >799; * 01487 .EQU IKR40, >79A; * 01488 * 01489 .EQU DIP18Y, >7A0; *CASE RETURN FROM SBT0 01490 .EQU FPFS331, >7A1; * 01491 .EQU GAP133A, >7A2; * 01492 .EQU INTPN0, >7A3; * 01493 .EQU GAP140, >7A4; * 01494 .EQU GAP133E, >7A5; * 01495 .EQU CKR62, >7A6; * 01496 .EQU CKR66, >7A7; * 01497 .EQU FPFS327, >7A8; * 01498 * 01499 .EQU PNTIN10Y.0, >7B0; *CASE 01500 .EQU PNTIN10Y.1, >7B1; * 01501 .EQU PNTIN10Y.2, >7B2; * 01502 .EQU PNTIN10Y.3, >7B3; * 01503 .EQU PNTIN10Y.4, >7B4; * 01504 .EQU PNTIN10Y.5, >7B5; * 01505 .EQU PNTIN10Y.6, >7B6; * 01506 .EQU PNTIN10Y.7, >7B7; * 01507 * 01508 .EQU PNTIN30Y.0, >7C0; *CASE 01509 .EQU PNTIN30Y.1, >7C1; * 01510 .EQU PNTIN30Y.2, >7C2; * 01511 .EQU PNTIN30Y.3, >7C3; * 01512 .EQU PNTIN30Y.4, >7C4; * 01513 .EQU PNTIN30Y.5, >7C5; * 01514 .EQU PNTIN30Y.6, >7C6; * 01515 .EQU PNTIN30Y.7, >7C7; * 01516 .EQU PNTIN30Y.8, >7C8; * 01517 .EQU PNTIN30Y.9, >7C9; * 01518 * 01519 .EQU TCJVPP13.0, >7D0; *CASE 01520 .EQU TCJVPP13.1, >7D1; * 01521 .EQU TCJVPP13.2, >7D2; * 01522 .EQU TCJVPP13.3, >7D3; * 01523 .EQU TCJVPP13.4, >7D4; * 01524 .EQU TCJVPP13.5, >7D5; * 01525 .EQU TCJVPP13.6, >7D6; * 01526 .EQU TCJVPP13.7, >7D7; * 01527 * 01528 ************************************************************************ 01529 * section 1: poll for event * 01530 ************************************************************************ 01531 * MUST HAVE HAD A CBRDY! 01532 ***CHECK RC ONCE BEFORE POLLING TEXT 01533 .ORG PL0, *AR=POLREG 01534 MA(POLREG), RAM>AR, 01535 JRC(PL1F,PL1T); ----- ----- 777 0002A002 10000000 ----- 01536 .ORG PL1F, * 01537 JUMP(ST0F); ----- ----- 002 00000001 00000000 ----- 01538 .ORG PL1T, *Y=WAIT 01539 *RC RDY 01540 AR>A, B(WAIT), AND, 01541 JUMP(PL2); ----- ----- 003 00000016 00400810 ----- 01542 .ORG PL2, *WAIT? 01543 JZ(PL3F,PL3T); ----- ----- 016 00002004 00000000 ----- 01544 .ORG PL3F, *WAIT, DELAYING EXECUTION UNTIL END OF VBI 01545 JUMP(ST0F); ----- ----- 004 00000001 00000000 ----- 01546 .ORG PL3T, *NO WAIT 01547 JUMP(RC0T); ----- ----- 005 0000000F 00000000 ----- 01548 * 01549 *ST0F: MAIN POLLING LOOP 01550 * 01551 * I have avoided writing to scratch RAM in the sections of code 01552 * which are repeated continually because of unreliability 01553 * problems with the scratch RAM on the breadboards. 01554 * 01555 ***DO NOT CHECK RC UNLESS VBI=0 01556 .ORG ST0F, *AR=POLREG 01557 * 01558 * TCJ Aug 93, 01559 * The channel change command occasionaly locked up the I2C bus. 01560 * This is because a Line Ready was generated during the command 01561 * and not cleared before resuming teletext processing. 01562 * 01563 CBRDY, 01564 JUMP(SBJ1); ----- ----- 001 0000001B 00002000 ----- 01565 * 01566 .ORG SBJ1, 01567 JUMP(SBJ2F); ----- ----- 01B 0000000A 00000000 ----- 01568 * 01569 .ORG SBJ2F, 01570 *TELETEXT LINE RCVD? 01571 MA(POLREG), RAM>AR, 01572 A(%01000000), RCS>B, AND, 01573 JLINE(ST1F,VPSCHK0T); ----- ----- 00A 00026006 1040080B ----- 01574 * 01575 .ORG ST1F, *VBI? 01576 *Y=VBIFLG 01577 AR>A, B(VBIFLG), AND, 01578 JZ(ST2F,ST2T); ----- ----- 006 00002008 00800810 ----- 01579 .ORG ST2F, *IN VBI, VBIFLG? 01580 *TCJ JZ(ST0F,ST0T); 01581 JZ(SBJ2F,ST0T); ----- ----- 008 0000200A 00000000 ----- 01582 * 01583 .ORG ST0T, *VBI RISING EDGE JUST DETECTED 01584 *VBIFLG=1 01585 MA(POLREG), 01586 AR>A, B(VBIFLG), OR, 01587 Y>RAM, 01588 *TCJ JUMP(ST0F); 01589 JUMP(SBJ2F); ----- ----- 00B 0000000A 10801110 ----- 01590 * 01591 .ORG ST2T, *OUT OF VBI 01592 *Y=WAIT 01593 AR>A, B(WAIT), AND, 01594 JUMP(ST2A); ----- ----- 009 00000039 00400810 ----- 01595 .ORG ST2A, *INSTRUCTION WAITING? 01596 *BR=INSTRUCTION 01597 MA(LSTINS), RAM>BR, 01598 JZ(ST2BF,ST2BT); ----- ----- 039 0001200C 2E000000 ----- 01599 .ORG ST2BF, *GO AND COMPLETE DELAYED INSTRUCTION 01600 *WAIT=0 01601 MA(POLREG), 01602 AR>A, B(>FF-WAIT), AND, 01603 Y>RAM, 01604 JUMP(DI0); ----- ----- 00C 00000053 10BF0910 ----- 01605 .ORG ST2BT, *NO, RC RDY? 01606 *Y=VBIFLG 01607 AR>A, B(VBIFLG), AND, 01608 JRC(ST3F,RC0T); ----- ----- 00D 0000A00E 00800810 ----- 01609 .ORG ST3F, *VBIFLG? 01610 *Y=FIELD TOGGLE 01611 A(%00000010), PLL>B, AND, 01612 JZ(ST3AF,ST3AT); ----- ----- 00E 0000201C 0002080E ----- 01613 .ORG ST3AF, *FALLING EDGE OF VBI DETECTED 01614 *JUMP TO VBI POST PROCESSING 01615 *VBITF=1 01616 MA(POLREG), 01617 AR>A, B(VBITF), OR, 01618 Y>RAM, Y>AR, 01619 JUMP(VPP0); ----- ----- 01C 002200A3 10201110 ----- 01620 .ORG ST3AT, *VBIFLG WAS 0 01621 *Y=LFTOG 01622 *B=STSWD1 01623 MA(STSWD1), RAM>BR, 01624 AR>A, B(LFTOG), AND, 01625 JZ(ST4F,ST4T); ----- ----- 01D 0001201E 14100810 ----- 01626 *FIELD TOGGLE LOW 01627 .ORG ST4T, *FIELD TOGGLE=0 01628 *LFTOG? 01629 *Y=VBITF 01630 AR>A, B(VBITF), AND, 01631 JZ(ST5F,ST5T); ----- ----- 01F 00002028 00200810 ----- 01632 .ORG ST5T, *NO CHANGE IN FIELD TOGGLE 01633 *TCJ JUMP(ST0F); 01634 JUMP(SBJ2F); ----- ----- 029 0000000A 00000000 ----- 01635 * 01636 .ORG ST5F, *FIELD TOGGLE JUST GONE LOW, VBITF? 01637 *LFTOG=0 01638 MA(POLREG), 01639 AR>A, B(>FF-LFTOG), AND, 01640 Y>RAM, Y>AR, 01641 JZ(ST7F,ST7T); ----- ----- 028 0022202A 10EF0910 ----- 01642 *FIELD TOGGLE HIGH 01643 .ORG ST4F, *FIELD TOGGLE=1 01644 *LFTOG? 01645 *Y=VBITF 01646 AR>A, B(VBITF), AND, 01647 JZ(ST6F,ST6T); ----- ----- 01E 0000202C 00200810 ----- 01648 .ORG ST6F, *NO CHANGE IN FIELD TOGGLE 01649 *TCJ JUMP(ST0F); 01650 JUMP(SBJ2F); ----- ----- 02C 0000000A 00000000 ----- 01651 * 01652 .ORG ST6T, *FIELD TOGGLE JUST GONE HIGH, VBITF? 01653 *LFTOG=1 01654 MA(POLREG), 01655 AR>A, B(LFTOG), OR, 01656 Y>RAM, Y>AR, 01657 JZ(ST7F,ST7T); ----- ----- 02D 0022202A 10101110 ----- 01658 *FIELD LOCKED 01659 .ORG ST7F, *FLOCK=1 01660 MA(STSWD1), 01661 A(FLOCK), BR>B, OR, 01662 Y>RAM, 01663 JUMP(ST8); ----- ----- 02A 000000B7 14201101 ----- 01664 .ORG ST8, *VBITF=0 01665 MA(POLREG), 01666 AR>A, B(>FF-VBITF), AND, 01667 Y>RAM, 01668 *TCJ JUMP(ST0F); 01669 JUMP(SBJ2F); ----- ----- 0B7 0000000A 10DF0910 ----- 01670 * 01671 *FIELD NOT LOCKED 01672 .ORG ST7T, *FLOCK=0 01673 *JUMP TO VBI POST PROCESSING 01674 MA(STSWD1), 01675 A(>FF-FLOCK), BR>B, AND, 01676 Y>RAM, 01677 JUMP(VPP0); ----- ----- 02B 000000A3 14DF0901 ----- 01678 * 01679 ************************************************************************ 01680 * section 2a: recieve VPS line * 01681 ************************************************************************ 01682 * 01683 * TCJ Feb 94, 01684 * 01685 * VPS reception 01686 * First check the MSB of the byte in the front end when we 01687 * receive a line ready. If this bit is a one we have VPS 01688 * otherwise we have TEXT. 01689 * 01690 .ORG VPSCHK0T, * Y = byte in front end 01691 A(>80), DATA>B, AND, 01692 JUMP(VPSCHK1); ----- ----- 007 000000E3 00800805 ----- 01693 * 01694 .ORG VPSCHK1, * MSB of byte == 1 ? 01695 * BR = system 2 flags 01696 MA(SYS2), RAM>BR, 01697 JZ(VPS000F,G1T); ----- ----- 0E3 0001202E 09000000 ----- 01698 * 01699 .ORG VPS000F, * AR = Extension packet flags 01700 * set the Iv'e seen VPS flag 01701 CBRDY, 01702 A(TVPS), BR>B, OR, 01703 MA(SYS2), Y>RAM, 01704 JUMP(VPS000A); ----- ----- 02E 0000023B 09103101 ----- 01705 * 01706 .ORG VPS000A, 01707 MA(EXPREG), RAM>AR, 01708 JUMP(VPS001); ----- ----- 23B 00020273 63000000 ----- 01709 * 01710 .ORG VPS001, * Y = VPS packet enable flag 01711 AR>A, B(VPS), AND, 01712 JUMP(VPS002); ----- ----- 273 00000295 00200810 ----- 01713 * 01714 .ORG VPS002, * Capturing VPS packet ? 01715 * AR = Row 20 01716 Y(20), Y>AR, 01717 JZ(VPS003F,VPS003T); ----- ----- 295 0022203A 00141000 ----- 01718 * 01719 .ORG VPS003T, * No, abort the line 01720 JUMP(ST0F); ----- ----- 03B 00000001 00000000 ----- 01721 * 01722 .ORG VPS003F, * PR = AR * 40, Row 20 Column 0 01723 * Fetch pointer to store 7 01724 MA(STOR7), RAM>AR, 01725 AR<<3>A, AR<<5>B, ADD, 01726 Y>PR, 01727 JUMP(VPS004A); ----- ----- 03A 000202D9 A7000059 ----- 01728 * 01729 .ORG VPS004A, * Point to store 7 01730 MA(RWL), 01731 ARHI>A, B(0), OR, 01732 Y>RAM, Y>IO, 01733 JUMP(VPS004B); ----- ----- 2D9 000002DF 0B005120 ----- 01734 * 01735 .ORG VPS004B, * We need to wait for 4 bytes 01736 Y(4), 01737 Y>AR, 01738 JUMP(VPS005); ----- ----- 2DF 0022037B 00041000 ----- 01739 * 01740 .ORG VPS005, * Return to VPS006 01741 MA(RETURN), 01742 Y(7), 01743 Y>RAM, 01744 JUMP(WAIT0F); ----- ----- 37B 0000064E 7C071100 ----- 01745 * 01746 .ORG VPS006, * Read the packet count 01747 * Return from WAIT 01748 PR>MA, RVDP, 01749 JUMP(VPS007); ----- ----- 037 001003F1 00008000 ----- 01750 * 01751 .ORG VPS007, * Increment packet count 01752 * and write it back 01753 PR>MA, 01754 TPD>A, B(1), ADD, 01755 Y>DR, 01756 JBYTE(VPS008F,VPS008T); ----- ----- 3F1 0010903C 00010090 ----- 01757 * 01758 .ORG VPS008F, * Wait for the first VPS byte 01759 PR>BR, 01760 JBYTE(VPS008F,VPS008T); ----- ----- 03C 0041803C 00000000 ----- 01761 * 01762 .ORG VPS008T, * Increment PR pointer 01763 CBRDY, 01764 A(1), BR>B, ADD, 01765 Y>PR, 01766 JUMP(VPS009); ----- ----- 03D 00000419 80012001 ----- 01767 * 01768 .ORG VPS009, * Write first byte to RAM 01769 A(>30), DATA>B, OR, 01770 Y>DR, 01771 JUMP(VPS009A); ----- ----- 419 00001433 00301005 ----- 01772 * 01773 .ORG VPS009A, * A = VPS error count 01774 MA(VPSERR), RAM>AR, 01775 JN(VPS009BF,VPS009BT); ----- ----- 433 0002403E 0A000000 ----- 01776 * 01777 .ORG VPS009BT, 01778 MA(VPSERR), 01779 AR>A, B(1), ADD, 01780 Y>RAM, 01781 JUMP(VPS010F); ----- ----- 03F 00000048 0A010110 ----- 01782 * 01783 .ORG VPS009BF, 01784 JUMP(VPS010F); ----- ----- 03E 00000048 00000000 ----- 01785 * 01786 .ORG VPS010F, * Wait for the second VPS byte 01787 PR>BR, 01788 JBYTE(VPS010F,VPS010T); ----- ----- 048 00418048 00000000 ----- 01789 * 01790 .ORG VPS010T, * Increment PR pointer 01791 CBRDY, 01792 A(1), BR>B, ADD, 01793 Y>PR, 01794 JUMP(VPS011); ----- ----- 049 0000049D 80012001 ----- 01795 * 01796 .ORG VPS011, * Write second byte to RAM 01797 A(>30), DATA>B, OR, 01798 Y>DR, 01799 JUMP(VPS011A); ----- ----- 49D 00001545 00301005 ----- 01800 * 01801 .ORG VPS011A, * A = VPS error count 01802 MA(VPSERR), RAM>AR, 01803 JN(VPS011BF,VPS011BT); ----- ----- 545 0002404A 0A000000 ----- 01804 * 01805 .ORG VPS011BT, 01806 MA(VPSERR), 01807 AR>A, B(1), ADD, 01808 Y>RAM, 01809 JUMP(VPS012); ----- ----- 04B 0000058D 0A010110 ----- 01810 * 01811 .ORG VPS011BF, 01812 JUMP(VPS012); ----- ----- 04A 0000058D 00000000 ----- 01813 * 01814 .ORG VPS012, * Wait for next 10 bytes 01815 Y(10), Y>AR, 01816 JUMP(VPS013); ----- ----- 58D 0022068C 000A1000 ----- 01817 * 01818 .ORG VPS013, * Return to VPS014 01819 * call WAIT routine 01820 MA(RETURN), 01821 Y(8), 01822 Y>RAM, 01823 JUMP(WAIT0F); ----- ----- 68C 0000064E 7C081100 ----- 01824 * 01825 .ORG VPS014, * Return from WAIT 01826 * Receive 10 VPS bytes 01827 Y(10), Y>AR, 01828 JUMP(VPS015F); ----- ----- 038 0022004C 000A1000 ----- 01829 * 01830 .ORG VPS015F, * Wait for the next VPS byte 01831 PR>BR, 01832 JBYTE(VPS015F,VPS015T); ----- ----- 04C 0041804C 00000000 ----- 01833 * 01834 .ORG VPS015T, * Decrement loop count 01835 AR>A, B(-1), ADD, 01836 Y>AR, 01837 JUMP(VPS016); ----- ----- 04D 0022068D 00FF0010 ----- 01838 * 01839 .ORG VPS016, * Increment PR pointer 01840 * loop count == 0 ? 01841 CBRDY, 01842 A(1), BR>B, ADD, 01843 Y>PR, 01844 JZ(VPS017F,VPS017T); ----- ----- 68D 0000204E 80012001 ----- 01845 * 01846 .ORG VPS017F, * Write next byte to RAM 01847 A(>30), DATA>B, OR, 01848 Y>DR, 01849 JUMP(VPS017A); ----- ----- 04E 0000168E 00301005 ----- 01850 * 01851 .ORG VPS017A, * A = VPS error count 01852 MA(VPSERR), RAM>BR, 01853 JN(VPS017BF,VPS017BT); ----- ----- 68E 00014054 0A000000 ----- 01854 * 01855 .ORG VPS017BT, 01856 MA(VPSERR), 01857 A(1), BR>B, ADD, 01858 Y>RAM, 01859 JUMP(VPS015F); ----- ----- 055 0000004C 0A010101 ----- 01860 * 01861 .ORG VPS017BF, 01862 JUMP(VPS015F); ----- ----- 054 0000004C 00000000 ----- 01863 * 01864 .ORG VPS017T, * Write last byte to RAM 01865 A(>30), DATA>B, OR, 01866 Y>DR, 01867 PR>BR, 01868 JUMP(VPS018); ----- ----- 04F 0041168F 00301005 ----- 01869 * 01870 .ORG VPS018, * Skip over one byte 01871 MA(VPSERR), RAM>AR, 01872 A(2), BR>B, ADD, 01873 Y>PR, 01874 JUMP(VPS019); ----- ----- 68F 00020690 8A020001 ----- 01875 * 01876 .ORG VPS019, * Write MSNibble of error count 01877 ARHI>A, B(>30), OR, 01878 Y>DR, 01879 PR>BR, 01880 JUMP(VPS020); ----- ----- 690 00411691 00301020 ----- 01881 * 01882 .ORG VPS020, * Increment write pointer 01883 A(1), BR>B, ADD, 01884 Y>PR, 01885 JUMP(VPS21); ----- ----- 691 00000692 80010001 ----- 01886 * 01887 .ORG VPS21, * Write LSNibble of error count 01888 AR.0F>A, B(>30), OR, 01889 Y>DR, 01890 JUMP(ST0F); ----- ----- 692 00001001 003010C0 ----- 01891 * 01892 ************************************************************************ 01893 * section 2b: recieve teletext line * 01894 ************************************************************************ 01895 * 01896 .ORG G1T, *B=SYS1 01897 CBRDY, 01898 MA(SYS1), RAM>BR, 01899 JUMP(G2); ----- ----- 02F 00010693 08002000 ----- 01900 .ORG G2, *Y=PCM-2 01901 A(-2), BRHI>B, ADD, 01902 JUMP(G3); ----- ----- 693 00000697 00FE000C ----- 01903 .ORG G3, *FLOF? 01904 *LPPREG=3 01905 *SET DEFAULT LINE POST PROCESSING 01906 MA(LPPREG), 01907 Y(3), 01908 Y>RAM, 01909 JZ(G4F,G4T); ----- ----- 697 00002056 7E031100 ----- 01910 .ORG G4F, *NOT FLOF, WANT TO CAPTURE THE BTT 01911 *SET MARKER IN TEMPORARY MASK TO CHECK FOR BTT 01912 *BTTM=1 01913 MA(MASK), 01914 Y(BTTM), 01915 Y>RAM, 01916 JUMP(G5F); ----- ----- 056 00000058 73081100 ----- 01917 .ORG G4T, *FLOF MODE 01918 *DO NOT SET MARKER IN TEMPORARY MASK TO CHECK FOR BTT 01919 *BTTM=0 01920 MA(MASK), 01921 Y(0), 01922 Y>RAM, 01923 JUMP(G5F); ----- ----- 057 00000058 73001100 ----- 01924 .ORG G5F, *WAIT FOR MAGAZINE 01925 *B=RCM 01926 MA(RCM), RAM>BR, 01927 JBYTE(G5F,H1T); ----- ----- 058 00018058 28000000 ----- 01928 .ORG H1T, *Y=MAG 01929 CBRDY, 01930 A(0), HAM>B, ADD, 01931 JUMP(H2); ----- ----- 059 00080698 00002007 ----- 01932 .ORG H2, *Y=TOFF AND AOFF, PTY? 01933 A(TOFF+AOFF), BR>B, AND, 01934 JN(H3F,H3T); ----- ----- 698 0000405A 00C00801 ----- 01935 .ORG H3T, *BAD MAG PTY 01936 *LPPREG=4 01937 MA(LPPREG), 01938 Y(4), 01939 Y>RAM, 01940 JUMP(LPP0); ----- ----- 05B 00000699 7E041100 ----- 01941 .ORG H3F, *Y=MAG, A=MAG, TELETEXT ENABLED? 01942 *PTY OK 01943 A(7), HAM>B, AND, 01944 Y>AR, 01945 JZ(H4F,H4T); ----- ----- 05A 002A205C 00070807 ----- 01946 *TELETEXT DISABLED 01947 *WAIT FOR ROW, CHECK PARITY FOR THE ERROR COUNT AND EXIT 01948 .ORG H4F, *ROW RDY? 01949 JBYTE(HH5F,HH5T); ----- ----- 05C 0000805E 00000000 ----- 01950 .ORG HH5F, *ROW RDY? 01951 JBYTE(HH5F,HH5T); ----- ----- 05E 0000805E 00000000 ----- 01952 .ORG HH5T, *ROW RDY, Y=ROW 01953 CBRDY, 01954 A(0), HAM>B, OR, 01955 JUMP(HH6); ----- ----- 05F 0008069A 00003007 ----- 01956 .ORG HH6, *PTY OK? 01957 JN(HH7F,HH7T); ----- ----- 69A 00004064 00000000 ----- 01958 .ORG HH7T, *BAD ROW PARITY 01959 *LPPREG=4 01960 MA(LPPREG), 01961 Y(4), 01962 Y>RAM, 01963 JUMP(LPP0); ----- ----- 065 00000699 7E041100 ----- 01964 .ORG HH7F, *ROW PARITY OK 01965 *LPPREG=0 01966 MA(LPPREG), 01967 Y(0), 01968 Y>RAM, 01969 JUMP(LPP0); ----- ----- 064 00000699 7E001100 ----- 01970 *TELETEXT ENABLED 01971 .ORG H4T, *RCM=MAG 01972 MA(RCM), 01973 AR.0F>A, BR.F0>B, ADD, 01974 Y>RAM, Y>IO, 01975 JUMP(H5); ----- ----- 05D 0000069B 280041C3 ----- 01976 .ORG H5, *P=INDEX TO MFx 01977 AR>A, B(MF0), ADD, 01978 Y>PR, 01979 JUMP(H6); ----- ----- 69B 0000069C 80580010 ----- 01980 .ORG H6, *BR=MFx 01981 *Y=MAG-1 01982 PR>MA, RAM>BR, 01983 AR>A, B(-1), ADD, 01984 JUMP(H7); ----- ----- 69C 0011069D 00FF0010 ----- 01985 .ORG H7, *A=MLP 01986 *BTT MAG? 01987 *UPDATE READ/WRITE LATCH 01988 *POINT TO MEMORY PAGE FOR LATCH POINTED TO BY 01989 *THE MLP FIELD IN THE MFx 01990 MA(RWL), 01991 A(MLP), BR>B, AND, 01992 Y>RAM, Y>IO, Y>AR, 01993 JZ(H8F,H8T); ----- ----- 69D 00222066 0B074901 ----- 01994 .ORG H8F, *NOT BTT MAG, CLEAR BTTM 01995 MA(MASK), 01996 Y(0), 01997 Y>RAM, 01998 JUMP(H8T); ----- ----- 066 00000067 73001100 ----- 01999 .ORG H8T, *P=INDEX TO LAFx 02000 AR>A, B(LAF0), ADD, 02001 Y>PR, 02002 JUMP(H9); ----- ----- 067 0000069E 80400010 ----- 02003 .ORG H9, *MFR=MFx 02004 MA(MFR), 02005 A(0), BR>B, OR, 02006 Y>RAM, 02007 JUMP(H10); ----- ----- 69E 0000069F 36001101 ----- 02008 .ORG H10, *AR=LAFx 02009 PR>MA, RAM>AR, 02010 JUMP(H11); ----- ----- 69F 001206A0 00000000 ----- 02011 .ORG H11, *LAFR=LAFx 02012 MA(LAFR), 02013 AR>A, B(0), OR, 02014 Y>RAM, 02015 JBYTE(H12F,I1); ----- ----- 6A0 00008068 35001110 ----- 02016 .ORG H12F, *WAIT FOR ROW 02017 JBYTE(H12F,I1); ----- ----- 068 00008068 00000000 ----- 02018 .ORG I1, *AR=ROW, THISRW=ROW 02019 CBRDY, 02020 MA(THISRW), 02021 A(0), ROW>B, ADD, 02022 Y>AR, Y>RAM, 02023 JUMP(I2); ----- ----- 069 002E06A1 7D002105 ----- 02024 .ORG I2, *P=ROW*40, PTY? 02025 AR<<3>A, AR<<5>B, ADD, 02026 Y>PR, 02027 JN(I3F,I3T); ----- ----- 6A1 0000406A 80000059 ----- 02028 .ORG I3T, *BAD ROW PTY 02029 *LPPREG=4 02030 MA(LPPREG), 02031 Y(4), 02032 Y>RAM, 02033 JUMP(LPP0); ----- ----- 06B 00000699 7E041100 ----- 02034 .ORG I3F, *PTY OK, Y=ROW-30, B=RCM, ROW0? 02035 *GET MAG FLAG RECEIVED 02036 MA(MFR), RAM>BR, 02037 A(-30), ROW>B, ADD, 02038 JZ(I4F,HD0); ----- ----- 06A 000D206C 36E20005 ----- 02039 .ORG I4F, *NOT A HEADER 02040 *Y=MAG OPEN FLAG, ROW=30? 02041 *BR=RCM 02042 MA(RCM), RAM>BR, 02043 A(MOP), BR>B, AND, 02044 JZ(I5F,I5T); ----- ----- 06C 0001206E 28080801 ----- 02045 .ORG I5F, *NOT A HEADER OR ROW 30 02046 *Y=ROW-24, MAG OPEN? 02047 A(-24), ROW>B, ADD, 02048 JZ(I6F,I6T); ----- ----- 06E 000C2072 00E80005 ----- 02049 .ORG I6T, *MAG CLOSED 02050 *LPPREG=0 02051 MA(LPPREG), 02052 Y(0), 02053 Y>RAM, 02054 JUMP(LPP0); ----- ----- 073 00000699 7E001100 ----- 02055 .ORG I6F, *MAG OPEN 02056 *ROW1-23? 02057 *Y=ROW-24 02058 *AR=LAFR 02059 MA(LAFR), RAM>AR, 02060 A(-24), ROW>B, ADD, 02061 JN(I7F,DR0); ----- ----- 072 000E4074 35E80005 ----- 02062 .ORG I7F, *ROW 24- ROW 31 02063 *CASE ROW-24=? 02064 *A=STOR7 02065 MA(STOR7), RAM>AR, 02066 JY(I30Y); ----- ----- 074 0002C010 27000000 ----- 02067 ***ROW 0*********************** 02068 .ORG HD0, *HEADER 02069 *A=RCU 02070 MA(RCU), RAM>AR, 02071 JBYTE(HD1F,HD1T); ----- ----- 06D 00028076 2A000000 ----- 02072 .ORG HD1F, *WAIT FOR PAGE UNITS 02073 JBYTE(HD1F,HD1T); ----- ----- 076 00008076 00000000 ----- 02074 .ORG HD1T, *Y=UNITS 02075 CBRDY, 02076 A(0), HAM>B, ADD, 02077 JUMP(HD2); ----- ----- 077 000806A2 00002007 ----- 02078 .ORG HD2, *PTY OK? 02079 *A=RCU 02080 *Y=HAM-10 02081 MA(RCU), RAM>AR, 02082 A(-10), HAM>B, ADD, 02083 JN(HD3F,HD3T); ----- ----- 6A2 000A4078 2AF60007 ----- 02084 .ORG HD3T, *BAD UNITS PARITY 02085 *LPPREG=5 02086 MA(LPPREG), 02087 Y(5), 02088 Y>RAM, 02089 JUMP(LPP0); ----- ----- 079 00000699 7E051100 ----- 02090 .ORG HD3F, *PTY OK, HEX UNITS? 02091 *Y=UNITS 02092 A(0), HAM>B, OR, 02093 JN(HD4F,HD4T); ----- ----- 078 0008407A 00001007 ----- 02094 .ORG HD4F, *HEX UNITS 02095 *RET4=1 (MARK HEX UNITS FOR BROWSE) 02096 MA(RET4), 02097 Y(1), 02098 Y>RAM, 02099 JUMP(HD5AF); ----- ----- 07A 0000007C 79011100 ----- 02100 .ORG HD4T, *DECIMAL UNITS 02101 *RET4=0 (MARK DECIMAL UNITS FOR BROWSE) 02102 *BTT UNITS? 02103 MA(RET4), 02104 Y(0), 02105 Y>RAM, 02106 JZ(HD5AF,HD5AT); ----- ----- 07B 0000207C 79001100 ----- 02107 .ORG HD5AF, *NOT BTT UNITS, CLEAR BTTM 02108 MA(MASK), 02109 Y(0), 02110 Y>RAM, 02111 JUMP(HD5AT); ----- ----- 07C 0000007D 73001100 ----- 02112 .ORG HD5AT, *BTT UNITS, DO NOT CLEAR BTTM 02113 *RCU=UNITS 02114 MA(RCU), 02115 AR.F0>A, HAM>B, ADD, 02116 Y>RAM, Y>IO, 02117 JBYTE(HD6F,HD6T); ----- ----- 07D 0008807E 2A0041D7 ----- 02118 .ORG HD6F, *WAIT FOR PAGE TENS 02119 JBYTE(HD6F,HD6T); ----- ----- 07E 0000807E 00000000 ----- 02120 .ORG HD6T, *Y=TENS 1ST 02121 CBRDY, 02122 A(0), HAM>B, ADD, 02123 JUMP(HD6A); ----- ----- 07F 000806A3 00002007 ----- 02124 .ORG HD6A, *PTY OK? 2ND 02125 *Y=HAM-10 02126 A(-10), HAM>B, ADD, 02127 JN(HD7F,HD7T); ----- ----- 6A3 00084084 00F60007 ----- 02128 .ORG HD7T, *BAD TENS PARITY 02129 *LPPREG=5 02130 MA(LPPREG), 02131 Y(5), 02132 Y>RAM, 02133 JUMP(LPP0); ----- ----- 085 00000699 7E051100 ----- 02134 .ORG HD7F, *PTY OK, HEX TENS? 3RD 02135 *Y=HAM-15 02136 *A=RCT 02137 MA(RCT), RAM>AR, 02138 A(-15), HAM>B, ADD, 02139 JN(HD8F,HD8T); ----- ----- 084 000A4086 29F10007 ----- 02140 .ORG HD8T, *DECIMAL TENS 4TH 02141 *NOT BTT TENS, CLEAR BTTM 02142 MA(MASK), 02143 Y(0), 02144 Y>RAM, 02145 JUMP(HD9T); ----- ----- 087 00000089 73001100 ----- 02146 .ORG HD8F, *HEX TENS, BTT TENS? 4TH 02147 *IF BTT TENS, DO NOT CLEAR BTTM 02148 *RET4=1 (MARK HEX TENS FOR BROWSE) 02149 MA(RET4), 02150 Y(1), 02151 Y>RAM, 02152 JZ(HD9F,HD9T); ----- ----- 086 00002088 79011100 ----- 02153 .ORG HD9F, *NOT BTT TENS, CLEAR BTTM 5TH 02154 MA(MASK), 02155 Y(0), 02156 Y>RAM, 02157 JUMP(HD9T); ----- ----- 088 00000089 73001100 ----- 02158 * 02159 .ORG HD9T, *RCT=TENS 6TH 02160 MA(RCT), 02161 AR.F0>A, HAM>B, ADD, 02162 Y>RAM, Y>IO, 02163 JUMP(HD10); ----- ----- 089 000806A4 290041D7 ----- 02164 .ORG HD10, *Y=LATCH 7TH 02165 PCL>A, B(7), AND, 02166 JUMP(HD11); ----- ----- 6A4 000006A5 00070870 ----- 02167 * Assume that the page is in a latch for now, check PCL3 02168 * later 02169 .ORG HD11, *PAGE IN LATCH 8TH 02170 *CASE LATCH=? 02171 *B=MASK (CONTAINS BTT MARKER BIT) 02172 MA(MASK), RAM>BR, 02173 JY(HD20Y); ----- ----- 6A5 0001C020 73000000 ----- 02174 *** 02175 .ORG HD20Y, *CASE LATCH=0 9TH 02176 *A=LAF0 02177 MA(LAF0), RAM>AR, 02178 JUMP(HD30); ----- ----- 020 000206A6 40000000 ----- 02179 .ORG HD21, *CASE LATCH=1 9TH 02180 *A=LAF1 02181 MA(LAF1), RAM>AR, 02182 JUMP(HD30); ----- ----- 021 000206A6 41000000 ----- 02183 .ORG HD22, *CASE LATCH=2 9TH 02184 *A=LAF2 02185 MA(LAF2), RAM>AR, 02186 JUMP(HD30); ----- ----- 022 000206A6 42000000 ----- 02187 .ORG HD23, *CASE LATCH=3 9TH 02188 *A=LAF3 02189 MA(LAF3), RAM>AR, 02190 JUMP(HD30); ----- ----- 023 000206A6 43000000 ----- 02191 .ORG HD24, *CASE LATCH=4 9TH 02192 *A=LAF4 02193 MA(LAF4), RAM>AR, 02194 JUMP(HD30); ----- ----- 024 000206A6 44000000 ----- 02195 .ORG HD25, *CASE LATCH=5 9TH 02196 *A=LAF5 02197 MA(LAF5), RAM>AR, 02198 JUMP(HD30); ----- ----- 025 000206A6 45000000 ----- 02199 .ORG HD26, *CASE LATCH=6 9TH 02200 *A=LAF6 02201 MA(LAF6), RAM>AR, 02202 JUMP(HD30); ----- ----- 026 000206A6 46000000 ----- 02203 .ORG HD27, *CASE LATCH=7 9TH 02204 *A=LAF7 02205 MA(LAF7), RAM>AR, 02206 JUMP(HD30); ----- ----- 027 000206A6 47000000 ----- 02207 *** 02208 .ORG HD30, *LAFR=LAFx 10TH 02209 MA(LAFR), 02210 AR>A, B(0), OR, 02211 Y>RAM, 02212 JUMP(HD40); ----- ----- 6A6 000006A7 35001110 ----- 02213 .ORG HD40, *AR=SP0I 11TH 02214 *P=BTTM + MSP 02215 *(BTTM=1 IF PAGE IS 1F0) 02216 MA(SP0I), RAM>AR, 02217 A(MSP), BR>B, OR, 02218 Y>PR, 02219 JBYTE(SPCK0F,SPCK0T); ----- ----- 6A7 0002808A C8071001 ----- 02220 ***ROW 0, SUP-PAGE MODE 1 (SUB-PAGE CHECK MODE) 02221 * AR=SP0I, PR=LAFR 02222 *****WAIT FOR SP UNITS 02223 .ORG SPCK0F, *WAIT FOR SPI 02224 JBYTE(SPCK0F,SPCK0T); ----- ----- 08A 0000808A 00000000 ----- 02225 .ORG SPCK0T, *Y=HAM XOR SP0I 1ST 02226 *AR=SP1I 02227 CBRDY, 02228 MA(SP1I), RAM>AR, 02229 ARHI>A, HAM>B, XOR, 02230 JUMP(SPCK1); ----- ----- 08B 000A06A8 4C003827 ----- 02231 .ORG SPCK1, *RSPI=HAM 2ND 02232 *RSPI=SP0I? PTY OK? 02233 MA(RSPI), 02234 A(0), HAM>B, OR, 02235 Y>RAM, 02236 JZ(SPCK3F,SPCK3T); ----- ----- 6A8 0008208C 3C001107 ----- 02237 *** 02238 .ORG SPCK3F, *SP0I!=RSPI 3RD 02239 *Y=HAM XOR AR 02240 *BR=MASK 02241 PR>BR, 02242 ARHI>A, HAM>B, XOR, 02243 JUMP(SPCK4); ----- ----- 08C 004906A9 00001827 ----- 02244 .ORG SPCK4, *CLEAR MSP0 MARKER 4TH 02245 *SP1I=RSPI? 02246 *AR=SP2I 02247 MA(SP2I), RAM>AR, 02248 A(>FF-MSP0), BR>B, AND, 02249 Y>PR, 02250 JZ(SPCK5F,SPCK5T); ----- ----- 6A9 0002208E D0FE0801 ----- 02251 .ORG SPCK3T, *SP0I=RSPI 3RD 02252 *Y=HAM XOR AR 02253 ARHI>A, HAM>B, XOR, 02254 JUMP(SPCK8); ----- ----- 08D 000806AA 00001827 ----- 02255 .ORG SPCK8, *SP1I=RSPI? 4TH 02256 *AR=SP2I 02257 MA(SP2I), RAM>AR, 02258 JZ(SPCK5F,SPCK5T); ----- ----- 6AA 0002208E 50000000 ----- 02259 *** 02260 .ORG SPCK5F, *SP1I!=RSPI 5TH 02261 *Y=HAM XOR SP2I 02262 *B=MASK 02263 PR>BR, 02264 ARHI>A, HAM>B, XOR, 02265 JUMP(SPCK6); ----- ----- 08E 004906AB 00001827 ----- 02266 .ORG SPCK6, *CLEAR MSP1 MARKER 6TH 02267 *SP2I=RSPI? 02268 * AR = forceing subpage capture flags 02269 MA(SPFRC), RAM>AR, 02270 A(>FF-MSP1), BR>B, AND, 02271 Y>PR, 02272 JZ(SPCK7F,SPCK7T); ----- ----- 6AB 00022094 D7FD0801 ----- 02273 .ORG SPCK5T, *SP1I=RSPI 5TH 02274 *Y=HAM XOR SP2I 02275 ARHI>A, HAM>B, XOR, 02276 JUMP(SPCK9); ----- ----- 08F 000806AC 00001827 ----- 02277 .ORG SPCK9, *SP2I=RSPI? 6TH 02278 * AR = forcing subpage capture flags 02279 MA(SPFRC), RAM>AR, 02280 JZ(SPCK7F,SPCK7T); ----- ----- 6AC 00022094 57000000 ----- 02281 *** 02282 .ORG SPCK7F, *SP2I!=RSPI 7TH 02283 *B=MASK 02284 PR>BR, 02285 JUMP(SPCK7A); ----- ----- 094 004106AD 00000000 ----- 02286 * 02287 .ORG SPCK7A, *CLEAR MSP2 MARKER 8TH 02288 A(>FF-MSP2), BR>B, AND, 02289 Y>PR, 02290 JBYTE(SPCK10F,SPCK10T); ----- ----- 6AD 00008096 80FB0801 ----- 02291 * 02292 .ORG SPCK7T, *SP2I=RSPI 7TH 02293 JBYTE(SPCK10F,SPCK10T); ----- ----- 095 00008096 00000000 ----- 02294 * 02295 *****WAIT FOR SP TENS 02296 .ORG SPCK10F, *WAIT FOR SP TENS 02297 JBYTE(SPCK10F,SPCK10T); ----- ----- 096 00008096 00000000 ----- 02298 .ORG SPCK10T, *AR=SP TENS (MASK C4) 1ST 02299 *PRESERVE PARITY ERROR INFO 02300 *BR=SP0X 02301 CBRDY, 02302 MA(SP0X), RAM>BR, 02303 A(%11110111), HAM>B, AND, 02304 Y>AR, 02305 JUMP(SPCK11); ----- ----- 097 002B06AE 49F72807 ----- 02306 .ORG SPCK11, *Y=SP0X XOR SP TENS 2ND 02307 AR>A, BRHI>B, XOR, 02308 JUMP(SPCK12); ----- ----- 6AE 000006AF 0000181C ----- 02309 .ORG SPCK12, *SP0X==SP TENS? 3RD 02310 *BR=MARKERS 02311 *RSPX= HAM 02312 PR>BR, 02313 MA(RSPX), 02314 A(0), HAM>B, OR, 02315 Y>RAM, 02316 JZ(SPCK13F,SPCK13T); ----- ----- 6AF 00492098 3D001107 ----- 02317 .ORG SPCK13F, *SP0X!=SP TENS 4TH 02318 *CLEAR MARKER 02319 *BR=SP1X 02320 MA(SP1X), RAM>BR, 02321 A(>FF-MSP0), BR>B, AND, 02322 Y>PR, 02323 JUMP(SPCK14); ----- ----- 098 000106B4 CDFE0801 ----- 02324 .ORG SPCK13T, *SP0X==SP TENS 4TH 02325 *DO NOT CLEAR MARKER 02326 *BR=SP1X 02327 MA(SP1X), RAM>BR, 02328 JUMP(SPCK14); ----- ----- 099 000106B4 4D000000 ----- 02329 .ORG SPCK14, *Y=SP1X XOR SP TENS 5TH 02330 AR>A, BRHI>B, XOR, 02331 JUMP(SPCK15); ----- ----- 6B4 000006B5 0000181C ----- 02332 .ORG SPCK15, *SP1X==SP TENS? 6TH 02333 *BR=MARKERS 02334 PR>BR, 02335 JZ(SPCK16F,SPCK16T); ----- ----- 6B5 0041209A 00000000 ----- 02336 .ORG SPCK16F, *SP1X!=SP TENS 7TH 02337 *CLEAR MARKER 02338 *BR=SP2X 02339 MA(SP2X), RAM>BR, 02340 A(>FF-MSP1), BR>B, AND, 02341 Y>PR, 02342 JUMP(SPCK17); ----- ----- 09A 000106B6 D1FD0801 ----- 02343 .ORG SPCK16T, *SP1X==SP TENS 7TH 02344 *DO NOT CLEAR MARKER 02345 *BR=SP2X 02346 MA(SP2X), RAM>BR, 02347 JUMP(SPCK17); ----- ----- 09B 000106B6 51000000 ----- 02348 .ORG SPCK17, *Y=SP2X XOR SP TENS 8TH 02349 AR>A, BRHI>B, XOR, 02350 JUMP(SPCK18); ----- ----- 6B6 000006B7 0000181C ----- 02351 .ORG SPCK18, *SP2X==SP TENS? 9TH 02352 *BR=MARKERS 02353 PR>BR, 02354 JZ(SPCK19F,SPCK19T); ----- ----- 6B7 0041209C 00000000 ----- 02355 .ORG SPCK19F, *SP2X!=SP TENS 10TH 02356 *CLEAR MARKER 02357 *AR=SP0C 02358 MA(SP0C), RAM>AR, 02359 A(>FF-MSP2), BR>B, AND, 02360 Y>PR, 02361 JBYTE(SPCK20F,SPCK20T); ----- ----- 09C 0002809E CAFB0801 ----- 02362 .ORG SPCK19T, *SP2X==SP TENS 10TH 02363 *DO NOT CLEAR MARKER 02364 *AR=SP0C 02365 MA(SP0C), RAM>AR, 02366 JBYTE(SPCK20F,SPCK20T); ----- ----- 09D 0002809E 4A000000 ----- 02367 *****WAIT FOR SP HUNDREDS 02368 * AR=SP0C 02369 .ORG SPCK20F, *WAIT FOR SPC 02370 JBYTE(SPCK20F,SPCK20T); ----- ----- 09E 0000809E 00000000 ----- 02371 .ORG SPCK20T, *Y=HAM XOR SP0C 1ST 02372 *AR=SP1C 02373 CBRDY, 02374 MA(SP1C), RAM>AR, 02375 ARHI>A, HAM>B, XOR, 02376 JUMP(SPCK21); ----- ----- 09F 000A06B8 4E003827 ----- 02377 .ORG SPCK21, *RSPC=HAM 2ND 02378 *RSPC=SP0C? 02379 MA(RSPC), 02380 A(0), HAM>B, OR, 02381 Y>RAM, 02382 JZ(SPCK23F,SPCK23T); ----- ----- 6B8 000820A4 3E001107 ----- 02383 *** 02384 .ORG SPCK23F, *SP0C!=RSPC 3RD 02385 *Y=HAM XOR AR 02386 *BR=MASK 02387 PR>BR, 02388 ARHI>A, HAM>B, XOR, 02389 JUMP(SPCK24); ----- ----- 0A4 004906B9 00001827 ----- 02390 .ORG SPCK24, *CLEAR MSP0 MARKER 4TH 02391 *SP1C=RSPC? 02392 *AR=SP2C 02393 MA(SP2C), RAM>AR, 02394 A(>FF-MSP0), BR>B, AND, 02395 Y>PR, 02396 JZ(SPCK25F,SPCK25T); ----- ----- 6B9 000220A6 D2FE0801 ----- 02397 .ORG SPCK23T, *SP0C=RSPC 3RD 02398 *Y=HAM XOR AR 02399 ARHI>A, HAM>B, XOR, 02400 JUMP(SPCK28); ----- ----- 0A5 000806BA 00001827 ----- 02401 .ORG SPCK28, *SP1C=RSPC? 4TH 02402 *AR=SP2C 02403 MA(SP2C), RAM>AR, 02404 JZ(SPCK25F,SPCK25T); ----- ----- 6BA 000220A6 52000000 ----- 02405 *** 02406 .ORG SPCK25F, *SP1C!=RSPC 5TH 02407 *Y=HAM XOR SP2C 02408 *B=MASK 02409 PR>BR, 02410 JUMP(SPCK26); ----- ----- 0A6 004106BB 00000000 ----- 02411 .ORG SPCK26, *CLEAR MSP1 MARKER 6TH 02412 A(>FF-MSP1), BR>B, AND, 02413 Y>PR, 02414 JUMP(SPCK25T); ----- ----- 6BB 000000A7 80FD0801 ----- 02415 .ORG SPCK25T, *SP1C=RSPC 7TH 02416 *Y=HAM XOR SP2C 02417 ARHI>A, HAM>B, XOR, 02418 JUMP(SPCK29); ----- ----- 0A7 000806BC 00001827 ----- 02419 .ORG SPCK29, *SP2C=RSPC? 8TH 02420 *Y=SP HUNDREDS-15 02421 *B=MASK 02422 PR>BR, 02423 A(-15), HAM>B, ADD, 02424 JZ(SPCK27F,SPCK27T); ----- ----- 6BC 004920A8 00F10007 ----- 02425 *** 02426 .ORG SPCK27F, *SP2C!=RSPC 9TH 02427 *BTT HUNDREDS? 02428 JZ(SPCK27AF,SPCK27AT); ----- ----- 0A8 000020AA 00000000 ----- 02429 .ORG SPCK27AF, *NO, CLEAR BTTM 10TH 02430 *CLEAR MSP2 02431 A(%11110011), BR>B, AND, 02432 Y>PR, 02433 JBYTE(SPCK30F,SPCK30T); ----- ----- 0AA 000080AC 80F30801 ----- 02434 .ORG SPCK27AT, *YES, LEAVE BTTM 10TH 02435 *CLEAR MSP2 02436 A(>FF-MSP2), BR>B, AND, 02437 Y>PR, 02438 JBYTE(SPCK30F,SPCK30T); ----- ----- 0AB 000080AC 80FB0801 ----- 02439 .ORG SPCK27T, *SP2C=RSPC 9TH 02440 *BTT HUNDREDS? 02441 JZ(SPCK27BF,SPCK27BT); ----- ----- 0A9 000020AE 00000000 ----- 02442 .ORG SPCK27BF, *NO, CLEAR BTTM 10TH 02443 A(>FF-BTTM), BR>B, AND, 02444 Y>PR, 02445 JBYTE(SPCK30F,SPCK30T); ----- ----- 0AE 000080AC 80F70801 ----- 02446 .ORG SPCK27BT, *YES, LEAVE BTTM 10TH 02447 JBYTE(SPCK30F,SPCK30T); ----- ----- 0AF 000080AC 00000000 ----- 02448 *****WAIT FOR SP THOUSANDS 02449 .ORG SPCK30F, *WAIT FOR SP THOU'S 02450 JBYTE(SPCK30F,SPCK30T); ----- ----- 0AC 000080AC 00000000 ----- 02451 .ORG SPCK30T, *AR=SP THOU'S (MASK C5,C6) 1ST 02452 *PRESERVE PARITY ERROR INFO 02453 *BR=SP0M 02454 CBRDY, 02455 MA(SP0M), RAM>BR, 02456 A(%11110011), HAM>B, AND, 02457 Y>AR, 02458 JUMP(SPCK31); ----- ----- 0AD 002B06BD 4BF32807 ----- 02459 .ORG SPCK31, *Y=SP0M XOR SP THOU'S 2ND 02460 AR>A, BRHI>B, XOR, 02461 JUMP(SPCK32); ----- ----- 6BD 000006BE 0000181C ----- 02462 .ORG SPCK32, *SP0M==SP THOU'S? 3RD 02463 *BR=MARKERS 02464 *RSPM= HAM 02465 PR>BR, 02466 MA(RSPM), 02467 A(0), HAM>B, OR, 02468 Y>RAM, 02469 JZ(SPCK33F,SPCK33T); ----- ----- 6BE 004920B8 3F001107 ----- 02470 .ORG SPCK33F, *SP0M!=SP THOU'S 4TH 02471 *CLEAR MARKER 02472 *BR=SP1M 02473 MA(SP1M), RAM>BR, 02474 A(>FF-MSP0), BR>B, AND, 02475 Y>PR, 02476 JUMP(SPCK34); ----- ----- 0B8 000106BF CFFE0801 ----- 02477 .ORG SPCK33T, *SP0M==SP THOU'S 4TH 02478 *DO NOT CLEAR MARKER 02479 *BR=SP1M 02480 MA(SP1M), RAM>BR, 02481 JUMP(SPCK34); ----- ----- 0B9 000106BF 4F000000 ----- 02482 .ORG SPCK34, *Y=SP1M XOR SP THOU'S 5TH 02483 AR>A, BRHI>B, XOR, 02484 JUMP(SPCK35); ----- ----- 6BF 000006C3 0000181C ----- 02485 .ORG SPCK35, *SP1M==SP THOU'S? 6TH 02486 *BR=MARKERS 02487 PR>BR, 02488 JZ(SPCK36F,SPCK36T); ----- ----- 6C3 004120BA 00000000 ----- 02489 .ORG SPCK36F, *SP1M!=SP THOU'S 7TH 02490 *CLEAR MARKER 02491 *BR=SP2M 02492 MA(SP2M), RAM>BR, 02493 A(>FF-MSP1), BR>B, AND, 02494 Y>PR, 02495 JUMP(SPCK37); ----- ----- 0BA 000106C4 D3FD0801 ----- 02496 .ORG SPCK36T, *SP1M==SP TENS 7TH 02497 *DO NOT CLEAR MARKER 02498 *BR=SP2M 02499 MA(SP2M), RAM>BR, 02500 JUMP(SPCK37); ----- ----- 0BB 000106C4 53000000 ----- 02501 .ORG SPCK37, *Y=SP2M XOR SP THOU'S 8TH 02502 *BR=MARKERS 02503 PR>BR, 02504 AR>A, BRHI>B, XOR, 02505 JUMP(SPCK38); ----- ----- 6C4 004106C5 0000181C ----- 02506 .ORG SPCK38, *SP2M==SP THOU'S? 9TH 02507 *Y=SP THOUSANDS-3 02508 AR>A, B(-3), ADD, 02509 JZ(SPCK39F,SPCK39T); ----- ----- 6C5 000020BC 00FD0010 ----- 02510 .ORG SPCK39F, *SP2M!=SP THOU'S 10TH 02511 *BTT THOUSANDS? 02512 JZ(SPCK39AF,SPCK39AT); ----- ----- 0BC 000020BE 00000000 ----- 02513 .ORG SPCK39AF, *NO, CLEAR BTTM 11TH 02514 *CLEAR MSP2 02515 *AR=MARKERS 02516 MA(SPFRC), RAM>BR, 02517 A(%11110011), BR>B, AND, 02518 Y>PR, Y>AR, 02519 JBYTE(CGA0F,CGA0T); ----- ----- 0BE 002380C2 D7F30801 ----- 02520 * 02521 .ORG SPCK39AT, *YES, LEAVE BTTM 11TH 02522 *CLEAR MSP2 02523 *AR=MARKERS 02524 MA(SPFRC), RAM>BR, 02525 A(>FF-MSP2), BR>B, AND, 02526 Y>PR, Y>AR, 02527 JBYTE(CGA0F,CGA0T); ----- ----- 0BF 002380C2 D7FB0801 ----- 02528 * 02529 .ORG SPCK39T, *SP2M==SP THOU'S 10TH 02530 *DO NOT CLEAR MSP2 MARKER 02531 *BTT THOUSANDS? 02532 JZ(SPCK39BF,SPCK39BT); ----- ----- 0BD 000020C4 00000000 ----- 02533 .ORG SPCK39BF, *NO, CLEAR BTTM 11TH 02534 *AR=MARKERS 02535 MA(SPFRC), RAM>BR, 02536 A(>FF-BTTM), BR>B, AND, 02537 Y>PR, Y>AR, 02538 JBYTE(CGA0F,CGA0T); ----- ----- 0C4 002380C2 D7F70801 ----- 02539 * 02540 .ORG SPCK39BT, *YES, LEAVE BTTM 11TH 02541 *AR=MARKERS 02542 MA(SPFRC), RAM>BR, 02543 A(0), BR>B, OR, 02544 Y>PR, Y>AR, 02545 JBYTE(CGA0F,CGA0T); ----- ----- 0C5 002380C2 D7001001 ----- 02546 * 02547 *****WAIT FOR CGA 02548 * PR=MASK 02549 .ORG CGA0F, * 02550 JBYTE(CGA0F,CGA0T); ----- ----- 0C2 000080C2 00000000 ----- 02551 .ORG CGA0T, *Y=BTTM 02552 CBRDY, 02553 AR>A, B(BTTM), AND, 02554 JUMP(CGA0A); ----- ----- 0C3 000006C6 00082810 ----- 02555 .ORG CGA0A, *CGA=CGA 1ST 02556 *RECEIVE A BTT? 02557 MA(CGA), 02558 A(0), HAM>B, ADD, 02559 Y>RAM, 02560 JZ(CGA0BF,CGA0BT); ----- ----- 6C6 000820C6 33000107 ----- 02561 *RECEIVE A BTT 02562 .ORG CGA0BF, *RECEIVE A BTT 2ND 02563 *B=STOR1 02564 MA(STOR1), RAM>BR, 02565 JUMP(CGA0C); ----- ----- 0C6 000106C7 21000000 ----- 02566 .ORG CGA0C, *RWL=LATCH IN STORE 1 3RD 02567 MA(RWL), 02568 A(0), BRHI>B, OR, 02569 Y>RAM, Y>IO, 02570 JUMP(CGA0D); ----- ----- 6C7 000006C8 0B00510C ----- 02571 .ORG CGA0D, *A=THIS BTT UPDATE CODE 4TH 02572 MA(RSPX), RAM>AR, 02573 JUMP(CGA0E); ----- ----- 6C8 000206C9 3D000000 ----- 02574 .ORG CGA0E, *B=TOPRG1 (INCLUDES LAST BTT UPDATE CODE PLUS ONE) 02575 *CLEAR C4 IN COPY OF RSPX 5TH 02576 MA(TOPRG1), RAM>BR, 02577 AR>A, B(%11110111), AND, 02578 Y>AR, 02579 JUMP(CGA0G); ----- ----- 6C9 002306CA 37F70810 ----- 02580 .ORG CGA0G, *COMPARE UPDATE CODES 6TH 02581 *(DON'T NEED A CIN BECAUSE TOPRG1 HAS UPDATE CODE 02582 *PLUS ONE) 02583 *PARITY OK? 02584 NAR>A, BR.0F>B, ADD, 02585 JN(CGA0HF,CGA0HT); ----- ----- 6CA 000040C8 00000042 ----- 02586 .ORG CGA0HF, *PARITY OK 7TH 02587 *INIT BTTERR 02588 *BTT UPDATED? 02589 *B=RSPX 02590 MA(RSPX), RAM>BR, 02591 A(>FF-BTTERR), BR>B, AND, 02592 Y>AR, 02593 JZ(CGA0JF,CGA0JT); ----- ----- 0C8 002320CA 3D7F0801 ----- 02594 .ORG CGA0HT, *BAD PARITY 7TH 02595 *BTTERR=1 02596 MA(TOPRG1), 02597 *TCJ A(BTTERR), BR>B, OR, *July 93 BTT update bug fix 02598 A(>FF-BTTERR), BR>B, AND, 02599 Y>RAM, 02600 JBYTE(CGB0F,CGB0T); ----- ----- 0C9 000080CC 377F0901 ----- 02601 .ORG CGA0JF, *BTT UPDATED 8TH 02602 *Y=CLEAR BIT 02603 A(>08), BR>B, AND, 02604 JUMP(CGA0K); ----- ----- 0CA 000006CB 00080801 ----- 02605 .ORG CGA0K, *UPDATED AND CLEAR BIT SET? 9TH 02606 *BTTUP=1 02607 MA(TOPRG1), 02608 *TCJ AR>A, B(BTTUP), OR, * July 93 BTT update bug fix 02609 AR>A, B(0), OR, 02610 Y>RAM, Y>AR, 02611 JZ(CGA0LF,CGA0LT); ----- ----- 6CB 002220CE 37001110 ----- 02612 .ORG CGA0LF, *UPDATED AND CLEAR BIT SET 10TH 02613 *BTTUP=1, UPDATE CODE=0 02614 MA(TOPRG1), 02615 AR.F0>A, B(0), OR, 02616 Y>RAM, 02617 JBYTE(CGB0F,CGB0T); ----- ----- 0CE 000080CC 370011D0 ----- 02618 .ORG CGA0LT, *UPDATED AND CLEAR BIT NOT SET 10TH 02619 *BTTUP=1, UPDATE UPDATE CODE 02620 *(INCREMENT SO ZERO CAUSES UPDATE) 02621 MA(TOPRG1), 02622 AR.F0>A, BR.0F>B, O>CIN, ADD, 02623 Y>RAM, 02624 JBYTE(CGB0F,CGB0T); ----- ----- 0CF 000080CC 370005D2 ----- 02625 * 02626 .ORG CGA0JT, *BTT NOT UPDATED 8TH 02627 *Y=CLEAR BIT 02628 A(>08), BR>B, AND, 02629 JUMP(CGA0M); ----- ----- 0CB 000006CC 00080801 ----- 02630 .ORG CGA0M, *NOT UPDATED AND CLEAR BIT SET? 9TH 02631 JZ(CGA0NF,CGA0NT); ----- ----- 6CC 000020D8 00000000 ----- 02632 .ORG CGA0NF, *NOT UPDATED AND CLEAR BIT SET 10TH 02633 *BTTUP=1, UPDATE CODE=0 02634 MA(TOPRG1), 02635 *TCJ AR.F0>A, B(BTTUP), OR, * July 93 BTT update bug fix 02636 AR.F0>A, B(0), OR, 02637 Y>RAM, 02638 JBYTE(CGB0F,CGB0T); ----- ----- 0D8 000080CC 370011D0 ----- 02639 .ORG CGA0NT, *NOT UPDATED AND NO CLEAR 10TH 02640 *DO NOTHING (BUT NEED TO UPDATE BTTERR) 02641 MA(TOPRG1), 02642 AR>A, B(0), OR, 02643 Y>RAM, 02644 JBYTE(CGB0F,CGB0T); ----- ----- 0D9 000080CC 37001110 ----- 02645 *NOT RECEIVING A BTT 02646 * PR=MASK 02647 .ORG CGA0BT, *B=SPREG0 2ND 02648 MA(SPREG0), RAM>BR, 02649 PCL>A, B(0), ADD, 02650 JUMP(CGA1); ----- ----- 0C7 000106CD 54000070 ----- 02651 .ORG CGA1, *COMPARE PCL AND LFPCL0 3RD 02652 *PAGE IN LATCH? 02653 *B=SPREG1 02654 MA(SPREG1), RAM>BR, 02655 PCL>A, BRHI>B, XOR, 02656 JN(CGA2F,BSE4T); ----- ----- 6CD 000140DA 5500187C ----- 02657 *+++ PAGE NOT IN LATCH, CAPTURE IT IN BROWSE MODE? 02658 .ORG BSE4T, *BR=DHREG 4TH 02659 MA(DHREG), RAM>BR, 02660 JUMP(BSE5); ----- ----- 0DB 000106CE 32000000 ----- 02661 .ORG BSE5, *Y=BWSE, BR=RSPM 5TH 02662 MA(RSPM), RAM>BR, 02663 A(BWSE), BR>B, AND, 02664 JUMP(BSE6); ----- ----- 6CE 000106CF 3F010801 ----- 02665 * 02666 * TCJ Dec 93 02667 * 02668 .ORG BSE6, *Y=SUBT, BROWSE MODE? 6TH 02669 *AR=STBRW 02670 MA(DHREG), RAM>AR, 02671 A(%00001000), BR>B, AND, 02672 JZ(BSE7F,BSE7T); ----- ----- 6CF 000220DC 32080801 ----- 02673 * 02674 .ORG BSE7T, *NOT BROWSING, EXIT TO PNIL0 02675 *AR=STOR0 02676 MA(STOR0), RAM>AR, 02677 JUMP(PNIL0); ----- ----- 0DD 000206D0 20000000 ----- 02678 * 02679 .ORG BSE7F, *Y=STBRW, SUBTITLE PAGE? 02680 *AR=RET4 (HEX PAGE NUMBER MARKER) 02681 MA(RET4), RAM>AR, 02682 AR>A, B(STBRW), AND, 02683 JZ(BSE8F,BSE8T); ----- ----- 0DC 000220DE 79020810 ----- 02684 * 02685 * TCJ Dec 93 02686 * Addition of subtitle browse, if it is a subbtitle 02687 * page and STBRW is set then capture it. 02688 * 02689 .ORG BSE8F, *SUBTITLE PAGE, STBRW ? 02690 JZ(TCJBSE00F,TCJBSE00T); ----- ----- 0DE 000020E4 00000000 ----- 02691 * 02692 .ORG TCJBSE00F, *SUBBTITLE & STBRW==1, So capture it 02693 *WAIT FOR CGB 02694 JBYTE(BSE10F,BSE10T); ----- ----- 0E4 000080E6 00000000 ----- 02695 * 02696 .ORG TCJBSE00T, *DO NOT BROWSE ONTO A SUBT PAGE, EXIT TO PNIL0 02697 *AR=STOR0 02698 MA(STOR0), RAM>AR, 02699 JUMP(PNIL0); ----- ----- 0E5 000206D0 20000000 ----- 02700 * 02701 .ORG BSE8T, *Y=RET4 02702 *AR=STOR0 02703 MA(STOR0), RAM>AR, 02704 AR>A, B(0), OR, 02705 JZ(TCJBSE01F,TCJBSE01T); ----- ----- 0DF 000220E8 20001010 ----- 02706 * 02707 .ORG TCJBSE01F, *NOT SUBTITLE & STBRW==1, EXIT TO PNIL0 02708 *AR=STOR0 02709 MA(STOR0), RAM>AR, 02710 JUMP(PNIL0); ----- ----- 0E8 000206D0 20000000 ----- 02711 * 02712 .ORG TCJBSE01T, *NOT SUBTITLE & STBRW==0 02713 *HEX PAGE NUMBER? 02714 *RWL=STOR0 02715 MA(RWL), 02716 ARHI>A, B(7), AND, 02717 Y>RAM, Y>IO, 02718 JZ(BSE9F,BSE9T); ----- ----- 0E9 000020EA 0B074920 ----- 02719 * 02720 .ORG BSE9F, *DO NOT BROWSE ONTO A HEX PAGE, EXIT TO PNIL0 02721 *AR=STOR0 02722 MA(STOR0), RAM>AR, 02723 JUMP(PNIL0); ----- ----- 0EA 000206D0 20000000 ----- 02724 .ORG BSE9T, *NOT A HEX PAGE, OK TO RECIEVE 02725 *WAIT FOR CGB 02726 JBYTE(BSE10F,BSE10T); ----- ----- 0EB 000080E6 00000000 ----- 02727 .ORG BSE10F, *WAIT FOR CGB 02728 JBYTE(BSE10F,BSE10T); ----- ----- 0E6 000080E6 00000000 ----- 02729 .ORG BSE10T, *LPPREG=8 1ST 02730 CBRDY, 02731 MA(LPPREG), 02732 Y(8), 02733 Y>RAM, 02734 JUMP(CGB0B); ----- ----- 0E7 000006D1 7E083100 ----- 02735 *+++PAGE IN A LATCH 02736 * A=MASK, B=SPREG1, LAST Y WAS PCL XOR LFPCL0 02737 .ORG CGA2F, *PAGE IN LATCH 4TH 02738 *COMPARE PCL AND LFPCL1 02739 *PCL=LFPCL0? 02740 *B=SPREG2 02741 MA(SPREG2), RAM>BR, 02742 PCL>A, BRHI>B, XOR, 02743 JZ(CGA3F,CGA3T); ----- ----- 0DA 000120EC 5600187C ----- 02744 .ORG CGA3T, *PCL=LFPCL0 5TH 02745 *B=SPREG0 02746 MA(SPREG0), RAM>BR, 02747 JUMP(CGA5T); ----- ----- 0ED 000100F9 54000000 ----- 02748 .ORG CGA3F, *PCL!=LFPCL0 5TH 02749 *COMPARE PCL AND LFPCL2 02750 *PCL=LFPCL1? 02751 PCL>A, BRHI>B, XOR, 02752 JZ(CGA4F,CGA4T); ----- ----- 0EC 000020EE 0000187C ----- 02753 .ORG CGA4T, *PCL=LFPCL1 6TH 02754 *B=SPREG1 02755 MA(SPREG1), RAM>BR, 02756 JUMP(CGA5T); ----- ----- 0EF 000100F9 55000000 ----- 02757 .ORG CGA4F, *PCL!=LFPCL1 6TH 02758 *PCL=LFPCL2? 02759 JZ(CGA5F,CGA5T); ----- ----- 0EE 000020F8 00000000 ----- 02760 .ORG CGA5F, *PCL IS NOT FOR A SUB-PAGE 7TH 02761 *RWL=PCL 02762 MA(RWL), 02763 PCL>A, B(7), AND, 02764 Y>RAM, Y>IO, 02765 JBYTE(CGB0F,CGB0T); ----- ----- 0F8 000080CC 0B074970 ----- 02766 * 02767 .ORG CGA5T, *CASE MASK.MASKx 7TH 02768 *AR = SPFRC 02769 MA(SPFRC), RAM>AR, 02770 AR.0F>A, BR.0F>B, AND, 02771 JUMP(CGA6); ----- ----- 0F9 000206D2 570008C2 ----- 02772 * 02773 .ORG CGA6, * CASE Y = SPFRC & 7 8TH 02774 AR.0F>A, B(7), AND, 02775 JY(CGAXX.0); ----- ----- 6D2 0000C040 000708C0 ----- 02776 * 02777 .ORG CGAXX.0, *CASE =000 9TH 02778 *NOT LOOKING FOR THIS SUB-PAGE 02779 JY(CGAZZ.0); ----- ----- 040 0000C548 00000000 ----- 02780 * 02781 .ORG CGAXX.1, *CASE MASK=001 9TH 02782 *AR=LFSP0 02783 MA(LFSP0), RAM>AR, 02784 JUMP(CGAYY); ----- ----- 041 000206D3 48000000 ----- 02785 * 02786 .ORG CGAXX.2, * CASE MASK=010 9TH 02787 * AR = LFSP1 02788 MA(LFSP1), RAM>AR, 02789 JUMP(CGAYY); ----- ----- 042 000206D3 49000000 ----- 02790 * 02791 .ORG CGAXX.3, *CASE MASK=011, ERROR, 9TH 02792 *Assume MASK==001 02793 MA(LFSP0), RAM>AR, 02794 JUMP(CGAYY); ----- ----- 043 000206D3 48000000 ----- 02795 * 02796 .ORG CGAXX.4, *CASE MASK=100 9TH 02797 MA(LFSP2), RAM>AR, 02798 JUMP(CGAYY); ----- ----- 044 000206D3 4A000000 ----- 02799 * 02800 .ORG CGAYY, *RWL=LFSPx 10TH 02801 MA(RWL), 02802 AR.0F>A, B(0), OR, 02803 Y>RAM, Y>IO, 02804 JBYTE(CGB0F,CGB0T); ----- ----- 6D3 000080CC 0B0051C0 ----- 02805 * 02806 * The following three cases are errors which imply that 02807 * two or more latches have been set to identical page numbers. 02808 * This can happen when TOP broadcasters update the tables as more 02809 * than one identical AIT page number can appear in the PLT. This 02810 * does not cause a problem because the AIT search code will look 02811 * in all the captured AITs until it finds a page number. The 02812 * situation will correct itself as soon as a BTT is received 02813 * with no duplicate page numbers. 02814 * 02815 .ORG CGAXX.5, *CASE MASK=101 9TH 02816 *ERROR 02817 *AR=LFSP0 02818 MA(LFSP0), RAM>AR, 02819 JUMP(CGAYY); ----- ----- 045 000206D3 48000000 ----- 02820 * 02821 .ORG CGAXX.6, *CASE MASK=110 9TH 02822 *ERROR 02823 *AR=LFSP1 02824 MA(LFSP1), RAM>AR, 02825 JUMP(CGAYY); ----- ----- 046 000206D3 49000000 ----- 02826 * 02827 .ORG CGAXX.7, *CASE MASK=111 9TH 02828 *ERROR 02829 *AR=LFSP0 02830 MA(LFSP0), RAM>AR, 02831 JUMP(CGAYY); ----- ----- 047 000206D3 48000000 ----- 02832 * 02833 * TCJ Jan 92 02834 * Page in latch but not for one of the given 02835 * subpage numbers. Do a case jump on the 02836 * SPFRC flag in case we need to force a capture 02837 * 02838 .ORG CGAZZ.0, * CASE SPFRC==0, Don'y force 02839 * AR = STOR0 02840 MA(STOR0), RAM>AR, 02841 JUMP(PNIL0); ----- ----- 548 000206D0 20000000 ----- 02842 * 02843 .ORG CGAZZ.1, * CASE SPFRC==1 02844 * AR = LFSP0 02845 MA(LFSP0), RAM>AR, 02846 JUMP(CGAYY); ----- ----- 549 000206D3 48000000 ----- 02847 * 02848 .ORG CGAZZ.2, * CASE SPFRC==2 02849 * AR = LFSP1 02850 MA(LFSP1), RAM>AR, 02851 JUMP(CGAYY); ----- ----- 54A 000206D3 49000000 ----- 02852 * 02853 .ORG CGAZZ.3, * CASE SPFRC==3, Error 02854 MA(STOR0), RAM>AR, 02855 JUMP(PNIL0); ----- ----- 54B 000206D0 20000000 ----- 02856 * 02857 .ORG CGAZZ.4, * CASE SPFRC==4 02858 * AR = LFSP2 02859 MA(LFSP2), RAM>AR, 02860 JUMP(CGAYY); ----- ----- 54C 000206D3 4A000000 ----- 02861 * 02862 .ORG CGAZZ.5, * CASE SPFRC==5, Error 02863 MA(STOR0), RAM>AR, 02864 JUMP(PNIL0); ----- ----- 54D 000206D0 20000000 ----- 02865 * 02866 .ORG CGAZZ.6, * CASE SPFRC==6, Error 02867 MA(STOR0), RAM>AR, 02868 JUMP(PNIL0); ----- ----- 54E 000206D0 20000000 ----- 02869 * 02870 .ORG CGAZZ.7, * CASE SPFRC==7, Error 02871 MA(STOR0), RAM>AR, 02872 JUMP(PNIL0); ----- ----- 54F 000206D0 20000000 ----- 02873 * 02874 *+++ 02875 .ORG CGB0F, *WAITING FOR CGB 02876 *GOING TO CAPTURE THE PAGE 02877 JBYTE(CGB0F,CGB0T); ----- ----- 0CC 000080CC 00000000 ----- 02878 .ORG CGB0T, *LPPREG=2 1ST 02879 CBRDY, 02880 MA(LPPREG), 02881 Y(2), 02882 Y>RAM, 02883 JUMP(CGB0B); ----- ----- 0CD 000006D1 7E023100 ----- 02884 *ENTRY POINT FROM BROWSE CODE 02885 .ORG CGB0B, *BR=DHREG 2ND 02886 MA(DHREG), RAM>BR, 02887 JUMP(CGB1); ----- ----- 6D1 000106D4 32000000 ----- 02888 .ORG CGB1, *Y=HOFF 3RD 02889 A(HOFF), BR>B, AND, 02890 JUMP(CGB2); ----- ----- 6D4 000006D5 00800801 ----- 02891 .ORG CGB2, *CGB=CGB 4TH 02892 *HOFF? 02893 MA(CGB), 02894 A(0), HAM>B, ADD, 02895 Y>RAM, 02896 JZ(CGB3F,CGB3T); ----- ----- 6D5 000820FA 34000107 ----- 02897 * 02898 *ENTRY POINT FROM PNIL CODE 02899 * 02900 .ORG CGB3F, *DO NOT RECEIVE HEADER 9TH 02901 *GO TO TIME 02902 *WAIT FOR BYTE 02903 *BR=SCREEN 02904 MA(SCREEN), RAM>BR, 02905 JBYTE(CGB4F,CGB4T); ----- ----- 0FA 000180FC 60000000 ----- 02906 .ORG CGB4F, *WAIT FOR BYTE 02907 JBYTE(CGB4F,CGB4T); ----- ----- 0FC 000080FC 00000000 ----- 02908 .ORG CGB4T, *Y=MNDP1+MNDP0 1ST 02909 *AR=VDPOSD 02910 CBRDY, 02911 MA(VDPOSD), RAM>AR, 02912 A(MNDP1+MNDP0), BR>B, AND, 02913 JUMP(CGB4A); ----- ----- 0FD 000206D6 2C032801 ----- 02914 .ORG CGB4A, *DISPLAYING A MENU PAGE? 2ND 02915 *Y=CFU 02916 AR>A, B(CFU), AND, 02917 JZ(CGB4BF,CGB4BT); ----- ----- 6D6 000020FE 00040810 ----- 02918 .ORG CGB4BT, *NO, RWL ALREADY SET TO STORE 0 3RD 02919 JUMP(CGB4CT); ----- ----- 0FF 00000105 00000000 ----- 02920 .ORG CGB4BF, *MENU PAGE, UPDATING CLOCK FIELD? 02921 *AR=VDP0 3RD 02922 MA(VDP0), RAM>AR, 02923 JZ(CGB4CF,CGB4CT); ----- ----- 0FE 00022104 00000000 ----- 02924 .ORG CGB4CF, *UPDATING CLOCK IN MENU PAGE 4TH 02925 *RWL=DPL 02926 MA(RWL), 02927 AR>A, B(0), OR, 02928 Y>RAM, Y>IO, 02929 JUMP(CGB4CT); ----- ----- 104 00000105 0B005110 ----- 02930 * 02931 .ORG CGB4CT, *AR=23, SKIP 23 BYTES 5TH 02932 Y(23), 02933 Y>AR, 02934 JUMP(CGB4D); ----- ----- 105 002206D7 00171000 ----- 02935 .ORG CGB4D, *CALL WAIT 6TH 02936 *RETURN=0, RETURN TO CGB5Y 02937 MA(RETURN), 02938 A(0), B(0), AND, 02939 Y>RAM, 02940 JUMP(WAIT0F); ----- ----- 6D7 0000064E 7C000900 ----- 02941 .ORG CGB5Y, *BASE CASE OF WAIT RETURN ->5TH 02942 *P=32 02943 A(16), B(16), ADD, 02944 Y>PR, 02945 JUMP(CGB6); ----- ----- 030 000006D8 80100000 ----- 02946 .ORG CGB6, *COUNT=8 6TH 02947 *CALL RDC 02948 *RETURN TO LPP0 02949 MA(COUNT), 02950 A(4), B(4), ADD, 02951 Y>RAM, 02952 JBYTE(RDC0F,RDC0T); ----- ----- 6D8 00008106 78040100 ----- 02953 *** 02954 .ORG CGB3T, *RECEIVE HEADER CHARACTERS 9TH 02955 *AND TIME 02956 *P=8 02957 A(4), B(4), ADD, 02958 Y>PR, 02959 JUMP(CGB7); ----- ----- 0FB 000006D9 80040000 ----- 02960 .ORG CGB7, *COUNT=32 10TH 02961 *CALL RDC 02962 *RETURN TO LPP0 02963 MA(COUNT), 02964 A(16), B(16), ADD, 02965 Y>RAM, 02966 JBYTE(RDC0F,RDC0T); ----- ----- 6D9 00008106 78100100 ----- 02967 * 02968 ***PNIL: PAGE NOT IN LATCH***** 02969 * 02970 * This routines either:- 02971 * 1) stores header characters for a rolling header 02972 * 2) store time characters for time display 02973 * or 3) does not store characters as appropriate. 02974 * 02975 * It updates LPPREG to specify The correct type of post processing 02976 * after the required characters have been received. 02977 * 02978 * AR=STORE0 02979 .ORG PNIL0, *SET RWL TO STORE 0 LATCH 10TH 02980 MA(RWL), 02981 ARHI>A, B(DPL), AND, 02982 Y>RAM, Y>IO, 02983 JUMP(PNIL0AF); ----- ----- 6D0 00000108 0B0F4920 ----- 02984 .ORG PNIL0AF, *WAIT FOR CGB 11TH 02985 *AR=DISPLAY PAGE MAGAZINE 02986 MA(DPM), RAM>AR, 02987 JBYTE(PNIL0AF,PNIL0AT); ----- ----- 108 00028108 68000000 ----- 02988 .ORG PNIL0AT, *SET RWL TO DISPLAY LATCH 1ST 02989 *MOVE TO LO NIBBLE 02990 CBRDY, 02991 ARHI>A, B(0), OR, 02992 Y>AR, 02993 JUMP(PNIL4); ----- ----- 109 002206DA 00003020 ----- 02994 .ORG PNIL4, *Y=MS (MAG SERIAL) 2ND 02995 MA(RCM), RAM>BR, 02996 A(%0001), HAM>B, AND, 02997 JUMP(PNIL7); ----- ----- 6DA 000906DB 28010807 ----- 02998 .ORG PNIL7, *MS? 3RD 02999 *Y=RCM-MAG OF DISPLAY LATCH 03000 *AS DISPLAYED PAGE 03001 *AR=CGA 03002 MA(CGA), RAM>AR, 03003 NAR.0F>A, BR.0F>B, O>CIN, ADD, 03004 JZ(PNIL8F,PNIL8T); ----- ----- 6DB 0002210A 33000462 ----- 03005 *** 03006 .ORG PNIL8F, *SERIAL MAG 4TH 03007 *Y=PTY+SH+ID+IS OF CGA 03008 AR>A, B(%10001101), AND, 03009 JUMP(PNIL8A); ----- ----- 10A 000006DC 008D0810 ----- 03010 .ORG PNIL8A, *SET LPPREG=1 5TH 03011 *PTY ERROR, SH, ID OR IS? 03012 MA(LPPREG), 03013 Y(1), 03014 Y>RAM, 03015 JZ(PNIL10F,PNIL10T); ----- ----- 6DC 0000210C 7E011100 ----- 03016 *** 03017 .ORG PNIL8T, *PARALLEL MAG 4TH 03018 *HEADER FROM SAME MAG AS DISPLAY PAGE? 03019 *Y=PTY+SH+ID+IS OF CGA 03020 AR>A, B(%10001101), AND, 03021 JZ(PNIL9F,PNIL9T); ----- ----- 10B 0000210E 008D0810 ----- 03022 .ORG PNIL9F, *NO, NO GOOD FOR ROLLING 5TH 03023 *HEADER OR TIME 03024 *SET LPPREG=1 03025 MA(LPPREG), 03026 Y(1), 03027 Y>RAM, 03028 JUMP(PNIL10F); ----- ----- 10E 0000010C 7E011100 ----- 03029 .ORG PNIL9T, *PARALLEL ROLLING HEADER 5TH 03030 *OR TIME 03031 *SET LPPREG=1 03032 *PTY ERROR, SH, ID OR IS? 03033 MA(LPPREG), 03034 Y(1), 03035 Y>RAM, 03036 JZ(PNIL10F,PNIL10T); ----- ----- 10F 0000210C 7E011100 ----- 03037 ***PARALLEL AND SERIAL MAG JOIN HERE 03038 .ORG PNIL10F, *DO NOT USE FOR HEADER 03039 *OR TIME 03040 *CGB=HAM 03041 MA(CGB), 03042 A(0), HAM>B, ADD, 03043 Y>RAM, 03044 JUMP(LPP0); ----- ----- 10C 00080699 34000107 ----- 03045 .ORG PNIL10T, *BR=DHREG 5TH/6TH 03046 MA(DHREG), RAM>BR, 03047 JUMP(PNIL10A); ----- ----- 10D 000106DD 32000000 ----- 03048 .ORG PNIL10A, *Y=POOCD+NRH 7TH 03049 A(NRH+POOCD), BR>B, AND, 03050 JUMP(PNIL10B); ----- ----- 6DD 000006DE 00300801 ----- 03051 .ORG PNIL10B, *ROLLING HEADER ENABLED? 8TH 03052 *CGB=HAM 03053 MA(CGB), 03054 A(0), HAM>B, ADD, 03055 Y>RAM, 03056 JZ(CGB3F,CGB3T); ----- ----- 6DE 000820FA 34000107 ----- 03057 *+++ 03058 ***END OF ROW 0**************** 03059 ***DISPLAY ROW 1-23************ 03060 * input parameters:- AR=LAFR 03061 .ORG DR0, *ROW 1 TO 23 7TH 03062 *Y=(AITL+BTTL) 03063 AR>A, B(AITL+BTTL), AND, 03064 JUMP(DR1); ----- ----- 075 000006DF 00030810 ----- 03065 .ORG DR1, *BR=THISRW 8TH 03066 *CASE (AITL+BTTL)=? 03067 MA(THISRW), RAM>BR, 03068 JY(DR10Y); ----- ----- 6DF 0001C018 7D000000 ----- 03069 .ORG DR10Y, *CASE NOT BTT OR AIT 9TH 03070 *DISPLAY ROW OFF? 03071 *COUNT=40 03072 MA(COUNT), 03073 A(20), B(20), ADD, 03074 Y>RAM, 03075 JUMP(DR10); ----- ----- 018 000006E0 78140100 ----- 03076 .ORG DR10, *RECEIVE BYTES 10TH 03077 *CALL RDC 03078 *RETURNS TO POST PROCESSING CODE 03079 JBYTE(RDC0F,RDC0T); ----- ----- 6E0 00008106 00000000 ----- 03080 .ORG DR11, *CASE AIT 9TH 03081 *CALL AIT 03082 *RETURNS TO POST PROCESSING CODE 03083 *Y=THISRW-23 03084 A(-23), BR>B, ADD, 03085 JUMP(AIT0A); ----- ----- 019 000006E1 00E90001 ----- 03086 .ORG DR12, *CASE BTT 03087 *RETURNS TO POST PROCESSING CODE 03088 *Y=THISRW-23 03089 A(-23), BR>B, ADD, 03090 JUMP(BTT0A); ----- ----- 01A 000006E2 00E90001 ----- 03091 ***ROW 24********************** 03092 * A=STOR7 03093 .ORG I30Y, *POINT TO FLOF FLAGS 8TH 03094 *B=RWL 03095 MA(RWL), RAM>BR, 03096 Y(-16), 03097 Y>PR, 03098 JUMP(RBR0); ----- ----- 010 000106E3 8BF01000 ----- 03099 .ORG RBR0, *Y=STOR7 XOR RWL 9TH 03100 *A=STOR0 03101 *TPD= FLOF FLAGS FOR THIS LATCH 03102 RVDP, 03103 MA(STOR0), RAM>AR, 03104 ARHI>A, BR.0F>B, XOR, 03105 JUMP(RBR1); ----- ----- 6E3 000206E4 20009822 ----- 03106 .ORG RBR1, *LPPREG=0 10TH 03107 *RECEIVING ROW 24 FOR STORE 7? 03108 *LPPREG=0 03109 MA(LPPREG), 03110 Y(0), 03111 Y>RAM, 03112 JZ(RBR2F,RBR2T); ----- ----- 6E4 00002118 7E001100 ----- 03113 .ORG RBR2T, *INHIBIT ROW 24 RECEPTION FOR STORE 7 03114 JUMP(LPP0); ----- ----- 119 00000699 00000000 ----- 03115 .ORG RBR2F, *SET P24R FLAG IN FLOF FLAGS 11TH 03116 TPD>A, B(>40), OR, 03117 Y>DR, 03118 JBYTE(RBR10F,RBR10T); ----- ----- 118 0000911A 00401090 ----- 03119 *WAITING FOR FIRST BYTE 03120 .ORG RBR10F, * 03121 JBYTE(RBR10F,RBR10T); ----- ----- 11A 0000811A 00000000 ----- 03122 .ORG RBR10T, *COMPARE RWL AND STOR0 1ST 03123 CBRDY, 03124 ARHI>A, BR.0F>B, XOR, 03125 JUMP(RBR11); ----- ----- 11B 000006E5 00003822 ----- 03126 .ORG RBR11, *RWL= DISPLAY LATCH? 2ND 03127 *B=STOR7 03128 *A=PTY 03129 MA(STOR7), RAM>BR, 03130 A(0), PTY>B, OR, 03131 Y>AR, 03132 JZ(RBR11F,RBR11T); ----- ----- 6E5 0027211C 27001005 ----- 03133 .ORG RBR11T, *ROW 24 FOR DISPLAY PAGE, PUT IT IN STORE 7 03134 * 3RD 03135 MA(RWL), 03136 A(0), BRHI>B, OR, 03137 Y>RAM, Y>IO, 03138 JUMP(RBR12); ----- ----- 11D 000006E6 0B00510C ----- 03139 .ORG RBR12, *B=SYS2 4TH 03140 MA(SYS2), RAM>BR, 03141 JUMP(RBR13); ----- ----- 6E6 000106E7 09000000 ----- 03142 .ORG RBR13, *SET CPYR24 AND R24RTC 5TH 03143 MA(SYS2), 03144 A(CPYR24+R24RTC), BR>B, OR, 03145 Y>RAM, 03146 JUMP(RBR11F); ----- ----- 6E7 0000011C 09061101 ----- 03147 * 03148 .ORG RBR11F, *Y=PTY 6TH 03149 AR>A, B(0), OR, 03150 JUMP(RBR22); ----- ----- 11C 000006E8 00001010 ----- 03151 .ORG RBR22, *P=POINTER TO FIRST COL 7TH 03152 *PTY OK? 03153 Y(-64), 03154 Y>PR, 03155 JN(RBR23F,RBR23T); ----- ----- 6E8 0000411E 80C01000 ----- 03156 .ORG RBR23F, *PARITY OK, WRITE CHARACTER 8TH 03157 AR>A, B(0), OR, 03158 Y>DR, 03159 JUMP(RBR23T); ----- ----- 11E 0000111F 00001010 ----- 03160 .ORG RBR23T, *POINT TO 2ND COL 9TH 03161 Y(-63), 03162 Y>PR, 03163 JUMP(RBR24); ----- ----- 11F 000006E9 80C11000 ----- 03164 .ORG RBR24, *COUNT=39 TO RECEIVE 39 BYTES 10TH 03165 MA(COUNT), 03166 Y(39), 03167 Y>RAM, 03168 JBYTE(RDC0F,RDC0T); ----- ----- 6E9 00008106 78271100 ----- 03169 ***ROW 25********************** 03170 .ORG I31, *ROW 25, 03171 *LPPREG=0 03172 MA(LPPREG), 03173 Y(0), 03174 Y>RAM, 03175 JUMP(LPP0); ----- ----- 011 00000699 7E001100 ----- 03176 ***ROW 26********************** 03177 .ORG I32, *ROW 26 9TH 03178 *PR=INDEX TO P26FLGS 03179 * *PACKET 26 FRONT END ENABLE 03180 * MA(P26EN), 03181 * Y>IO, 03182 Y(-11), 03183 Y>PR, 03184 JBYTE(SP0F,SP0T); ----- ----- 012 00008128 80F51000 ----- 03185 ***ROW 27********************** 03186 .ORG I33, *ROW 27 03187 *LPPREG=0 03188 MA(LPPREG), 03189 Y(0), 03190 Y>RAM, 03191 JBYTE(PLP0F,PLP0T); ----- ----- 013 0000812A 7E001100 ----- 03192 ***ROW 28********************** 03193 .ORG I34, *ROW 28 03194 *LPPREG=0 03195 MA(LPPREG), 03196 Y(0), 03197 Y>RAM, 03198 JUMP(LPP0); ----- ----- 014 00000699 7E001100 ----- 03199 ***ROW 29********************** 03200 .ORG I35, *ROW 29 03201 *LPPREG=0 03202 MA(LPPREG), 03203 Y(0), 03204 Y>RAM, 03205 JUMP(LPP0); ----- ----- 015 00000699 7E001100 ----- 03206 ***ROW 30********************** 03207 .ORG I5T, *ROW 30 03208 *Y=RCM 03209 A(0), BR.0F>B, OR, 03210 JUMP(BSD0); ----- ----- 06F 000006EA 00001002 ----- 03211 .ORG BSD0, *LPPREG=9 6TH 03212 *MAGAZINE 8? 03213 MA(LPPREG), 03214 Y(9), 03215 Y>RAM, 03216 JZ(BSD1F,BSD1T); ----- ----- 6EA 0000212C 7E091100 ----- 03217 .ORG BSD1F, *NOT 8/30 7TH 03218 *LPPREG=0 03219 MA(LPPREG), 03220 Y(0), 03221 Y>RAM, 03222 JUMP(LPP0); ----- ----- 12C 00000699 7E001100 ----- 03223 .ORG BSD1T, *WAIT FOR DC 7TH 03224 JBYTE(BSD2F,BSD2T); ----- ----- 12D 0000812E 00000000 ----- 03225 .ORG BSD2F, 03226 JBYTE(BSD2F,BSD2T); ----- ----- 12E 0000812E 00000000 ----- 03227 .ORG BSD2T, *MASK 2 LSBS 1ST 03228 CBRDY, 03229 A(>FC), HAM>B, AND, 03230 JUMP(BSD3); ----- ----- 12F 000806EB 00FC2807 ----- 03231 .ORG BSD3, *STORE=FORMAT 2ND 03232 *FORMAT 1 OR 2? 03233 MA(STORE), 03234 A(>02), HAM>B, AND, 03235 Y>RAM, 03236 JZ(BSD4F,BSD4T); ----- ----- 6EB 00082138 77020907 ----- 03237 .ORG BSD4F, *NOT FORMAT 1 OR 2, OR HAMMING ERROR 03238 *LPPREG=0 03239 MA(LPPREG), 03240 Y(0), 03241 Y>RAM, 03242 JUMP(LPP0); ----- ----- 138 00000699 7E001100 ----- 03243 .ORG BSD4T, *OK TO PROCESS 3RD 03244 *WAIT FOR UNITS 03245 JBYTE(BSD5F,BSD5T); ----- ----- 139 0000813A 00000000 ----- 03246 .ORG BSD5F, * 03247 JBYTE(BSD5F,BSD5T); ----- ----- 13A 0000813A 00000000 ----- 03248 .ORG BSD5T, *RET2=UNITS, CHECK FOR HAMMING ERROR LATER 03249 CBRDY, 03250 MA(RET2), 03251 A(0), HAM>B, OR, 03252 Y>RAM, 03253 JUMP(BSD5A); ----- ----- 13B 000806EC 7B003107 ----- 03254 .ORG BSD5A, *THIS IS INSTRUCTION BETWEEN CBRDY AND JBYTE 03255 JUMP(BSD6F); ----- ----- 6EC 0000013C 00000000 ----- 03256 .ORG BSD6F, *WAIT FOR TENS 03257 *AR=2 FOR WAIT CALL 03258 Y(2), 03259 Y>AR, 03260 JBYTE(BSD6F,BSD6T); ----- ----- 13C 0022813C 00021000 ----- 03261 .ORG BSD6T, *RET3=TENS, CHECK FOR HAMMING ERROR LATER 03262 CBRDY, 03263 MA(RET3), 03264 A(0), HAM>B, OR, 03265 Y>RAM, 03266 JUMP(BSD6A); ----- ----- 13D 000806ED 7A003107 ----- 03267 .ORG BSD6A, *THIS IS INSTRUCTION BETWEEN CBRDY AND JBYTE 03268 *CALL WAIT0F, AR=2 (WAIT FOR TWO BYTES) 03269 *RETURN=1, RETURN TO BSD7 03270 MA(RETURN), 03271 Y(1), 03272 Y>RAM, 03273 JUMP(WAIT0F); ----- ----- 6ED 0000064E 7C011100 ----- 03274 .ORG BSD7, *Y=C4 03275 A(>08), HAM>B, AND, 03276 JUMP(BSD7A); ----- ----- 031 000806EE 00080807 ----- 03277 .ORG BSD7A, *ASSUME C4=0, KEEP ERROR INFO 03278 *IS C4=0? 03279 MA(RET4), 03280 A(>F0), HAM>B, AND, 03281 Y>RAM, Y>AR, 03282 JZ(BSD8F,BSD8T); ----- ----- 6EE 002A213E 79F00907 ----- 03283 .ORG BSD8F, *ACTUALLY C4=1, CORRECT RET4, KEEP ERROR INFO 03284 MA(RET4), 03285 AR>A, B(1), ADD, 03286 Y>RAM, 03287 JUMP(BSD8T); ----- ----- 13E 0000013F 79010110 ----- 03288 .ORG BSD8T, *CALL WAIT0F, AR=2 (WAIT FOR TWO BYTES) 03289 *RETURN=2, RETURN TO BSD9 03290 *(ALSO USE THIS IN BSD13) 03291 MA(RETURN), 03292 Y(2), 03293 Y>RAM, Y>AR, 03294 JUMP(WAIT0F); ----- ----- 13F 0022064E 7C021100 ----- 03295 .ORG BSD9, *BR=RET4 5TH 03296 *PUT C5 AND C6 IN AR 03297 *MASK 2ND LSB TO PRESERVE C4 03298 MA(RET4), RAM>BR, 03299 A(>FD), HAM>B, AND, 03300 Y>AR, 03301 JUMP(BSD10); ----- ----- 032 002B06EF 79FD0807 ----- 03302 .ORG BSD10, *OR C5 AND C6 INTO RET4, KEEP ERROR INFO 6TH 03303 *C4, C5 AND C6 NOW IN CORRECT POSITIONS 03304 MA(RET4), 03305 AR>>1>A, BR>B, OR, 03306 Y>RAM, 03307 JUMP(BSD11); ----- ----- 6EF 00000700 790011E1 ----- 03308 *WHICH FORMAT? 03309 .ORG BSD11, *BR=STORE 7TH 03310 MA(STORE), RAM>BR, 03311 JUMP(BSD12); ----- ----- 700 00010701 77000000 ----- 03312 .ORG BSD12, *Y=STORE 2ND LSB 8TH 03313 *AR=EXPREG 03314 MA(EXPREG), RAM>AR, 03315 A(>02), BR>B, AND, 03316 JUMP(BSD13); ----- ----- 701 00020702 63020801 ----- 03317 .ORG BSD13, *FORMAT 1 OR FORMAT 2? 9TH 03318 *POINT TO PAGE FOR FIRST 6 BYTES OF 03319 *FORMAT 1 DATA FIELD 03320 *RWL=0 03321 *IF FORMAT 1, CALL RDDA TO RECEIVE FIRST 6 BYTES 03322 *RETURN=2 (SEE BSD8T), RETURN TO BSD20 03323 MA(RWL), 03324 Y(0), 03325 Y>RAM, Y>IO, 03326 JZ(BSD14F,RDDA); ----- ----- 702 00002148 0B005100 ----- 03327 *RECIEVING PACKET 8/30 FORMAT 1 DATA 03328 .ORG BSD20, *POINT TO PAGE FOR LAST 7 BYTES OF DATA FIELD 03329 *RWL=1 03330 MA(RWL), 03331 Y(1), 03332 Y>RAM, Y>IO, 03333 JUMP(BSD21); ----- ----- 58A 00000703 0B015100 ----- 03334 .ORG BSD21, *CALL RDDB TO RX LAST 7 BYTES 03335 *RETURN=1, RETURN TO BSD30 03336 MA(RETURN), 03337 Y(1), 03338 Y>RAM, 03339 JUMP(RDDB); ----- ----- 703 00000704 7C011100 ----- 03340 *ENTRY POINT FROM FORMAT 2 CODE 03341 .ORG BSD30, *POINT TO PAGE FOR FIRST 6 BYTES OF STATUS FIELD 03342 *RWL=2 03343 MA(RWL), 03344 Y(2), 03345 Y>RAM, Y>IO, 03346 JUMP(BSD31); ----- ----- 589 00000705 0B025100 ----- 03347 .ORG BSD31, *CALL RPDA TO RX FIRST 6 BYTES OF STATUS FIELD 03348 *RETURN=0, RETURN TO BSD40Y 03349 MA(RETURN), 03350 Y(0), 03351 Y>RAM, 03352 JUMP(RPDA); ----- ----- 705 00000706 7C001100 ----- 03353 .ORG BSD40Y, *POINT TO PAGE FOR NEXT 7 BYTES OF STATUS FIELD 03354 *RWL=3 03355 MA(RWL), 03356 Y(3), 03357 Y>RAM, Y>IO, 03358 JUMP(BSD41); ----- ----- 588 00000707 0B035100 ----- 03359 .ORG BSD41, *CALL RPDB TO RX NEXT 7 BYTES OF STATUS FIELD 03360 *RETURN=3, RETURN TO BSD50 03361 MA(RETURN), 03362 Y(3), 03363 Y>RAM, 03364 JUMP(RPDB); ----- ----- 707 00000708 7C031100 ----- 03365 .ORG BSD50, *POINT TO PAGE FOR LAST 7 BYTES OF STATUS FIELD 03366 *RWL=4 03367 MA(RWL), 03368 Y(4), 03369 Y>RAM, Y>IO, 03370 JUMP(BSD51); ----- ----- 58B 00000709 0B045100 ----- 03371 .ORG BSD51, *CALL RPDB TO RX LAST 7 BYTES OF STATUS FIELD 03372 *RETURN=4, RETURN TO BSD60 03373 MA(RETURN), 03374 Y(4), 03375 Y>RAM, 03376 JUMP(RPDB); ----- ----- 709 00000708 7C041100 ----- 03377 .ORG BSD60, *AR=EXPREG 03378 MA(EXPREG), RAM>AR, 03379 JUMP(BSD61); ----- ----- 58C 0002070A 63000000 ----- 03380 .ORG BSD61, *Y=USM 03381 AR>A, B(USM), AND, 03382 JUMP(BSD62); ----- ----- 70A 0000070B 00020810 ----- 03383 .ORG BSD62, *USM? 03384 JZ(BSD63F,BSD63T); ----- ----- 70B 0000214A 00000000 ----- 03385 .ORG BSD63F, *SRTC=1, CGAP=1 03386 *USER STATUS MODE, GENERATE A PROMPT 03387 MA(EXPREG), 03388 AR>A, B(SRTC+CGAP), OR, 03389 Y>RAM, 03390 JUMP(LPP0); ----- ----- 14A 00000699 63091110 ----- 03391 .ORG BSD63T, *SRTC=1 03392 MA(EXPREG), 03393 AR>A, B(SRTC), OR, 03394 Y>RAM, 03395 JUMP(LPP0); ----- ----- 14B 00000699 63011110 ----- 03396 *PROCESS PACKET 8/30 FORMAT 2 DATA 03397 * A=EXPREG 03398 .ORG BSD14F, *FORMAT 2 10TH 03399 *LPPREG=7 03400 MA(LPPREG), 03401 Y(7), 03402 Y>RAM, 03403 JUMP(BSD70F); ----- ----- 148 0000014C 7E071100 ----- 03404 .ORG BSD70F, *WAIT FOR FIRST DATA BYTE 11TH 03405 *Y=P830F2 03406 AR>A, B(P830F2), AND, 03407 JBYTE(BSD70F,BSD70T); ----- ----- 14C 0000814C 00800810 ----- 03408 .ORG BSD70T, *Y=HAM 1ST 03409 *CAPTURING EXTENSION PACKETS? 03410 *AR=STOR7 03411 CBRDY, 03412 MA(STOR7), RAM>AR, 03413 A(0), HAM>B, OR, 03414 JZ(BSD71F,BSD71T); ----- ----- 14D 000A214E 27003007 ----- 03415 *NOT CAPTURING FORMAT 2 DATA 03416 .ORG BSD71T, *WAIT FOR STATUS FIELD (12 BYTES) 03417 Y(12), 03418 Y>AR, 03419 JUMP(BSD71A); ----- ----- 14F 0022070C 000C1000 ----- 03420 *ENTRY POINT IF HAMMING ERROR IN THIS BYTE 03421 .ORG BSD71A, *CALL WAIT0F 03422 *RETURN=3, RETURN TO BSD71B 03423 MA(RETURN), 03424 Y(3), 03425 Y>RAM, 03426 JUMP(WAIT0F); ----- ----- 70C 0000064E 7C031100 ----- 03427 .ORG BSD71B, *GO AND RECIEVE STATUS 03428 JUMP(BSD30); ----- ----- 033 00000589 00000000 ----- 03429 *CAPTURING FORMAT 2 DATA 03430 .ORG BSD71F, *HAMMING OK? 2ND 03431 *POINT TO STOR7 03432 *RWL=STOR7 03433 MA(RWL), 03434 ARHI>A, B(0), OR, 03435 Y>RAM, Y>IO, 03436 JN(BSD72F,BSD72T); ----- ----- 14E 00004150 0B005120 ----- 03437 .ORG BSD72T, *HAMMING ERROR 03438 *WAIT FOR STATUS FIELD (12 BYTES) 03439 Y(12), 03440 Y>AR, 03441 JUMP(BSD71A); ----- ----- 151 0022070C 000C1000 ----- 03442 .ORG BSD72F, *AR=LABEL INTERLEAVE BITS 3RD 03443 A(3), HAM>B, AND, 03444 Y>AR, 03445 JUMP(BSD73); ----- ----- 150 002A070D 00030807 ----- 03446 .ORG BSD73, *POINT TO ROW FOR THIS INTERLEAVE 4TH 03447 AR<<3>A, AR<<5>B, ADD, 03448 Y>PR, 03449 JUMP(BSD74); ----- ----- 70D 0000070E 80000059 ----- 03450 .ORG BSD74, *READ BYTE COUNT STORED IN PAGE MEMORY 5TH 03451 *BR=MEMORY POINTER 03452 *SET AR AS A LOOP COUNTER TO RECIEVE 12 BYTES 03453 RVDP, 03454 PR>BR, 03455 Y(12), 03456 Y>AR, 03457 JUMP(BSD75); ----- ----- 70E 0063070F 000C9000 ----- 03458 .ORG BSD75, *INCREMENT BYTE COUNT 6TH 03459 TPD>A, B(1), ADD, 03460 Y>DR, 03461 JUMP(BSD76); ----- ----- 70F 00001710 00010090 ----- 03462 .ORG BSD76, *POINT TO LOC FOR 1ST DATA BYTE 7TH 03463 A(1), BR>B, ADD, 03464 Y>PR, 03465 JUMP(BSD77); ----- ----- 710 00000711 80010001 ----- 03466 .ORG BSD77, *STORE 1ST DATA BYTE 8TH 03467 *BR=PR 03468 *OR WITH >30 TO MAKE IT VISIBLE 03469 PR>BR, 03470 A(>30), HAM>B, OR, 03471 Y>DR, 03472 JBYTE(BSD90F,BSD90T); ----- ----- 711 00499152 00301007 ----- 03473 *LOOP TO RECIEVE 12 BYTES OF HAMMING DATA 03474 * RWL, PR POINT TO RAM, AR=COUNT 03475 .ORG BSD90F, *WAIT FOR BYTE 03476 *BR=PR 03477 PR>BR, 03478 JBYTE(BSD90F,BSD90T); ----- ----- 152 00418152 00000000 ----- 03479 .ORG BSD90T, *DEC LOOP COUNT 1ST 03480 CBRDY, 03481 AR>A, B(-1), ADD, 03482 Y>AR, 03483 JUMP(BSD91); ----- ----- 153 00220712 00FF2010 ----- 03484 .ORG BSD91, *INCREMENT RAM ADDRESS, LAST BYTE? 2ND 03485 A(1), BR>B, ADD, 03486 Y>PR, 03487 JZ(BSD92F,BSD92T); ----- ----- 712 00002154 80010001 ----- 03488 .ORG BSD92F, *STORE BYTE 3RD 03489 *OR WITH >30 TO MAKE IT VISIBLE 03490 A(>30), HAM>B, OR, 03491 Y>DR, 03492 JUMP(BSD90F); ----- ----- 154 00081152 00301007 ----- 03493 *END OF LOOP 03494 .ORG BSD92T, *STORE LAST BYTE 3RD 03495 *OR WITH >30 TO MAKE IT VISIBLE 03496 A(>30), HAM>B, OR, 03497 Y>DR, 03498 JUMP(BSD30); ----- ----- 155 00081589 00301007 ----- 03499 ***ROW 31********************** 03500 .ORG I37, *ROW 31 03501 *LPPREG=0 03502 MA(LPPREG), 03503 Y(0), 03504 Y>RAM, 03505 JUMP(LPP0); ----- ----- 017 00000699 7E001100 ----- 03506 * 03507 ***RDD: RECEIVE 'DATA' DATA 03508 * 03509 * This routine stores incomming bytes in data mode. It is a tight 03510 * loop which enables it to be called to receive sections of 03511 * extension packets as appropriate. It does not check for packet 26 03512 * markers. The i/p pars are:- 03513 * PR, RWL:page memory start address -1 03514 * COUNT: number of bytes to receive 03515 * RETURN: pointer to return address 03516 * 03517 *SET BR=-7, COUNT=6 BEFORE CALLING RDD0F 03518 .ORG RDDA, *PR=-7 03519 Y(-7), 03520 Y>PR, 03521 JUMP(RDDAA); ----- ----- 149 00000713 80F91000 ----- 03522 .ORG RDDAA, *COUNT=6 03523 MA(COUNT), 03524 Y(6), 03525 Y>RAM, 03526 JBYTE(RDD0F,RDD0T); ----- ----- 713 00008156 78061100 ----- 03527 *SET BR=-8, COUNT=7 BEFORE CALLING RDD0F 03528 .ORG RDDB, *PR=-8 03529 Y(-8), 03530 Y>PR, 03531 JUMP(RDDBB); ----- ----- 704 00000714 80F81000 ----- 03532 .ORG RDDBB, *COUNT=7 03533 MA(COUNT), 03534 Y(7), 03535 Y>RAM, 03536 JBYTE(RDD0F,RDD0T); ----- ----- 714 00008156 78071100 ----- 03537 * 03538 .ORG RDD0F, *WAIT FOR BYTE 03539 JBYTE(RDD0F,RDD0T); ----- ----- 156 00008156 00000000 ----- 03540 .ORG RDD0T, *AR=RETURN 03541 *BR=SCREEN POINTER 03542 PR>BR, 03543 CBRDY, 03544 MA(RETURN), RAM>AR, 03545 JUMP(RDD10); ----- ----- 157 00430715 7C002000 ----- 03546 .ORG RDD10, *PR++ 2ND 03547 *BR=COUNT 03548 MA(COUNT), RAM>BR, 03549 A(1), BR>B, ADD, 03550 Y>PR, 03551 JUMP(RDD20); ----- ----- 715 00010716 F8010001 ----- 03552 .ORG RDD20, *DR=DATA 3RD 03553 *TCJ A(0), PTY>B, OR, 03554 A(0), DATA>B, OR, 03555 Y>DR, 03556 JUMP(RDD20A); ----- ----- 716 00001717 00001005 ----- 03557 .ORG RDD20A, *COUNT-- 4TH 03558 MA(COUNT), 03559 A(-1), BR>B, ADD, 03560 Y>RAM, 03561 JUMP(RDD21); ----- ----- 717 00000718 78FF0101 ----- 03562 .ORG RDD21, *LAST BYTE? 5TH 03563 *Y=RETURN 03564 AR>A, B(0), OR, 03565 JZ(RDD22F,RDD22T); ----- ----- 718 00002158 00001010 ----- 03566 .ORG RDD22F, *WAIT FOR BYTE 6TH 03567 *BR=PR 03568 PR>BR, 03569 JBYTE(RDD0F,RDD0T); ----- ----- 158 00418156 00000000 ----- 03570 *EXIT 03571 .ORG RDD22T, *CASE RETURN 6TH 03572 JY(BSD40Y); ----- ----- 159 0000C588 00000000 ----- 03573 * 03574 ***RPD: RECEIVE PARITY DATA 03575 * 03576 * This routine stores incomming bytes in parity mode. It is a tight 03577 * loop which enables it to be called to receive sections of 03578 * extension packets as appropriate. It does not check for packet 26 03579 * markers. The i/p pars are:- 03580 * PR, RWL:page memory start address -1 03581 * COUNT: number of bytes to receive 03582 * RETURN: pointer to return address 03583 * 03584 *SET BR=-7, COUNT=6 BEFORE CALLING RPD0F 03585 .ORG RPDA, *PR=-7 03586 Y(-7), 03587 Y>PR, 03588 JUMP(RPDAA); ----- ----- 706 00000719 80F91000 ----- 03589 .ORG RPDAA, *COUNT=6 03590 MA(COUNT), 03591 Y(6), 03592 Y>RAM, 03593 JBYTE(RPD0F,RPD0T); ----- ----- 719 0000815A 78061100 ----- 03594 *SET BR=-8, COUNT=7 BEFORE CALLING RPD0F 03595 .ORG RPDB, *PR=-8 03596 Y(-8), 03597 Y>PR, 03598 JUMP(RPDBB); ----- ----- 708 0000071A 80F81000 ----- 03599 .ORG RPDBB, *COUNT=7 03600 MA(COUNT), 03601 Y(7), 03602 Y>RAM, 03603 JBYTE(RPD0F,RPD0T); ----- ----- 71A 0000815A 78071100 ----- 03604 * 03605 .ORG RPD0F, *WAIT FOR BYTE 03606 JBYTE(RPD0F,RPD0T); ----- ----- 15A 0000815A 00000000 ----- 03607 .ORG RPD0T, *Y=PTY 1ST 03608 *AR=RETURN 03609 PR>BR, 03610 CBRDY, 03611 MA(RETURN), RAM>AR, 03612 A(0), PTY>B, OR, 03613 JUMP(RPD10); ----- ----- 15B 0047071B 7C003005 ----- 03614 .ORG RPD10, *PTY OK? 2ND 03615 *PR++ 03616 *BR=COUNT 03617 MA(COUNT), RAM>BR, 03618 A(1), BR>B, ADD, 03619 Y>PR, 03620 JN(RPD20F,RPD20T); ----- ----- 71B 0001415C F8010001 ----- 03621 .ORG RPD20F, *PTY OK, DR=PTY 3RD 03622 A(0), PTY>B, OR, 03623 Y>DR, 03624 JUMP(RPD20T); ----- ----- 15C 0004115D 00001005 ----- 03625 * 03626 .ORG RPD20T, *COUNT-- 4TH 03627 MA(COUNT), 03628 A(-1), BR>B, ADD, 03629 Y>RAM, 03630 JUMP(RPD21); ----- ----- 15D 0000071C 78FF0101 ----- 03631 .ORG RPD21, *LAST BYTE? 5TH 03632 *Y=RETURN 03633 AR>A, B(0), OR, 03634 JZ(RPD22F,RPD22T); ----- ----- 71C 0000215E 00001010 ----- 03635 .ORG RPD22F, *WAIT FOR BYTE 6TH 03636 *BR=PR 03637 PR>BR, 03638 JBYTE(RPD0F,RPD0T); ----- ----- 15E 0041815A 00000000 ----- 03639 *EXIT 03640 .ORG RPD22T, *CASE RETURN 6TH 03641 JY(BSD40Y); ----- ----- 15F 0000C588 00000000 ----- 03642 * 03643 ***RDC: RECEIVE DISPLAY CHARACTERS 03644 * 03645 * This routine stores incomming display characters in the memory location 03646 * defined by the input parameters:- 03647 * PR, COUNT (contains number of characters), RWL 03648 * The routine exits to line post processing routine 03649 * 03650 .ORG RDC0F, *LINE RDY? 03651 JLINE(RDC1F,RDC1T); ----- ----- 106 00006160 00000000 ----- 03652 .ORG RDC0T, *BYTE IS READY 3RD 03653 RVDP, BIT8, CBRDY, 03654 A(0), PTY>B, OR, 03655 JUMP(RDC2); ----- ----- 107 0004071D 0000B405 ----- 03656 .ORG RDC1F, *BYTE RDY? 2ND 03657 JBYTE(RDC0F,RDC0T); ----- ----- 160 00008106 00000000 ----- 03658 .ORG RDC1T, *LINE RDY, ERROR 03659 CBRDY, 03660 JUMP(LPP0); ----- ----- 161 00000699 00002000 ----- 03661 * 03662 .ORG RDC2, *Y=EXISTING DATA WITH MARKER 4TH 03663 *B=LAFR 03664 MA(LAFR), RAM>BR, 03665 TPD>A, B(0), OR, 03666 JUMP(RDC3); ----- ----- 71D 0001071E 35001090 ----- 03667 .ORG RDC3, *P26 MARKER? 5TH 03668 *Y=PTY 03669 *A=COUNT 03670 MA(COUNT), RAM>AR, 03671 A(0), PTY>B, OR, 03672 JN(RDC4F,RDC4T); ----- ----- 71E 00064162 78001005 ----- 03673 .ORG RDC4T, *P26 MARKER 6TH+8TH 03674 *COUNT-- 03675 MA(COUNT), 03676 AR>A, B(-1), ADD, 03677 Y>RAM, 03678 JUMP(RDC8T); ----- ----- 163 00000167 78FF0110 ----- 03679 .ORG RDC4F, *NOT A MARKED P26 CHARACTER 6TH 03680 *Y=CLR 03681 *PARITY OK? 03682 A(CLR), BR>B, AND, 03683 JN(RDC7F,RDC7T); ----- ----- 162 00004164 00200801 ----- 03684 .ORG RDC7F, *PTY OK, WRITE PTY DATA TO RAM 7TH 03685 A(0), PTY>B, OR, 03686 Y>DR, 03687 JUMP(RDC4T); ----- ----- 164 00041163 00001005 ----- 03688 .ORG RDC7T, *BAD PTY 7TH 03689 *CLEAR PAGE PENDING? 03690 *COUNT-- 03691 MA(COUNT), 03692 AR>A, B(-1), ADD, 03693 Y>RAM, 03694 JZ(RDC8F,RDC8T); ----- ----- 165 00002166 78FF0110 ----- 03695 .ORG RDC8F, *CLEAR PAGE PENDING AND BAD PARITY 03696 *WRITE A SPACE 8TH 03697 *COUNT=0? 03698 *B=P 03699 PR>BR, 03700 Y(>20), 03701 Y>DR, 03702 JZ(RDC9F,RDC9T); ----- ----- 166 00413168 00201000 ----- 03703 .ORG RDC8T, *NO CLEAR PAGE PENDING AND BAD PARITY 03704 *OR P26 MARKER 8TH+9TH 03705 *DO NOTHING 03706 *COUNT=0? 03707 *B=P 03708 PR>BR, 03709 JZ(RDC9F,RDC9T); ----- ----- 167 00412168 00000000 ----- 03710 .ORG RDC9F, *COUNT!=0, MORE CHARACTERS 10TH 03711 *INC P 03712 A(1), BR>B, ADD, 03713 Y>PR, 03714 JBYTE(RDC0F,RDC0T); ----- ----- 168 00008106 80010001 ----- 03715 .ORG RDC9T, *NO MORE CHARACTERS 03716 *CALL LPP0 03717 JUMP(LPP0); ----- ----- 169 00000699 00000000 ----- 03718 * 03719 ***AIT: RECEIVE ADDITIONAL INFORMATION TABLE CHARACTERS 03720 * 03721 * This routine stores incomming AIT characters in the memory location 03722 * defined by the input parameters:- 03723 * PR, COUNT (contains number of characters), RWL 03724 * The routine exits to line post processing routine 03725 * 03726 .ORG AIT0A, *THISRW<23? 10TH 03727 *COUNT=40 03728 MA(COUNT), 03729 A(20), B(20), ADD, 03730 Y>RAM, 03731 JN(AIT0BF,AIT0BT); ----- ----- 6E1 0000416A 78140100 ----- 03732 .ORG AIT0BT, *BYTE RDY? 11TH 03733 JBYTE(AIT0F,AIT0T); ----- ----- 16B 0000816C 00000000 ----- 03734 .ORG AIT0BF, *THISRW>23, ERROR 03735 JUMP(LPP0); ----- ----- 16A 00000699 00000000 ----- 03736 ***RECEIVE HAM FIELDS 03737 .ORG AIT0F, *LINE RDY? 03738 JLINE(AIT1F,AIT1T); ----- ----- 16C 0000616E 00000000 ----- 03739 .ORG AIT0T, *BYTE IS READY 3RD 03740 *Y=BYTE, 03741 CBRDY, 03742 MA(COUNT), RAM>AR, 03743 A(0), HAM>B, OR, 03744 JUMP(AIT2); ----- ----- 16D 000A071F 78003007 ----- 03745 .ORG AIT1F, *BYTE RDY? 2ND 03746 JBYTE(AIT0F,AIT0T); ----- ----- 16E 0000816C 00000000 ----- 03747 .ORG AIT1T, *LINE RDY, ERROR 03748 CBRDY, 03749 JUMP(LPP0); ----- ----- 16F 00000699 00002000 ----- 03750 .ORG AIT2, *PTY OK? 4TH 03751 *COUNT-- 03752 MA(COUNT), 03753 AR>A, B(-1), ADD, 03754 Y>RAM, Y>AR, 03755 JN(AIT3F,AIT3T); ----- ----- 71F 00224170 78FF0110 ----- 03756 .ORG AIT3T, *PTY ERROR 5TH 03757 JUMP(AIT4); ----- ----- 171 00000720 00000000 ----- 03758 .ORG AIT3F, *PTY OK 5TH+6TH 03759 *WRITE TO RAM 03760 A(>30), HAM>B, OR, 03761 Y>DR, 03762 JUMP(AIT4); ----- ----- 170 00081720 00301007 ----- 03763 .ORG AIT4, *Y=COUNT-32 7TH 03764 AR>A, B(-32), ADD, 03765 JUMP(AIT5); ----- ----- 720 00000721 00E00010 ----- 03766 .ORG AIT5, *Y=COUNT-12, COUNT==32? 8TH 03767 PR>BR, 03768 AR>A, B(-12), ADD, 03769 JZ(AIT6F,AIT6T); ----- ----- 721 00412172 00F40010 ----- 03770 .ORG AIT6F, *COUNT!=32, COUNT==12? 9TH 03771 *INC P 03772 A(1), BR>B, ADD, 03773 Y>PR, 03774 JZ(AIT7F,AIT7T); ----- ----- 172 00002174 80010001 ----- 03775 .ORG AIT7F, *COUNT NOT 32 OR 12 9TH 03776 *CONT WITH HAM 03777 JBYTE(AIT0F,AIT0T); ----- ----- 174 0000816C 00000000 ----- 03778 .ORG AIT6T, *COUNT IS 32, RCV PTY 9TH 03779 *INC P 03780 A(1), BR>B, ADD, 03781 Y>PR, 03782 JBYTE(AIT10F,AIT10T); ----- ----- 173 00008176 80010001 ----- 03783 .ORG AIT7T, *COUNT IS 12, RCV PTY 10TH 03784 JBYTE(AIT10F,AIT10T); ----- ----- 175 00008176 00000000 ----- 03785 ***RECEIVE PARITY FIELDS 03786 .ORG AIT10F, *LINE RDY? 03787 JLINE(AIT11F,AIT11T); ----- ----- 176 00006178 00000000 ----- 03788 .ORG AIT10T, *BYTE IS READY 3RD 03789 *Y=BYTE, 03790 CBRDY, 03791 MA(COUNT), RAM>AR, 03792 A(0), PTY>B, OR, 03793 JUMP(AIT12); ----- ----- 177 00060722 78003005 ----- 03794 .ORG AIT11F, *BYTE RDY? 2ND 03795 JBYTE(AIT10F,AIT10T); ----- ----- 178 00008176 00000000 ----- 03796 .ORG AIT11T, *LINE RDY, ERROR 03797 CBRDY, 03798 JUMP(LPP0); ----- ----- 179 00000699 00002000 ----- 03799 .ORG AIT12, *PTY OK? 4TH 03800 *COUNT-- 03801 MA(COUNT), 03802 AR>A, B(-1), ADD, 03803 Y>RAM, Y>AR, 03804 JN(AIT13F,AIT13T); ----- ----- 722 0022417A 78FF0110 ----- 03805 .ORG AIT13T, *PTY ERROR, COUNT++ ==0? 5TH 03806 JZ(AIT14F,AIT14T); ----- ----- 17B 0000217C 00000000 ----- 03807 .ORG AIT13F, *PTY OK, COUNT ==0? 5TH+6TH 03808 *WRITE TO RAM 03809 A(0), PTY>B, OR, 03810 Y>DR, 03811 JZ(AIT14F,AIT14T); ----- ----- 17A 0004317C 00001005 ----- 03812 .ORG AIT14T, *COUNT==0 7TH 03813 *CALL LPP0 03814 JUMP(LPP0); ----- ----- 17D 00000699 00000000 ----- 03815 .ORG AIT14F, *Y=COUNT-20 7TH 03816 PR>BR, 03817 AR>A, B(-20), ADD, 03818 JUMP(AIT15); ----- ----- 17C 00410723 00EC0010 ----- 03819 .ORG AIT15, *COUNT=20? 8TH 03820 *INC P 03821 A(1), BR>B, ADD, 03822 Y>PR, 03823 JZ(AIT16F,AIT16T); ----- ----- 723 0000217E 80010001 ----- 03824 .ORG AIT16F, *COUNT IS NOT 20 OR 0 9TH 03825 *CONT WITH PTY 03826 JBYTE(AIT10F,AIT10T); ----- ----- 17E 00008176 00000000 ----- 03827 .ORG AIT16T, *COUNT IS 20, RCV HAM 9TH 03828 JBYTE(AIT0F,AIT0T); ----- ----- 17F 0000816C 00000000 ----- 03829 ***BTT: RECEIVE BASIC TOP TABLE CHARACTERS 03830 * 03831 * This routine stores incomming BTT characters in the memory location 03832 * defined by the input parameters:- 03833 * PR, COUNT (contains number of characters), RWL 03834 * The routine exits to line post processing routine 03835 * 03836 .ORG BTT0A, *THISRW<23? 10TH 03837 *COUNT=40 03838 MA(COUNT), 03839 A(20), B(20), ADD, 03840 Y>RAM, 03841 JN(BTT0BF,BTT0BT); ----- ----- 6E2 00004180 78140100 ----- 03842 .ORG BTT0BT, *BYTE RDY? 11TH 03843 JBYTE(BTT0F,BTT0T); ----- ----- 181 00008182 00000000 ----- 03844 .ORG BTT0BF, *THISRW>23, ERROR 03845 JUMP(LPP0); ----- ----- 180 00000699 00000000 ----- 03846 ***RECEIVE HAM FIELDS 03847 .ORG BTT0F, *LINE RDY? 03848 JLINE(BTT1F,BTT1T); ----- ----- 182 00006184 00000000 ----- 03849 .ORG BTT0T, *BYTE IS READY 3RD 03850 *TPD=EXISTING BYTE 03851 *LOCAL= THIS BYTE 03852 RVDP, 03853 CBRDY, 03854 MA(LOCAL), 03855 A(0), HAM>B, OR, 03856 Y>RAM, 03857 JUMP(BTT2); ----- ----- 183 00080724 7200B107 ----- 03858 .ORG BTT1F, *BYTE RDY? 2ND 03859 JBYTE(BTT0F,BTT0T); ----- ----- 184 00008182 00000000 ----- 03860 .ORG BTT1T, *LINE RDY, ERROR 03861 CBRDY, 03862 JUMP(LPP0); ----- ----- 185 00000699 00002000 ----- 03863 .ORG BTT2, *HAMMING ERROR? 4TH 03864 *A= COPY OF INVENTORY FLAG 03865 TPD>A, B(>80), AND, 03866 Y>AR, 03867 JN(BTT3F,BTT3T); ----- ----- 724 00224186 00800890 ----- 03868 * 03869 .ORG BTT3T, *HAMMING ERROR 5TH 03870 *CALL BTT ERROR CODE IN LINE POST PROCESSING 03871 *LPPREG=10 03872 MA(LPPREG), 03873 Y(10), 03874 Y>RAM, 03875 JUMP(BTT3A); ----- ----- 187 00000725 7E0A1100 ----- 03876 .ORG BTT3A, *A=COUNT 6TH 03877 MA(COUNT), RAM>AR, 03878 JUMP(BTT5); ----- ----- 725 00020726 78000000 ----- 03879 * 03880 .ORG BTT3F, *HAMMING OK 5TH 03881 *OR COPY OF EXISTING BYTE WITH >30 TO MAKE IT VISIBLE 03882 *B=HAM BYTE 03883 MA(LOCAL), RAM>BR, 03884 AR>A, B(>30), OR, 03885 Y>AR, 03886 JUMP(BTT4); ----- ----- 186 00230727 72301010 ----- 03887 .ORG BTT4, *UPDATE BYTE 6TH 03888 *A=COUNT 03889 MA(COUNT), RAM>AR, 03890 AR.F0>A, BR.0F>B, OR, 03891 Y>DCLR, 03892 JUMP(BTT5); ----- ----- 727 00021726 780014D2 ----- 03893 * 03894 .ORG BTT5, *COUNT-- 7TH 03895 MA(COUNT), 03896 AR>A, B(-1), ADD, 03897 Y>RAM, 03898 JUMP(BTT6); ----- ----- 726 00000728 78FF0110 ----- 03899 .ORG BTT6, *COUNT=0? 8TH 03900 PR>BR, 03901 JZ(BTT7F,BTT7T); ----- ----- 728 00412188 00000000 ----- 03902 .ORG BTT7F, *MORE BYTES 9TH 03903 *INC P 03904 A(1), BR>B, ADD, 03905 Y>PR, 03906 JBYTE(BTT0F,BTT0T); ----- ----- 188 00008182 80010001 ----- 03907 * 03908 .ORG BTT7T, *COUNT==0 03909 *CALL LPP0 03910 JUMP(LPP0); ----- ----- 189 00000699 00000000 ----- 03911 * 03912 *+++SP: PACKET 26 PROCESSING 03913 * 03914 * PR=INDEX TO PACKET 26 FLAGS, RWL=LATCH FOR THIS PAGE 03915 *FIRST PROCESS DESIGNATION CODE 03916 .ORG SP0F, *WAIT FOR DC 03917 JBYTE(SP0F,SP0T); ----- ----- 128 00008128 00000000 ----- 03918 .ORG SP0T, *PACKET 26 FRONT END ENABLE 1ST 03919 *TPD=P26FLGS 03920 CBRDY, 03921 RVDP, 03922 MA(P26EN), 03923 Y>IO, 03924 JUMP(SP1); ----- ----- 129 00000729 0A00E000 ----- 03925 .ORG SP1, *AR=P26FLGS 2ND 03926 *USE AR AS TEMP STORE FOR P26FLGS, STORE UPDATES 03927 *IN TPD BEFORE LEAVING SP CODE 03928 TPD>A, B(0), OR, 03929 Y>AR, 03930 JUMP(SP2); ----- ----- 729 0022072A 00001090 ----- 03931 .ORG SP2, *Y=DC 4TH 03932 A(0), HAM>B, OR, 03933 JUMP(SP3); ----- ----- 72A 0008072B 00001007 ----- 03934 .ORG SP3, *DC=0? 5TH 03935 *Y=DC XOR OLDC 03936 AR.0F>A, HAM>B, XOR, 03937 JZ(SP4F,SP4T); ----- ----- 72B 0008218A 000018C7 ----- 03938 .ORG SP4T, *DC=0, OLDDC=1 6TH 03939 *STORE IT FOR LPP0 CODE 03940 MA(RET2), 03941 AR.F0>A, B(1), ADD, 03942 Y>AR, Y>RAM, 03943 JUMP(SP6F); ----- ----- 18B 0022018C 7B0101D0 ----- 03944 .ORG SP4F, *OLDDC=DC+1 03945 *IN SEQUENCE? 03946 *STORE IT FOR LPP0 CODE 03947 MA(RET2), 03948 AR.F0>A, HAM>B, O>CIN, ADD, 03949 Y>AR, Y>RAM, 03950 JZ(SP6F,SP6T); ----- ----- 18A 002A218C 7B0005D7 ----- 03951 * 03952 .ORG SP6F, *OUT OF SEQUENCE OR DC=0 7TH 03953 *P26ON=0 03954 AR>A, B(>7F), AND, 03955 Y>AR, 03956 JUMP(SP6T); ----- ----- 18C 0022018D 007F0810 ----- 03957 *COMMON EXIT FROM DC CODE 03958 .ORG SP6T, *INITIALISE TRIPLET COUNT 8TH 03959 *ALSO USE COUNT AS OFFSET FOR PDC STORAGE 03960 *COUNT=39 03961 MA(COUNT), 03962 Y(39), 03963 Y>RAM, 03964 JUMP(SP7); ----- ----- 18D 0000072C 78271100 ----- 03965 .ORG SP7, *LPPREG=0 9TH 03966 *NO POST PROCESSING REQUIRED UNLESS PDC TRIPLET STORED 03967 MA(LPPREG), 03968 Y(0), 03969 Y>RAM, 03970 JUMP(SP8); ----- ----- 72C 0000072D 7E001100 ----- 03971 .ORG SP8, *INIT PDC BYTE COUNT 03972 MA(LOCAL), 03973 Y(0), 03974 Y>RAM, 03975 JUMP(SP10F); ----- ----- 72D 00000190 72001100 ----- 03976 *WAIT FOR PACKET 26 TRIPLET 03977 .ORG SP10F, *BYTE READY? 10TH 03978 *PR=INDEX TO P26ROW 03979 Y(-12), 03980 Y>PR, 03981 JBYTE(SP11F,SP11T); ----- ----- 190 0000818E 80F41000 ----- 03982 .ORG SP11F, *LINE READY? 03983 JLINE(SP10F,SP10T); ----- ----- 18E 00006190 00000000 ----- 03984 .ORG SP10T, *UNEXPECTED LINE READY ERROR 03985 CBRDY, 03986 JUMP(SP53T); ----- ----- 191 000001A7 00002000 ----- 03987 *PROCESS PACKET 26 TRIPLET 03988 .ORG SP11T, *Y=ADDRESS 2ND 03989 *TPD=P26ROW 03990 CBRDY, 03991 RVDP, 03992 A(0), P26AD>B, OR, 03993 JUMP(SP12); ----- ----- 18F 0000072E 0000B008 ----- 03994 .ORG SP12, *PARITY OK? 3RD 03995 *Y=ADDRESS-40 03996 A(-40), P26AD>B, ADD, 03997 JN(SP13F,SP13T); ----- ----- 72E 00004192 00D80008 ----- 03998 .ORG SP13T, *TRIPLET HAMMING ERROR 4TH 03999 *P26ON=0 04000 AR>A, B(>7F), AND, 04001 Y>AR, 04002 JUMP(SP50T); ----- ----- 193 002201A1 007F0810 ----- 04003 .ORG SP13F, *TRIPLET PARITY OK 4TH 04004 *ROW OR COLUMN FORMAT BYTE? 04005 *Y=ADDRESS-40 04006 A(-40), P26AD>B, ADD, 04007 JN(SP14F,SP14T); ----- ----- 192 00004194 00D80008 ----- 04008 *ROW FORMAT BYTE 04009 .ORG SP14F, *ADDRESS=40? 5TH 04010 *Y=ADDRESS-63 04011 A(-63), P26AD>B, ADD, 04012 JZ(SP20F,SP20T); ----- ----- 194 00002196 00C10008 ----- 04013 .ORG SP20F, *ADDRESS=63? 04014 *Y=MODE-31 04015 A(-31), P26MO>B, ADD, 04016 JZ(SP21F,SP21T); ----- ----- 196 00042198 00E10008 ----- 04017 .ORG SP21F, *ADDRESS NOT 40 OR 63 04018 JUMP(SP22F); ----- ----- 198 0000019A 00000000 ----- 04019 .ORG SP21T, *ADDRESS=63, MODE=31? 04020 JZ(SP22F,SP22T); ----- ----- 199 0000219A 00000000 ----- 04021 .ORG SP22T, *ADDRESS=63, MODE=31 04022 *PACKET 26 TERMINATOR 04023 *P26ON=0, EXIT 04024 AR>A, B(>7F), AND, 04025 Y>AR, 04026 JUMP(SP53T); ----- ----- 19B 002201A7 007F0810 ----- 04027 * NOT PACKET 26 TERMINATOR OR ADDRESS 40 04028 .ORG SP22F, *P26ROW=ADDRESS-40 04029 A(-40), P26AD>B, ADD, 04030 Y>DR, 04031 JUMP(SP25); ----- ----- 19A 0000172F 00D80008 ----- 04032 * ADDRESS 40 04033 .ORG SP20T, *P26ROW=24 04034 Y(24), 04035 Y>DR, 04036 JUMP(SP25); ----- ----- 197 0000172F 00181000 ----- 04037 * 04038 .ORG SP25, *P26ON=1 04039 *JUMP TO PDC ROUTINE 04040 *RETURN TO SP50T 04041 *B=RWL 04042 MA(RWL), RAM>BR, 04043 AR>A, B(>80), OR, 04044 Y>AR, 04045 JUMP(SPT0T); ----- ----- 72F 0023019F 0B801010 ----- 04046 *COLUMN FORMAT BYTE 04047 .ORG SP14T, *Y=P26MO-2 04048 *B=RWL 04049 MA(RWL), RAM>BR, 04050 A(-2), P26MO>B, ADD, 04051 JUMP(SP30); ----- ----- 195 00050735 0BFE0008 ----- 04052 .ORG SP30, *Y=P26MO-15 04053 *MODE=2? 04054 A(-15), P26MO>B, ADD, 04055 JZ(SP30AF,SP30AT); ----- ----- 735 0004219C 00F10008 ----- 04056 .ORG SP30AT, *YES, PROCESS IT AS A CHARACTER 04057 *Y=P26ON 04058 AR>A, B(>80), AND, 04059 JUMP(SP30BF); ----- ----- 19D 0000019E 00800810 ----- 04060 .ORG SP30AF, *Y=P26ON 04061 *MODE>= 15? 04062 *IF NO, JUMP TO PDC ROUTINE 04063 *RETURN TO SP50T 04064 AR>A, B(>80), AND, 04065 JN(SP30BF,SPT0T); ----- ----- 19C 0000419E 00800810 ----- 04066 *PROCESS A PACKET 26 CHARACTER 04067 .ORG SP30BF, *P26ON? 04068 *RECEIVING CHARACTERS AT THE MOMENT? 04069 *STORE=P26FLGS 04070 MA(STORE), 04071 AR>A, B(0), ADD, 04072 Y>RAM, 04073 JZ(SP31F,SP50T); ----- ----- 19E 000021A0 77000110 ----- 04074 * 04075 *@@@ start of changes which inhibit packets 26 in row 24 04076 * 04077 *RECEIVING PACKET 26 CHARACTERS FOR THIS PAGE, CALCULATE ADDRESS 04078 .ORG SP31F, *RECEIVING CHARACTERS 04079 *AR=P26ROW 04080 TPD>A, B(0), ADD, 04081 Y>AR, 04082 JUMP(SP31A); ----- ----- 1A0 00220736 00000090 ----- 04083 .ORG SP31A, *Y=P26ROW-24 04084 AR>A, B(-24), ADD, 04085 JUMP(SP32); ----- ----- 736 00000737 00E80010 ----- 04086 .ORG SP32, *AR=START OF ROW 04087 *ROW 24? 04088 AR<<3>A, AR<<5>B, ADD, 04089 Y>AR, 04090 JZ(SP33F,SP33T); ----- ----- 737 002221A2 00000059 ----- 04091 *ROW 24, NOT SUPPORTED! 04092 .ORG SP33T, 04093 JUMP(SP50T); ----- ----- 1A3 000001A1 00000000 ----- 04094 *NOT ROW 24 04095 .ORG SP33F, *PR=ADDRESS OF PACKET 26 CHARACTER 04096 *PUT P26FLGS BACK IN AR 04097 MA(STORE), RAM>AR, 04098 AR>A, P26AD>B, ADD, 04099 Y>PR, 04100 JUMP(SP40); ----- ----- 1A2 00020738 F7000018 ----- 04101 * 04102 *@@@ end of changes which inhibit packets 26 in row 24 04103 * 04104 *FIND CHARACTER CODE AND STORE IN MEMORY 04105 * 04106 * TCJ Feb 94 04107 * Remove CTL correction code for >B6 and >B7 04108 * 04109 .ORG SP40, *UPDATE CTL MODE LATCH 04110 MA(P26MO), 04111 A(>1F), P26MO>B, AND, 04112 Y>IO, 04113 JUMP(SP41); ----- ----- 738 00040739 081F4808 ----- 04114 * 04115 .ORG SP41, *UPDATE CTL CHARACTER LATCH 04116 MA(P26CH), 04117 A(>7F), P26CH>B, AND, 04118 Y>IO, 04119 JUMP(SP42); ----- ----- 739 0008073A 097F4808 ----- 04120 * 04121 .ORG SP42, *TCJ, 203 and 211 now require NOP 04122 *between P26CH or P26MO and looking 04123 *at CTL. 04124 JUMP(SP43); ----- ----- 73A 0000073B 00000000 ----- 04125 * 04126 .ORG SP43, *Y=CTL OUTPUT 04127 CTL>A, B(0), OR, 04128 JUMP(SP44); ----- ----- 73B 0000073C 00001080 ----- 04129 * 04130 .ORG SP44, *VALID CHARACTER/ MODE COMBINATION? 04131 JN(SP45F,SP45T); ----- ----- 73C 000041A4 00000000 ----- 04132 * 04133 .ORG SP45T, *WRITE VALID CHARACTER 04134 *SET MARKER BIT 04135 CTL>A, B(0), OR, 04136 Y>DR, 04137 JUMP(SP50T); ----- ----- 1A5 000011A1 00001080 ----- 04138 * 04139 .ORG SP45F, *NOT VALID- DO NOTHING 04140 JUMP(SP50T); ----- ----- 1A4 000001A1 00000000 ----- 04141 * 04142 *ENTRY POINT TO INCREMENT BYTE COUNTER 04143 .ORG SP50T, *BR=COUNT 04144 MA(COUNT), RAM>BR, 04145 JUMP(SP51); ----- ----- 1A1 0001073D 78000000 ----- 04146 .ORG SP51, *COUNT=COUNT-3 04147 MA(COUNT), 04148 A(-3), BR>B, ADD, 04149 Y>RAM, 04150 JUMP(SP52); ----- ----- 73D 0000073E 78FD0101 ----- 04151 .ORG SP52, *COUNT==0? 04152 JZ(SP53F,SP53T); ----- ----- 73E 000021A6 00000000 ----- 04153 .ORG SP53F, *MORE TRIPLETS 04154 JUMP(SP10F); ----- ----- 1A6 00000190 00000000 ----- 04155 * 04156 .ORG SP53T, *COMMON EXIT 04157 *PR=INDEX TO P26FLGS 04158 Y(-11), 04159 Y>PR, 04160 JUMP(SP54); ----- ----- 1A7 0000073F 80F51000 ----- 04161 .ORG SP54, *UPDATE P26FLGS IN TPD 04162 AR>A, B(0), OR, 04163 Y>DR, 04164 JUMP(LPP0); ----- ----- 73F 00001699 00001010 ----- 04165 * 04166 *+++SPT: STORE PDC TRIPLET 04167 * 04168 * This routine routine stores packet 26 triplets in store 6 if 04169 * this is the display page and PDC mode is set. 04170 * 04171 * B=RWL, LOCAL=number of PDC bytes stored so far 04172 .ORG SPT0T, *PRESERVE P26FLGS IN STORE 04173 MA(STORE), 04174 AR>A, B(0), OR, 04175 Y>RAM, 04176 JUMP(SPT10); ----- ----- 19F 00000742 77001110 ----- 04177 .ORG SPT10, *A=STOR0 04178 MA(STOR0), RAM>AR, 04179 JUMP(SPT11); ----- ----- 742 00020743 20000000 ----- 04180 .ORG SPT11, *COMPARE LATCHES 04181 *A=EXPREG 04182 MA(EXPREG), RAM>AR, 04183 ARHI>A, BR.0F>B, XOR, 04184 JUMP(SPT12); ----- ----- 743 00020744 63001822 ----- 04185 .ORG SPT12, *THIS THE DISPLAY PAGE? 04186 *Y=PDC 04187 *A=PACKET 26 FLAGS 04188 MA(STORE), RAM>AR, 04189 AR>A, B(PDC), AND, 04190 JZ(SPT20F,SPT20T); ----- ----- 744 000221A8 77400810 ----- 04191 .ORG SPT20F, *NOT, EXIT 04192 JUMP(SP50T); ----- ----- 1A8 000001A1 00000000 ----- 04193 .ORG SPT20T, *DISPLAY PAGE, PDC? 04194 *A=OLDDC+3 04195 *B=STOR7 04196 MA(STOR7), RAM>BR, 04197 AR.0F>A, B(3), ADD, 04198 Y>AR, 04199 JZ(SPT21F,SPT21T); ----- ----- 1A9 002321AA 270300C0 ----- 04200 .ORG SPT21T, *NOT, EXIT 04201 *A=PACKET 26 FLAGS 04202 MA(STORE), RAM>AR, 04203 JUMP(SP50T); ----- ----- 1AB 000201A1 77000000 ----- 04204 *OK TO STORE TRIPLET 04205 .ORG SPT21F, *P=ADDRESS OF START OF ROW (PDC BYTE COUNT) 04206 *A=LOCAL 04207 MA(LOCAL), RAM>AR, 04208 AR<<3>A, AR<<5>B, ADD, 04209 Y>PR, 04210 JUMP(SPT25); ----- ----- 1AA 00020745 F2000059 ----- 04211 .ORG SPT25, *B=ADDRESS OF START OF ROW 04212 *RWL= LATCH FOR STORE 7 04213 PR>BR, 04214 MA(RWL), 04215 A(0), BRHI>B, OR, 04216 Y>IO, Y>RAM, 04217 JUMP(SPT26); ----- ----- 745 00410746 0B00510C ----- 04218 .ORG SPT26, *UPDATE PDC BYTE COUNT 04219 *B=POINTER TO PDC BYTE COUNT 04220 PR>BR, 04221 MA(LOCAL), 04222 AR>A, B(3), ADD, 04223 Y>DR, Y>RAM, 04224 JUMP(SPT30); ----- ----- 746 00411747 72030110 ----- 04225 .ORG SPT30, *POINT TO ADDRESS STORE FOR THIS TRIPLET 04226 AR>A, BR>B, ADD, O>CIN, 04227 Y>PR, 04228 JUMP(SPT32); ----- ----- 747 00000748 80000411 ----- 04229 .ORG SPT32, *STORE ADDRESS, PRESERVE PTY 04230 PR>BR, 04231 A(0), P26AD>B, OR, 04232 Y>DR, 04233 JUMP(SPT33); ----- ----- 748 00411749 00001008 ----- 04234 .ORG SPT33, *POINT TO MODE STORE FOR THIS TRIPLET 04235 A(1), BR>B, ADD, 04236 Y>PR, 04237 JUMP(SPT34); ----- ----- 749 0000074A 80010001 ----- 04238 .ORG SPT34, *STORE MODE, PRESERVE PTY 04239 PR>BR, 04240 A(0), P26MO>B, OR, 04241 Y>DR, 04242 JUMP(SPT35); ----- ----- 74A 0045174B 00001008 ----- 04243 .ORG SPT35, *POINT TO DATA STORE FOR THIS TRIPLET 04244 *B=STOR0 04245 MA(STOR0), RAM>BR, 04246 A(1), BR>B, ADD, 04247 Y>PR, 04248 JUMP(SPT36); ----- ----- 74B 0001074C A0010001 ----- 04249 .ORG SPT36, *STORE DATA 04250 *A=PACKET 26 FLAGS 04251 MA(STORE), RAM>AR, 04252 A(0), P26CH>B, OR, 04253 Y>DR, 04254 JUMP(SPT37); ----- ----- 74C 000A174D 77001008 ----- 04255 .ORG SPT37, *PUT DISPLAY PAGE LATCH BACK IN RWL 04256 MA(RWL), 04257 A(0), BRHI>B, OR, 04258 Y>RAM, Y>IO, 04259 JUMP(SPT38); ----- ----- 74D 0000074E 0B00510C ----- 04260 .ORG SPT38, *LPPREG=6 04261 MA(LPPREG), 04262 Y(6), 04263 Y>RAM, 04264 JUMP(SP50T); ----- ----- 74E 000001A1 7E061100 ----- 04265 * 04266 *+++PLP: PACKET 27 PROCESSING 04267 * 04268 * LPPREG=7, RWL=LATCH FOR THIS PAGE 04269 *FIRST PROCESS DESIGNATION CODE 04270 .ORG PLP0F, *WAIT FOR DC 04271 JBYTE(PLP0F,PLP0T); ----- ----- 12A 0000812A 00000000 ----- 04272 .ORG PLP0T, *Y=DC 1ST 04273 CBRDY, 04274 A(0), HAM>B, OR, 04275 JUMP(PLP2); ----- ----- 12B 0008074F 00003007 ----- 04276 .ORG PLP2, *INIT LINK COUNT 04277 *DC=0 AND HAM OK? 04278 MA(COUNT), 04279 Y(0), 04280 Y>RAM, Y>AR, 04281 JZ(PLP3F,PLP3T); ----- ----- 74F 002221AC 78001100 ----- 04282 .ORG PLP3F, *DC NOT ZERO OR HAMMING ERROR 04283 JUMP(LPP0); ----- ----- 1AC 00000699 00000000 ----- 04284 .ORG PLP3T, *WAIT FOR UNITS 04285 JBYTE(PLP10F,PLP10T); ----- ----- 1AD 000081AE 00000000 ----- 04286 *LOOP START 04287 *WAIT FOR LINK UNITS 04288 * A=LINK 04289 .ORG PLP10F, * 04290 JBYTE(PLP10F,PLP10T); ----- ----- 1AE 000081AE 00000000 ----- 04291 .ORG PLP10T, *Y=LINK 04292 CBRDY, 04293 AR>A, B(7), AND, 04294 JUMP(PLP11); ----- ----- 1AF 0000075C 00072810 ----- 04295 .ORG PLP11, *A=LOCAL=UNITS 04296 *CASE LINK 04297 MA(LOCAL), 04298 A(0), HAM>B, OR, 04299 Y>RAM, Y>AR, 04300 JY(PLP20Y); ----- ----- 75C 002AC0B0 72001107 ----- 04301 .ORG PLP20Y, *CASE RED LINK 04302 *P=-24 04303 Y(-24), 04304 Y>PR, 04305 JUMP(PLP30); ----- ----- 0B0 0000075D 80E81000 ----- 04306 .ORG PLP21, *CASE GREEN LINK 04307 *P=-23 04308 Y(-23), 04309 Y>PR, 04310 JUMP(PLP30); ----- ----- 0B1 0000075D 80E91000 ----- 04311 .ORG PLP22, *CASE YELLOW LINK 04312 *P=-22 04313 Y(-22), 04314 Y>PR, 04315 JUMP(PLP30); ----- ----- 0B2 0000075D 80EA1000 ----- 04316 .ORG PLP23, *CASE CYAN LINK 04317 *P=-21 04318 Y(-21), 04319 Y>PR, 04320 JUMP(PLP30); ----- ----- 0B3 0000075D 80EB1000 ----- 04321 .ORG PLP24, *CASE NULL LINK 04322 *A=BYTE COUNT 04323 Y(5), 04324 Y>AR, 04325 JUMP(PLP24A); ----- ----- 0B4 0022075E 00051000 ----- 04326 .ORG PLP24A, *CALL WAIT0F TO SKIP NULL LINK 04327 *RETURN=6, RETURN TO PLP24B 04328 MA(RETURN), 04329 Y(6), 04330 Y>RAM, 04331 JUMP(WAIT0F); ----- ----- 75E 0000064E 7C061100 ----- 04332 .ORG PLP24B, *A=LINK 04333 MA(COUNT), RAM>AR, 04334 JUMP(PLP71); ----- ----- 036 0002075F 78000000 ----- 04335 .ORG PLP25, *CASE INDEX LINK 04336 *P=-20 04337 Y(-20), 04338 Y>PR, 04339 JUMP(PLP30); ----- ----- 0B5 0000075D 80EC1000 ----- 04340 .ORG PLP26, *CASE NO MORE LINKS 04341 *P=-16 (POINT TO FLOF FLAGS) 04342 Y(-16), 04343 Y>PR, 04344 JUMP(PLP100); ----- ----- 0B6 00000764 80F01000 ----- 04345 * A=LOCAL=HAM 04346 .ORG PLP30, *Y=LINK UNITS PARITY 04347 *TPD=OLD LINK 04348 RVDP, 04349 AR.F0>A, B(0), OR, 04350 JUMP(PLP31); ----- ----- 75D 00000765 000090D0 ----- 04351 .ORG PLP31, *PTY OK? 04352 *B=HAM 04353 MA(LOCAL), RAM>BR, 04354 JZ(PLP32F,PLP32T); ----- ----- 765 000121B0 72000000 ----- 04355 .ORG PLP32T, *PTY OK, STORE UNITS 04356 *STORE NEW UNITS AND OLD TENS IN LOCAL 04357 MA(LOCAL), 04358 TPD.F0>A, BR.0F>B, OR, 04359 Y>DR, Y>RAM, 04360 JBYTE(PLP40F,PLP40T); ----- ----- 1B1 000091B2 720011B2 ----- 04361 .ORG PLP32F, *BAD PTY 04362 *STORE OLD UNITS AND TENS IN LOCAL 04363 MA(LOCAL), 04364 TPD>A, B(0), OR, 04365 Y>RAM, 04366 JBYTE(PLP40F,PLP40T); ----- ----- 1B0 000081B2 72001190 ----- 04367 *WAIT FOR LINK TENS 04368 .ORG PLP40F, * 04369 JBYTE(PLP40F,PLP40T); ----- ----- 1B2 000081B2 00000000 ----- 04370 .ORG PLP40T, *A=Y=LINK TENS 04371 *B=LATEST CORRECT UNITS 04372 CBRDY, 04373 MA(LOCAL), RAM>BR, 04374 A(0), HAM>B, OR, 04375 Y>AR, 04376 JUMP(PLP41); ----- ----- 1B3 002B0766 72003007 ----- 04377 .ORG PLP41, *PTY OK? 04378 *RETURN=4 04379 MA(RETURN), 04380 Y(4), 04381 Y>RAM, 04382 JN(PLP42F,PLP42T); ----- ----- 766 000041B4 7C041100 ----- 04383 .ORG PLP42F, *PTY OK, STORE TENS 04384 AR<<4>A, BR.0F>B, OR, 04385 Y>DR, 04386 JUMP(PLP42T); ----- ----- 1B4 000011B5 00001032 ----- 04387 * 04388 .ORG PLP42T, *CALL WAIT0F TO WAIT FOR TWO BYTES 04389 *A=BYTE COUNT 04390 *RETURN=4, RETURN TO PLP45 04391 Y(2), 04392 Y>AR, 04393 JUMP(WAIT0F); ----- ----- 1B5 0022064E 00021000 ----- 04394 * LAST Y WAS HAM 04395 .ORG PLP45, *Y=C4, PTY OK? 5TH 04396 *B=RCM 04397 MA(RCM), RAM>BR, 04398 A(>08), HAM>B, AND, 04399 JN(PLP46F,PLP46T); ----- ----- 034 000941B6 28080807 ----- 04400 .ORG PLP46T, *BAD PTY 04401 *A=BYTE COUNT 04402 Y(2), 04403 Y>AR, 04404 JUMP(PLP47T); ----- ----- 1B7 002201B9 00021000 ----- 04405 .ORG PLP46F, *PTY OK, C4? 04406 *A=BYTE COUNT 04407 Y(1), 04408 Y>AR, 04409 JZ(PLP47F,PLP47T); ----- ----- 1B6 002221B8 00011000 ----- 04410 * 04411 .ORG PLP47T, *C4 NOT SET OR BAD PTY, STORE=RCM 04412 MA(STORE), 04413 A(0), BR>B, OR, 04414 Y>RAM, 04415 JUMP(PLP48); ----- ----- 1B9 00000767 77001101 ----- 04416 .ORG PLP47F, *C4 SET, LINK MAG=RCM WITH LSB INVERTED 04417 MA(STORE), 04418 A(1), BR>B, XOR, 04419 Y>RAM, 04420 JUMP(PLP48); ----- ----- 1B8 00000767 77011901 ----- 04421 * A=BYTE COUNT 04422 .ORG PLP48, *CALL WAIT0F TO SKIP SP THOUSANDS 04423 *RETURN=5, RETURN TO PLP55 04424 MA(RETURN), 04425 Y(5), 04426 Y>RAM, 04427 JUMP(WAIT0F); ----- ----- 767 0000064E 7C051100 ----- 04428 .ORG PLP55, *WAIT FOR SP TEN THOUSANDS 04429 JBYTE(PLP61F,PLP61T); ----- ----- 035 000081BA 00000000 ----- 04430 .ORG PLP61F, * 04431 JBYTE(PLP61F,PLP61T); ----- ----- 1BA 000081BA 00000000 ----- 04432 .ORG PLP61T, *Y=HAM 04433 CBRDY, 04434 A(0), HAM>B, OR, 04435 JUMP(PLP62); ----- ----- 1BB 0008076C 00003007 ----- 04436 .ORG PLP62, *Y=C5, PTY OK? 04437 A(>04), HAM>B, AND, 04438 JN(PLP63F,PLP63T); ----- ----- 76C 000841BC 00040807 ----- 04439 .ORG PLP63T, *BAD PTY 04440 JUMP(PLP65T); ----- ----- 1BD 000001C1 00000000 ----- 04441 .ORG PLP63F, *PTY OK, Y=C6 04442 *C5 SET? 04443 *A=LINK MAG 04444 MA(STORE), RAM>AR, 04445 A(>08), HAM>B, AND, 04446 JZ(PLP64F,PLP64T); ----- ----- 1BC 000A21BE 77080807 ----- 04447 .ORG PLP64F, *C5 SET, INVERT 2ND LSB OF LINK MAG 04448 *C6 SET? 04449 MA(STORE), 04450 AR>A, B(>02), XOR, 04451 Y>RAM, Y>AR, 04452 JZ(PLP65F,PLP65T); ----- ----- 1BE 002221C0 77021910 ----- 04453 .ORG PLP64T, *C5 NOT SET 04454 *C6 SET? 04455 JZ(PLP65F,PLP65T); ----- ----- 1BF 000021C0 00000000 ----- 04456 .ORG PLP65F, *C6 SET, INVERT 3RD LSB OF LINK MAG 04457 MA(STORE), 04458 AR>A, B(>04), XOR, 04459 Y>RAM, 04460 JUMP(PLP65T); ----- ----- 1C0 000001C1 77041910 ----- 04461 * 04462 .ORG PLP65T, *C6 NOT SET 04463 *A=LINK 04464 MA(COUNT), RAM>AR, 04465 JUMP(PLP66); ----- ----- 1C1 0002076D 78000000 ----- 04466 .ORG PLP66, *P=-19+A/2 (POINT TO LINK MAG BYTE) 04467 AR>>1>A, B(-19), ADD, 04468 Y>PR, 04469 JUMP(PLP67); ----- ----- 76D 0000076E 80ED00E0 ----- 04470 .ORG PLP67, *TPD= LINK MAG BYTE 04471 *Y=LINK LSB 04472 *A=NEW LINK MAG 04473 RVDP, 04474 MA(STORE), RAM>AR, 04475 AR>A, B(1), AND, 04476 JUMP(PLP68); ----- ----- 76E 0002076F 77018810 ----- 04477 .ORG PLP68, *LINK LSB? 04478 *STORE=TPD 04479 MA(STORE), 04480 TPD>A, B(0), OR, 04481 Y>RAM, 04482 JZ(PLP69F,PLP69T); ----- ----- 76F 000021C2 77001190 ----- 04483 *UPDATE HI NIB 04484 .ORG PLP69F, *B=TPD 04485 MA(STORE), RAM>BR, 04486 JUMP(PLP70); ----- ----- 1C2 00010770 77000000 ----- 04487 .ORG PLP70, *A=LINK 04488 MA(COUNT), RAM>AR, 04489 AR<<4>A, BR.0F>B, OR, 04490 Y>DR, 04491 JUMP(PLP71); ----- ----- 770 0002175F 78001032 ----- 04492 *UPDATE LO NIB 04493 .ORG PLP69T, *B=TPD 04494 MA(STORE), RAM>BR, 04495 JUMP(PLP70A); ----- ----- 1C3 00010771 77000000 ----- 04496 .ORG PLP70A, *A=LINK 04497 MA(COUNT), RAM>AR, 04498 AR.0F>A, BR.F0>B, OR, 04499 Y>DR, 04500 JUMP(PLP71); ----- ----- 771 0002175F 780010C3 ----- 04501 *ENTRY POINT FROM UNUSED LINK 04502 .ORG PLP71, *LINK++ 04503 MA(COUNT), 04504 AR>A, B(1), ADD, 04505 Y>RAM, Y>AR, 04506 JBYTE(PLP10F,PLP10T); ----- ----- 75F 002281AE 78010110 ----- 04507 *STORE PACKET 27 FLAGS BYTE 04508 * A=LOCAL=HAM, P=POINTER TO FLOF FLAGS 04509 .ORG PLP100, *Y=HAM PTY, TPD=FLOF FLAGS 04510 RVDP, 04511 AR.F0>A, B(0), OR, 04512 JUMP(PLP101); ----- ----- 764 00000772 000090D0 ----- 04513 .ORG PLP101, *PTY OK? 04514 *A=FLOF FLAGS WITH P27R SET 04515 *B=HAM 04516 MA(LOCAL), RAM>BR, 04517 TPD>A, B(>80), OR, 04518 Y>AR, 04519 JZ(PLP101F,PLP101T); ----- ----- 772 002321C4 72801090 ----- 04520 .ORG PLP101T, *PARITY OK, STORE NEW PACKET 27 FLAGS 04521 AR.F0>A, BR.0F>B, OR, 04522 Y>DR, 04523 JUMP(LPP0); ----- ----- 1C5 00001699 000010D2 ----- 04524 .ORG PLP101F, *BAD PARITY, KEEP OLD FLAGS 04525 AR>A, B(0), OR, 04526 Y>DR, 04527 JUMP(LPP0); ----- ----- 1C4 00001699 00001010 ----- 04528 ***LPP: LINE POST PROCESSING 04529 * THISRW= ROW JUST RECEIVED 04530 * IF LPPREG=6, RET2=OLDDC 04531 * This routine carries out the line post processing required by the 04532 * LPPREG register. It is a common exit point from all teletext 04533 * reception routines. (The common entry point is G1T where the default 04534 * value LPPREG=3 is set.) 04535 * This routine should only exit to PL0 or ST0F. 04536 * 04537 .ORG LPP0, *B=OGLCNT 04538 MA(OGLCNT), RAM>BR, 04539 JUMP(LPP0A); ----- ----- 699 00010773 6B000000 ----- 04540 .ORG LPP0A, *INC ON-GOING LINE COUNT 04541 MA(OGLCNT), 04542 A(>01), BR>B, ADD, 04543 Y>RAM, 04544 JUMP(LPP0B); ----- ----- 773 00000774 6B010101 ----- 04545 .ORG LPP0B, *B=LPPREG 04546 MA(LPPREG), RAM>BR, 04547 JUMP(LPP1); ----- ----- 774 00010775 7E000000 ----- 04548 .ORG LPP1, *Y=LPPREG 04549 *B=ERRCNT 04550 MA(ERRCNT), RAM>BR, 04551 A(>F), BR>B, AND, 04552 JUMP(LPP2); ----- ----- 775 00010776 3A0F0801 ----- 04553 .ORG LPP2, *CASE LPPREG=? 04554 *AR=THISRW 04555 MA(THISRW), RAM>AR, 04556 JY(LPP10Y); ----- ----- 776 0002C370 7D000000 ----- 04557 .ORG LPP10Y, *CASE LPPREG=0 04558 *no processing to do 04559 *(mag off, not enabled, ROW 24 or TOFF=1) 04560 JUMP(PL0); ----- ----- 370 00000777 00000000 ----- 04561 .ORG LPP11, *CASE LPPREG=1 04562 *process a header of a page not in a latch. 04563 *CALL UPI0A TO UPDATE INVENTORY 04564 *RET2=0, RETURN TO HPP0T 04565 MA(RET2), 04566 Y(0), 04567 Y>RAM, 04568 JUMP(UPI0A); ----- ----- 371 0000077A 7B001100 ----- 04569 *ENTRY POINT FROM BROWSE HEADER POST PROCESSING 04570 .ORG LPP12, *CASE LPPREG=2 04571 *process a header of a page in a latch. 04572 *AR=CGB 04573 MA(CGB), RAM>AR, 04574 JUMP(HPP0T); ----- ----- 372 000201FB 34000000 ----- 04575 *ENTRY POINT FROM PACKET 24 CODE 04576 *ENTRY POINT FROM BTT LINE POST PROCESSING 04577 .ORG LPP13, *CASE LPPREG=3 04578 *packet 1-24 received (update markers, count errors) 04579 *CALL MASK0 04580 *RETURN=1, RETURN TO LPP20 04581 *A=THISRW= CURRENT ROW 04582 MA(RETURN), 04583 Y(1), 04584 Y>RAM, 04585 JUMP(MASK0); ----- ----- 373 0000077B 7C011100 ----- 04586 .ORG LPP14, *CASE LPPREG=4 04587 *there was a ROW or MAG hamming error 04588 *A=ERRCNT++ 04589 *B=MREG0 04590 MA(MREG0), RAM>BR, 04591 A(1), BR>B, ADD, 04592 Y>AR, 04593 JUMP(LPP80); ----- ----- 374 0023077C 39010001 ----- 04594 .ORG LPP15, *CASE LPPREG=5 04595 *there was a UNITS or TENS hamming error 04596 JUMP(PL0); ----- ----- 375 00000777 00000000 ----- 04597 .ORG LPP16, *CASE LPPREG=6 04598 *packet 26 received and PDC triplets stored 04599 MA(RETURN), 04600 Y(2), 04601 Y>RAM, 04602 JUMP(LPP100); ----- ----- 376 0000077D 7C021100 ----- 04603 *ENTRY POINT FOR FORMAT 1 04604 .ORG LPP17, *CASE LPPREG=7 04605 *process packet 8/30 format 2 04606 *BR=RET4 04607 *JUMP TO INITIAL PAGE ROUTINE 04608 MA(RET4), RAM>BR, 04609 JUMP(LPP50); ----- ----- 377 0001077E 79000000 ----- 04610 .ORG LPP18, *CASE LPPREG=8 04611 *process header in browse mode 04612 *CALL PPB0 04613 *P=3, RETURN TO LPP30 04614 *B=PEN 04615 MA(PEN), RAM>BR, 04616 Y(3), 04617 Y>PR, 04618 JUMP(PPB0); ----- ----- 378 000104C5 9B031000 ----- 04619 .ORG LPP19, *CASE LPPREG=9 04620 *process packet 8/30 format 1 04621 *INCREMENT PACKET COUNT 04622 *RWL=0 04623 MA(RWL), 04624 Y(0), 04625 Y>RAM, Y>IO, 04626 JUMP(LPP19A); ----- ----- 379 0000077F 0B005100 ----- 04627 .ORG LPP19A, *POINT TO PACKET COUNT 04628 *P=-7 04629 Y(-7), 04630 Y>PR, 04631 JUMP(LPP19B); ----- ----- 77F 00000782 80F91000 ----- 04632 .ORG LPP19B, *TPD=PACKET COUNT 04633 RVDP, 04634 JUMP(LPP19C); ----- ----- 782 00000783 00008000 ----- 04635 .ORG LPP19C, *INC PACKET COUNT 04636 *BR=RET4 04637 *JUMP TO INITIAL PAGE ROUTINE 04638 MA(RET4), RAM>BR, 04639 TPD>A, B(1), ADD, 04640 Y>DR, 04641 JUMP(LPP50); ----- ----- 783 0001177E 79010090 ----- 04642 .ORG LPP1A, *CASE LPPREG=10 04643 *process BTT line with an error 04644 *Y=THISRW-21 04645 AR>A, B(-21), ADD, 04646 JUMP(LPP90); ----- ----- 37A 00000784 00EB0010 ----- 04647 * 04648 *+++Display row post processing 04649 * AR=MASK, PR=CLEAR ROW MARKER BYTE POINTER 04650 * B=RET2=CLEAR ROW MARKER BYTE 04651 .ORG LPP20, *SET ROW MARKER BIT 04652 AR>A, BR>B, OR, 04653 Y>DR, 04654 JUMP(ST0F); ----- ----- 0E1 00001001 00001011 ----- 04655 * 04656 *+++Process header in browse mode 04657 * (### could be compressed with tricky loop) 04658 .ORG LPP30, *A=STOR0 04659 MA(STOR0), RAM>AR, 04660 JUMP(LPP30A); ----- ----- 2DB 00020785 20000000 ----- 04661 .ORG LPP30A, *AR=LATCH FOR STORE 0 04662 ARHI>A, B(7), AND, 04663 Y>AR, 04664 JUMP(LPP31); ----- ----- 785 00220786 00070820 ----- 04665 .ORG LPP31, *PR=INDEX TO MAG OF STOR0 04666 *AR=RCM (RECEIVED MAG) 04667 MA(RCM), RAM>AR, 04668 AR>A, B(M0), ADD, 04669 Y>PR, 04670 JUMP(LPP32); ----- ----- 786 00020787 A8100010 ----- 04671 .ORG LPP32, *BR= MAG OF STOR0 04672 PR>MA, RAM>BR, 04673 JUMP(LPP33); ----- ----- 787 0011078C 00000000 ----- 04674 .ORG LPP33, *UPDATE MAG LATCH OF STOR0 TO RCM 04675 PR>MA, 04676 AR.0F>A, BR.F0>B, OR, 04677 Y>RAM, Y>IO, 04678 JUMP(LPP34); ----- ----- 78C 0010078D 000051C3 ----- 04679 .ORG LPP34, *BR=DPM 04680 MA(DPM), RAM>BR, 04681 JUMP(LPP35); ----- ----- 78D 0001078E 68000000 ----- 04682 .ORG LPP35, *UPDATE DPM 04683 *BR= INDEX 04684 PR>BR, 04685 MA(DPM), 04686 AR<<4>A, BR.0F>B, OR, 04687 Y>RAM, 04688 JUMP(LPP36); ----- ----- 78E 0041078F 68001132 ----- 04689 .ORG LPP36, *PR= INDEX TO TENS OF STOR0 04690 *AR=RCT (RECEIVED TENS) 04691 MA(RCT), RAM>AR, 04692 A(8), BR>B, ADD, 04693 Y>PR, 04694 JUMP(LPP37); ----- ----- 78F 0002079B A9080001 ----- 04695 .ORG LPP37, *BR= TENS OF STOR0 04696 PR>MA, RAM>BR, 04697 JUMP(LPP38); ----- ----- 79B 0011079C 00000000 ----- 04698 .ORG LPP38, *UPDATE TENS LATCH OF STOR0 TO RCT 04699 PR>MA, 04700 AR.0F>A, BR.F0>B, OR, 04701 Y>RAM, Y>IO, 04702 JUMP(LPP39); ----- ----- 79C 0010079D 000051C3 ----- 04703 .ORG LPP39, *BR=DPT 04704 MA(DPT), RAM>BR, 04705 JUMP(LPP40); ----- ----- 79D 0001079E 69000000 ----- 04706 .ORG LPP40, *UPDATE DPT 04707 *BR= INDEX 04708 PR>BR, 04709 MA(DPT), 04710 AR<<4>A, BR.0F>B, OR, 04711 Y>RAM, 04712 JUMP(LPP41); ----- ----- 79E 0041079F 69001132 ----- 04713 .ORG LPP41, *PR= INDEX TO UNITS OF STOR0 04714 *AR=RCU (RECEIVED UNITS) 04715 MA(RCU), RAM>AR, 04716 A(8), BR>B, ADD, 04717 Y>PR, 04718 JUMP(LPP42); ----- ----- 79F 000207A9 AA080001 ----- 04719 .ORG LPP42, *BR= UNITS OF STOR0 04720 PR>MA, RAM>BR, 04721 JUMP(LPP43); ----- ----- 7A9 001107AA 00000000 ----- 04722 .ORG LPP43, *UPDATE UNITS LATCH OF STOR0 TO RCU 04723 PR>MA, 04724 AR.0F>A, BR.F0>B, OR, 04725 Y>RAM, Y>IO, 04726 JUMP(LPP44); ----- ----- 7AA 001007AB 000051C3 ----- 04727 .ORG LPP44, *BR=DPU 04728 MA(DPU), RAM>BR, 04729 JUMP(LPP45); ----- ----- 7AB 000107AC 6A000000 ----- 04730 .ORG LPP45, *UPDATE DPU 04731 MA(DPU), 04732 AR<<4>A, BR.0F>B, OR, 04733 Y>RAM, 04734 JUMP(LPP46); ----- ----- 7AC 000007AD 6A001132 ----- 04735 * 04736 .ORG LPP46, *AR=DHREG 04737 MA(DHREG), RAM>AR, 04738 JUMP(LPP47); ----- ----- 7AD 000207AE 32000000 ----- 04739 .ORG LPP47, *BWSE=0 04740 *GO AND DO NORMAL PROCESSING ON HEADER 04741 MA(DHREG), 04742 AR>A, B(>FF-BWSE), AND, 04743 Y>RAM, 04744 JUMP(LPP48); ----- ----- 7AE 000007AF 32FE0910 ----- 04745 *SET SBL TO SORT BACKGROUND LATCHES 04746 .ORG LPP48, *BR=VPPRG1 04747 MA(VPPRG1), RAM>BR, 04748 JUMP(LPP49); ----- ----- 7AF 000107B8 61000000 ----- 04749 .ORG LPP49, *SBL=1 04750 MA(VPPRG1), 04751 A(SBL), BR>B, OR, 04752 Y>RAM, 04753 JUMP(LPP49A); ----- ----- 7B8 000007B9 61801101 ----- 04754 .ORG LPP49A, *BR=EXPREG 04755 MA(EXPREG), RAM>BR, 04756 JUMP(LPP49B); ----- ----- 7B9 000107BA 63000000 ----- 04757 .ORG LPP49B, *CGAP=1, CPRF=1 04758 MA(EXPREG), 04759 A(CGAP+CPRF), BR>B, OR, 04760 Y>RAM, 04761 JUMP(LPP12); ----- ----- 7BA 00000372 630C1101 ----- 04762 * 04763 *+++Packet 8/30 initial page post processing 04764 * BR=RET4 (INITIAL PAGE MAGAZINE) 04765 .ORG LPP50, *AR=RET2 (INITIAL PAGE UNITS) 04766 *Y=MAG 04767 MA(RET2), RAM>AR, 04768 A(0), BR>B, OR, 04769 JUMP(LPP51); ----- ----- 77E 000207BB 7B001001 ----- 04770 .ORG LPP51, *HAMMING ERROR IN MAG? 04771 *BR=RET3 (INITIAL PAGE TENS) 04772 MA(RET3), RAM>BR, 04773 JN(LPP52F,LPP52T); ----- ----- 7BB 000141C6 7A000000 ----- 04774 .ORG LPP52T, *HAMMING ERROR IN MAG, DO NOT PROCESS INITIAL PAGE 04775 JUMP(LPP55T); ----- ----- 1C7 000001D1 00000000 ----- 04776 .ORG LPP52F, *Y=RET2+RET3 04777 AR>A, BR>B, OR, 04778 JUMP(LPP53); ----- ----- 1C6 000007BC 00001011 ----- 04779 .ORG LPP53, *TENS AND UNITS PARITY OK? 04780 *Y=UNITS->F 04781 AR>A, B(->0F), ADD, 04782 JN(LPP53AF,LPP53AT); ----- ----- 7BC 000041C8 00F10010 ----- 04783 .ORG LPP53AT, *HAMMING ERROR, DO NOT PROCESS INITIAL PAGE 04784 JUMP(LPP55T); ----- ----- 1C9 000001D1 00000000 ----- 04785 .ORG LPP53AF, *UNITS=F? 04786 *Y=TENS->F 04787 *B=SYS1 04788 MA(SYS1), RAM>BR, 04789 A(->0F), BR>B, ADD, 04790 JZ(LPP53BF,LPP53BT); ----- ----- 1C8 000121CA 08F10001 ----- 04791 .ORG LPP53BF, *UNITS<>F, NOT A NULL PAGE 04792 *BR=EXPREG, Y=FTOP 04793 MA(EXPREG), RAM>BR, 04794 A(FTOP), BR>B, AND, 04795 JUMP(LPP53CF); ----- ----- 1CA 000101CC 63020801 ----- 04796 .ORG LPP53BT, *UNITS=F, NULL PAGE? 04797 *BR=EXPREG, Y=FTOP 04798 MA(EXPREG), RAM>BR, 04799 A(FTOP), BR>B, AND, 04800 JZ(LPP53CF,LPP53CT); ----- ----- 1CB 000121CC 63020801 ----- 04801 .ORG LPP53CT, *NULL PAGE, DO NOT PROCESS INITIAL PAGE 04802 JUMP(LPP55T); ----- ----- 1CD 000001D1 00000000 ----- 04803 .ORG LPP53CF, *TOP FORCED? 04804 *Y=SINP 04805 A(SINP), BR>B, AND, 04806 JZ(LPP54F,LPP54T); ----- ----- 1CC 000021CE 00100801 ----- 04807 .ORG LPP54F, *TOP FORCED, INHIBIT PACKET 8/30 INIT PAGE 04808 JUMP(LPP55T); ----- ----- 1CE 000001D1 00000000 ----- 04809 .ORG LPP54T, *TOP NOT FORCED 04810 *SINP? 04811 JZ(LPP55F,LPP55T); ----- ----- 1CF 000021D0 00000000 ----- 04812 *PROCESS INITIAL PAGE NUMBER 04813 * AR=RET2 (INITIAL PAGE UNITS) 04814 .ORG LPP55F, *UPDATE DPU 04815 MA(DPU), 04816 AR<<4>A, B(0), OR, 04817 Y>RAM, 04818 JUMP(LPP56); ----- ----- 1D0 000007BD 6A001130 ----- 04819 .ORG LPP56, *AR=RET3 (INITIAL PAGE TENS) 04820 MA(RET3), RAM>AR, 04821 JUMP(LPP57); ----- ----- 7BD 000207BE 7A000000 ----- 04822 .ORG LPP57, *UPDATE DPT 04823 MA(DPT), 04824 AR<<4>A, B(0), OR, 04825 Y>RAM, 04826 JUMP(LPP58); ----- ----- 7BE 000007BF 69001130 ----- 04827 .ORG LPP58, *AR=MAG 04828 MA(RET4), RAM>AR, 04829 JUMP(LPP59); ----- ----- 7BF 000207CA 79000000 ----- 04830 .ORG LPP59, *UPDATE DPM 04831 *JUMP TO PAGE ENTRY CODE 04832 MA(DPM), 04833 AR<<4>A, B(1), OR, 04834 Y>RAM, 04835 JUMP(CMPE0); ----- ----- 7CA 000004DF 68011130 ----- 04836 *END OF INITIAL PAGE PROCESSING 04837 .ORG LPP55T, * 04838 JUMP(ST0F); ----- ----- 1D1 00000001 00000000 ----- 04839 * 04840 *+++MAG or ROW hamming error processing 04841 * A=ERRCNT++, B=MREG0 04842 .ORG LPP80, *Y=0 IF ERRCNT OVERFLOW 04843 AR>>1>A, B(>80), ADD, 04844 JUMP(LPP81); ----- ----- 77C 000007CB 008000E0 ----- 04845 .ORG LPP81, *Y=ERROVF 04846 *MAX VALUE? 04847 *B=VPPRG1 04848 MA(VPPRG1), RAM>BR, 04849 A(ERROVF), BR>B, AND, 04850 JZ(LPP82F,LPP82T); ----- ----- 7CB 000121D2 61100801 ----- 04851 .ORG LPP82T, *MAX VALUE, ALLOWED TO OVERFLOW? 04852 JZ(LPP83F,LPP83T); ----- ----- 1D3 000021D4 00000000 ----- 04853 .ORG LPP82F, *NOT MAX VALUE 04854 *ERRCNT = A 04855 MA(ERRCNT), 04856 AR>A, B(0), OR, 04857 Y>RAM, 04858 JUMP(LPP83T); ----- ----- 1D2 000001D5 3A001110 ----- 04859 .ORG LPP83F, *MAX VALUE, OVERFLOW 04860 *ERRCNT = A 04861 MA(ERRCNT), 04862 AR>A, B(0), OR, 04863 Y>RAM, 04864 JUMP(LPP83T); ----- ----- 1D4 000001D5 3A001110 ----- 04865 .ORG LPP83T, *CALL SVDP 04866 MA(VPPRG1), 04867 A(CSVDP), BR>B, OR, 04868 Y>RAM, 04869 JUMP(ST0F); ----- ----- 1D5 00000001 61101101 ----- 04870 * 04871 *+++BTT with error post processing 04872 * A=THISRW, LAST Y WAS THISRW-21 04873 .ORG LPP90, *Y=THISRW-22 04874 *B=TOPRG1 04875 *ROW 21? 04876 MA(TOPRG1), RAM>BR, 04877 AR>A, B(-22), ADD, 04878 * JZ(LPP91F,LPP91T); 04879 *TCJ July 93 04880 * Ignore BTTERR as it is possible to receive correct 04881 * PLT rows 21 & 22 that also contain hamming errors 04882 * e.g. Hessentext on HR3. 04883 * 04884 JUMP (LPP13); ----- ----- 784 00010373 37EA0010 ----- 04885 * 04886 *ORG LPP91T, *ROW 21, BTTERR=1, EXIT TO LPP13 04887 * MA(TOPRG1), 04888 * A(BTTERR), BR>B, OR, 04889 * Y>RAM, 04890 * JUMP(LPP13); 04891 *ORG LPP91F, *ROW 22? 04892 * JZ(LPP92F,LPP92T); 04893 *ORG LPP92T, *ROW 22, BTTERR=1, EXIT TO LPP13 04894 * MA(TOPRG1), 04895 * A(BTTERR), BR>B, OR, 04896 * Y>RAM, 04897 * JUMP(LPP13); 04898 *ORG LPP92F, *NOT A PLT ROW, EXIT TO LPP13 04899 * JUMP(LPP13); * JUMP(LPP13); 04900 * 04901 *+++PDC triplets post processing 04902 * 04903 * Use MASK0 routine to update DC markers in PDCRG1 and 2. 04904 * 04905 * RETURN=2 04906 .ORG LPP100, *A=DC FOR P26 JUST RECEIVED PLUS ONE 04907 MA(RET2), RAM>AR, 04908 JUMP(LPP101); ----- ----- 77D 000207CC 7B000000 ----- 04909 .ORG LPP101, *PUT IT IN THISRW FOR MASK, MASK UNWANTED BITS 04910 *CALL MASK 04911 *RETURN=2, RETURN TO LPP110 04912 MA(THISRW), 04913 AR>A, B(>1F), AND, 04914 Y>RAM, Y>AR, 04915 JUMP(MASK0); ----- ----- 7CC 0022077B 7D1F0910 ----- 04916 * A=MARKER BIT, P=SCREEN POINTER 04917 .ORG LPP110, *B=SCREEN POINTER 04918 PR>BR, 04919 JUMP(LPP111); ----- ----- 0E2 004107CD 00000000 ----- 04920 .ORG LPP111, *Y=SCREEN POINTER LSB 04921 A(1), BR>B, AND, 04922 JUMP(LPP112); ----- ----- 7CD 000007CE 00010801 ----- 04923 .ORG LPP112, *PUT IT IN PDCRG1 OR 2? 04924 *B=PDCRG1 04925 MA(PDCRG1), RAM>BR, 04926 JZ(LPP113F,LPP113T); ----- ----- 7CE 000121D6 6C000000 ----- 04927 .ORG LPP113T, *UPDATE PDCRG1 04928 MA(PDCRG1), 04929 AR>A, BR>B, OR, 04930 Y>RAM, 04931 JUMP(ST0F); ----- ----- 1D7 00000001 6C001111 ----- 04932 .ORG LPP113F, *UPDATE PDCRG2 04933 *B=PDCRG2 04934 MA(PDCRG2), RAM>BR, 04935 JUMP(LPP114); ----- ----- 1D6 000107CF 6D000000 ----- 04936 .ORG LPP114, * 04937 MA(PDCRG2), 04938 AR>A, BR>B, OR, 04939 Y>RAM, 04940 JUMP(ST0F); ----- ----- 7CF 00000001 6D001111 ----- 04941 * 04942 *+++Header post processing. All MFx maintenance should be done here. 04943 * AR=CGB 04944 .ORG HPP0T, *Y=MS 04945 *BR=RCM 04946 MA(RCM), RAM>BR, 04947 AR>A, B(%0001), AND, 04948 JUMP(HPP1); ----- ----- 1FB 000107D8 28010810 ----- 04949 .ORG HPP1, *MS? 04950 *INIT LOOP FOR SMOF 04951 *A=COUNT=7 04952 MA(COUNT), 04953 Y(7), 04954 Y>RAM, Y>AR, 04955 JZ(HPP2F,HPP2T); ----- ----- 7D8 002221D8 78071100 ----- 04956 *+++SERIAL HEADER, CLOSE ALL MAGS 04957 * A=COUNT=7 04958 .ORG HPP2F, *P=MF0+COUNT 04959 AR>A, B(MF0), ADD, 04960 Y>PR, 04961 JN(SMOF0F,SMOF0T); ----- ----- 1D8 000041DA 80580010 ----- 04962 .ORG SMOF0F, *A=MFx 04963 PR>MA, RAM>AR, 04964 JUMP(SMOF1); ----- ----- 1DA 001207D9 00000000 ----- 04965 .ORG SMOF1, *Y=MOP 04966 *B=COUNT 04967 MA(COUNT), RAM>BR, 04968 AR>A, B(MOP), AND, 04969 JUMP(SMOF2); ----- ----- 7D9 000107DA 78080810 ----- 04970 .ORG SMOF2, *CLOSE THIS MAG, WAS IT OPEN? 04971 PR>MA, 04972 AR>A, B(>FF-MOP), AND, 04973 Y>RAM, Y>AR, 04974 JZ(SMOF3F,SMOF3T); ----- ----- 7DA 003221DC 00F70910 ----- 04975 *MAG WAS OPEN 04976 .ORG SMOF3F, *P=LAF0+MLP (INDEX TO LATCH FLAGS) 04977 *B=COUNT 04978 MA(COUNT), RAM>BR, 04979 AR.0F>A, B(LAF0), ADD, 04980 Y>PR, 04981 JUMP(SMOF4); ----- ----- 1DC 000107DB F84000C0 ----- 04982 .ORG SMOF4, *A=LAFx 04983 PR>MA, RAM>AR, 04984 JUMP(SMOF5); ----- ----- 7DB 001207DC 00000000 ----- 04985 .ORG SMOF5, *SET VBICAP 04986 AR>A, B(VBICAP), OR, 04987 Y>AR, 04988 JUMP(SMOF5A); ----- ----- 7DC 002207DD 00401010 ----- 04989 .ORG SMOF5A, *CLEAR OPN 04990 PR>MA, 04991 AR>A, B(>FF-OPN), AND, 04992 Y>RAM, 04993 JUMP(SMOF3T); ----- ----- 7DD 001001DD 00EF0910 ----- 04994 * B=COUNT 04995 .ORG SMOF3T, *COUNT=A=B-1 04996 MA(COUNT), 04997 A(-1), BR>B, ADD, 04998 Y>RAM, Y>AR, 04999 JUMP(HPP2F); ----- ----- 1DD 002201D8 78FF0101 ----- 05000 * 05001 .ORG SMOF0T, *CLOSED ALL MAGS EXIT 05002 *A=LPPREG 05003 MA(LPPREG), RAM>AR, 05004 JUMP(HPP6); ----- ----- 1DB 000207DE 7E000000 ----- 05005 *+++PARALLEL MAG, CLOSE THIS MAG 05006 * BR=RCM 05007 .ORG HPP2T, *P=MF0+RCM 05008 A(MF0), BR.0F>B, ADD, 05009 Y>PR, 05010 JUMP(PMOF0F); ----- ----- 1D9 000007DF 80580002 ----- 05011 .ORG PMOF0F, *AR=MFx 05012 PR>MA, RAM>AR, 05013 JUMP(PMOF1); ----- ----- 7DF 001207E0 00000000 ----- 05014 .ORG PMOF1, *Y=MOP 05015 AR>A, B(MOP), AND, 05016 JUMP(PMOF2); ----- ----- 7E0 000007E1 00080810 ----- 05017 .ORG PMOF2, *WAS MAG OPEN? 05018 *CLOSE MAG 05019 *SAVE MFx INDEX IN BR 05020 PR>MA, 05021 AR>A, B(>FF-MOP), AND, 05022 Y>RAM, Y>AR, 05023 JZ(PMOF3F,PMOF3T); ----- ----- 7E1 003221DE 00F70910 ----- 05024 *+++MAG WAS OPEN 05025 .ORG PMOF3F, *PR=INDEX TO LAFx 05026 AR.0F>A, B(LAF0), ADD, 05027 Y>PR, 05028 JUMP(PMOF4); ----- ----- 1DE 000007E2 804000C0 ----- 05029 .ORG PMOF4, *AR=LAFx 05030 PR>MA, RAM>AR, 05031 JUMP(PMOF5); ----- ----- 7E2 001207E3 00000000 ----- 05032 .ORG PMOF5, *SET VBICAP 05033 AR>A, B(VBICAP), OR, 05034 Y>AR, 05035 JUMP(PMOF5A); ----- ----- 7E3 002207E4 00401010 ----- 05036 .ORG PMOF5A, *CLEAR OPN 05037 PR>MA, 05038 AR>A, B(>FF-OPN), AND, 05039 Y>RAM, 05040 JUMP(PMOF3T); ----- ----- 7E4 001001DF 00EF0910 ----- 05041 .ORG PMOF3T, *A=LPPREG 05042 MA(LPPREG), RAM>AR, 05043 JUMP(HPP6); ----- ----- 1DF 000207DE 7E000000 ----- 05044 *NECESSARY MAGS HAVE BEEN CLOSED 05045 * A=LPPREG 05046 .ORG HPP6, *Y=LPPREG-1 05047 *BR=RCM 05048 MA(RCM), RAM>BR, 05049 AR.0F>A, B(-1), ADD, 05050 JUMP(HPP7); ----- ----- 7DE 000107E5 28FF00C0 ----- 05051 .ORG HPP7, *LPPREG==1? 05052 *PR=MFx INDEX 05053 *AR=LATCH OPEN FOR THIS PAGE 05054 MA(RWL), RAM>AR, 05055 A(MF0), BR.0F>B, ADD, 05056 Y>PR, 05057 JZ(HPP8F,HPP8T); ----- ----- 7E5 000221E0 8B580002 ----- 05058 .ORG HPP8T, *LPPREG==1 05059 *PNIL 05060 JUMP(ST0F); ----- ----- 1E1 00000001 00000000 ----- 05061 *+++OPEN MAGAZINE (PAGE IN LATCH) 05062 * OLD LPPREG=2 05063 .ORG HPP8F, *AR=RWL+MOP 05064 *BR=MFx 05065 PR>MA, RAM>BR, 05066 AR.0F>A, B(MOP), OR, 05067 Y>AR, 05068 JUMP(HPP9); ----- ----- 1E0 003307E6 000810C0 ----- 05069 .ORG HPP9, *UPDATE MLP AND MO FOR MFx 05070 PR>MA, 05071 AR.0F>A, BR.F0>B, ADD, 05072 Y>RAM, 05073 JUMP(HPP10); ----- ----- 7E6 001007E7 000001C3 ----- 05074 *+++STORE SP AND CG IN PAGE RAM 05075 .ORG HPP10, *AR=RSPX 05076 MA(RSPX), RAM>AR, 05077 JUMP(HPP11); ----- ----- 7E7 000207E8 3D000000 ----- 05078 .ORG HPP11, *BR=RSPI 05079 *PR=-15 05080 MA(RSPI), RAM>BR, 05081 A(-15), B(-15), OR, 05082 Y>PR, 05083 JUMP(HPP12); ----- ----- 7E8 000107E9 BCF11000 ----- 05084 .ORG HPP12, *Y=RSPI+RSPX 05085 AR>A, BR>B, OR, 05086 JUMP(HPP13); ----- ----- 7E9 000007EA 00001011 ----- 05087 .ORG HPP13, *PTY OK? 05088 JN(HPP14F,HPP14T); ----- ----- 7EA 000041E2 00000000 ----- 05089 .ORG HPP14F, *YES, STORE IT 05090 *SPARBY15 05091 AR<<4>A, BR.0F>B, OR, 05092 Y>DR, 05093 JUMP(HPP14T); ----- ----- 1E2 000011E3 00001032 ----- 05094 .ORG HPP14T, *AR=RSPM 05095 MA(RSPM), RAM>AR, 05096 JUMP(HPP21); ----- ----- 1E3 000207EB 3F000000 ----- 05097 .ORG HPP21, *BR=RSPC 05098 *PR=-14 05099 MA(RSPC), RAM>BR, 05100 A(-14), B(-14), OR, 05101 Y>PR, 05102 JUMP(HPP22); ----- ----- 7EB 000107EC BEF21000 ----- 05103 .ORG HPP22, *Y=RSPC+RSPM 05104 AR>A, BR>B, OR, 05105 JUMP(HPP23); ----- ----- 7EC 000007ED 00001011 ----- 05106 .ORG HPP23, *PTY OK? 05107 JN(HPP24F,HPP24T); ----- ----- 7ED 000041E4 00000000 ----- 05108 .ORG HPP24F, *YES, STORE IT 05109 *SPARBY14 05110 AR<<4>A, BR.0F>B, OR, 05111 Y>DR, 05112 JUMP(HPP24T); ----- ----- 1E4 000011E5 00001032 ----- 05113 .ORG HPP24T, *AR=CGB 05114 MA(CGB), RAM>AR, 05115 JUMP(HPP31); ----- ----- 1E5 000207EE 34000000 ----- 05116 .ORG HPP31, *BR=CGA 05117 *PR=-13 05118 MA(CGA), RAM>BR, 05119 A(-13), B(-13), OR, 05120 Y>PR, 05121 JUMP(HPP32); ----- ----- 7EE 000107EF B3F31000 ----- 05122 .ORG HPP32, *Y=CGA+CGB 05123 AR>A, BR>B, OR, 05124 JUMP(HPP33); ----- ----- 7EF 000007F0 00001011 ----- 05125 .ORG HPP33, *PTY OK? 05126 JN(HPP34F,HPP34T); ----- ----- 7F0 000041E6 00000000 ----- 05127 .ORG HPP34F, *YES, STORE IT 05128 *SPARBY13 05129 AR<<4>A, BR.0F>B, OR, 05130 Y>DR, 05131 JUMP(HPP34T); ----- ----- 1E6 000011E7 00001032 ----- 05132 .ORG HPP34T, *BR=LATCH OPEN FOR THIS PAGE 05133 MA(RWL), RAM>BR, 05134 JUMP(HPP35); ----- ----- 1E7 000107F1 0B000000 ----- 05135 .ORG HPP35, *PR=LAF INDEX 05136 *AR=RSPX 05137 MA(RSPX), RAM>AR, 05138 A(LAF0), BR.0F>B, ADD, 05139 Y>PR, 05140 JUMP(HPP35A); ----- ----- 7F1 000207F2 BD400002 ----- 05141 .ORG HPP35A, *Y=C4, A=LAFx 05142 PR>MA, RAM>AR, 05143 AR>A, B(%1000), AND, 05144 JUMP(HPP35B); ----- ----- 7F2 001207F3 00080810 ----- 05145 .ORG HPP35B, *SET OPN 05146 *C4 SET? 05147 PR>MA, 05148 AR>A, B(OPN), OR, 05149 Y>RAM, Y>AR, 05150 JZ(HPP36F,HPP36T); ----- ----- 7F3 003221E8 00101110 ----- 05151 *ERASE BIT SET, SET FLAGS TO CLEAR IN VPP 05152 .ORG HPP36F, *C4 SET 05153 *AR=LAFx 05154 PR>MA, RAM>AR, 05155 JUMP(HPP37T); ----- ----- 1E8 001201EB 00000000 ----- 05156 *ERASE BIT NOT SET. IF FIRST CAPTURE, SET FLAGS TO CLEAR IN VPP 05157 .ORG HPP36T, *C4 NOT SET 05158 *AR=LAFx 05159 PR>MA, RAM>AR, 05160 JUMP(HPP36A); ----- ----- 1E9 001207F4 00000000 ----- 05161 .ORG HPP36A, *Y=CAP 05162 AR>A, B(CAP), AND, 05163 JUMP(HPP36B); ----- ----- 7F4 000007F5 00800810 ----- 05164 .ORG HPP36B, *CAPTURED YET? 05165 *B=STOR0 05166 MA(STOR0), RAM>BR, 05167 JZ(HPP37F,HPP37T); ----- ----- 7F5 000121EA 20000000 ----- 05168 *SET CLR AND CLEAR ROW MARKERS FOR VPP 05169 .ORG HPP37T, *SET CLR IN LAFx 05170 PR>MA, 05171 AR>A, B(CLR), OR, 05172 Y>RAM, Y>AR, 05173 JUMP(HPP37A); ----- ----- 1EB 003207F6 00201110 ----- 05174 .ORG HPP37A, *PR=-8 05175 Y(-8), 05176 Y>PR, 05177 JUMP(HPP37B); ----- ----- 7F6 000007F7 80F81000 ----- 05178 .ORG HPP37B, *DR=0 05179 *SPARBY08 05180 A(0), B(0), OR, 05181 Y>DR, 05182 JUMP(HPP37C); ----- ----- 7F7 000017F8 00001000 ----- 05183 .ORG HPP37C, *PR=-9 05184 Y(-9), 05185 Y>PR, 05186 JUMP(HPP37D); ----- ----- 7F8 000007F9 80F71000 ----- 05187 .ORG HPP37D, *DR=0 05188 *SPARBY09 05189 A(0), B(0), OR, 05190 Y>DR, 05191 JUMP(HPP37E); ----- ----- 7F9 000017FA 00001000 ----- 05192 .ORG HPP37E, *PR=-10 05193 Y(-10), 05194 Y>PR, 05195 JUMP(HPP37G); ----- ----- 7FA 000007FB 80F61000 ----- 05196 .ORG HPP37G, *DR=0 05197 *SPARBY10 05198 *B=STOR0 05199 MA(STOR0), RAM>BR, 05200 A(0), B(0), OR, 05201 Y>DR, 05202 JUMP(HPP37H); ----- ----- 7FB 000117FC 20001000 ----- 05203 .ORG HPP37H, *P=-16 05204 Y(-16), 05205 Y>PR, 05206 JUMP(HPP37J); ----- ----- 7FC 000007FD 80F01000 ----- 05207 .ORG HPP37J, *CLEAR FLOF FLAGS (DR24, P27R, P24R) 05208 Y(0), 05209 Y>DR, 05210 JUMP(HPP37F); ----- ----- 7FD 000011EA 00001000 ----- 05211 *+++USER SELECTED PAGE HEADER PROCESSING 05212 * B=STOR0, A=LAFx 05213 .ORG HPP37F, *LOCAL=LAFx 05214 MA(LOCAL), 05215 AR>A, B(0), OR, 05216 Y>RAM, 05217 JUMP(HPP40); ----- ----- 1EA 000007FE 72001110 ----- 05218 .ORG HPP40, *A=LATCH OPEN FOR THIS PAGE 05219 MA(RWL), RAM>AR, 05220 JUMP(HPP40A); ----- ----- 7FE 000207FF 0B000000 ----- 05221 .ORG HPP40A, *COMPARE THIS HEADER LATCH WITH DISPLAY PAGE LATCH 05222 *A=DHREG 05223 MA(DHREG), RAM>AR, 05224 AR.0F>A, BRHI>B, XOR, 05225 JUMP(HPP41); ----- ----- 7FF 00020800 320018CC ----- 05226 .ORG HPP41, *DISPLAY PAGE? 05227 *NRH=1, 05228 MA(DHREG), 05229 AR>A, B(NRH), OR, 05230 Y>RAM, 05231 JZ(HPP42F,HPP42T); ----- ----- 800 000021EC 32101110 ----- 05232 .ORG HPP42F, *NOT THE DISPLAY PAGE 05233 *RESTORE ORIGINAL NRH AND EXIT 05234 MA(DHREG), 05235 AR>A, B(0), OR, 05236 Y>RAM, 05237 JUMP(ST0F); ----- ----- 1EC 00000001 32001110 ----- 05238 *DISPLAY PAGE 05239 .ORG HPP42T, *A=LAFx 05240 MA(LOCAL), RAM>AR, 05241 JUMP(HPP42A); ----- ----- 1ED 00020801 72000000 ----- 05242 .ORG HPP42A, *Y=CLR 05243 AR>A, B(CLR), AND, 05244 JUMP(HPP42B); ----- ----- 801 00000802 00200810 ----- 05245 .ORG HPP42B, *CLR BIT SET? 05246 *BR=CGA 05247 MA(CGA), RAM>BR, 05248 JZ(HPP43F,HPP43T); ----- ----- 802 000121EE 33000000 ----- 05249 *CLEAR PDC FLAGS 05250 .ORG HPP43F, *PDCRG1=0 05251 MA(PDCRG1), 05252 Y(0), 05253 Y>RAM, 05254 JUMP(HPP43A); ----- ----- 1EE 00000803 6C001100 ----- 05255 .ORG HPP43A, *PDCRG2=0 05256 MA(PDCRG2), 05257 Y(0), 05258 Y>RAM, 05259 JUMP(HPP43T); ----- ----- 803 000001EF 6D001100 ----- 05260 * 05261 .ORG HPP43T, *Y=HEADER UPDATE BIT 05262 *B=VPPRG2 05263 MA(VPPRG2), RAM>BR, 05264 A(%0010), BR>B, AND, 05265 JUMP(HPP44); ----- ----- 1EF 00010804 62020801 ----- 05266 .ORG HPP44, *UPDATE? 05267 *AR=VDPTXT 05268 MA(VDPTXT), RAM>AR, 05269 JZ(HPP45F,HPP45T); ----- ----- 804 000221F0 2B000000 ----- 05270 .ORG HPP45F, *C8 SET 05271 *SET C8YET 05272 MA(VDPTXT), 05273 AR>A, B(C8YET), OR, 05274 Y>RAM, 05275 JUMP(HPP45T); ----- ----- 1F0 000001F1 2B101110 ----- 05276 .ORG HPP45T, *SET DPHC TO CALL DISPLAY PAGE HEADER PROCESSING 05277 *AFTER VBI 05278 MA(VPPRG2), 05279 A(DPHC), BR>B, OR, 05280 Y>RAM, 05281 JUMP(ST0F); ----- ----- 1F1 00000001 62011101 ----- 05282 * 05283 *+++UPDATE PAGE INVENTORY 05284 * 05285 * RET2=RETURN POINTER 05286 *ENTRY POINT FROM LINE POST PROCESSING 05287 *MOVE RECEIVED PAGE TO PM,PT AND PU FOR PNTIN0 ROUTINE 05288 .ORG UPI0A, *A=RCM 05289 MA(RCM), RAM>AR, 05290 JUMP(UPI1A); ----- ----- 77A 00020805 28000000 ----- 05291 .ORG UPI1A, *PM=RCM 05292 MA(PM), 05293 AR<<4>A, B(0), OR, 05294 Y>RAM, 05295 JUMP(UPI1B); ----- ----- 805 00000806 74001130 ----- 05296 .ORG UPI1B, *A=RCT 05297 MA(RCT), RAM>AR, 05298 JUMP(UPI2); ----- ----- 806 00020807 29000000 ----- 05299 .ORG UPI2, *PT=RCT 05300 MA(PT), 05301 AR<<4>A, B(0), OR, 05302 Y>RAM, 05303 JUMP(UPI3); ----- ----- 807 00000808 75001130 ----- 05304 .ORG UPI3, *A=RCU 05305 MA(RCU), RAM>AR, 05306 JUMP(UPI4); ----- ----- 808 00020809 2A000000 ----- 05307 .ORG UPI4, *PU=RCU 05308 MA(PU), 05309 AR<<4>A, B(0), OR, 05310 Y>RAM, 05311 JUMP(UPI5); ----- ----- 809 0000080A 76001130 ----- 05312 *COMMON CODE FOR LPP AND VPP 05313 *CHECK IF FLOF BEFORE UPDATING INVENTORY PAGE 05314 .ORG UPI5, *A=SYS1 05315 MA(SYS1), RAM>AR, 05316 JUMP(UPI5A); ----- ----- 80A 0002080B 08000000 ----- 05317 .ORG UPI5A, *Y=PCM-2 05318 ARHI>A, B(-2), ADD, 05319 JUMP(UPI5B); ----- ----- 80B 0000080C 00FE0020 ----- 05320 .ORG UPI5B, *A=PM 05321 *FLOF MODE? 05322 Y(PM), 05323 Y>AR, 05324 JZ(UPI6F,UPI6T); ----- ----- 80C 002221F2 00741000 ----- 05325 .ORG UPI6T, *FLOF MODE, NO TABLE TO UPDATE, EXIT 05326 JUMP(UPI11T); ----- ----- 1F3 000001F9 00000000 ----- 05327 *NOT FLOF, CALL PNTIN0 TO RETURN INVENTORY PAGE POINTER AND BYTE 05328 .ORG UPI6F, *CALL PNTIN0 05329 *RETURN=7, RETURN TO UPI7 05330 MA(RETURN), 05331 Y(7), 05332 Y>RAM, 05333 JUMP(PNTIN0); ----- ----- 1F2 0000080D 7C071100 ----- 05334 * LAST Y WAS ERROR CODE, TPD= INV POINTER, RWL= LATCH FOR STORE 1 05335 .ORG UPI7, *Y=INCYCLE BIT 05336 *HEX PAGE? 05337 TPD>A, B(>80), AND, 05338 JZ(UPI8F,UPI8T); ----- ----- 797 000021F4 00800890 ----- 05339 .ORG UPI8F, *HEX PAGE, NO MARKER TO SET 05340 JUMP(UPI11T); ----- ----- 1F4 000001F9 00000000 ----- 05341 .ORG UPI8T, *SET INCYCLE BIT AND OR IN >30 TO MAKE IT VISIBLE 05342 *ALREADY SET? 05343 *A=INVCNT 05344 MA(INVCNT), RAM>AR, 05345 TPD>A, B(>B0), OR, 05346 Y>DCLR, 05347 JZ(UPI9F,UPI9T); ----- ----- 1F5 000231F6 38B01490 ----- 05348 .ORG UPI9T, *INCYCLE NOT SET, CLEAR INVENTORY COUNT AND EXIT 05349 *(PRESERVE 'COMPLETE' FLAG) 05350 MA(INVCNT), 05351 AR>A, B(1), AND, 05352 Y>RAM, 05353 JUMP(UPI11T); ----- ----- 1F7 000001F9 38010910 ----- 05354 .ORG UPI9F, *INCYCLE SET, Y=INVENTORY COUNT- 50 05355 *B=INVCNT 05356 MA(INVCNT), RAM>BR, 05357 AR>>1>A, B(-50), ADD, 05358 JUMP(UPI10); ----- ----- 1F6 0001080E 38CE00E0 ----- 05359 .ORG UPI10, *MAX COUNT VALUE? 05360 JZ(UPI11F,UPI11T); ----- ----- 80E 000021F8 00000000 ----- 05361 .ORG UPI11F, *COUNT NOT 50 YET, INCREMENT IT 05362 *(PRESERVE 'COMPLETE' FLAG) 05363 MA(INVCNT), 05364 A(2), BR>B, ADD, 05365 Y>RAM, 05366 JUMP(UPI11T); ----- ----- 1F8 000001F9 38020101 ----- 05367 *ENTRY POINT FROM VBI POST PROCESSING 05368 * A=THIS LATCH 05369 *COPY PAGE FOR THIS LATCH INTO PM,PT AND PU FOR PNTIN0 CALL 05370 .ORG UPI0B, *P=M0+A 05371 AR>A, B(M0), ADD, 05372 Y>PR, 05373 JUMP(UPI20); ----- ----- 85E 0000080F 80100010 ----- 05374 .ORG UPI20, *A=PAGE MAGS, P=T0+A 05375 PR>MA, RAM>AR, 05376 AR>A, B(T0), ADD, 05377 Y>PR, 05378 JUMP(UPI21); ----- ----- 80F 00120810 80180010 ----- 05379 .ORG UPI21, *PM=PAGE MAGS 05380 *B=INDEX TO TENS 05381 PR>BR, 05382 MA(PM), 05383 AR<<4>A, B(0), OR, 05384 Y>RAM, 05385 JUMP(UPI22); ----- ----- 810 00410811 74001130 ----- 05386 .ORG UPI22, *A=PAGE TENS 05387 *P=INDEX TO PAGE UNITS 05388 PR>MA, RAM>AR, 05389 A(8), BR>B, ADD, 05390 Y>PR, 05391 JUMP(UPI23); ----- ----- 811 00120812 80080001 ----- 05392 .ORG UPI23, *PT=PAGE TENS 05393 MA(PT), 05394 AR<<4>A, B(0), OR, 05395 Y>RAM, 05396 JUMP(UPI24); ----- ----- 812 00000813 75001130 ----- 05397 .ORG UPI24, *A=PAGE UNITS 05398 PR>MA, RAM>AR, 05399 JUMP(UPI25); ----- ----- 813 00120814 00000000 ----- 05400 .ORG UPI25, *PU=PAGE UNITS 05401 MA(PU), 05402 AR<<4>A, B(0), OR, 05403 Y>RAM, 05404 JUMP(UPI5); ----- ----- 814 0000080A 76001130 ----- 05405 *EXIT 05406 .ORG UPI11T, *A=RETURN POINTER 05407 MA(RET2), RAM>AR, 05408 JUMP(UPI12); ----- ----- 1F9 00020815 7B000000 ----- 05409 .ORG UPI12, *Y=RETURN POINTER 05410 *BR=STOR0 05411 MA(STOR0), RAM>BR, 05412 AR>A, B(1), AND, 05413 JUMP(UPI13); ----- ----- 815 00010816 20010810 ----- 05414 .ORG UPI13, *AR=CGB 05415 MA(CGB), RAM>AR, 05416 JZ(VPP104AF,HPP0T); ----- ----- 816 000221FA 34000000 ----- 05417 ************************************************************************ 05418 * section 3: VBI post processing * 05419 ************************************************************************ 05420 *+++DISPLAY PAGE HEADER PROCESSING 05421 * 05422 * A=POLREG 05423 .ORG VPP0, *VBIFLG=0 05424 MA(POLREG), 05425 AR>A, B(>FF-VBIFLG), AND, 05426 Y>RAM, 05427 * JUMP(VPP1); 05428 JUMP(TCJFG2F00); ----- ----- 0A3 00000817 107F0910 ----- 05429 * 05430 * TCJ June 93 05431 * Fix the Even/Odd output pin by setting the FLAG2 direction control 05432 * DDF2, dependant on the state of VDP text/mix/box. 05433 * 05434 .ORG TCJFG2F00, * Fetch BOX/MIX/TEXT bits 05435 MA(MREG2), RAM>AR, 05436 JUMP(TCJFG2F05); ----- ----- 817 00020818 6E000000 ----- 05437 * 05438 .ORG TCJFG2F05, 05439 AR>A, B(EVODD), AND, 05440 JUMP(TCJFG2F06); ----- ----- 818 00000819 00020810 ----- 05441 * 05442 .ORG TCJFG2F06, 05443 MA(VDP1), RAM>AR, 05444 JZ(TCJFG2F01F,VPP1T); ----- ----- 819 000221FC 01000000 ----- 05445 * 05446 .ORG TCJFG2F01F, * 05447 AR>A, B(BOX+MIX+TEXT), AND, 05448 Y>AR, 05449 JUMP(TCJFG2F02); ----- ----- 1FC 0022081A 00070810 ----- 05450 * 05451 .ORG TCJFG2F02, 05452 AR>A, B(TEXT), XOR, 05453 JUMP(TCJFG2F03); ----- ----- 81A 0000081B 00011810 ----- 05454 * 05455 .ORG TCJFG2F03, 05456 MA(GPIO), RAM>AR, 05457 JZ(TCJFG2F04F,TCJFG2F04T); ----- ----- 81B 000221FE 0F000000 ----- 05458 * 05459 .ORG TCJFG2F04F, * not in TEXT mode switch EVEN/ODD off 05460 MA(GPIO), 05461 AR>A, B(>DF), AND, Y>RAM, Y>IO, 05462 JUMP(VPP1T); ----- ----- 1FE 000001FD 0FDF4910 ----- 05463 * 05464 .ORG TCJFG2F04T, * in TEXT mode switch EVEN/ODD on 05465 MA(GPIO), 05466 AR>A, B(>20), OR, Y>RAM, Y>IO, 05467 JUMP(VPP1T); ----- ----- 1FF 000001FD 0F205110 ----- 05468 * 05469 .ORG VPP1T, *A=OGLCNT 05470 MA(OGLCNT), RAM>AR, 05471 JUMP(VPP2); ----- ----- 1FD 0002081C 6B000000 ----- 05472 .ORG VPP2, *STORE LINE COUNT 05473 MA(LINCNT), 05474 AR>A, B(0), OR, 05475 Y>RAM, 05476 JUMP(VPP3); ----- ----- 81C 0000081D 66001110 ----- 05477 .ORG VPP3, *INIT ON-GOING COUNT FOR NEXT VBI 05478 MA(OGLCNT), 05479 Y(0), 05480 Y>RAM, 05481 JUMP(VPP10); ----- ----- 81D 0000081E 6B001100 ----- 05482 .ORG VPP10, *A=VPPRG2 05483 MA(VPPRG2), RAM>AR, 05484 JUMP(VPP40); ----- ----- 81E 0002081F 62000000 ----- 05485 .ORG VPP40, *Y=DPHC 05486 *B=VPPRG1 05487 MA(VPPRG1), RAM>BR, 05488 AR>A, B(DPHC), AND, 05489 JUMP(VPP41); ----- ----- 81F 00010820 61010810 ----- 05490 .ORG VPP41, *DPHC=0, DPHC? 05491 *IF NOT SET, SKIP PROCESSING 05492 MA(VPPRG2), 05493 AR>A, B(>FF-DPHC), AND, 05494 Y>RAM, 05495 JZ(VPP42F,TCJVPP10T); ----- ----- 820 0000220C 62FE0910 ----- 05496 * 05497 * TCJ Nov 92 05498 * We know at this point that we have received a header for the 05499 * display page. If in alternate subpage mode, force the capture 05500 * of the next two subpages 05501 * 05502 .ORG VPP42F, *CSVDP=1 05503 * AREG = PEN, key states 05504 MA(PEN), RAM>AR, 05505 JUMP(TCJVPP00); ----- ----- 20C 00020821 1B000000 ----- 05506 * 05507 .ORG TCJVPP00, * Y = PEN - 4, to see if we are in subpage mode 05508 ARHI>A, B(-4), ADD, 05509 JUMP(TCJVPP01); ----- ----- 821 00000822 00FC0020 ----- 05510 * 05511 .ORG TCJVPP01, * Subpage mode ? 05512 MA(MREG2), RAM>AR, 05513 JN(TCJVPP02F,TCJVPP02T); ----- ----- 822 0002420E 6E000000 ----- 05514 * 05515 .ORG TCJVPP02F, * In Subpage mode 05516 * Y = SPALT 05517 AR>A, B(SPALT), AND, 05518 JUMP(TCJVPP03); ----- ----- 20E 00000823 00010810 ----- 05519 * 05520 .ORG TCJVPP03, 05521 JZ(TCJVPP04F,TCJVPP04T); ----- ----- 823 00002234 00000000 ----- 05522 * 05523 .ORG TCJVPP04F, * Call FSP0F to find STORE1 05524 * Returns to TCJVPP05.2 05525 MA(RETURN), 05526 Y(2), 05527 Y>RAM, 05528 JUMP(FSP0F); ----- ----- 234 0000030E 7C021100 ----- 05529 * 05530 .ORG TCJVPP05.2, * AR = STORE1 pointer 05531 MA(PT), RAM>AR, 05532 JUMP(TCJVPP06); ----- ----- 432 00020824 75000000 ----- 05533 * 05534 .ORG TCJVPP06, * AR = AR >> 1 05535 AR>>1>A, B(0), OR, 05536 Y>AR, 05537 JUMP(TCJVPP07); ----- ----- 824 00220825 000010E0 ----- 05538 * 05539 .ORG TCJVPP07, * Y = (AR >> 1) & 3 05540 AR>>1>A, B(3), AND, 05541 JUMP(TCJVPP08.0); ----- ----- 825 00000450 000308E0 ----- 05542 * 05543 .ORG TCJVPP08.0, 05544 JY(TCJVPP08.0); ----- ----- 450 0000C450 00000000 ----- 05545 * 05546 .ORG TCJVPP08.1, * Force a capture of Subpage latch 0 05547 MA(SPFRC), 05548 Y(FSP0), 05549 Y>RAM, 05550 JUMP(TCJVPP60); ----- ----- 451 00000826 57011100 ----- 05551 * 05552 .ORG TCJVPP08.2, * Force a capture of Subpage latch 1 05553 MA(SPFRC), 05554 Y(FSP1), 05555 Y>RAM, 05556 JUMP(TCJVPP60); ----- ----- 452 00000826 57021100 ----- 05557 * 05558 .ORG TCJVPP08.3, * Force a capture of Subpage latch 2 05559 MA(SPFRC), 05560 Y(FSP2), 05561 Y>RAM, 05562 JUMP(TCJVPP60); ----- ----- 453 00000826 57041100 ----- 05563 * 05564 .ORG TCJVPP60, * AR = STORE2 pointer 05565 MA(PU), RAM>AR, 05566 JUMP(TCJVPP61); ----- ----- 826 00020827 76000000 ----- 05567 * 05568 .ORG TCJVPP61, * AR = AR >> 1 05569 AR>>1>A, B(0), OR, 05570 Y>AR, 05571 JUMP(TCJVPP62); ----- ----- 827 00220828 000010E0 ----- 05572 * 05573 .ORG TCJVPP62, * Y = (AR >> 1) & 3 05574 AR>>1>A, B(3), AND, 05575 JUMP(TCJVPP63.0); ----- ----- 828 00000480 000308E0 ----- 05576 * 05577 .ORG TCJVPP63.0, * BR = First force flag 05578 MA(SPFRC), RAM>BR, 05579 JY(TCJVPP63.0); ----- ----- 480 0001C480 57000000 ----- 05580 * 05581 .ORG TCJVPP63.1, * Force a capture of Subpage latch 0 05582 MA(SPFRC), 05583 A(FSP0*16), BR>B, OR, 05584 Y>RAM, 05585 JUMP(TCJVPP64); ----- ----- 481 00000829 57101101 ----- 05586 * 05587 .ORG TCJVPP63.2, * Force a capture of Subpage latch 1 05588 MA(SPFRC), 05589 A(FSP1*16), BR>B, OR, 05590 Y>RAM, 05591 JUMP(TCJVPP64); ----- ----- 482 00000829 57201101 ----- 05592 * 05593 .ORG TCJVPP63.3, * Force a capture of Subpage latch 2 05594 MA(SPFRC), 05595 A(FSP2*16), BR>B, OR, 05596 Y>RAM, 05597 JUMP(TCJVPP64); ----- ----- 483 00000829 57401101 ----- 05598 * 05599 .ORG TCJVPP64, 05600 JUMP(TCJVPP02T); ----- ----- 829 0000020F 00000000 ----- 05601 * 05602 .ORG TCJVPP04T, * Not in special subpage capture 05603 JUMP(TCJVPP02T); ----- ----- 235 0000020F 00000000 ----- 05604 * 05605 .ORG TCJVPP02T, * Common exit for forced subage mode 05606 MA(VPPRG1), RAM>BR, 05607 JUMP(TCJVPP09); ----- ----- 20F 0001082A 61000000 ----- 05608 * 05609 .ORG TCJVPP09, 05610 MA(VPPRG1), 05611 A(CSVDP), BR>B, OR, 05612 Y>RAM, 05613 JUMP(VPP43); ----- ----- 82A 0000082B 61101101 ----- 05614 * 05615 .ORG VPP43, *A=STOR0 05616 MA(STOR0), RAM>AR, 05617 JUMP(VPP44); ----- ----- 82B 0002082C 20000000 ----- 05618 .ORG VPP44, *P=INDEX TO LAFx 05619 *A=VDPTXT 05620 MA(VDPTXT), RAM>AR, 05621 ARHI>A, B(LAF0), ADD, 05622 Y>PR, 05623 JUMP(VPP45); ----- ----- 82C 0002082D AB400020 ----- 05624 .ORG VPP45, *B=LAFx 05625 PR>MA, RAM>BR, 05626 JUMP(VPP46); ----- ----- 82D 0011082E 00000000 ----- 05627 .ORG VPP46, *Y=CAP 05628 A(CAP), BR>B, AND, 05629 JUMP(VPP47); ----- ----- 82E 0000082F 00800801 ----- 05630 .ORG VPP47, *Y=CLR, FIRST CAPTURE? 05631 A(CLR), BR>B, AND, 05632 JZ(VPP48F,VPP48T); ----- ----- 82F 00002236 00200801 ----- 05633 .ORG VPP48T, *FIRST CAPTURE, C8YET=1 05634 *GO AND CLEAR URVL AS WELL 05635 AR>A, B(C8YET), OR, 05636 Y>AR, 05637 JUMP(VPP49F); ----- ----- 237 00220268 00101010 ----- 05638 .ORG VPP48F, *GOING TO CLEAR IT? 05639 JZ(VPP49F,VPP49T); ----- ----- 236 00002268 00000000 ----- 05640 .ORG VPP49F, *GOING TO CLEAR, URVL=0 05641 MA(VDPTXT), 05642 AR>A, B(>FF-URVL), AND, 05643 Y>RAM, 05644 JUMP(VPP60T); ----- ----- 268 0000026B 2BF70910 ----- 05645 .ORG VPP49T, *NO CLEAR 05646 JUMP(VPP60T); ----- ----- 269 0000026B 00000000 ----- 05647 * 05648 * TCJ Nov 92 05649 * Check to see if we have captured a page and if so, is 05650 * it the one we are forceing ?. 05651 * 05652 .ORG TCJVPP10T, * AR = Forceing subpage flags 05653 MA(SPFRC), RAM>AR, 05654 JUMP(TCJVPP11); ----- ----- 20D 00020830 57000000 ----- 05655 * 05656 .ORG TCJVPP11, * Y = Flags 05657 AR>A, B(7), AND, 05658 JUMP(TCJVPP12); ----- ----- 830 00000831 00070810 ----- 05659 * 05660 .ORG TCJVPP12, 05661 JY(TCJVPP13.0); ----- ----- 831 0000C7D0 00000000 ----- 05662 * 05663 .ORG TCJVPP13.0, * No subpage forced 05664 JUMP(VPP60T); ----- ----- 7D0 0000026B 00000000 ----- 05665 * 05666 .ORG TCJVPP13.1, * Forcing capture of Subpage 0 05667 MA(LFSP0), RAM>AR, 05668 JUMP(TCJVPP21); ----- ----- 7D1 00020832 48000000 ----- 05669 * 05670 .ORG TCJVPP21, * STORE = Pointer to subpage number 05671 MA(STORE), 05672 Y(SP0I), 05673 Y>RAM, 05674 JUMP(TCJVPP14); ----- ----- 832 00000833 77481100 ----- 05675 * 05676 .ORG TCJVPP13.2, * Forcing capture of Subpage 1 05677 * Fetch pointer to page latch flags 05678 MA(LFSP1), RAM>AR, 05679 JUMP(TCJVPP22); ----- ----- 7D2 00020834 49000000 ----- 05680 * 05681 .ORG TCJVPP22, * STORE = Pointer to subpage number 05682 MA(STORE), 05683 Y(SP1I), 05684 Y>RAM, 05685 JUMP(TCJVPP14); ----- ----- 834 00000833 774C1100 ----- 05686 * 05687 .ORG TCJVPP13.3, 05688 JUMP(VPP60T); ----- ----- 7D3 0000026B 00000000 ----- 05689 * 05690 .ORG TCJVPP13.4, * Forcing capture of Subpage 2 05691 MA(LFSP2), RAM>AR, 05692 JUMP(TCJVPP23); ----- ----- 7D4 00020835 4A000000 ----- 05693 * 05694 .ORG TCJVPP23, * STORE = Pointer to subpage number 05695 MA(STORE), 05696 Y(SP2I), 05697 Y>RAM, 05698 JUMP(TCJVPP14); ----- ----- 835 00000833 77501100 ----- 05699 * 05700 .ORG TCJVPP13.5, 05701 JUMP(VPP60T); ----- ----- 7D5 0000026B 00000000 ----- 05702 * 05703 .ORG TCJVPP13.6, 05704 JUMP(VPP60T); ----- ----- 7D6 0000026B 00000000 ----- 05705 * 05706 .ORG TCJVPP13.7, 05707 JUMP(VPP60T); ----- ----- 7D7 0000026B 00000000 ----- 05708 * 05709 * TCJ Dec 92 05710 * We have a pointer to the subpage we are forcing capture. 05711 * See if we have captured it, and if so sort out the mess. 05712 * with the subpage numbers. 05713 * 05714 .ORG TCJVPP14, * PR = Subpage latch pointer 05715 AR.0F>A, B(LAF0), ADD, 05716 Y>PR, 05717 JUMP(TCJVPP15); ----- ----- 833 00000836 804000C0 ----- 05718 * 05719 .ORG TCJVPP15, * BR = *(PR+LAF0), Fetch the flag for the subpage latch 05720 PR>MA, RAM>BR, 05721 JUMP(TCJVPP16); ----- ----- 836 00110837 00000000 ----- 05722 * 05723 .ORG TCJVPP16, * Y = Flag && VBICAP, have we just captured 05724 * the forced subpage. 05725 A(VBICAP), BR>B, AND, 05726 JUMP(TCJVPP17); ----- ----- 837 00000838 00400801 ----- 05727 * 05728 .ORG TCJVPP17, * RWL = Subpage store 05729 MA(RWL), 05730 AR.0F>A, B(0), OR, 05731 Y>RAM, Y>IO, 05732 JZ(TCJVPP24F,VPP60T); ----- ----- 838 0000226A 0B0051C0 ----- 05733 * 05734 .ORG TCJVPP24F, * BR = Pointer to subpage latch 05735 * PR = Pointer to number in page store 05736 MA(STORE), RAM>BR, 05737 A(-15), B(-15), OR, 05738 Y>PR, 05739 JUMP(TCJVPP25); ----- ----- 26A 00010839 F7F11000 ----- 05740 * 05741 .ORG TCJVPP25, * TDP = subpage tens and units 05742 * PR = Pointer to subpage latch units 05743 RVDP, 05744 JUMP(TCJVPP25A); ----- ----- 839 0000083A 00008000 ----- 05745 * 05746 .ORG TCJVPP25A, 05747 TPD>A, B(0), OR, 05748 Y>AR, 05749 JUMP(TCJVPP26); ----- ----- 83A 0022083B 00001090 ----- 05750 * 05751 .ORG TCJVPP26, 05752 A(0), BR>B, ADD, 05753 Y>PR, 05754 JUMP(TCJVPP27); ----- ----- 83B 0000083C 80000001 ----- 05755 * 05756 .ORG TCJVPP27, * BR = Old latch value 05757 PR>MA, RAM>BR, 05758 JUMP(TCJVPP28); ----- ----- 83C 0011083D 00000000 ----- 05759 * 05760 .ORG TCJVPP28, * SPxI = New subpage units 05761 PR>MA, 05762 AR<<4>A, BR.0F>B, OR, 05763 Y>RAM, 05764 PR>BR, 05765 JUMP(TCJVPP29); ----- ----- 83D 0051083E 00001132 ----- 05766 * 05767 .ORG TCJVPP29, * PR = Pointer to subpage latch tens 05768 BR>B, A(1), ADD, 05769 Y>PR, 05770 JUMP(TCJVPP30); ----- ----- 83E 0000083F 80010001 ----- 05771 * 05772 .ORG TCJVPP30, * BR = Old latch value 05773 * AR = AR & 0x70, remove C4 bit 05774 PR>MA, RAM>BR, 05775 AR.F0>A, B(>70), AND, 05776 Y>AR, 05777 JUMP(TCJVPP31); ----- ----- 83F 00330840 007008D0 ----- 05778 * 05779 .ORG TCJVPP31, * SPxX = Subpage number tens 05780 PR>MA, 05781 AR.F0>A, BR.0F>B, OR, 05782 Y>RAM, 05783 PR>BR, 05784 JUMP(TCJVPP32); ----- ----- 840 00510841 000011D2 ----- 05785 * 05786 .ORG TCJVPP32, * PR = pointer to subpage hundreds and thousands 05787 A(-14), B(-14), OR, 05788 Y>PR, 05789 JUMP(TCJVPP33); ----- ----- 841 00000842 80F21000 ----- 05790 * 05791 .ORG TCJVPP33, * TDP = subpage hundreds and thousands 05792 * PR = Pointer the subpage latch hundreds 05793 RVDP, 05794 JUMP(TCJVPP33A); ----- ----- 842 00000843 00008000 ----- 05795 * 05796 .ORG TCJVPP33A, 05797 BR>B, A(1), ADD, 05798 Y>PR, 05799 JUMP(TCJVPP34); ----- ----- 843 00000844 80010001 ----- 05800 * 05801 .ORG TCJVPP34, * AR = subpage hundreds and thousands 05802 TPD>A, B(0), OR, 05803 Y>AR, 05804 JUMP(TCJVPP35); ----- ----- 844 00220845 00001090 ----- 05805 * 05806 .ORG TCJVPP35, * BR = Old latch hundreds value 05807 PR>MA, RAM>BR, 05808 JUMP(TCJVPP36); ----- ----- 845 00110846 00000000 ----- 05809 * 05810 .ORG TCJVPP36, * SPxC = New subpage hundreds 05811 PR>MA, 05812 AR<<4>A, BR.0F>B, OR, 05813 Y>RAM, 05814 PR>BR, 05815 JUMP(TCJVPP37); ----- ----- 846 00510847 00001132 ----- 05816 * 05817 .ORG TCJVPP37, * PR = pointer to subpage latch thousands 05818 BR>B, A(1), ADD, 05819 Y>PR, 05820 JUMP(TCJVPP38); ----- ----- 847 00000848 80010001 ----- 05821 * 05822 .ORG TCJVPP38, * SPxM = New subpage thousands 05823 AR.F0>A, B(>30), AND, 05824 Y>RAM, 05825 JUMP(TCJVPP40); ----- ----- 848 00000849 003009D0 ----- 05826 * 05827 .ORG TCJVPP40, * BR = forceing flag 05828 MA(SPFRC), RAM>BR, 05829 JUMP(TCJVPP41); ----- ----- 849 0001084A 57000000 ----- 05830 * 05831 .ORG TCJVPP41, * Set up for next flag value 05832 MA(SPFRC), 05833 A(>0F), BR>>4>B, AND, 05834 Y>RAM, 05835 JUMP(VPP60T); ----- ----- 84A 0000026B 570F0904 ----- 05836 * 05837 *+++MAINTAIN TIME OUT 05838 .ORG VPP60T, *A=TIMOUT 05839 MA(TIMOUT), RAM>AR, 05840 JUMP(VPP61); ----- ----- 26B 0002084B 3B000000 ----- 05841 .ORG VPP61, *Y=TIMOUT 05842 AR>A, B(0), OR, 05843 JUMP(VPP62); ----- ----- 84B 0000084C 00001010 ----- 05844 .ORG VPP62, *TIME OUT ACTIVE? 05845 *IF NOT, EXIT 05846 *B=VPPRG1 05847 MA(VPPRG1), RAM>BR, 05848 JZ(VPP63F,VPP100T); ----- ----- 84C 0001226C 61000000 ----- 05849 .ORG VPP63F, *ACTIVE TIME OUT, DECREMENT COUNT 05850 MA(TIMOUT), 05851 AR>A, B(-1), ADD, 05852 Y>RAM, 05853 JUMP(VPP64); ----- ----- 26C 0000084D 3BFF0110 ----- 05854 .ORG VPP64, *COUNT COMPLETE? 05855 *A=DHREG 05856 MA(DHREG), RAM>AR, 05857 JZ(VPP65F,VPP65T); ----- ----- 84D 0002226E 32000000 ----- 05858 .ORG VPP65F, *NO, EXIT 05859 JUMP(VPP100T); ----- ----- 26E 0000026D 00000000 ----- 05860 .ORG VPP65T, *COUNT COMPLETE 05861 *RE-ENABLE HEADERS AND REMOVE TIMED OUT DISPLAY 05862 MA(DHREG), 05863 AR>A, B(>FF-POOCD-TOD), AND, 05864 Y>RAM, 05865 JUMP(VPP66); ----- ----- 26F 0000084E 32D70910 ----- 05866 .ORG VPP66, *CALL SVDP TO UPDATE PAGE NUMBER 05867 *CSVDP=1 05868 MA(VPPRG1), 05869 A(CSVDP), BR>B, OR, 05870 Y>RAM, 05871 JUMP(VPP100T); ----- ----- 84E 0000026D 61101101 ----- 05872 *+++VBICAP, CAP AND CLEAR PROCESSING 05873 * 05874 .ORG VPP100T, *INIT INDEX OFFSET FOR LAFx LOOP 05875 *COUNT=AR=7 05876 MA(COUNT), 05877 A(7), B(7), OR, 05878 Y>RAM, Y>AR, 05879 JUMP(VPP111); ----- ----- 26D 0022084F 78071100 ----- 05880 * 05881 .ORG VPP111, *PR=LAFx INDEX, COUNT<0? 05882 AR>A, B(LAF0), ADD, 05883 Y>PR, 05884 JN(VPP101F,VPP230T); ----- ----- 84F 00004274 80400010 ----- 05885 *CLR PROCESSING 05886 * for each LAFx:- 05887 * if (CLR==1) {CLR=0, clear page} 05888 .ORG VPP101F, *BR=LAFx 05889 PR>MA, RAM>BR, 05890 JUMP(VPP200A); ----- ----- 274 00110850 00000000 ----- 05891 .ORG VPP200A, *LAFR= LAFx 05892 MA(LAFR), 05893 A(0), BR>B, OR, 05894 Y>RAM, 05895 JUMP(VPP200B); ----- ----- 850 00000851 35001101 ----- 05896 .ORG VPP200B, *RWL=COUNT 05897 MA(RWL), 05898 AR>A, B(0), ADD, 05899 Y>RAM, Y>IO, 05900 JUMP(VPP200C); ----- ----- 851 00000852 0B004110 ----- 05901 .ORG VPP200C, *Y=CLR 05902 A(CLR), BR>B, AND, 05903 JUMP(VPP201); ----- ----- 852 00000853 00200801 ----- 05904 .ORG VPP201, *CLR=0, CLR? 05905 *IF NO, SKIP CLEAR 05906 PR>MA, 05907 A(>FF-CLR), BR>B, AND, 05908 Y>RAM, 05909 JZ(VPP202F,VPP202T); ----- ----- 853 00102276 00DF0901 ----- 05910 *CLEAR THIS PAGE 05911 .ORG VPP202F, *RETURN=0 05912 MA(RETURN), 05913 Y(0), 05914 Y>RAM, 05915 JUMP(VPP203); ----- ----- 276 00000854 7C001100 ----- 05916 .ORG VPP203, *USE THISRW FOR ROW LOOP 05917 *AR=THISRW=23 05918 *CALL MASK0 05919 *RETURN=0, RETURN TO VPP215Y 05920 MA(THISRW), 05921 Y(23), 05922 Y>RAM, Y>AR, 05923 JUMP(MASK0); ----- ----- 854 0022077B 7D171100 ----- 05924 *START OF ROW CLEAR LOOP 05925 .ORG VPP215Y, *Y=MARKER BYTE FOR THIS ROW 05926 *AR=THISRW 05927 MA(THISRW), RAM>AR, 05928 AR>A, BR>B, AND, 05929 JUMP(VPP216); ----- ----- 0E0 00020855 7D000811 ----- 05930 .ORG VPP216, *CLEAR THIS ROW? 05931 *PR=AR*40, POINT TO FIRST BYTE ON ROW 05932 *A=LAFx 05933 MA(LAFR), RAM>AR, 05934 AR<<3>A, AR<<5>B, ADD, 05935 Y>PR, 05936 JZ(VPP217F,VPP217T); ----- ----- 855 00022278 B5000059 ----- 05937 .ORG VPP217F, *NO, SKIP CLEAR 05938 *AR=THISRW 05939 MA(THISRW), RAM>AR, 05940 JUMP(VPP223T); ----- ----- 278 00020281 7D000000 ----- 05941 *CLEAR THIS ROW, LEAVE MARKED PACKET 26 CHARACTERS 05942 * A=LAFx 05943 .ORG VPP217T, *Y=BTTL 05944 AR>A, B(BTTL), AND, 05945 JUMP(VPP217A); ----- ----- 279 00000856 00020810 ----- 05946 .ORG VPP217A, *USE STORE FOR LOOP COUNT 05947 *INIT LOOP COUNT 05948 *IS THIS LATCH SET TO RECEIVE A BTT? 05949 MA(STORE), 05950 A(40), B(40), OR, 05951 Y>RAM, 05952 JZ(VPP218F,VPP218T); ----- ----- 856 0000227A 77281100 ----- 05953 *CLEAR A BTT ROW (DO NOT OVERWRITE THE PAGE INVENTORY) 05954 .ORG VPP218F, *AR= LOOP, TPD=EXISTING BYTE 05955 RVDP, 05956 MA(STORE), RAM>AR, 05957 JUMP(VPP218A); ----- ----- 27A 00020857 77008000 ----- 05958 .ORG VPP218A, *DEC LOOP 05959 MA(STORE), 05960 AR>A, B(-1), ADD, 05961 Y>RAM, 05962 JUMP(VPP218B); ----- ----- 857 00000858 77FF0110 ----- 05963 .ORG VPP218B, *CLEAR BTT NIBBLE ONLY 05964 *LAST BYTE? 05965 *B=COLUMN POINTER 05966 PR>BR, 05967 TPD.F0>A, B(0), OR, 05968 Y>DCLR, 05969 JZ(VPP218CF,VPP218CT); ----- ----- 858 0041327C 000014B0 ----- 05970 .ORG VPP218CF, *MORE BYTES 05971 *PR++ 05972 A(1), BR>B, ADD, 05973 Y>PR, 05974 JUMP(VPP218F); ----- ----- 27C 0000027A 80010001 ----- 05975 * 05976 .ORG VPP218CT, *COMPLETED CLEARING BTT ROW 05977 *AR=THISRW 05978 MA(THISRW), RAM>AR, 05979 JUMP(VPP223T); ----- ----- 27D 00020281 7D000000 ----- 05980 *CLEAR AN ORDINARY ROW 05981 .ORG VPP218T, *READ TELETEXT MEMORY WITH 9TH BIT 05982 *AR=STORE 05983 MA(STORE), RAM>AR, 05984 BIT8, 05985 RVDP, 05986 JUMP(VPP220); ----- ----- 27B 00020859 77009400 ----- 05987 .ORG VPP220, *Y=TELETEXT DATA WITH 9TH BIT 05988 TPD>A, B(0), ADD, 05989 JUMP(VPP221); ----- ----- 859 0000085A 00000090 ----- 05990 .ORG VPP221, *LOOP COUNT-- 05991 *9TH BIT SET? 05992 MA(STORE), 05993 AR>A, B(-1), ADD, 05994 Y>RAM, 05995 JN(VPP222F,VPP222T); ----- ----- 85A 0000427E 77FF0110 ----- 05996 .ORG VPP222F, *9TH BIT NOT SET, CLEAR THE BYTE 05997 *DR=>20 05998 *LAST BYTE? 05999 *BR=PR 06000 *AR=THISRW 06001 MA(THISRW), RAM>AR, 06002 PR>BR, 06003 A(>20), B(>20), OR, 06004 Y>DR, 06005 JZ(VPP223F,VPP223T); ----- ----- 27E 00433280 7D201000 ----- 06006 .ORG VPP222T, *9TH BIT SET, LEAVE THE BYTE 06007 *LAST BYTE? 06008 *BR=PR 06009 *AR=THISRW 06010 MA(THISRW), RAM>AR, 06011 PR>BR, 06012 JZ(VPP223F,VPP223T); ----- ----- 27F 00432280 7D000000 ----- 06013 .ORG VPP223F, *MORE BYTES 06014 *PR++ 06015 A(1), BR>B, ADD, 06016 Y>PR, 06017 JUMP(VPP218T); ----- ----- 280 0000027B 80010001 ----- 06018 *LAST ROW? 06019 * AR=THISRW 06020 .ORG VPP223T, *THISRW-- 06021 MA(THISRW), 06022 AR>A, B(-1), ADD, 06023 Y>RAM, 06024 JUMP(VPP224); ----- ----- 281 0000085B 7DFF0110 ----- 06025 .ORG VPP224, *CLEARED ALL ROWS? 06026 *THISRW==0? 06027 *AR=COUNT 06028 MA(COUNT), RAM>AR, 06029 JZ(VPP225F,VPP225T); ----- ----- 85B 00022282 78000000 ----- 06030 .ORG VPP225F, *CALL MASK0 AND RETURN FOR NEXT ROW 06031 *RETURN=0, RETURN TO VPP215Y 06032 *AR=THISRW 06033 MA(THISRW), RAM>AR, 06034 JUMP(MASK0); ----- ----- 282 0002077B 7D000000 ----- 06035 * 06036 .ORG VPP225T, *PR=LAFx INDEX 06037 AR>A, B(LAF0), ADD, 06038 Y>PR, 06039 JUMP(VPP202T); ----- ----- 283 00000277 80400010 ----- 06040 *LAFx PROCESSING 06041 * PR=LAFx INDEX 06042 .ORG VPP202T, *BR=LAFx 06043 PR>MA, RAM>BR, 06044 JUMP(VPP102); ----- ----- 277 0011085C 00000000 ----- 06045 .ORG VPP102, *Y=VBICAP 06046 *AR=COUNT 06047 MA(COUNT), RAM>AR, 06048 A(VBICAP), BR>B, AND, 06049 JUMP(VPP103); ----- ----- 85C 0002085D 78400801 ----- 06050 .ORG VPP103, *VBICAP=0, VBICAP? 06051 PR>MA, 06052 A(>FF-VBICAP), BR>B, AND, 06053 Y>RAM, 06054 JZ(VPP104F,VPP104T); ----- ----- 85D 00102284 00BF0901 ----- 06055 *VBICAP SET, PROCESS PAGE CAPTURED DURING LAST VBI 06056 * 06057 * First update inventory table. There is not enough time to do 06058 * this in LPP for pages which are in a latch. 06059 * 06060 .ORG VPP104F, *CALL UPI0B TO UPDATE PAGE INVENTORY 06061 *RET2=1, RETURN TO VPP104AF 06062 *A=THIS LATCH 06063 MA(RET2), 06064 Y(1), 06065 Y>RAM, 06066 JUMP(UPI0B); ----- ----- 284 0000085E 7B011100 ----- 06067 * B= STOR0 06068 .ORG VPP104AF, *A=THIS LATCH 06069 MA(COUNT), RAM>AR, 06070 JUMP(VPP104B); ----- ----- 1FA 0002085F 78000000 ----- 06071 .ORG VPP104B, *PR=LAFx INDEX 06072 AR>A, B(LAF0), ADD, 06073 Y>PR, 06074 JUMP(VPP104C); ----- ----- 85F 00000860 80400010 ----- 06075 .ORG VPP104C, *Y=THIS LATCH XOR DISPLAY LATCH 06076 *A=LAFx 06077 PR>MA, RAM>AR, 06078 AR>A, BRHI>B, XOR, 06079 JUMP(VPP105); ----- ----- 860 00120861 0000181C ----- 06080 .ORG VPP105, *JUST CAPTURED DISPLAY PAGE? 06081 *B=SYS1 06082 MA(SYS1), RAM>BR, 06083 JZ(VPP105AF,VPP105AT); ----- ----- 861 00012286 08000000 ----- 06084 *JUST CAPTURED THE DISPLAY PAGE 06085 .ORG VPP105AT, *Y=PCM-2 06086 *B=VPPRG1 06087 MA(VPPRG1), RAM>BR, 06088 A(-2), BRHI>B, ADD, 06089 JUMP(VPP105AA); ----- ----- 287 00010862 61FE000C ----- 06090 .ORG VPP105AA, *Y=CAP 06091 *FLOF MODE? 06092 *A=VPPRG2 06093 MA(VPPRG2), RAM>AR, 06094 AR>A, B(CAP), AND, 06095 JZ(VPP106F,VPP106T); ----- ----- 862 00022288 62800810 ----- 06096 .ORG VPP106T, *FLOF MODE, SORT BACKGROUND LATCHES 06097 *SBL=1, CSVDP=1 06098 *FIRST CAPTURE? 06099 MA(VPPRG1), 06100 A(SBL+CSVDP), BR>B, OR, 06101 Y>RAM, 06102 JZ(VPP106AF,VPP106AT); ----- ----- 289 0000228A 61901101 ----- 06103 .ORG VPP106F, *NOT FLOF MODE 06104 *CSVDP=1 06105 *FIRST CAPTURE? 06106 MA(VPPRG1), 06107 A(CSVDP), BR>B, OR, 06108 Y>RAM, 06109 JZ(VPP106AF,VPP106AT); ----- ----- 288 0000228A 61101101 ----- 06110 *FIRST CAPTURE 06111 .ORG VPP106AT, *SET DPC AND DPFC 06112 MA(VPPRG2), 06113 AR>A, B(DPC+DPFC), OR, 06114 Y>RAM, 06115 JUMP(VPP105AF); ----- ----- 28B 00000286 62121110 ----- 06116 *NOT FIRST CAPTURE 06117 .ORG VPP106AF, *SET DPC ONLY 06118 MA(VPPRG2), 06119 AR>A, B(DPC), OR, 06120 Y>RAM, 06121 JUMP(VPP105AF); ----- ----- 28A 00000286 62021110 ----- 06122 *LAFx PROCESSING 06123 .ORG VPP105AF, *A=LAFx 06124 PR>MA, RAM>AR, 06125 JUMP(VPP105AB); ----- ----- 286 00120863 00000000 ----- 06126 .ORG VPP105AB, *CAP=1 06127 PR>MA, 06128 AR>A, B(CAP), OR, 06129 Y>RAM, Y>AR, 06130 JUMP(VPP107A); ----- ----- 863 00320864 00801110 ----- 06131 .ORG VPP107A, *Y=AITL+BTTL 06132 *B=AITCNT 06133 MA(AITCNT), RAM>BR, 06134 AR>A, B(AITL+BTTL), AND, 06135 JUMP(VPP107B); ----- ----- 864 00010865 4C030810 ----- 06136 .ORG VPP107B, *Y=BTTL, A=TOPRG1 06137 *CAPTURED A TOP TABLE? 06138 MA(TOPRG1), RAM>AR, 06139 AR>A, B(BTTL), AND, 06140 JZ(VPP107CF,VPP107CT); ----- ----- 865 0002228C 37020810 ----- 06141 .ORG VPP107CF, *CAPTURED A TOP TABLE 06142 *Y=AITCNT 06143 *BTTL? 06144 A(0), BR.0F>B, OR, 06145 JZ(VPP107DF,VPP107DT); ----- ----- 28C 0000228E 00001002 ----- 06146 *CAPTURED A BTT 06147 .ORG VPP107DF, *CAPTURED A BTT 06148 *BTTP=1, BTTCAP=1 06149 MA(TOPRG1), 06150 AR>A, B(BTTP+BTTCAP), OR, 06151 Y>RAM, 06152 JUMP(VPP107DA); ----- ----- 28E 00000866 37601110 ----- 06153 .ORG VPP107DA, *A=STSWD0 06154 MA(STSWD0), RAM>AR, 06155 JUMP(VPP107DB); ----- ----- 866 00020867 64000000 ----- 06156 .ORG VPP107DB, *TFLG=1 06157 MA(STSWD0), 06158 AR>A, B(TFLG), OR, 06159 Y>RAM, 06160 JUMP(VPP107CT); ----- ----- 867 0000028D 64801110 ----- 06161 *CAPTURED AN AIT 06162 .ORG VPP107DT, *A=EXPREG, AITCNT=0? 06163 MA(EXPREG), RAM>AR, 06164 JZ(VPP107EF,VPP107ET); ----- ----- 28F 00022296 63000000 ----- 06165 .ORG VPP107EF, *AITCNT<>0, WAIT FOR ALL AITS BEFORE GENERATING A PROMPT 06166 *AITCNT-- 06167 MA(AITCNT), 06168 A(-1), BR>B, ADD, 06169 Y>RAM, 06170 JUMP(VPP107CT); ----- ----- 296 0000028D 4CFF0101 ----- 06171 .ORG VPP107ET, *OK TO GENERATE A PROMPT 06172 MA(EXPREG), 06173 AR>A, B(CGAP), OR, 06174 Y>RAM, 06175 JUMP(VPP107CT); ----- ----- 297 0000028D 63081110 ----- 06176 *CLEAR PACKET 26 MARKERS 06177 .ORG VPP107CT, *P=-24 06178 *A=THIS LATCH 06179 MA(COUNT), RAM>AR, 06180 Y(-24), 06181 Y>PR, 06182 JUMP(VPP107E); ----- ----- 28D 00020868 F8E81000 ----- 06183 .ORG VPP107E, *B=-24 06184 *RWL= THIS LATCH 06185 PR>BR, 06186 MA(RWL), 06187 AR>A, B(0), OR, 06188 Y>RAM, Y>IO, 06189 JUMP(VPP110); ----- ----- 868 00410869 0B005110 ----- 06190 *LOOP START 06191 .ORG VPP110, *PR=BR-1 06192 A(-1), BR>B, ADD, 06193 Y>PR, 06194 JUMP(VPP108); ----- ----- 869 0000086A 80FF0001 ----- 06195 .ORG VPP108, *FINISHED? 06196 *READ MEMORY 06197 RVDP, 06198 JZ(VPP109F,VPP109T); ----- ----- 86A 0000229A 00008000 ----- 06199 .ORG VPP109F, *NOT YET 06200 *WRITE BACK TO MEMORY 06201 *CLEAR P26 MARKER 06202 PR>BR, 06203 TPD>A, B(0), OR, 06204 Y>DCLR, 06205 JUMP(VPP110); ----- ----- 29A 00411869 00001490 ----- 06206 * 06207 .ORG VPP109T, *LAST LOC 06208 *WRITE BACK TO MEMORY 06209 *AR=COUNT 06210 MA(COUNT), RAM>AR, 06211 TPD>A, B(0), OR, 06212 Y>DCLR, 06213 JUMP(VPP104T); ----- ----- 29B 00021285 78001490 ----- 06214 *BACK TO LAFx LOOP 06215 * AR=COUNT 06216 .ORG VPP104T, *COUNT--, AR-- 06217 MA(COUNT), 06218 AR>A, B(-1), ADD, 06219 Y>RAM, Y>AR, 06220 JUMP(VPP111); ----- ----- 285 0022084F 78FF0110 ----- 06221 * 06222 *END OF VBICAP, CAP AND CLEAR PROCESSING 06223 * 06224 * 06225 *+++TOP POST PROCESSING 06226 * 06227 .ORG TPP0, *A=TOPRG1 06228 MA(TOPRG1), RAM>AR, 06229 JUMP(TPP14); ----- ----- 622 0002086B 37000000 ----- 06230 .ORG TPP14, *Y=BTTUP 06231 AR>A, B(BTTUP), AND, 06232 JUMP(TPP20); ----- ----- 86B 0000086C 00100810 ----- 06233 .ORG TPP20, *BTTUP? 06234 *BTTP=0 06235 MA(TOPRG1), 06236 AR>A, B(>FF-BTTP), AND, 06237 Y>RAM, Y>AR, 06238 JZ(TPP21F,TPP21T); ----- ----- 86C 0022229C 37DF0910 ----- 06239 * BTT UPDATED, INITIALISE AIT LATCHES 06240 .ORG TPP21F, *INIT LOOP VARIABLE 06241 *COUNT=0 06242 MA(COUNT), 06243 Y(0), 06244 Y>RAM, 06245 JUMP(TPP30Y); ----- ----- 29C 00000648 78001100 ----- 06246 * 06247 *^^^ start of fix for single AITs 06248 * 06249 .ORG TPP21A, *P=INDEX TO STORx MAGS 06250 A(M0), BRHI>B, ADD, 06251 Y>PR, 06252 JUMP(TPP21AA); ----- ----- 873 0000086D 8010000C ----- 06253 .ORG TPP21AA, *A=STORx MAGS 06254 PR>MA, RAM>AR, 06255 JUMP(TPP21AB); ----- ----- 86D 0012086E 00000000 ----- 06256 .ORG TPP21AB, *SET NULL MAGS (IN CASE AIT NOT FOUND IN TABLE) 06257 PR>MA, 06258 AR>A, B(>0F), OR, 06259 Y>RAM, Y>IO, 06260 JUMP(TPP21AC); ----- ----- 86E 0010086F 000F5110 ----- 06261 .ORG TPP21AC, *P=INDEX TO STORx LATCH 06262 *A=COUNT 06263 MA(COUNT), RAM>AR, 06264 A(LAF0), BRHI>B, ADD, 06265 Y>PR, 06266 JUMP(TPP21B); ----- ----- 86F 00020870 F840000C ----- 06267 * 06268 *^^^ end of fix for single AITs 06269 * 06270 *SET LATCH FLAGS IN STORES 2 AND 3 06271 .ORG TPP21B, *CAP=VBICAP=CLR=OPN=MPG=BTTL=0 06272 *AITL=1 06273 *INIT LAFx 06274 PR>MA, 06275 Y(AITL), 06276 Y>RAM, 06277 JUMP(TPP22); ----- ----- 870 00100871 00011100 ----- 06278 .ORG TPP22, *COUNT++ 06279 MA(COUNT), 06280 AR>A, B(1), ADD, 06281 Y>RAM, 06282 JUMP(TPP29); ----- ----- 871 00000872 78010110 ----- 06283 .ORG TPP29, *CASE LOOP? 06284 *B=SCREEN 06285 MA(SCREEN), RAM>BR, 06286 JY(TPP30Y); ----- ----- 872 0001C648 60000000 ----- 06287 .ORG TPP30Y, *B=STOR2 06288 MA(STOR2), RAM>BR, 06289 JUMP(TPP21A); ----- ----- 648 00010873 22000000 ----- 06290 .ORG TPP31, *B=STOR3 06291 MA(STOR3), RAM>BR, 06292 JUMP(TPP21A); ----- ----- 649 00010873 23000000 ----- 06293 .ORG TPP32, *Y=MENM 06294 *A=VPPRG1 06295 MA(VPPRG1), RAM>AR, 06296 A(MENM), BR>B, AND, 06297 JUMP(TPP32A); ----- ----- 64A 00020874 61080801 ----- 06298 .ORG TPP32A, *B=STOR7 06299 *MENU MODE? 06300 MA(STOR7), RAM>BR, 06301 JZ(TPP21BF,TPP21BT); ----- ----- 874 0001229E 27000000 ----- 06302 .ORG TPP21BT, *NOT MENU MODE 06303 *P=INDEX TO STOR7 LATCH 06304 A(LAF0), BRHI>B, ADD, 06305 Y>PR, 06306 JUMP(TPP21C); ----- ----- 29F 00000875 8040000C ----- 06307 .ORG TPP21C, *INIT STOR7 06308 *CAP=VBICAP=CLR=OPN=MPG=AITL=BTTL=0 06309 *THIS STORE ONLY SET FOR AN AIT 06310 *IF A THIRD AIT IS PRESENT IN THE BTT 06311 *INIT LAFx 06312 PR>MA, 06313 Y(0), 06314 Y>RAM, 06315 JUMP(TPP33); ----- ----- 875 0010064B 00001100 ----- 06316 * 06317 .ORG TPP21BF, *MENU MODE, EXIT 06318 *SORT BACKGROUND LATCHES 06319 *SBL=1 06320 MA(VPPRG1), 06321 AR>A, B(SBL), OR, 06322 Y>RAM, 06323 JUMP(TPP21T); ----- ----- 29E 0000029D 61801110 ----- 06324 * 06325 .ORG TPP33, *CASE EXIT 06326 *A=VPPRG1 06327 MA(VPPRG1), RAM>AR, 06328 JUMP(TPP21BF); ----- ----- 64B 0002029E 61000000 ----- 06329 * 06330 *LOAD LATCHES FROM PLT 06331 * 06332 .ORG TPP21T, *COUNT=0 06333 *CALL INSPRG0 TO INIT SUB-PAGE LATCHES 06334 *A=0, RETURN TO TPP50Y 06335 MA(COUNT), 06336 Y(0), 06337 Y>RAM, Y>AR, 06338 JUMP(INSPRG0); ----- ----- 29D 00220876 78001100 ----- 06339 .ORG TPP50Y, *BR=STOR1 06340 MA(STOR1), RAM>BR, 06341 JUMP(TPP51); ----- ----- 6B0 00010877 21000000 ----- 06342 .ORG TPP51, *RWL=BTT LATCH 06343 MA(RWL), 06344 A(0), BRHI>B, OR, 06345 Y>RAM, Y>IO, 06346 JUMP(TPP52); ----- ----- 877 00000878 0B00510C ----- 06347 .ORG TPP52, *INIT OFFSET 06348 MA(THISRW), 06349 Y(-80), 06350 Y>RAM, Y>AR, 06351 JUMP(TPP60F); ----- ----- 878 002202B8 7DB01100 ----- 06352 *PROCESS A PLT FIELD 06353 * A=THISRW 06354 .ORG TPP60F, *POINT TO THIS FIELD 06355 AR>A, B(-104), ADD, 06356 Y>PR, 06357 JUMP(TPP60A); ----- ----- 2B8 00000879 80980010 ----- 06358 .ORG TPP60A, *TPD=MAG BYTE 06359 *P=POINTER 06360 PR>BR, 06361 RVDP, 06362 JUMP(TPP61); ----- ----- 879 0041087A 00008000 ----- 06363 .ORG TPP61, *Y=MAG BYTE-9 06364 TPD.0F>A, B(-9), ADD, 06365 JUMP(TPP62); ----- ----- 87A 0000087B 00F700A0 ----- 06366 .ORG TPP62, *MAG>8? 06367 *Y=MAG-8 06368 TPD.0F>A, B(-8), ADD, 06369 JN(TPP63F,TPP63T); ----- ----- 87B 000042A0 00F800A0 ----- 06370 *MAG IS IN RANGE 9-F 06371 .ORG TPP63F, *Y=MAG->F 06372 TPD.0F>A, B(->F), ADD, 06373 JUMP(TPP63A); ----- ----- 2A0 0000087C 00F100A0 ----- 06374 .ORG TPP63A, *END CODE? 06375 JZ(TPP63BF,TPP63BT); ----- ----- 87C 000022A2 00000000 ----- 06376 .ORG TPP63BT, *END CODE, DON'T LOOK AT ANY MORE PLT FIELDS 06377 *B=TOPRG1 06378 MA(TOPRG1), RAM>BR, 06379 JUMP(TPP300); ----- ----- 2A3 0001087D 37000000 ----- 06380 .ORG TPP63BF, *MAG IN THE RANGE 9->E, EXIT TO NEXT FIELD 06381 *AR=OFFSET 06382 MA(THISRW), RAM>AR, 06383 JUMP(TPP200); ----- ----- 2A2 0002087E 7D000000 ----- 06384 *MAG IS IN RANGE 0-8 06385 .ORG TPP63T, *MAG=8? 06386 *AR=MAG 06387 TPD.0F>A, B(0), OR, 06388 Y>AR, 06389 JZ(TPP64F,TPP64T); ----- ----- 2A1 002222A4 000010A0 ----- 06390 .ORG TPP64T, *MAG=8, SET PM=0 06391 MA(PM), 06392 Y(0), 06393 Y>RAM, 06394 JUMP(TPP64AF); ----- ----- 2A5 000002A6 74001100 ----- 06395 .ORG TPP64F, *MAG=0? 06396 *PM=MAG<<4 06397 MA(PM), 06398 AR<<4>A, B(0), ADD, 06399 Y>RAM, 06400 JZ(TPP64AF,TPP64AT); ----- ----- 2A4 000022A6 74000130 ----- 06401 .ORG TPP64AT, *INVALID MAG, EXIT TO NEXT FIELD 06402 *AR=OFFSET 06403 MA(THISRW), RAM>AR, 06404 JUMP(TPP200); ----- ----- 2A7 0002087E 7D000000 ----- 06405 .ORG TPP64AF, *P=POINTER TO TABLE IDENT BYTE 06406 A(7), BR>B, ADD, 06407 Y>PR, 06408 JUMP(TPP65); ----- ----- 2A6 0000087F 80070001 ----- 06409 .ORG TPP65, *TPD=TABLE IDENT BYTE 06410 RVDP, 06411 JUMP(TPP66); ----- ----- 87F 00000880 00008000 ----- 06412 .ORG TPP66, *Y=TABLE IDENT-2 06413 TPD.0F>A, B(-2), ADD, 06414 JUMP(TPP67); ----- ----- 880 00000881 00FE00A0 ----- 06415 .ORG TPP67, *AIT FIELD? 06416 *B=POINTER 06417 *A=COUNT 06418 PR>BR, 06419 MA(COUNT), RAM>AR, 06420 JZ(TPP68F,TPP68T); ----- ----- 881 004322A8 78000000 ----- 06421 .ORG TPP68F, *NOT AN AIT, EXIT TO NEXT FIELD 06422 *AR=OFFSET 06423 MA(THISRW), RAM>AR, 06424 JUMP(TPP200); ----- ----- 2A8 0002087E 7D000000 ----- 06425 *PROCESS AIT FIELD 06426 * A=COUNT, P=POINTER TO TABLE IDENT 06427 .ORG TPP68T, *Y=COUNT 06428 *B=SCREEN 06429 MA(SCREEN), RAM>BR, 06430 AR>A, B(0), OR, 06431 JUMP(TPP69); ----- ----- 2A9 00010882 60001010 ----- 06432 .ORG TPP69, *CASE COUNT=? 06433 JY(TPP70Y); ----- ----- 882 0000C678 00000000 ----- 06434 .ORG TPP70Y, *1ST AIT 06435 *A=STOR2 06436 *P=POINTER 06437 PR>BR, 06438 MA(STOR2), RAM>AR, 06439 JUMP(TPP80); ----- ----- 678 00430883 22000000 ----- 06440 .ORG TPP71, *2ND AIT 06441 *A=STOR3 06442 *P=POINTER 06443 PR>BR, 06444 MA(STOR3), RAM>AR, 06445 JUMP(TPP80); ----- ----- 679 00430883 23000000 ----- 06446 .ORG TPP72, *3RD AIT 06447 *Y=MENM 06448 A(MENM), BR>B, AND, 06449 JUMP(TPP72A); ----- ----- 67A 00000884 00080801 ----- 06450 .ORG TPP72A, *MENU MODE? 06451 *IF YES, EXIT (NO ROOM FOR 3RD AIT) 06452 JZ(TPP72BF,TPP72BT); ----- ----- 884 000022AA 00000000 ----- 06453 .ORG TPP72BT, *A=STOR7 06454 *P=POINTER 06455 PR>BR, 06456 MA(STOR7), RAM>AR, 06457 JUMP(TPP80); ----- ----- 2AB 00430883 27000000 ----- 06458 * A=STORx, B=POINTER 06459 *FIRST PUT NULL VALUE IN LATCH MAG 06460 .ORG TPP80, *STORE=A=LATCH, 06461 MA(STORE), 06462 ARHI>A, B(0), OR, 06463 Y>RAM, Y>AR, 06464 JUMP(TPP81); ----- ----- 883 00220885 77001120 ----- 06465 *IS IT NECESSARY TO INITIALISE STORE 7 FOR THE THIRD AIT? 06466 *(MUST BE STORE 7 IF AITL IS NOT SET) 06467 .ORG TPP81, *P=POINTER TO LAFx 06468 AR>A, B(LAF0), ADD, 06469 Y>PR, 06470 JUMP(TPP82); ----- ----- 885 00000886 80400010 ----- 06471 .ORG TPP82, *A=LAFx 06472 PR>MA, RAM>AR, 06473 JUMP(TPP83); ----- ----- 886 00120887 00000000 ----- 06474 .ORG TPP83, *Y=AITL 06475 AR>A, B(AITL), AND, 06476 JUMP(TPP84); ----- ----- 887 00000888 00010810 ----- 06477 .ORG TPP84, *AITL SET? 06478 *A= VPPRG1 06479 MA(VPPRG1), RAM>AR, 06480 JZ(TPP84AF,TPP84AT); ----- ----- 888 000222B0 61000000 ----- 06481 *INITIALISE STORE 7 FOR THE THIRD AIT 06482 .ORG TPP84AT, *LAFx= AITL 06483 PR>MA, 06484 Y(AITL), 06485 Y>RAM, 06486 JUMP(TPP84B); ----- ----- 2B1 00100889 00011100 ----- 06487 .ORG TPP84B, *SBL=1 06488 MA(VPPRG1), 06489 AR>A, B(SBL), OR, 06490 Y>RAM, 06491 JUMP(TPP84AF); ----- ----- 889 000002B0 61801110 ----- 06492 *READ TENS AND UNITS INTO PT AND PU 06493 .ORG TPP84AF, *P=POINTER TO TENS 06494 A(-6), BR>B, ADD, 06495 Y>PR, 06496 JUMP(TPP85); ----- ----- 2B0 0000088A 80FA0001 ----- 06497 .ORG TPP85, *TPD=TENS, B=POINTER 06498 RVDP, 06499 PR>BR, 06500 JUMP(TPP86); ----- ----- 88A 0041088B 00008000 ----- 06501 .ORG TPP86, *P=POINTER TO UNITS 06502 A(1), BR>B, ADD, 06503 Y>PR, 06504 JUMP(TPP87); ----- ----- 88B 0000088C 80010001 ----- 06505 .ORG TPP87, *AR=TENS 06506 TPD.0F>A, B(0), OR, 06507 Y>AR, 06508 JUMP(TPP88); ----- ----- 88C 0022088D 000010A0 ----- 06509 .ORG TPP88, *PT=TENS<<4, TPD=UNITS 06510 RVDP, 06511 MA(PT), 06512 AR<<4>A, B(0), OR, 06513 Y>RAM, 06514 JUMP(TPP89); ----- ----- 88D 0000088E 75009130 ----- 06515 .ORG TPP89, *AR=UNITS 06516 *BR=COUNT 06517 MA(COUNT), RAM>BR, 06518 TPD.0F>A, B(0), OR, 06519 Y>AR, 06520 JUMP(TPP90); ----- ----- 88E 0023088F 780010A0 ----- 06521 .ORG TPP90, *PU=UNITS<<4 06522 MA(PU), 06523 AR<<4>A, B(0), OR, 06524 Y>RAM, 06525 JUMP(TPP91); ----- ----- 88F 00000890 76001130 ----- 06526 *LOAD SUB-PAGE LATCHES FOR AITS 06527 * BR=COUNT, P=PLT INDEX 06528 .ORG TPP91, *Y=COUNT 06529 *A=LATCH 06530 MA(STORE), RAM>AR, 06531 A(0), BR>B, OR, 06532 JUMP(TPP91A); ----- ----- 890 00020891 77001001 ----- 06533 .ORG TPP91A, *COUNT++ 06534 *CASE COUNT=? 06535 MA(COUNT), 06536 A(1), BR>B, ADD, 06537 Y>RAM, 06538 JY(TPP92Y); ----- ----- 891 0000C694 78010101 ----- 06539 * 06540 .ORG TPP92Y, *CASE COUNT=0 06541 *MASK=SP0I-1 06542 MA(MASK), 06543 Y(SP0I-1), 06544 Y>RAM, 06545 JUMP(TPP92A); ----- ----- 694 00000892 73471100 ----- 06546 .ORG TPP92A, *B=LFSP0 06547 MA(LFSP0), RAM>BR, 06548 JUMP(TPP92B); ----- ----- 892 00010893 48000000 ----- 06549 .ORG TPP92B, *UPDATE LFSP0 WITH AIT LATCH 06550 MA(LFSP0), 06551 AR.0F>A, BR.F0>B, OR, 06552 Y>RAM, 06553 JUMP(TPP92C); ----- ----- 893 00000894 480011C3 ----- 06554 .ORG TPP92C, *B=VPPRG2 06555 MA(VPPRG2), RAM>BR, 06556 JUMP(TPP92J); ----- ----- 894 00010895 62000000 ----- 06557 .ORG TPP92J, *CALL UPDATE OF SUB-PAGE REGISTERS 06558 *USPR=1 06559 MA(VPPRG2), 06560 A(USPR), BR>B, OR, 06561 Y>RAM, 06562 JUMP(TPP95); ----- ----- 895 00000896 62081101 ----- 06563 * 06564 .ORG TPP93, *CASE COUNT=1 06565 *MASK=SP1I-1 06566 MA(MASK), 06567 Y(SP1I-1), 06568 Y>RAM, 06569 JUMP(TPP93A); ----- ----- 695 00000897 734B1100 ----- 06570 .ORG TPP93A, *B=LFSP1 06571 MA(LFSP1), RAM>BR, 06572 JUMP(TPP93B); ----- ----- 897 00010898 49000000 ----- 06573 .ORG TPP93B, *UPDATE LFSP0 WITH AIT LATCH 06574 MA(LFSP1), 06575 AR.0F>A, BR.F0>B, OR, 06576 Y>RAM, 06577 JUMP(TPP95); ----- ----- 898 00000896 490011C3 ----- 06578 * 06579 .ORG TPP94, *CASE COUNT=2 06580 *MASK=SP2I-1 06581 MA(MASK), 06582 Y(SP2I-1), 06583 Y>RAM, 06584 JUMP(TPP94A); ----- ----- 696 00000899 734F1100 ----- 06585 .ORG TPP94A, *B=LFSP2 06586 MA(LFSP2), RAM>BR, 06587 JUMP(TPP94B); ----- ----- 899 0001089A 4A000000 ----- 06588 .ORG TPP94B, *UPDATE LFSP2 WITH AIT LATCH 06589 MA(LFSP2), 06590 AR.0F>A, BR.F0>B, OR, 06591 Y>RAM, 06592 JUMP(TPP95); ----- ----- 89A 00000896 4A0011C3 ----- 06593 * 06594 .ORG TPP95, *INIT LOOP VARIABLE 06595 MA(RET2), 06596 Y(3), 06597 Y>RAM, 06598 JUMP(TPP95A); ----- ----- 896 0000089B 7B031100 ----- 06599 *LOOP START 06600 .ORG TPP95A, *A=PLT FIELD OFFSET 06601 MA(THISRW), RAM>AR, 06602 JUMP(TPP96); ----- ----- 89B 0002089C 7D000000 ----- 06603 .ORG TPP96, *P=INDEX TO PLT SUB PAGE THOU'S 06604 AR>A, B(-101), ADD, 06605 Y>PR, 06606 JUMP(TPP97); ----- ----- 89C 0000089D 809B0010 ----- 06607 .ORG TPP97, *B=INDEX TO PLT SUB-PAGE THOU'S 06608 *A=LOOP VARIABLE 06609 MA(RET2), RAM>AR, 06610 PR>BR, 06611 JUMP(TPP98); ----- ----- 89D 0043089E 7B000000 ----- 06612 .ORG TPP98, *P=INDEX TO PLT SUB-PAGE DIGIT 06613 *B=INDEX TO LAST SP STORE 06614 *(SP0I-1, SP1I-1 OR SP2I-1) 06615 MA(MASK), RAM>BR, 06616 AR>A, BR>B, ADD, 06617 Y>PR, 06618 JUMP(TPP98A); ----- ----- 89E 0001089F F3000011 ----- 06619 .ORG TPP98A, *TPD=PLT SUB-PAGE DIGIT 06620 *P=INDEX TO THIS SP STORE 06621 RVDP, 06622 MA(MASK), 06623 A(1), BR>B, ADD, 06624 Y>RAM, Y>PR, 06625 JUMP(TPP98C); ----- ----- 89F 000008A0 F3018101 ----- 06626 .ORG TPP98C, *DEC LOOP COUNT 06627 MA(RET2), 06628 AR>A, B(-1), ADD, 06629 Y>RAM, 06630 JUMP(TPP98D); ----- ----- 8A0 000008A1 7BFF0110 ----- 06631 .ORG TPP98D, *EXIT LOOP? 06632 *A= PLT SUB-PAGE DIGIT 06633 *B= THIS SUB-PAGE STORE 06634 PR>MA, RAM>BR, 06635 TPD.0F>A, B(0), OR, 06636 Y>AR, 06637 JN(TPP100F,TPP100T); ----- ----- 8A1 003342B2 000010A0 ----- 06638 .ORG TPP100F, *MORE DIGITS 06639 *UPDATE SP STORE WITH PLT SUB-PAGE DIGIT 06640 PR>MA, 06641 AR<<4>A, BR.0F>B, OR, 06642 Y>RAM, 06643 JUMP(TPP95A); ----- ----- 2B2 0010089B 00001132 ----- 06644 .ORG TPP100T, *LAST DIGIT 06645 *UPDATE SP STORE WITH PLT SUB-PAGE DIGIT 06646 PR>MA, 06647 AR<<4>A, BR.0F>B, OR, 06648 Y>RAM, 06649 JUMP(TPP101); ----- ----- 2B3 001008A2 00001132 ----- 06650 *LOAD LATCH WITH PM, PT AND PU 06651 *ENTRY POINT AFTER SUB-PAGE SKIP WHEN IN SUB-PAGE MODE 06652 .ORG TPP101, *A=LATCH 06653 MA(STORE), RAM>AR, 06654 JUMP(TPP101A); ----- ----- 8A2 000208A3 77000000 ----- 06655 .ORG TPP101A, *CALL PXTOLA0T, 06656 *RETURN=3, RETURN TO TPP102T, 06657 MA(RETURN), 06658 Y(3), 06659 Y>RAM, 06660 JUMP(PXTOLA0T); ----- ----- 8A3 000003A7 7C031100 ----- 06661 .ORG TPP102T, *AR=THISRW 06662 MA(THISRW), RAM>AR, 06663 JUMP(TPP200); ----- ----- 3A9 0002087E 7D000000 ----- 06664 *MORE FIELDS TO PROCESS? 06665 * A=OFFSET 06666 .ORG TPP200, *UPDATE OFFSET 06667 MA(THISRW), 06668 AR>A, B(8), ADD, 06669 Y>RAM, Y>AR, 06670 JUMP(TPP201); ----- ----- 87E 002208A4 7D080110 ----- 06671 .ORG TPP201, *LAST FIELD? 06672 JZ(TPP60F,TPP60T); ----- ----- 8A4 000022B8 00000000 ----- 06673 *PROCESSED LAST FIELD IN PLT, EXIT 06674 .ORG TPP60T, *B=TOPRG1 06675 MA(TOPRG1), RAM>BR, 06676 JUMP(TPP300); ----- ----- 2B9 0001087D 37000000 ----- 06677 *MENU MODE, NO ROOM FOR THIRD AIT, EXIT 06678 .ORG TPP72BF, *B=TOPRG1 06679 MA(TOPRG1), RAM>BR, 06680 JUMP(TPP300); ----- ----- 2AA 0001087D 37000000 ----- 06681 *NO ROOM FOR FOURTH AIT, EXIT 06682 .ORG TPP73, *CASE COUNT=3 06683 *B=TOPRG1 06684 MA(TOPRG1), RAM>BR, 06685 JUMP(TPP300); ----- ----- 67B 0001087D 37000000 ----- 06686 *INIT AITCNT TO COUNT AITS RCVD BEFORE MENU UPDATE 06687 * B=TOPRG1 06688 .ORG TPP300, *Y=BTTUP, A=COUNT 06689 MA(COUNT), RAM>AR, 06690 A(BTTUP), BR>B, AND, 06691 JUMP(TPP301); ----- ----- 87D 000208A5 78100801 ----- 06692 .ORG TPP301, *P=Y=COUNT, BTT JUST UPDATED? 06693 *A=AITCNT 06694 MA(AITCNT), RAM>AR, 06695 AR>A, B(0), OR, 06696 Y>PR, 06697 JZ(TPP302F,TPP302T); ----- ----- 8A5 000222BA CC001010 ----- 06698 .ORG TPP302T, *BTT NOT UPDATED 06699 JUMP(PPP100); ----- ----- 2BB 00000623 00000000 ----- 06700 .ORG TPP302F, *BTTUP=0, ANY AITS FOUND? 06701 *B=COUNT 06702 PR>BR, 06703 MA(TOPRG1), 06704 A(>FF-BTTUP), BR>B, AND, 06705 Y>RAM, 06706 JZ(TPP303F,TPP303T); ----- ----- 2BA 004122BC 37EF0901 ----- 06707 *NO AITS FOUND 06708 .ORG TPP303T, *AITCNT=0 06709 MA(AITCNT), 06710 AR.F0>A, B(0), OR, 06711 Y>RAM, 06712 JUMP(PPP100); ----- ----- 2BD 00000623 4C0011D0 ----- 06713 *AITS HAVE BEEN FOUND 06714 .ORG TPP303F, *A=COUNT-1 06715 *B=AITCNT 06716 MA(AITCNT), RAM>BR, 06717 A(-1), BR>B, ADD, 06718 Y>AR, 06719 JUMP(TPP304); ----- ----- 2BC 002308A6 4CFF0001 ----- 06720 .ORG TPP304, *AITCNT=COUNT-1 06721 MA(AITCNT), 06722 AR.0F>A, BR.F0>B, OR, 06723 Y>RAM, 06724 JUMP(PPP100); ----- ----- 8A6 00000623 4C0011C3 ----- 06725 * 06726 *END OF TOP POST PROCESSING 06727 * 06728 *+++LOOK AT INVENTORY COUNT 06729 * 06730 .ORG VPP230T, *A=INVCNT 06731 MA(INVCNT), RAM>AR, 06732 JUMP(VPP231); ----- ----- 275 000208A7 38000000 ----- 06733 .ORG VPP231, *Y=INVENTORY COUNT- 50 06734 AR>>1>A, B(-50), ADD, 06735 JUMP(VPP232); ----- ----- 8A7 000008A8 00CE00E0 ----- 06736 .ORG VPP232, *INVENTORY COUNT <50? 06737 JN(VPP233F,VPP233T); ----- ----- 8A8 000042BE 00000000 ----- 06738 * 06739 * TCJ Jan 94 06740 * Once set, stop the inventory complete flag from being 06741 * reset, and when it is set for the first time, force 06742 * a new row24 to be generated. 06743 * 06744 .ORG VPP233F, *COUNT IS COMPLETE 06745 *SET COMPLETE FLAG, KEEP COUNT AT 50 06746 MA(INVCNT), 06747 Y(101), 06748 Y>RAM, 06749 JUMP(TCJVPP233A); ----- ----- 2BE 000008A9 38651100 ----- 06750 * 06751 .ORG TCJVPP233A, * AR = NMOFF flag 06752 MA(MREG2), RAM>AR, 06753 JUMP(TCJVPP233E); ----- ----- 8A9 000208AA 6E000000 ----- 06754 * 06755 .ORG TCJVPP233E, * Y = NMOFF flag 06756 AR>A, B(NMOFF), AND, 06757 JUMP(TCJVPP233G); ----- ----- 8AA 000008AB 00040810 ----- 06758 * 06759 .ORG TCJVPP233G, * Is NMOFF set ? 06760 MA(EXPREG),RAM>AR, 06761 JZ(TCJVPP233BF,TCJVPP233BT); ----- ----- 8AB 000222C2 63000000 ----- 06762 * 06763 .ORG TCJVPP233BT, * NMOFF is not set, don't update row 24 06764 JUMP(PPP0); ----- ----- 2C3 000008AC 00000000 ----- 06765 * 06766 .ORG TCJVPP233BF, * NMOFF is set, update row 24 06767 MA(EXPREG), 06768 AR>A, B(CGAP), OR, 06769 Y>RAM, 06770 JUMP(TCJVPP233C); ----- ----- 2C2 000008AD 63081110 ----- 06771 * 06772 .ORG TCJVPP233C, 06773 MA(VPPRG1), RAM>AR, 06774 JUMP(TCJVPP233D); ----- ----- 8AD 000208AE 61000000 ----- 06775 * 06776 .ORG TCJVPP233D, 06777 MA(VPPRG1), 06778 AR>A, B(SBL), OR, 06779 Y>RAM, 06780 JUMP(PPP0); ----- ----- 8AE 000008AC 61801110 ----- 06781 * 06782 .ORG VPP233T, *COUNT INCOMPLETE 06783 *CLR COMPLETE FLAG 06784 * MA(INVCNT), 06785 * AR>A, B(>FE), AND, 06786 * Y>RAM, 06787 JUMP(PPP0); ----- ----- 2BF 000008AC 00000000 ----- 06788 * 06789 *+++PAGE CAPTURE MODE POST PROCESSING 06790 * 06791 .ORG PPP0, *A=PEN 06792 MA(PEN), RAM>AR, 06793 JUMP(PPP7); ----- ----- 8AC 000208AF 1B000000 ----- 06794 .ORG PPP7, *B=SYS1 06795 *Y=PEN 06796 MA(SYS1), RAM>BR, 06797 ARHI>A, B(0), OR, 06798 JUMP(PPP8); ----- ----- 8AF 000108B0 08001020 ----- 06799 .ORG PPP8, *INCOMPLETE MAIN PAGE OR SUB-PAGE MODE? 06800 *IF YES, DELAY PCM PROCESSING 06801 A(-3), BRHI>B, ADD, 06802 JZ(PPP9F,PPP9T); ----- ----- 8B0 000022C4 00FD000C ----- 06803 .ORG PPP9F, *INCOMPLETE MAIN PAGE OR SUB-PAGE MODE 06804 JUMP(PPP100); ----- ----- 2C4 00000623 00000000 ----- 06805 .ORG PPP9T, *Y=FNRM, FAVP MODE? 06806 A(FNRM), BR>B, AND, 06807 JZ(PPP10F,PPP10T); ----- ----- 2C5 000022C6 00040801 ----- 06808 .ORG PPP10T, *FAVP MODE 06809 JUMP(PPP100); ----- ----- 2C7 00000623 00000000 ----- 06810 .ORG PPP10F, *Y=FFLF, NORMAL MODE FORCED? 06811 *A=BTT STORE 06812 MA(STOR1), RAM>AR, 06813 A(FFLF), BR>B, AND, 06814 JZ(PPP11F,PPP11T); ----- ----- 2C6 000222C8 21010801 ----- 06815 .ORG PPP11F, *NORMAL MODE FORCED, SKIP PCM PROCESSING 06816 JUMP(PPP100); ----- ----- 2C8 00000623 00000000 ----- 06817 .ORG PPP11T, *Y=BTTERR 06818 *FLOF MODE FORCED? 06819 *P=POINTER TO BTT LATCH FLAGS 06820 ARHI>A, B(LAF0), ADD, 06821 Y>PR, 06822 JZ(PPP12F,PPP12T); ----- ----- 2C9 000022CA 80400020 ----- 06823 .ORG PPP12F, *FLOF FORCED 06824 *A=VPPRG2 06825 MA(VPPRG2), RAM>AR, 06826 JUMP(PPP22T); ----- ----- 2CA 000202E5 62000000 ----- 06827 * Check if BTT latch is closed (ie TOP flags are valid) and call 06828 * TOP processing if appropriate. 06829 * B=SYS1, P=POINTER TO BTT LAFx 06830 .ORG PPP12T, *A=BTT LAFx 06831 PR>MA, RAM>AR, 06832 JUMP(PPP12A); ----- ----- 2CB 001208B1 00000000 ----- 06833 .ORG PPP12A, *Y=OPN, A=TOPRG1 06834 MA(TOPRG1), RAM>AR, 06835 AR>A, B(OPN), AND, 06836 JUMP(PPP12B); ----- ----- 8B1 000208B2 37100810 ----- 06837 .ORG PPP12B, *Y=BTTERR 06838 *LATCH OPEN? 06839 AR>A, B(BTTERR), AND, 06840 JZ(PPP12CF,PPP12CT); ----- ----- 8B2 000022CC 00800810 ----- 06841 .ORG PPP12CF, *LATCH IS OPEN, DO NOT PROCESS YET 06842 JUMP(PPP14T); ----- ----- 2CC 000002D3 00000000 ----- 06843 .ORG PPP12CT, *LATCH IS CLOSED, BTT ERROR? 06844 *Y=PCM-1 06845 A(-1), BRHI>B, ADD, 06846 JZ(PPP13F,PPP13T); ----- ----- 2CD 000022CE 00FF000C ----- 06847 .ORG PPP13F, *BTT ERROR 06848 JUMP(PPP14T); ----- ----- 2CE 000002D3 00000000 ----- 06849 .ORG PPP13T, *IN TOP MODE? 06850 *Y=BTTP 06851 AR>A, B(BTTP), AND, 06852 JZ(PPP13AF,PPP13AT); ----- ----- 2CF 000022D0 00200810 ----- 06853 *TOP MODE 06854 .ORG PPP13AT, *TOP MODE, BTT PROCESSING TO DO? 06855 JZ(PPP14F,PPP14T); ----- ----- 2D1 000022D2 00000000 ----- 06856 *BTT RECEIVED AND READY TO PROCESS 06857 .ORG PPP14F, *JUMP TO TOP POST PROCESSING 06858 JUMP(TPP0); ----- ----- 2D2 00000622 00000000 ----- 06859 *NOT TOP 06860 .ORG PPP13AF, *Y=FIND 06861 A(FIND), BR>B, AND, 06862 JUMP(PPP15); ----- ----- 2D0 000008B3 00080801 ----- 06863 .ORG PPP15, *Y=BTTCAP, FIND? 06864 AR>A, B(BTTCAP), AND, 06865 JZ(PPP15AF,PPP15AT); ----- ----- 8B3 000022D4 00400810 ----- 06866 .ORG PPP15AT, *FIND=0 06867 JUMP(PPP14T); ----- ----- 2D5 000002D3 00000000 ----- 06868 .ORG PPP15AF, *FIND, BTTCAP? 06869 JZ(PPP16F,PPP16T); ----- ----- 2D4 000022D6 00000000 ----- 06870 .ORG PPP16T, *BTTCAP=0 06871 JUMP(PPP14T); ----- ----- 2D7 000002D3 00000000 ----- 06872 *NOT TOP AND FIND AND A BTT HAS BEEN CAPTURED, SET TOP MODE 06873 .ORG PPP16F, *B=TOPRG1, A=SYS1 06874 MA(TOPRG1), RAM>BR, 06875 A(0), BR>B, OR, 06876 Y>AR, 06877 JUMP(PPP16A); ----- ----- 2D6 002308B4 37001001 ----- 06878 .ORG PPP16A, *PCM=1 06879 MA(SYS1), 06880 AR.0F>A, B(>10), OR, 06881 Y>RAM, 06882 JUMP(PPP16B); ----- ----- 8B4 000008B5 081011C0 ----- 06883 * Set BTTUP to ensure that AITs are initialised (parity errors 06884 * can prevent BTTUP from being set even though a BTT with no 06885 * errors has been captured. 06886 .ORG PPP16B, *BTTUP=1 06887 MA(TOPRG1), 06888 A(BTTUP), BR>B, OR, 06889 Y>RAM, 06890 JUMP(PPP17); ----- ----- 8B5 000008B6 37101101 ----- 06891 .ORG PPP17, *CALL INPCM0 06892 *RETURN=2, RETURN TO TPP0 06893 MA(RETURN), 06894 Y(2), 06895 Y>RAM, 06896 JUMP(INPCM0); ----- ----- 8B6 000008B7 7C021100 ----- 06897 * 06898 *NO BTT READY TO PROCESS 06899 * B=SYS1 06900 *ENTRY POINT FROM PPP16T 06901 .ORG PPP14T, *Y=FTOP 06902 A(FTOP), BR>B, AND, 06903 JUMP(PPP21); ----- ----- 2D3 000008B8 00020801 ----- 06904 .ORG PPP21, *FTOP? 06905 *A=VPPRG2 06906 MA(VPPRG2), RAM>AR, 06907 JZ(PPP22F,PPP22T); ----- ----- 8B8 000222E4 62000000 ----- 06908 .ORG PPP22F, *FORCE TOP, DO NOT INIT FLOF! 06909 JUMP(PPP100); ----- ----- 2E4 00000623 00000000 ----- 06910 *ENTRY POINT FROM FLOF FORCED 06911 * A=VPPRG2 06912 .ORG PPP22T, *Y=DPC 06913 AR>A, B(DPC), AND, 06914 JUMP(PPP23); ----- ----- 2E5 000008B9 00020810 ----- 06915 .ORG PPP23, *DISPLAY PAGE CAPTURED? 06916 *DPC=0 06917 MA(VPPRG2), 06918 AR>A, B(>FF-DPC), AND, 06919 Y>RAM, 06920 JZ(PPP24F,PPP24T); ----- ----- 8B9 000022E6 62FD0910 ----- 06921 .ORG PPP24T, *NO PROCESSING TO DO, EXIT 06922 JUMP(PPP100); ----- ----- 2E7 00000623 00000000 ----- 06923 *UPDATE DPP27 AND DPP24 FLAGS 06924 .ORG PPP24F, *A=STOR0, P=POINTER TO FLOF FLAGS 06925 MA(STOR0), RAM>AR, 06926 Y(-16), 06927 Y>PR, 06928 JUMP(PPP25); ----- ----- 2E6 000208BA A0F01000 ----- 06929 .ORG PPP25, *RWL=LATCH FOR DISPLAY PAGE 06930 MA(RWL), 06931 ARHI>A, B(0), OR, 06932 Y>RAM, Y>IO, 06933 JUMP(PPP26); ----- ----- 8BA 000008BB 0B005120 ----- 06934 .ORG PPP26, *TPD=FLOF FLAGS 06935 RVDP, 06936 JUMP(PPP27); ----- ----- 8BB 000008BC 00008000 ----- 06937 .ORG PPP27, *A=TPD WITH P24R, P27R, AMD DR24 INVERTED 06938 TPD>A, B(%11001000), XOR, 06939 Y>AR, 06940 JUMP(PPP28); ----- ----- 8BC 002208BD 00C81890 ----- 06941 .ORG PPP28, *Y=!P24R+!P27R+!DR24 06942 *A=SYS1 06943 MA(SYS1), RAM>AR, 06944 AR>A, B(%11001000), AND, 06945 JUMP(PPP29); ----- ----- 8BD 000208BE 08C80810 ----- 06946 .ORG PPP29, *FULL FLOF? 06947 *Y=P27R 06948 *B=FLFREG 06949 MA(FLFREG), RAM>BR, 06950 TPD>A, B(%10000000), AND, 06951 JZ(PPP30F,PPP30T); ----- ----- 8BE 000122EC 12800890 ----- 06952 .ORG PPP30F, *PACKET 27 FLOF? 06953 *Y=FIND 06954 AR>A, B(FIND), AND, 06955 JZ(PPP31F,PPP31T); ----- ----- 2EC 000022EE 00080810 ----- 06956 *FULL FLOF 06957 .ORG PPP30T, *SET FULFLF, CLEAR P27FLF 06958 MA(FLFREG), 06959 A(FULFLF), BR.0F>B, OR, 06960 Y>RAM, 06961 JUMP(PPP32); ----- ----- 2ED 000008BF 12801102 ----- 06962 *PACKET 27 FLOF 06963 .ORG PPP31F, *SET P27FLF, CLEAR FULFLF 06964 MA(FLFREG), 06965 A(P27FLF), BR.0F>B, OR, 06966 Y>RAM, 06967 JUMP(PPP31A); ----- ----- 2EE 000008C0 12401102 ----- 06968 .ORG PPP31A, *B=EXPREG 06969 MA(EXPREG), RAM>BR, 06970 JUMP(PPP31B); ----- ----- 8C0 000108C1 63000000 ----- 06971 .ORG PPP31B, *CGAP=CPRF=1 TO GENERATE PAGE NUMBER MENU DISPLAY 06972 MA(EXPREG), 06973 A(CGAP+CPRF), BR>B, OR, 06974 Y>RAM, 06975 JUMP(PPP32); ----- ----- 8C1 000008BF 630C1101 ----- 06976 *INIT FLOF MODE 06977 * A=SYS1 06978 .ORG PPP32, *FIND=0 06979 *B=STSWD0 06980 MA(STSWD0), RAM>BR, 06981 AR>A, B(>FF-FIND), AND, 06982 Y>AR, 06983 JUMP(PPP33); ----- ----- 8BF 002308C2 64F70810 ----- 06984 .ORG PPP33, *PCM=2 06985 MA(SYS1), 06986 AR.0F>A, B(>20), OR, 06987 Y>RAM, 06988 JUMP(PPP34); ----- ----- 8C2 000008C3 082011C0 ----- 06989 .ORG PPP34, *FFLG=1 06990 MA(STSWD0), 06991 A(FFLG), BR>B, OR, 06992 Y>RAM, 06993 JUMP(PPP40); ----- ----- 8C3 000008C4 64201101 ----- 06994 *INIT NORMAL MODE IF FIND=0 (DO NOT OVERRIDE TOP IF FIND=1) 06995 * A=SYS1, B=FLFREG, LAST Y WAS FIND 06996 .ORG PPP31T, *FIND? 06997 JZ(PPP35F,PPP35T); ----- ----- 2EF 000022F0 00000000 ----- 06998 .ORG PPP35F, *FIND=1 06999 JUMP(PPP100); ----- ----- 2F0 00000623 00000000 ----- 07000 .ORG PPP35T, *FIND=0, INIT NORM MODE 07001 *PCM=0 07002 MA(SYS1), 07003 AR.0F>A, B(0), OR, 07004 Y>RAM, 07005 JUMP(PPP40); ----- ----- 2F1 000008C4 080011C0 ----- 07006 *INIT NORMAL AND FLOF MERGE HERE 07007 .ORG PPP40, *CALL INPCM0 07008 *RETURN=3, RETURN TO PPP100 07009 MA(RETURN), 07010 Y(3), 07011 Y>RAM, 07012 JUMP(INPCM0); ----- ----- 8C4 000008B7 7C031100 ----- 07013 *+++UPDATE RP24 FLAG (ENABLE OR DISABLE PACKET 24 RECEPTION) 07014 * 07015 .ORG PPP100, *AR=SYS2 07016 MA(SYS2), RAM>AR, 07017 JUMP(PPP181); ----- ----- 623 000208C5 09000000 ----- 07018 .ORG PPP181, *Y=APIN 07019 AR>A, B(APIN), AND, 07020 JUMP(PPP182); ----- ----- 8C5 000008C6 00010810 ----- 07021 .ORG PPP182, *APIN? 07022 *Y=R24EN 07023 *B=EXPREG 07024 MA(EXPREG), RAM>BR, 07025 AR>A, B(R24EN), AND, 07026 JZ(PPP183F,PPP183T); ----- ----- 8C6 000122F2 63800810 ----- 07027 *AUTOMATIC PROMPTS INHIBITED 07028 * A=SYS2 07029 .ORG PPP183F, *R24EN? 07030 *USER SET PACKET 24 RECEPTION? 07031 JZ(PPP184F,PPP184T); ----- ----- 2F2 000022F4 00000000 ----- 07032 .ORG PPP184F, *GO AND ENABLE ROW 24 RECEPTION 07033 JUMP(PPP200T); ----- ----- 2F4 000002FD 00000000 ----- 07034 .ORG PPP184T, *NO, RP24=0 07035 MA(SYS2), 07036 AR>A, B(>FF-RP24), AND, 07037 Y>RAM, 07038 JUMP(VPP234); ----- ----- 2F5 000002FC 09F70910 ----- 07039 *AUTOMATIC PROMPTS ENABLED 07040 * B=EXPREG 07041 .ORG PPP183T, *Y=USM 07042 *B=SYS1 07043 MA(SYS1), RAM>BR, 07044 A(USM), BR>B, AND, 07045 JUMP(PPP185); ----- ----- 2F3 000108C7 08020801 ----- 07046 .ORG PPP185, *Y=PCM-2 07047 *B=FLFREG 07048 MA(FLFREG), RAM>BR, 07049 A(-2), BRHI>B, ADD, 07050 JZ(PPP186F,PPP186T); ----- ----- 8C7 000122F6 12FE000C ----- 07051 .ORG PPP186F, *USER STATUS MODE 07052 *RP24=0 07053 MA(SYS2), 07054 AR>A, B(>FF-RP24), AND, 07055 Y>RAM, 07056 JUMP(VPP234); ----- ----- 2F6 000002FC 09F70910 ----- 07057 .ORG PPP186T, *FLOF MODE? 07058 *Y=FULFLF 07059 *B=PEN 07060 MA(PEN), RAM>BR, 07061 A(FULFLF), BR>B, AND, 07062 JZ(PPP187F,PPP187T); ----- ----- 2F7 000122F8 1B800801 ----- 07063 .ORG PPP187F, *NOT FLOF MODE 07064 *DISABLE ROW 24 COPY 07065 *RP24=0 07066 MA(SYS2), 07067 AR>A, B(>FF-RP24), AND, 07068 Y>RAM, 07069 JUMP(VPP234); ----- ----- 2F8 000002FC 09F70910 ----- 07070 .ORG PPP187T, *FLOF MODE 07071 *FULFLF? 07072 *Y=PEN-4 07073 A(-4), BRHI>B, ADD, 07074 JZ(PPP188F,PPP188T); ----- ----- 2F9 000022FA 00FC000C ----- 07075 .ORG PPP188T, *PACKET 27 FLOF, RP24=0 BECAUSE MENU IS GENERATED 07076 *DISABLE ROW 24 COPY 07077 *RP24=0 07078 MA(SYS2), 07079 AR>A, B(>FF-RP24), AND, 07080 Y>RAM, 07081 JUMP(VPP234); ----- ----- 2FB 000002FC 09F70910 ----- 07082 .ORG PPP188F, *FULL FLOF, SUB-PAGE MODE? 07083 *IF YES, DISABLE ROW 24 COPY 07084 *RP24=0 07085 MA(SYS2), 07086 AR>A, B(>FF-RP24), AND, 07087 Y>RAM, 07088 JN(VPP234,PPP200T); ----- ----- 2FA 000042FC 09F70910 ----- 07089 *ENABLE PACKET 24 COPY 07090 * A=SYS2 07091 .ORG PPP200T, *Y=RP24 07092 AR>A, B(RP24), AND, 07093 JUMP(PPP201); ----- ----- 2FD 000008C8 00080810 ----- 07094 .ORG PPP201, *WAS IT ZERO? 07095 *B=EXPREG 07096 MA(EXPREG), RAM>BR, 07097 JZ(PPP202F,PPP202T); ----- ----- 8C8 000122FE 63000000 ----- 07098 .ORG PPP202F, *ALREADY SET, RESTORE IT 07099 *RP24=1 07100 MA(SYS2), 07101 AR>A, B(RP24), OR, 07102 Y>RAM, 07103 JUMP(VPP234); ----- ----- 2FE 000002FC 09081110 ----- 07104 .ORG PPP202T, *YES, COPY IT TO DISPLAY PAGE IF R24RTC=1 07105 *RP24=1, CPYR24=1 07106 MA(SYS2), 07107 AR>A, B(RP24+CPYR24), OR, 07108 Y>RAM, 07109 JUMP(PPP204); ----- ----- 2FF 000008C9 090C1110 ----- 07110 .ORG PPP204, *CLEAR ROW 24 FIRST 07111 *CGAP=1, CPRF=1 07112 MA(EXPREG), 07113 A(CGAP+CPRF), BR>B, OR, 07114 Y>RAM, 07115 JUMP(VPP234); ----- ----- 8C9 000002FC 630C1101 ----- 07116 * 07117 *+++DO VBI POST PROCESSING POINTED TO BY VPPRG1 FLAGS 07118 * 07119 *PMPN: PROCESS NEW PAGE NUMBER 07120 .ORG VPP234, *MOVE DPM/T/U TO PM/T/U FOR PIL AND SST ROUTINES 07121 *CALL DPTP0 07122 *AR=0, RETURN TO VPP250Y 07123 Y(0), 07124 Y>AR, 07125 JUMP(DPTP0); ----- ----- 2FC 002208CA 00001000 ----- 07126 *UPDATE OLDSTR SO WE CAN SORT OUT ROW 24 AFTER THE LATCHES HAVE BEEN 07127 *SHUFFLED 07128 .ORG VPP250Y, *A=ROTATE 07129 MA(ROTATE), RAM>AR, 07130 JUMP(VPP250A); ----- ----- 3F0 000208CB 15000000 ----- 07131 .ORG VPP250A, *B=STOR7 07132 *NBY=1 07133 MA(STOR7), RAM>BR, 07134 AR>A, B(NBY), OR, 07135 Y>AR, 07136 JUMP(VPP250B); ----- ----- 8CB 002308CC 27201010 ----- 07137 .ORG VPP250B, *ROTT=0 07138 MA(ROTATE), 07139 AR>A, B(>FF-ROTT), AND, 07140 Y>RAM, 07141 JUMP(VPP250C); ----- ----- 8CC 000008CD 15EF0910 ----- 07142 .ORG VPP250C, *A=STOR0 07143 MA(STOR0), RAM>AR, 07144 JUMP(VPP250D); ----- ----- 8CD 000208CE 20000000 ----- 07145 .ORG VPP250D, *UPDATE OLDSTR 07146 MA(OLDSTR), 07147 AR.F0>A, BRHI>B, OR, 07148 Y>RAM, 07149 JUMP(VPP250E); ----- ----- 8CE 000008CF 710011DC ----- 07150 .ORG VPP250E, *AR=VPPRG1 07151 MA(VPPRG1), RAM>AR, 07152 JUMP(VPP251); ----- ----- 8CF 000208D0 61000000 ----- 07153 .ORG VPP251, *Y=PMPN 07154 AR>A, B(PMPN), AND, 07155 JUMP(VPP251A); ----- ----- 8D0 000008D1 00200810 ----- 07156 .ORG VPP251A, *PMPN=0, PMPN? 07157 *AR=VPPRG1 07158 MA(VPPRG1), 07159 AR>A, B(>FF-PMPN), AND, 07160 Y>RAM, Y>AR, 07161 JZ(VPP252F,VPP252T); ----- ----- 8D1 00222300 61DF0910 ----- 07162 *PMPN=0 07163 .ORG VPP252T, * 07164 JUMP(VPP300); ----- ----- 301 000008D2 00000000 ----- 07165 *PMPN=1 07166 *INITIALISE BROWSE? 07167 .ORG VPP252F, *Y=SLFB 07168 *BR=DHREG 07169 MA(DHREG), RAM>BR, 07170 AR>A, B(SLFB), AND, 07171 JUMP(VPP253B); ----- ----- 300 000108D3 32400810 ----- 07172 .ORG VPP253B, *SLFB? SLFB=0 07173 MA(VPPRG1), 07174 AR>A, B(>FF-SLFB), AND, 07175 Y>RAM, 07176 JZ(VPP253CF,VPP253CT); ----- ----- 8D3 00002302 61BF0910 ----- 07177 *INITIALISE BROWSE 07178 .ORG VPP253CF, *BWSE=1 07179 MA(DHREG), 07180 A(BWSE), BR>B, OR, 07181 Y>RAM, 07182 JUMP(VPP256F); ----- ----- 302 00000304 32011101 ----- 07183 *NO BROWSE 07184 .ORG VPP253CT, *TEST IF PAGE IN A LATCH 07185 *CALL PIL 07186 *RETURN=1, RETURN TO VPP254 07187 MA(RETURN), 07188 Y(1), 07189 Y>RAM, 07190 JUMP(PIL0); ----- ----- 303 000008D4 7C011100 ----- 07191 *AR=RETURN DATA FROM PIL 07192 .ORG VPP254, *Y=PAGE NOT IN LATCH FLAG 07193 AR>A, B(>08), AND, 07194 JUMP(VPP255); ----- ----- 291 000008D5 00080810 ----- 07195 .ORG VPP255, *PAGE IN A LATCH? 07196 *Y=CAP FLAG 07197 AR>A, B(CAP), AND, 07198 JZ(VPP256F,VPP256T); ----- ----- 8D5 00002304 00800810 ----- 07199 .ORG VPP256T, *PAGE IN A LATCH 07200 *HAS IT BEEN CAPTURED? 07201 *BR=DHREG 07202 MA(DHREG), RAM>BR, 07203 JZ(VPP257F,VPP257T); ----- ----- 305 00012306 32000000 ----- 07204 *PAGE IN A LATCH AND CAPTURED, GO AND SORT ALL LATCHES TO DISPLAY IT 07205 .ORG VPP257F, *STOP ROLLING THE HEADER 07206 MA(DHREG), 07207 A(NRH), BR>B, OR, 07208 Y>RAM, 07209 JUMP(VPP258); ----- ----- 306 000008D6 32101101 ----- 07210 .ORG VPP258, *AR=VPPRG1 07211 MA(VPPRG1), RAM>AR, 07212 JUMP(VPP259); ----- ----- 8D6 000208D7 61000000 ----- 07213 .ORG VPP259, *SBL=0 07214 MA(VPPRG1), 07215 AR>A, B(>FF-SBL), AND, 07216 Y>RAM, 07217 JUMP(VPP259A); ----- ----- 8D7 000008D8 617F0910 ----- 07218 .ORG VPP259A, *A=VPPRG2 07219 MA(VPPRG2), RAM>AR, 07220 JUMP(VPP259B); ----- ----- 8D8 000208D9 62000000 ----- 07221 .ORG VPP259B, *SET DPC TO INIT FLOF/NORM IN PPP100 IF NECESSARY 07222 *SET DPFC TO CAUSE A TOD ON BOXED PAGES 07223 MA(VPPRG2), 07224 AR>A, B(DPC+DPFC), OR, 07225 Y>RAM, 07226 JUMP(VPP259C); ----- ----- 8D9 000008DA 62121110 ----- 07227 .ORG VPP259C, *A=VDPTXT 07228 MA(VDPTXT), RAM>AR, 07229 JUMP(VPP259D); ----- ----- 8DA 000208DB 2B000000 ----- 07230 .ORG VPP259D, *CLEAR URVL 07231 MA(VDPTXT), 07232 AR>A, B(>FF-URVL), AND, 07233 Y>RAM, 07234 JUMP(VPP259E); ----- ----- 8DB 000008DC 2BF70910 ----- 07235 .ORG VPP259E, *A=SYS2 07236 MA(SYS2), RAM>AR, 07237 JUMP(VPP259G); ----- ----- 8DC 000208DD 09000000 ----- 07238 .ORG VPP259G, *R24RTC=0 07239 MA(SYS2), 07240 AR>A, B(>FF-R24RTC), AND, 07241 Y>AR, 07242 JUMP(VPP259H); ----- ----- 8DD 002208DE 09FD0810 ----- 07243 .ORG VPP259H, *RP24=1 FOR PPP100 CODE 07244 MA(SYS2), 07245 AR>A, B(RP24), OR, 07246 Y>RAM, 07247 JUMP(VPP259J); ----- ----- 8DE 000008DF 09081110 ----- 07248 *INIT PDC REGISTERS 07249 .ORG VPP259J, *PDCRG1=0 07250 MA(PDCRG1), 07251 Y(0), 07252 Y>RAM, 07253 JUMP(VPP259K); ----- ----- 8DF 000008E0 6C001100 ----- 07254 .ORG VPP259K, *PDCRG2=0 07255 MA(PDCRG2), 07256 Y(0), 07257 Y>RAM, 07258 JUMP(SST0A); ----- ----- 8E0 000008E1 6D001100 ----- 07259 *PAGE NOT IN A LATCH 07260 *ENTRY POINT FROM BROWSE INIT 07261 *ENTRY POINT FROM PAGE IN A LATCH BUT NOT CAPTURED 07262 .ORG VPP256F, *AR=STOR0 07263 MA(STOR0), RAM>AR, 07264 JUMP(VPP260); ----- ----- 304 000208E2 20000000 ----- 07265 .ORG VPP260, *STORE=0 07266 *(I/P PAR FOR INLA0) 07267 MA(STORE), 07268 Y(0), 07269 Y>RAM, 07270 JUMP(VPP261); ----- ----- 8E2 000008E3 77001100 ----- 07271 .ORG VPP261, *AR=LATCH FOR INIT 07272 *(I/P PAR FOR INLA0) 07273 ARHI>A, B(7), AND, 07274 Y>AR, 07275 JUMP(VPP262); ----- ----- 8E3 002208E4 00070820 ----- 07276 .ORG VPP262, *INITILAISE STORE 0 07277 *CALL INLA0 07278 *RETURN=1, RETURN TO VPP263 07279 MA(RETURN), 07280 Y(1), 07281 Y>RAM, 07282 JUMP(INLA0); ----- ----- 8E4 000008E5 7C011100 ----- 07283 .ORG VPP263, *BR=DHREG 07284 MA(DHREG), RAM>BR, 07285 JUMP(VPP263A); ----- ----- 299 000108E6 32000000 ----- 07286 .ORG VPP263A, *ROLL THE HEADER 07287 *NRH=0 07288 MA(DHREG), 07289 A(>FF-NRH), BR>B, AND, 07290 Y>RAM, 07291 JUMP(VPP263B); ----- ----- 8E6 000008E7 32EF0901 ----- 07292 .ORG VPP263B, *BR=SYS1 07293 MA(SYS1), RAM>BR, 07294 JUMP(VPP264); ----- ----- 8E7 000108E8 08000000 ----- 07295 .ORG VPP264, *Y=PCM-2 07296 A(-2), BRHI>B, ADD, 07297 JUMP(VPP265); ----- ----- 8E8 000008E9 00FE000C ----- 07298 .ORG VPP265, *FLOF MODE? 07299 *AR=VPPRG1 07300 MA(VPPRG1), RAM>AR, 07301 JZ(VPP266F,VPP266T); ----- ----- 8E9 00022308 61000000 ----- 07302 .ORG VPP266F, *NOT FLOF, SORT BACKGROUND LATCHES NOW 07303 *SBL=1 07304 MA(VPPRG1), 07305 AR>A, B(SBL), OR, 07306 Y>RAM, 07307 JUMP(VPP290); ----- ----- 308 00000397 61801110 ----- 07308 .ORG VPP266T, *FLOF, SORT BACKGROUND WHEN DISPLAY PAGE RCVD 07309 JUMP(VPP290); ----- ----- 309 00000397 00000000 ----- 07310 *PAGE NOT CAPTURED BUT IN A LATCH 07311 * AR=RETURN DATA FROM PIL 07312 .ORG VPP257T, *PR=INDEX TO MAG OF LATCH OF THIS PAGE 07313 *CAP=0 SO NO NEED TO MASK 07314 AR.0F>A, B(M0), ADD, 07315 Y>PR, 07316 JUMP(VPP270); ----- ----- 307 000008EA 801000C0 ----- 07317 .ORG VPP270, *BR=Mx 07318 PR>MA, RAM>BR, 07319 JUMP(VPP271); ----- ----- 8EA 001108EB 00000000 ----- 07320 .ORG VPP271, *PUT NULL VALUE IN LATCH 07321 PR>MA, 07322 A(>0F), BR.F0>B, OR, 07323 Y>RAM, Y>IO, 07324 JUMP(VPP256F); ----- ----- 8EB 00100304 000F5103 ----- 07325 *COMMON EXIT FROM PMPN ROUTINE 07326 .ORG VPP290, *AR=VPPRG1 07327 MA(VPPRG1), RAM>AR, 07328 JUMP(VPP291); ----- ----- 397 000208EC 61000000 ----- 07329 .ORG VPP291, *CSVDP=1 07330 MA(VPPRG1), 07331 AR>A, B(CSVDP), OR, 07332 Y>RAM, Y>AR, 07333 JUMP(VPP300); ----- ----- 8EC 002208D2 61101110 ----- 07334 *NEED TO SORT BACKGROUND LATCHES? 07335 * AR=VPPRG1 07336 .ORG VPP300, *Y=SBL 07337 *B=PEN 07338 MA(PEN), RAM>BR, 07339 AR>A, B(SBL), AND, 07340 JUMP(VPP301); ----- ----- 8D2 000108ED 1B800810 ----- 07341 .ORG VPP301, * SBL? 07342 *Y=PEN-4 07343 A(-4), BRHI>B, ADD, 07344 JZ(VPP302F,VPP310); ----- ----- 8ED 0000230A 00FC000C ----- 07345 .ORG VPP302F, *SBL, SUB-PAGE MODE? 07346 *IF NO, CALL SST0B TO SORT BACKGROUND LATCHES 07347 *RETURNS TO VPP310 07348 JN(VPP303F,SST0B); ----- ----- 30A 0000430C 00000000 ----- 07349 .ORG VPP303F, *SUB-PAGE MODE, INHIBIT LATCH SORT 07350 JUMP(VPP310); ----- ----- 30C 0000030B 00000000 ----- 07351 * AR=VPPRG1 07352 .ORG VPP310, *Y=HOSP+PCSP+SPIN 07353 AR>A, B(HOSP+PCSP+SPIN), AND, 07354 JUMP(VPP311); ----- ----- 30B 000008EE 00070810 ----- 07355 .ORG VPP311, *SUB-PAGE LATCH MANAGEMENT TO DO? 07356 *IF YES, CALL FSP0T 07357 *RETURN=0, RETURN TO SPLM0.0 -> VPP330T 07358 MA(RETURN), 07359 Y(0), 07360 Y>RAM, 07361 JZ(FSP0F,VPP330T); ----- ----- 8EE 0000230E 7C001100 ----- 07362 * 07363 *+++ SUB-PAGE LATCH MANAGEMENT 07364 * PM= STOR0 SP LATCH, PT= STOR4 SP LATCH, PU= STOR5 SP LATCH 07365 * A=VPPRG1 07366 .ORG SPLM0.0, *Y=HOSP+SPIN 07367 *B=STOR0 07368 MA(STOR0), RAM>BR, 07369 AR>A, B(HOSP+SPIN), AND, 07370 JUMP(SPLM10); ----- ----- 430 000108EF 20050810 ----- 07371 .ORG SPLM10, *INIT ALL SP LATCHES? 07372 *A= POINTER TO STORE 5 SUB-PAGE LATCH 07373 MA(PU), RAM>AR, 07374 JZ(SPLM100F,SPLM20T); ----- ----- 8EF 00022310 76000000 ----- 07375 *ROUTINE TO SEE IF SUB-PAGE CAPTURED 07376 *IS USP IN STORE 5? 07377 * A= POINTER TO STORE 5 SUB-PAGE LATCH 07378 .ORG SPLM20T, *PCSP=1 07379 *CALL CSP0 TO COMPARE USP 07380 *RETURN=0, RETURN TO SPLM22Y 07381 MA(RETURN), 07382 Y(0), 07383 Y>RAM, 07384 JUMP(CSP0); ----- ----- 311 000008F0 7C001100 ----- 07385 * LAST Y WAS COMPARE TRUE FLAG 07386 .ORG SPLM22Y, *B=STOR5 07387 MA(STOR5), RAM>BR, 07388 JZ(SPLM23F,SPLM23T); ----- ----- 2C0 00012312 25000000 ----- 07389 .ORG SPLM23T, *USP NOT IN STORE 5 07390 JUMP(SPLM40T); ----- ----- 313 00000315 00000000 ----- 07391 .ORG SPLM23F, *USP IS IN STORE 5 07392 *P=LAFx POINTER FOR STORE 5 07393 A(LAF0), BRHI>B, ADD, 07394 Y>PR, 07395 JUMP(SPLM24); ----- ----- 312 000008F1 8040000C ----- 07396 .ORG SPLM24, *B=LAFx FOR STORE 5 07397 PR>MA, RAM>BR, 07398 JUMP(SPLM25); ----- ----- 8F1 001108F2 00000000 ----- 07399 .ORG SPLM25, *Y=CAP 07400 *A=STOR0 07401 MA(STOR0), RAM>AR, 07402 A(CAP), BR>B, AND, 07403 JUMP(SPLM26); ----- ----- 8F2 000208F3 20800801 ----- 07404 .ORG SPLM26, *HAS IT BEEN CAPTURED? 07405 *B=STOR5 07406 MA(STOR5), RAM>BR, 07407 JZ(SPLM27F,SPLM40T); ----- ----- 8F3 00012314 25000000 ----- 07408 .ORG SPLM27F, *USP IS IN STORE 5 07409 *PUT STOR0 IN STOR5 07410 MA(STOR5), 07411 AR.F0>A, BR.0F>B, OR, 07412 Y>RAM, 07413 JUMP(SPLM28); ----- ----- 314 000008F4 250011D2 ----- 07414 .ORG SPLM28, *PUT STOR5 IN STOR0 07415 MA(STOR0), 07416 AR.0F>A, BR.F0>B, OR, 07417 Y>RAM, 07418 JUMP(SPLM30); ----- ----- 8F4 000008F5 200011C3 ----- 07419 .ORG SPLM30, *A=PM 07420 MA(PM), RAM>AR, 07421 JUMP(SPLM31); ----- ----- 8F5 000208F6 74000000 ----- 07422 .ORG SPLM31, *PU MUST POINT TO LATCH FOR NEW STORE 5 07423 *FOR SPLM300 CODE 07424 *EXIT TO INIT STORE 4 AND STORE 5 07425 MA(PU), 07426 AR>A, B(0), OR, 07427 Y>RAM, 07428 JUMP(SPLM32); ----- ----- 8F6 000008F7 76001110 ----- 07429 .ORG SPLM32, *A=DHREG 07430 MA(DHREG), RAM>AR, 07431 JUMP(SPLM33); ----- ----- 8F7 000208F8 32000000 ----- 07432 .ORG SPLM33, *NRH=1 07433 MA(DHREG), 07434 AR>A, B(NRH), OR, 07435 Y>RAM, 07436 JUMP(SPLM34); ----- ----- 8F8 000008F9 32101110 ----- 07437 .ORG SPLM34, *A=VDPTXT 07438 MA(VDPTXT), RAM>AR, 07439 JUMP(SPLM35); ----- ----- 8F9 000208FA 2B000000 ----- 07440 .ORG SPLM35, *CLEAR URVL 07441 MA(VDPTXT), 07442 AR>A, B(>FF-URVL), AND, 07443 Y>RAM, 07444 JUMP(SPLM200T); ----- ----- 8FA 0000031D 2BF70910 ----- 07445 *IS USP IN STORE 4? 07446 .ORG SPLM40T, *A= POINTER TO STORE 4 SUB-PAGE LATCH 07447 MA(PT), RAM>AR, 07448 JUMP(SPLM41); ----- ----- 315 000208FB 75000000 ----- 07449 .ORG SPLM41, *CALL CSP0 TO COMPARE USP 07450 *RETURN=1, RETURN TO SPLM42 07451 MA(RETURN), 07452 Y(1), 07453 Y>RAM, 07454 JUMP(CSP0); ----- ----- 8FB 000008F0 7C011100 ----- 07455 * LAST Y WAS COMPARE TRUE FLAG 07456 .ORG SPLM42, *B=STOR4 07457 MA(STOR4), RAM>BR, 07458 JZ(SPLM43F,SPLM43T); ----- ----- 2C1 00012316 24000000 ----- 07459 .ORG SPLM43T, *USP NOT IN STORE 4 07460 JUMP(SPLM60T); ----- ----- 317 00000319 00000000 ----- 07461 .ORG SPLM43F, *USP IS IN STORE 4 07462 *P=LAFx POINTER FOR STORE 4 07463 *A=STOR0 07464 MA(STOR0), RAM>AR, 07465 A(LAF0), BRHI>B, ADD, 07466 Y>PR, 07467 JUMP(SPLM44); ----- ----- 316 000208FC A040000C ----- 07468 .ORG SPLM44, *B=LAFx FOR STORE 4 07469 *PR=STOR0 07470 PR>MA, RAM>BR, 07471 AR>A, B(0), OR, 07472 Y>PR, 07473 JUMP(SPLM45); ----- ----- 8FC 001108FD 80001010 ----- 07474 .ORG SPLM45, *Y=CAP 07475 *B=STOR4 07476 MA(STOR4), RAM>BR, 07477 A(CAP), BR>B, AND, 07478 JUMP(SPLM46); ----- ----- 8FD 000108FE 24800801 ----- 07479 .ORG SPLM46, *HAS IT BEEN CAPTURED? 07480 JZ(SPLM47F,SPLM60T); ----- ----- 8FE 00002318 00000000 ----- 07481 *USP IS IN STORE 5, SHUFFLE STORES 07482 * A=P=STOR0, B=STOR4, 07483 .ORG SPLM47F, *STOR4->STOR0 07484 MA(STOR0), 07485 AR.0F>A, BR.F0>B, OR, 07486 Y>RAM, 07487 JUMP(SPLM48); ----- ----- 318 000008FF 200011C3 ----- 07488 .ORG SPLM48, *A=STOR5 07489 MA(STOR5), RAM>AR, 07490 JUMP(SPLM49); ----- ----- 8FF 00020900 25000000 ----- 07491 .ORG SPLM49, *STOR5->STOR4 07492 *B=STOR0 07493 PR>BR, 07494 MA(STOR4), 07495 AR.F0>A, BR.0F>B, OR, 07496 Y>RAM, 07497 JUMP(SPLM50); ----- ----- 900 00410901 240011D2 ----- 07498 .ORG SPLM50, *STOR0->STOR5 07499 MA(STOR5), 07500 AR.0F>A, BR.F0>B, OR, 07501 Y>RAM, 07502 JUMP(SPLM51); ----- ----- 901 00000902 250011C3 ----- 07503 .ORG SPLM51, *A=PU 07504 MA(PU), RAM>AR, 07505 JUMP(SPLM52); ----- ----- 902 00020903 76000000 ----- 07506 .ORG SPLM52, *PT MUST POINT TO LATCH FOR NEW STORE 4 07507 *FOR SPLM200T CODE 07508 MA(PT), 07509 AR>A, B(0), OR, 07510 Y>RAM, 07511 JUMP(SPLM53); ----- ----- 903 00000904 75001110 ----- 07512 .ORG SPLM53, *A=PM 07513 MA(PM), RAM>AR, 07514 JUMP(SPLM54); ----- ----- 904 00020905 74000000 ----- 07515 .ORG SPLM54, *PU MUST POINT TO LATCH FOR NEW STORE 5 07516 *FOR SPLM300 CODE 07517 MA(PU), 07518 AR>A, B(0), OR, 07519 Y>RAM, 07520 JUMP(SPLM55); ----- ----- 905 00000906 76001110 ----- 07521 .ORG SPLM55, *A=DHREG 07522 MA(DHREG), RAM>AR, 07523 JUMP(SPLM56); ----- ----- 906 00020907 32000000 ----- 07524 .ORG SPLM56, *NRH=1 07525 MA(DHREG), 07526 AR>A, B(NRH), OR, 07527 Y>RAM, 07528 JUMP(SPLM57); ----- ----- 907 00000908 32101110 ----- 07529 .ORG SPLM57, *A=VDPTXT 07530 MA(VDPTXT), RAM>AR, 07531 JUMP(SPLM58); ----- ----- 908 00020909 2B000000 ----- 07532 .ORG SPLM58, *CLEAR URVL 07533 MA(VDPTXT), 07534 AR>A, B(>FF-URVL), AND, 07535 Y>RAM, 07536 JUMP(SPLM300); ----- ----- 909 00000442 2BF70910 ----- 07537 *USP IS NOT HAS NOT BEEN CAPTURED IN STORE 4 OR 5 07538 .ORG SPLM60T, *GO AND INIT ALL SUB-PAGE LATCHES 07539 *B= STOR0 07540 MA(STOR0), RAM>BR, 07541 JUMP(SPLM100F); ----- ----- 319 00010310 20000000 ----- 07542 *ENTRY POINT TO INIT ALL SUB-PAGE LATCHES 07543 *INIT STORE 0 SP LATCH 07544 * B= STOR0 07545 .ORG SPLM100F, *P= POINTER TO STORE 0 LAFx 07546 *B= POINTER TO SP LATCH FOR STORE 0 07547 MA(PM), RAM>BR, 07548 A(LAF0), BRHI>B, ADD, 07549 Y>PR, 07550 JUMP(SPLM100A); ----- ----- 310 0001090A F440000C ----- 07551 .ORG SPLM100A, *CLEAR LAFx FOR STORE 0 07552 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 07553 PR>MA, 07554 Y(0), 07555 Y>RAM, 07556 JUMP(SPLM100B); ----- ----- 90A 0010090B 00001100 ----- 07557 * B= PM 07558 .ORG SPLM100B, *RET2= POINTER TO SOURCE 07559 MA(RET2), 07560 Y(USPI-1), 07561 Y>RAM, 07562 JUMP(SPLM101); ----- ----- 90B 0000090C 7B571100 ----- 07563 .ORG SPLM101, *RET3= POINTER TO DEST 07564 MA(RET3), 07565 A(0), BR>B, OR, 07566 Y>RAM, 07567 JUMP(SPLM102); ----- ----- 90C 0000090D 7A001101 ----- 07568 .ORG SPLM102, *RET4= ZERO OFFSET TO COPY WITHOUT ADDING 07569 MA(RET4), 07570 Y(0), 07571 Y>RAM, 07572 JUMP(SPLM103); ----- ----- 90D 0000090E 79001100 ----- 07573 .ORG SPLM103, *CALL DISP0 TO COPY USP0 TO SP LATCH FOR STORE 0 07574 *RETURN=1, RETURN TO SPLM110 07575 MA(RETURN), 07576 Y(1), 07577 Y>RAM, 07578 JUMP(DISP0); ----- ----- 90E 0000090F 7C011100 ----- 07579 * B=VPPRG1 07580 .ORG SPLM110, *Y=HOSP+SPIN 07581 *A= POINTER TO STORE 0 SUB-PAGE LATCH 07582 MA(PM), RAM>AR, 07583 A(HOSP+SPIN), BR>B, AND, 07584 JUMP(SPLM111); ----- ----- 441 00020910 74050801 ----- 07585 .ORG SPLM111, *P= POINTER TO STORE 0 SUB-PAGE LATCH THOUSANDS 07586 *HOSP OR SPIN? 07587 *A=DHREG 07588 MA(DHREG), RAM>AR, 07589 AR>A, B(4), ADD, 07590 Y>PR, 07591 JZ(SPLM112F,SPLM112T); ----- ----- 910 0002231A B2040010 ----- 07592 .ORG SPLM112T, *DO NOT NULLIFY LATCH 07593 JUMP(SPLM200T); ----- ----- 31B 0000031D 00000000 ----- 07594 *NULLIFY SUB-PAGE LATCH (DO NOT RECEIVE DISPLAY PAGE) 07595 .ORG SPLM112F, *NRH=1 (STOP THE HEADER ROLLING) 07596 MA(DHREG), 07597 AR>A, B(NRH), OR, 07598 Y>RAM, 07599 JUMP(SPLM112A); ----- ----- 31A 00000911 32101110 ----- 07600 .ORG SPLM112A, *A=SPxM, Y=HOSP 07601 PR>MA, RAM>AR, 07602 A(HOSP), BR>B, AND, 07603 JUMP(SPLM120); ----- ----- 911 00120912 00040801 ----- 07604 .ORG SPLM120, *NULLIFY LATCH 07605 *HOSP? 07606 PR>MA, 07607 AR.0F>A, B(>F0), OR, 07608 Y>RAM, 07609 JZ(SPLM121F,SPLM200T); ----- ----- 912 0010231C 00F011C0 ----- 07610 .ORG SPLM121F, *INCOMPLETE SUB-PAGE, LEAVE OTHER LATCHES 07611 JUMP(SPLM400); ----- ----- 31C 00000443 00000000 ----- 07612 *INIT STORE 4 SP LATCH 07613 * 07614 * TCJ Jan 93 07615 * If we are in the force capture subpage mode we need 07616 * to leave any page we have already captured in the store. So all 07617 * we need todo is to set CLR, clear VBICAP+OPN+MPG+BTTL+AITL 07618 * and leave CAP as it is. 07619 * 07620 .ORG SPLM200T, * BR = MREG2 for SPALT flag 07621 MA(MREG2), RAM>BR, 07622 JUMP(TCJSPLM01); ----- ----- 31D 00010913 6E000000 ----- 07623 * 07624 .ORG TCJSPLM01, * Y = SPALT set ? 07625 MA(STOR4), RAM>BR, 07626 A(SPALT), BR>B, AND, 07627 JUMP(TCJSPLM02); ----- ----- 913 00010914 24010801 ----- 07628 * 07629 .ORG TCJSPLM02, *P= POINTER TO STORE 4 LAFx 07630 *B= POINTER TO SP LATCH FOR STORE 4 07631 MA(PT), RAM>BR, 07632 A(LAF0), BRHI>B, ADD, 07633 Y>PR, 07634 JZ(TCJSPLM03F,TCJSPLM03T); ----- ----- 914 0001231E F540000C ----- 07635 * 07636 .ORG TCJSPLM03F,* Fetch the page flag for this store 07637 PR>MA, RAM>AR, 07638 JUMP(TCJSPLM04); ----- ----- 31E 00120915 00000000 ----- 07639 * 07640 .ORG TCJSPLM04, * Leave only the CAP flag 07641 AR>A, B(CAP), AND, 07642 Y>AR, 07643 JUMP(TCJSPLM05); ----- ----- 915 00220916 00800810 ----- 07644 * 07645 .ORG TCJSPLM05, * Set CLR to force page clear 07646 PR>MA, 07647 AR>A, B(CLR), OR, 07648 Y>RAM, 07649 JUMP(SPLM300); ----- ----- 916 00100442 00201110 ----- 07650 * 07651 .ORG TCJSPLM03T,*CLEAR LAFx FOR STORE 4 07652 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 07653 PR>MA, 07654 Y(0), 07655 Y>RAM, 07656 JUMP(SPLM200C); ----- ----- 31F 00100917 00001100 ----- 07657 * 07658 .ORG SPLM200C, *RET2= POINTER TO SOURCE 07659 MA(RET2), 07660 Y(USPI-1), 07661 Y>RAM, 07662 JUMP(SPLM201); ----- ----- 917 00000918 7B571100 ----- 07663 .ORG SPLM201, *RET3= POINTER TO DEST 07664 MA(RET3), 07665 A(0), BR>B, OR, 07666 Y>RAM, 07667 JUMP(SPLM202); ----- ----- 918 00000919 7A001101 ----- 07668 .ORG SPLM202, *RET4= OFFSET TO INCREMENT USP 07669 MA(RET4), 07670 Y(1), 07671 Y>RAM, 07672 JUMP(SPLM203); ----- ----- 919 0000091A 79011100 ----- 07673 .ORG SPLM203, *CALL DISP0 TO COPY USP0+1 TO SP LATCH FOR STORE 4 07674 *RETURN=2, RETURN TO SPLM300 07675 MA(RETURN), 07676 Y(2), 07677 Y>RAM, 07678 JUMP(DISP0); ----- ----- 91A 0000090F 7C021100 ----- 07679 *INIT STORE 5 SP LATCH 07680 .ORG SPLM300, * BR = MREG2 for SPALT flag 07681 MA(MREG2), RAM>BR, 07682 JUMP(TCJSPLM11); ----- ----- 442 0001091B 6E000000 ----- 07683 * 07684 .ORG TCJSPLM11, * Y = SPALT set ? 07685 MA(STOR5), RAM>BR, 07686 A(SPALT), BR>B, AND, 07687 JUMP(TCJSPLM12); ----- ----- 91B 0001091C 25010801 ----- 07688 * 07689 .ORG TCJSPLM12, *P= POINTER TO STORE 5 LAFx 07690 *B= POINTER TO SP LATCH FOR STORE 5 07691 MA(PU), RAM>BR, 07692 A(LAF0), BRHI>B, ADD, 07693 Y>PR, 07694 JZ(TCJSPLM13F,TCJSPLM13T); ----- ----- 91C 00012320 F640000C ----- 07695 * 07696 .ORG TCJSPLM13F,* Fetch the page flag for this store 07697 PR>MA, RAM>AR, 07698 JUMP(TCJSPLM14); ----- ----- 320 0012091D 00000000 ----- 07699 * 07700 .ORG TCJSPLM14, * Leave only the CAP flag 07701 AR>A, B(CAP), AND, 07702 Y>AR, 07703 JUMP(TCJSPLM15); ----- ----- 91D 0022091E 00800810 ----- 07704 * 07705 .ORG TCJSPLM15, * Set CLR to force page clear 07706 PR>MA, 07707 AR>A, B(CLR), OR, 07708 Y>RAM, 07709 JUMP(SPLM400); ----- ----- 91E 00100443 00201110 ----- 07710 * 07711 .ORG TCJSPLM13T,*CLEAR LAFx FOR STORE 4 07712 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 07713 PR>MA, 07714 Y(0), 07715 Y>RAM, 07716 JUMP(SPLM300C); ----- ----- 321 0010091F 00001100 ----- 07717 .ORG SPLM300C, *A= POINTER TO SP LATCH FOR STORE 4 07718 MA(PT), RAM>AR, 07719 JUMP(SPLM300D); ----- ----- 91F 00020920 75000000 ----- 07720 .ORG SPLM300D, *RET2= POINTER TO SOURCE 07721 MA(RET2), 07722 AR>A, B(0), OR, 07723 Y>RAM, 07724 JUMP(SPLM301); ----- ----- 920 00000921 7B001110 ----- 07725 .ORG SPLM301, *RET3= POINTER TO DEST 07726 MA(RET3), 07727 A(0), BR>B, OR, 07728 Y>RAM, 07729 JUMP(SPLM302); ----- ----- 921 00000922 7A001101 ----- 07730 .ORG SPLM302, *RET4= OFFSET TO INCREMENT USP 07731 MA(RET4), 07732 Y(1), 07733 Y>RAM, 07734 JUMP(SPLM303); ----- ----- 922 00000923 79011100 ----- 07735 .ORG SPLM303, *CALL DISP0 TO COPY SP IN LATCH 4 TO LATCH 5 WITH 07736 *INCREMENT 07737 *RETURN=3, RETURN TO SPLM400 07738 MA(RETURN), 07739 Y(3), 07740 Y>RAM, 07741 JUMP(DISP0); ----- ----- 923 0000090F 7C031100 ----- 07742 *SUB-PAGE LATCH INITIALISATION COMPLETED 07743 *COMMON EXIT FROM SUB-PAGE PROCESSING 07744 * 07745 * TCJ Jan 93 07746 * We have reinitalised the subpage store so, clear the 07747 * SPFRC flags to abort any subpage capture that is in 07748 * progress. 07749 * 07750 .ORG SPLM400, * Abort forced subpage capture 07751 MA(SPFRC), 07752 Y(0), 07753 Y>RAM, 07754 JUMP(TCJSPLM400); ----- ----- 443 00000924 57001100 ----- 07755 * 07756 .ORG TCJSPLM400, 07757 MA(VPPRG1), RAM>BR, 07758 JUMP(SPLM401); ----- ----- 924 00010925 61000000 ----- 07759 * 07760 .ORG SPLM401, *HOSP=0, PCSP=0, SPIN=0 07761 A(0), BR.F0>B, OR, 07762 Y>AR, 07763 JUMP(SPLM402); ----- ----- 925 00220926 00001003 ----- 07764 .ORG SPLM402, *CSVDP=1 07765 MA(VPPRG1), 07766 AR>A, B(CSVDP), OR, 07767 Y>RAM, 07768 JUMP(VPP330T); ----- ----- 926 0000030F 61101110 ----- 07769 *NEWSFLASH AND SUBTITLE PROCESSING 07770 * This routine updates the SUBT and NWSF flags in VPPRG2 ready 07771 * for the SVDP routine. It also initiates a timed out display 07772 * of row 0 and 24 if a SUBT or NWSF page is being newly 07773 * displayed. 07774 .ORG VPP330T, *A=STOR0 07775 *P=-14 07776 MA(STOR0), RAM>AR, 07777 Y(-14), 07778 Y>PR, 07779 JUMP(VPP330A); ----- ----- 30F 00020927 A0F21000 ----- 07780 .ORG VPP330A, *SET RWL FOR STORE 0 07781 MA(RWL), 07782 ARHI>A, B(0), OR, 07783 Y>RAM, Y>IO, 07784 JUMP(VPP331); ----- ----- 927 00000928 0B005120 ----- 07785 .ORG VPP331, *TPD=SPM+SPC 07786 *A=VPPRG2 07787 RVDP, 07788 MA(VPPRG2), RAM>AR, 07789 JUMP(VPP332); ----- ----- 928 00020929 62008000 ----- 07790 .ORG VPP332, *CLEAR OLD SUBT AND NWSF FLAGS 07791 MA(VPPRG2), 07792 AR>A, B(>FF-SUBT-NWSF), AND, 07793 Y>RAM, 07794 JUMP(VPP333); ----- ----- 929 0000092A 623F0910 ----- 07795 .ORG VPP333, *B=SCREEN 07796 *A=SUBT AND NWSF BITS 07797 MA(SCREEN), RAM>BR, 07798 TPD>A, B(SUBT+NWSF), AND, 07799 Y>AR, 07800 JUMP(VPP334); ----- ----- 92A 0023092B 60C00890 ----- 07801 .ORG VPP334, *Y=TDISP 07802 *B=VPPRG2 07803 MA(VPPRG2), RAM>BR, 07804 A(TDISP), BR>B, AND, 07805 JUMP(VPP335); ----- ----- 92B 0001092C 62040801 ----- 07806 .ORG VPP335, *TELETEXT DISPLAYED? 07807 *UPDATE SUBT AND NWSF 07808 MA(VPPRG2), 07809 AR>A, BR>B, OR, 07810 Y>RAM, Y>AR, 07811 JZ(VPP336F,VPP336T); ----- ----- 92C 00222322 62001111 ----- 07812 .ORG VPP336T, *TELETEXT NOT DISPLAYED 07813 *DPFC=0 07814 MA(VPPRG2), 07815 AR>A, B(>FF-DPFC), AND, 07816 Y>RAM, 07817 JUMP(VPP350); ----- ----- 323 00000325 62EF0910 ----- 07818 *TELETEXT DISPLAYED 07819 .ORG VPP336F, *Y=DPFC 07820 AR>A, B(DPFC), AND, 07821 JUMP(VPP337); ----- ----- 322 0000092D 00100810 ----- 07822 .ORG VPP337, *Y=SUBT+NWSF, DPFC? 07823 *B=DHREG 07824 MA(DHREG), RAM>BR, 07825 AR>A, B(SUBT+NWSF), AND, 07826 JZ(VPP338F,VPP350); ----- ----- 92D 00012324 32C00810 ----- 07827 *DISPLAY PAGE CAPTURED FOR THE FIRST TIME 07828 .ORG VPP338F, *DPFC=0, NWSF OR SUBT? 07829 MA(VPPRG2), 07830 AR>A, B(>FF-DPFC), AND, 07831 Y>RAM, 07832 JZ(VPP339F,VPP339T); ----- ----- 324 00002326 62EF0910 ----- 07833 .ORG VPP339T, *NOT NWSF OR SUBT, TERMINATE TOD AND POOCD 07834 MA(DHREG), 07835 A(>FF-TOD-POOCD), BR>B, AND, 07836 Y>RAM, 07837 JUMP(VPP350); ----- ----- 327 00000325 32D70901 ----- 07838 *NEWLY DISPLAYED SUBT OR NWSF, TIME OUT DISPLAY 07839 * B=DHREG 07840 .ORG VPP339F, *SET TOD 07841 *B=VPPRG1 07842 MA(VPPRG1), RAM>BR, 07843 A(TOD), BR>B, OR, 07844 Y>AR, 07845 JUMP(VPP345); ----- ----- 326 0023092E 61081001 ----- 07846 .ORG VPP345, *CLEAR POOCD 07847 MA(DHREG), 07848 AR>A, B(>FF-POOCD), AND, 07849 Y>RAM, Y>AR, 07850 JUMP(VPP346); ----- ----- 92E 0022092F 32DF0910 ----- 07851 .ORG VPP346, *SET 5S TIME OUT 07852 MA(TIMOUT), 07853 Y(>FF), 07854 Y>RAM, 07855 JUMP(VPP347); ----- ----- 92F 00000930 3BFF1100 ----- 07856 .ORG VPP347, *CSVDP=1 07857 MA(VPPRG1), 07858 A(CSVDP), BR>B, OR, 07859 Y>RAM, 07860 JUMP(VPP350); ----- ----- 930 00000325 61101101 ----- 07861 *SUB-PAGE PROCESSING FOR TOP 07862 .ORG VPP350, *A=VPPRG2 07863 MA(VPPRG2), RAM>AR, 07864 JUMP(VPP350A); ----- ----- 325 00020931 62000000 ----- 07865 .ORG VPP350A, *Y=USPR 07866 AR>A, B(USPR), AND, 07867 JUMP(VPP351); ----- ----- 931 00000932 00080810 ----- 07868 .ORG VPP351, *USPR=0, USPR? 07869 MA(VPPRG2), 07870 AR>A, B(>FF-USPR), AND, 07871 Y>RAM, 07872 JZ(VPP352F,VPP400T); ----- ----- 932 00002328 62F70910 ----- 07873 *UPDATE LFPCLx IN SPREGx 07874 .ORG VPP352F, *INIT LOOP VARIABLE 07875 *STORE=3 07876 MA(STORE), 07877 Y(3), 07878 Y>RAM, 07879 JUMP(VPP359T); ----- ----- 328 0000032D 77031100 ----- 07880 *START OF LOOP 07881 .ORG VPP359T, *A=LOOP VARIABLE 07882 MA(STORE), RAM>AR, 07883 JUMP(VPP354); ----- ----- 32D 00020933 77000000 ----- 07884 .ORG VPP354, *DEC LOOP 07885 MA(STORE), 07886 AR>A, B(-1), ADD, 07887 Y>RAM, Y>AR, 07888 JUMP(VPP355); ----- ----- 933 00220934 77FF0110 ----- 07889 .ORG VPP355, *P=INDEX TO LFSPx 07890 *EXIT LOOP? 07891 AR>A, B(LFSP0), ADD, 07892 Y>PR, 07893 JN(VPP356F,VPP356T); ----- ----- 934 0000432A 80480010 ----- 07894 .ORG VPP356F, *B=LFSPx 07895 PR>MA, RAM>BR, 07896 JUMP(VPP357); ----- ----- 32A 00110935 00000000 ----- 07897 .ORG VPP357, *Y=LFSPx->F 07898 A(->0F), BR.0F>B, ADD, 07899 JUMP(VPP358); ----- ----- 935 00000936 00F10002 ----- 07900 .ORG VPP358, *NULL LFSPx? 07901 *Y=LOOP 07902 AR>A, B(0), OR, 07903 JZ(VPP359F,VPP359T); ----- ----- 936 0000232C 00001010 ----- 07904 .ORG VPP359F, *NO NULL 07905 *CASE LOOP=? 07906 *B=STOR7 07907 MA(STOR7), RAM>BR, 07908 JY(VPP360Y); ----- ----- 32C 0001C6C0 27000000 ----- 07909 .ORG VPP360Y, *CASE LFSP0 07910 *B=STOR2 07911 MA(STOR2), RAM>BR, 07912 JUMP(VPP362); ----- ----- 6C0 000106C2 22000000 ----- 07913 .ORG VPP361, *CASE LFSP2 07914 *B=STOR3 07915 MA(STOR3), RAM>BR, 07916 JUMP(VPP362); ----- ----- 6C1 000106C2 23000000 ----- 07917 * B=STORx 07918 .ORG VPP362, *CASE LFSP2 07919 *P=INDEX TO Mx 07920 A(M0), BRHI>B, ADD, 07921 Y>PR, 07922 JUMP(VPP363); ----- ----- 6C2 00000937 8010000C ----- 07923 .ORG VPP363, *AR=Mx 07924 *P=INDEX TO Tx 07925 PR>MA, RAM>AR, 07926 A(T0), BRHI>B, ADD, 07927 Y>PR, 07928 JUMP(VPP364); ----- ----- 937 00120938 8018000C ----- 07929 .ORG VPP364, *PM=Mx 07930 MA(PM), 07931 AR<<4>A, B(0), OR, 07932 Y>RAM, 07933 JUMP(VPP365); ----- ----- 938 00000939 74001130 ----- 07934 .ORG VPP365, *AR=Tx 07935 *P=INDEX TO Ux 07936 PR>MA, RAM>AR, 07937 A(U0), BRHI>B, ADD, 07938 Y>PR, 07939 JUMP(VPP366); ----- ----- 939 0012093A 8020000C ----- 07940 .ORG VPP366, *PT=Tx 07941 MA(PT), 07942 AR<<4>A, B(0), OR, 07943 Y>RAM, 07944 JUMP(VPP367); ----- ----- 93A 0000093B 75001130 ----- 07945 .ORG VPP367, *AR=Ux 07946 PR>MA, RAM>AR, 07947 JUMP(VPP368); ----- ----- 93B 0012093C 00000000 ----- 07948 .ORG VPP368, *PU=Ux 07949 MA(PU), 07950 AR<<4>A, B(0), OR, 07951 Y>RAM, 07952 JUMP(VPP369); ----- ----- 93C 0000093D 76001130 ----- 07953 .ORG VPP369, *CALL PIL TO FIND LFPCLx 07954 *RETURN=2, RETURN TO VPP370 07955 MA(RETURN), 07956 Y(2), 07957 Y>RAM, 07958 JUMP(PIL0); ----- ----- 93D 000008D4 7C021100 ----- 07959 * A=LFPCL 07960 .ORG VPP370, *B=LOOP 07961 MA(STORE), RAM>BR, 07962 JUMP(VPP371); ----- ----- 292 0001093E 77000000 ----- 07963 .ORG VPP371, *P=INDEX TO SPREGx 07964 A(SPREG0), BR>B, ADD, 07965 Y>PR, 07966 JUMP(VPP372); ----- ----- 93E 0000093F 80540001 ----- 07967 .ORG VPP372, *UPDATE LFPCLx AND RETURN TO BEGINNING OF LOOP 07968 *SPREGx=LFPCL 07969 PR>MA, 07970 AR<<4>A, B(0), OR, 07971 Y>RAM, 07972 JUMP(VPP359T); ----- ----- 93F 0010032D 00001130 ----- 07973 *UPDATE MSPx IN SPREGx 07974 .ORG VPP356T, *INIT LOOP VARIABLE 07975 *A=3 07976 Y(3), 07977 Y>AR, 07978 JUMP(VPP374); ----- ----- 32B 00220940 00031000 ----- 07979 *START OF LOOP 07980 * A=COUNT 07981 .ORG VPP374, *DEC LOOP VARIABLE 07982 *COUNT=A=A-1 07983 MA(COUNT), 07984 AR>A, B(-1), ADD, 07985 Y>RAM, Y>AR, 07986 JUMP(VPP375); ----- ----- 940 00220941 78FF0110 ----- 07987 .ORG VPP375, *B=SPREG0 07988 *P=INDEX TO SPREGx 07989 *EXIT LOOP? 07990 MA(SPREG0), RAM>BR, 07991 AR>A, B(SPREG0), ADD, 07992 Y>PR, 07993 JN(VPP376F,VPP376T); ----- ----- 941 0001432E D4540010 ----- 07994 .ORG VPP376F, *A=SPREGx 07995 PR>MA, RAM>AR, 07996 JUMP(VPP377); ----- ----- 32E 00120942 00000000 ----- 07997 .ORG VPP377, *COMPARE LFPCLx AND LFPCL0 07998 ARHI>A, BRHI>B, XOR, 07999 JUMP(VPP378); ----- ----- 942 00000943 0000182C ----- 08000 .ORG VPP378, *LFPCLx=LFPCL0? 08001 *B=SPREG1 08002 MA(SPREG1), RAM>BR, 08003 JZ(VPP379F,VPP379T); ----- ----- 943 00012330 55000000 ----- 08004 .ORG VPP379T, *LFPCLx=LFPCL0 08005 *SET MSP0 IN SPREGx 08006 PR>MA, 08007 AR>A, B(MSP0), OR, 08008 Y>RAM, 08009 JUMP(VPP379F); ----- ----- 331 00100330 00011110 ----- 08010 .ORG VPP379F, *COMPARE LFPCLx AND LFPCL1 08011 *A=UPDATED SPREGx 08012 PR>MA, RAM>AR, 08013 ARHI>A, BRHI>B, XOR, 08014 JUMP(VPP380); ----- ----- 330 00120944 0000182C ----- 08015 .ORG VPP380, *LFPCLx=LFPCL1? 08016 *B=SPREG2 08017 MA(SPREG2), RAM>BR, 08018 JZ(VPP381F,VPP381T); ----- ----- 944 00012332 56000000 ----- 08019 .ORG VPP381T, *LFPCLx=LFPCL1 08020 *SET MSP1 IN SPREGx 08021 PR>MA, 08022 AR>A, B(MSP1), OR, 08023 Y>RAM, 08024 JUMP(VPP381F); ----- ----- 333 00100332 00021110 ----- 08025 .ORG VPP381F, *COMPARE LFPCLx AND LFPCL2 08026 *A=UPDATED SPREGx 08027 PR>MA, RAM>AR, 08028 ARHI>A, BRHI>B, XOR, 08029 JUMP(VPP382); ----- ----- 332 00120945 0000182C ----- 08030 .ORG VPP382, *LFPCLx=LFPCL2? 08031 JZ(VPP383F,VPP383T); ----- ----- 945 00002334 00000000 ----- 08032 .ORG VPP383T, *LFPCLx=LFPCL0 08033 *SET MSP2 IN SPREGx 08034 PR>MA, 08035 AR>A, B(MSP2), OR, 08036 Y>RAM, 08037 JUMP(VPP383F); ----- ----- 335 00100334 00041110 ----- 08038 .ORG VPP383F, *AR=COUNT 08039 *RETURN TO START OF LOOP 08040 MA(COUNT), RAM>AR, 08041 JUMP(VPP374); ----- ----- 334 00020940 78000000 ----- 08042 .ORG VPP376T, * 08043 JUMP(VPP400T); ----- ----- 32F 00000329 00000000 ----- 08044 *CHECK CGAP. IF SET, CALL GENERATE A PROMPT ROUTINE 08045 .ORG VPP400T, *AR=EXPREG 08046 MA(EXPREG), RAM>AR, 08047 JUMP(VPP401); ----- ----- 329 00020946 63000000 ----- 08048 .ORG VPP401, *Y=CGAP 08049 *BR=STOR0 FOR GAP0 08050 MA(STOR0), RAM>BR, 08051 AR>A, B(CGAP), AND, 08052 JUMP(VPP402); ----- ----- 946 00010947 20080810 ----- 08053 .ORG VPP402, *CGAP=0, GENERATE A PROMPT? 08054 *JUMP TO GAP0, RETURN TO VPP450 08055 MA(EXPREG), 08056 AR>A, B(>FF-CGAP), AND, 08057 Y>RAM, 08058 JZ(GAP0,VPP450); ----- ----- 947 00002336 63F70910 ----- 08059 *NEED TO COPY DISPLAY PAGE ROW 24 FROM STORE 6? 08060 .ORG VPP450, *B=SYS2 08061 MA(SYS2), RAM>BR, 08062 JUMP(VPP451); ----- ----- 337 00010948 09000000 ----- 08063 .ORG VPP451, *A=SYS2 WITH RP24, CPYR24 AND R24RTC INVERTED 08064 A(RP24+CPYR24+R24RTC), BR>B, XOR, 08065 Y>AR, 08066 JUMP(VPP452); ----- ----- 948 00220949 000E1801 ----- 08067 .ORG VPP452, *Y=!RP24+!CPYR24+!R24RTC 08068 *A=STOR0 08069 MA(STOR0), RAM>AR, 08070 AR>A, B(RP24+CPYR24+R24RTC), AND, 08071 JUMP(VPP453); ----- ----- 949 0002094A 200E0810 ----- 08072 .ORG VPP453, *NEED TO COPY ACROSS? 08073 *CPYR24=0 08074 MA(SYS2), 08075 A(>FF-CPYR24), BR>B, AND, 08076 Y>RAM, 08077 JZ(VPP454F,VPP454T); ----- ----- 94A 00002338 09FB0901 ----- 08078 .ORG VPP454T, *YES, B=STOR7 FOR CBR0 08079 MA(STOR7), RAM>BR, 08080 JUMP(VPP455); ----- ----- 339 0001094B 27000000 ----- 08081 .ORG VPP455, *CALL CBR0 TO COPY ACROSS ROW 24 08082 *RETURN=0, RETURN TO VPP500Y; 08083 MA(RETURN), 08084 Y(0), 08085 Y>RAM, 08086 JUMP(CBR0); ----- ----- 94B 0000094C 7C001100 ----- 08087 .ORG VPP454F, *A=VPPRG1 08088 MA(VPPRG1), RAM>AR, 08089 JUMP(VPP500Y); ----- ----- 338 000200A0 61000000 ----- 08090 * 08091 *+++ CBR: COPY BOTTOM ROW ROUTINE 08092 * 08093 * This routine copies the row 24 of the latch pointed to by B 08094 * MSN to the latch pointed to by A MSN. 08095 * 08096 * input pars are:- 08097 * A: MSN points to destination latch 08098 * B: MSN points to source latch 08099 * RETURN: return pointer 08100 * 08101 .ORG CBR0, *P=POINTER TO START OF ROW 24 08102 Y(-65), 08103 Y>PR, 08104 JUMP(CBR1); ----- ----- 94C 0000094D 80BF1000 ----- 08105 .ORG CBR1, *B=POINTER TO START OF ROW 24 08106 *STORE=SOURCE LATCH 08107 PR>BR, 08108 MA(STORE), 08109 A(0), BR>B, OR, 08110 Y>RAM, 08111 JUMP(CBR10); ----- ----- 94D 0041094E 77001101 ----- 08112 *COPY CHARACTER LOOP 08113 .ORG CBR10, *B=SOURCE LATCH 08114 *INCREMENT SCREEN POINTER 08115 MA(STORE), RAM>BR, 08116 A(1), BR>B, ADD, 08117 Y>PR, 08118 JUMP(CBR11); ----- ----- 94E 0001094F F7010001 ----- 08119 .ORG CBR11, *RWL=SOURCE LATCH 08120 *BR=SCREEN POINTER 08121 PR>BR, 08122 MA(RWL), 08123 A(7), BRHI>B, AND, 08124 Y>RAM, Y>IO, 08125 JUMP(CBR12); ----- ----- 94F 00410950 0B07490C ----- 08126 .ORG CBR12, *TPD=CHARACTER TO COPY 08127 *Y=POINTER+25 08128 *B=RETURN 08129 RVDP, 08130 MA(RETURN), RAM>BR, 08131 A(25), BR>B, ADD, 08132 JUMP(CBR13); ----- ----- 950 00010951 7C198001 ----- 08133 .ORG CBR13, *RWL=DESTINATION STORE 08134 *LAST CHARACTER? 08135 MA(RWL), 08136 ARHI>A, B(7), AND, 08137 Y>RAM, Y>IO, 08138 JZ(CBR20F,CBR20T); ----- ----- 951 0000233A 0B074920 ----- 08139 .ORG CBR20F, *COPY CHARACTER TO DESTINATION LATCH AND REPEAT 08140 *BR=SCREEN POINTER 08141 PR>BR, 08142 TPD>A, B(0), OR, 08143 Y>DR, 08144 JUMP(CBR10); ----- ----- 33A 0041194E 00001090 ----- 08145 *END OF LOOP 08146 .ORG CBR20T, *Y=RETURN 08147 *B=STOR0 FOR FPFS CODE 08148 MA(STOR0), RAM>BR, 08149 A(3), BR>B, AND, 08150 JUMP(CBR21); ----- ----- 33B 00010952 20030801 ----- 08151 .ORG CBR21, *COPY LAST CHARACTER 08152 *CASE RETURN=? 08153 *AR=VPPRG1 FOR VPP500Y CODE 08154 MA(VPPRG1), RAM>AR, 08155 TPD>A, B(0), OR, 08156 Y>DR, 08157 JY(VPP500Y); ----- ----- 952 0002D0A0 61001090 ----- 08158 *CALL SVDP0 TO SET VDP REGISTERS 08159 * A=VPPRG1 08160 .ORG VPP500Y, *Y=CSVDP 08161 AR>A, B(CSVDP), AND, 08162 JUMP(VPP502); ----- ----- 0A0 00000953 00100810 ----- 08163 .ORG VPP502, *CSVDP? 08164 *IF YES, JUMP TO CSVDP0 TO UDATE VDP REGISTERS 08165 *RETURN TO VPP600T 08166 *CLEAR CSVDP 08167 MA(VPPRG1), 08168 AR>A, B(>FF-CSVDP), AND, 08169 Y>RAM, 08170 JZ(SVDP0,VPP600T); ----- ----- 953 0000233C 61EF0910 ----- 08171 *RUN QUALITY ALGORITHM 08172 .ORG VPP600T, *Y=QUALITY 08173 *A=HYSREG 08174 MA(HYSREG), RAM>AR, 08175 A(%00000100), PLL>B, AND, 08176 JUMP(VPP610); ----- ----- 33D 00020954 6704080E ----- 08177 .ORG VPP610, *Y=HYSTERISIS COUNT 08178 *QUALITY GOOD? 08179 *B=HYSREG 08180 MA(HYSREG), RAM>BR, 08181 AR.0F>A, B(0), OR, 08182 JZ(VPP611F,VPP611T); ----- ----- 954 0001233E 670010C0 ----- 08183 *GOOD QUALITY 08184 .ORG VPP611F, *INC HYS COUNT 08185 MA(HYSREG), 08186 AR>A, B(>01), ADD, 08187 Y>RAM, 08188 JUMP(VPP619); ----- ----- 33E 00000955 67010110 ----- 08189 .ORG VPP619, *B=NEW HYS COUNT 08190 *A LO NIB= END STOP 08191 MA(HYSREG), RAM>BR, 08192 ARHI>A, B(0), OR, 08193 Y>AR, 08194 JUMP(VPP620); ----- ----- 955 00230956 67001020 ----- 08195 .ORG VPP620, *Y=NEW HYS COUNT - END STOP 08196 *B=STSWD0 08197 MA(STSWD0), RAM>BR, 08198 NAR>A, BR.0F>B, O>CIN, ADD, 08199 JUMP(VPP621); ----- ----- 956 00010957 64000442 ----- 08200 .ORG VPP621, *REACHED END STOP? 08201 *Y=BADFLG 08202 *B=HYSREG 08203 MA(HYSREG), RAM>BR, 08204 A(BADFLG), BR>B, AND, 08205 JN(VPP622F,VPP622T); ----- ----- 957 00014340 67100801 ----- 08206 .ORG VPP622T, *NOT REACHED END STOP, EXIT 08207 JUMP(VPP660T); ----- ----- 341 00000343 00000000 ----- 08208 .ORG VPP622F, *REACHED END STOP 08209 *BADFLG? 08210 *HYS COUNT =END STOP 08211 MA(HYSREG), 08212 AR.0F>A, BR.F0>B, OR, 08213 Y>RAM, 08214 JZ(VPP623F,VPP660T); ----- ----- 340 00002342 670011C3 ----- 08215 *BAD->GOOD 08216 .ORG VPP623F, *B=STSWD0 08217 MA(STSWD0), RAM>BR, 08218 JUMP(VPP624); ----- ----- 342 00010958 64000000 ----- 08219 .ORG VPP624, *BADFLG=0 08220 *GO AND SET CSPLL 08221 MA(STSWD0), 08222 A(>FF-BADFLG), BR>B, AND, 08223 Y>RAM, 08224 JUMP(VPP633T); ----- ----- 958 0000034D 64EF0901 ----- 08225 *BAD QUALITY 08226 * A=HYSREG, B=HYSREG, LAST Y WAS HYS COUNT 08227 .ORG VPP611T, *DEC HYS COUNT 08228 *COUNT REACHED BOTTOM STOP? 08229 MA(HYSREG), 08230 AR>A, B(->01), ADD, 08231 Y>RAM, Y>AR, 08232 JZ(VPP630F,VPP630T); ----- ----- 33F 00222344 67FF0110 ----- 08233 .ORG VPP630T, *ALREADY REACHED BOTTOM 08234 *RESTORE OLD COUNT AND EXIT 08235 MA(HYSREG), 08236 A(0), BR>B, OR, 08237 Y>RAM, 08238 JUMP(VPP660T); ----- ----- 345 00000343 67001101 ----- 08239 .ORG VPP630F, *Y=NEW COUNT 08240 *B=STSWD0 08241 MA(STSWD0), RAM>BR, 08242 AR.0F>A, B(0), OR, 08243 JUMP(VPP631); ----- ----- 344 00010959 640010C0 ----- 08244 .ORG VPP631, *REACHED BOTTOM THIS TIME? 08245 *Y=BADFLG 08246 A(BADFLG), BR>B, AND, 08247 JZ(VPP632F,VPP632T); ----- ----- 959 00002346 00100801 ----- 08248 .ORG VPP632F, *NO, EXIT 08249 JUMP(VPP660T); ----- ----- 346 00000343 00000000 ----- 08250 .ORG VPP632T, *REACHED THE BOTTOM THIS TIME 08251 *BADFLG=1, BADFLG? 08252 MA(STSWD0), 08253 A(BADFLG), BR>B, OR, 08254 Y>RAM, 08255 JZ(VPP633F,VPP633T); ----- ----- 347 0000234C 64101101 ----- 08256 .ORG VPP633F, *ALREADY BAD 08257 JUMP(VPP660T); ----- ----- 34C 00000343 00000000 ----- 08258 *GOOD->BAD 08259 *ENTRY POINT FROM BAD->GOOD 08260 .ORG VPP633T, *B=VPPRG2 08261 MA(VPPRG2), RAM>BR, 08262 JUMP(VPP634); ----- ----- 34D 0001095A 62000000 ----- 08263 .ORG VPP634, *CSPLL=1 08264 MA(VPPRG2), 08265 A(CSPLL), BR>B, OR, 08266 Y>RAM, 08267 JUMP(VPP660T); ----- ----- 95A 00000343 62041101 ----- 08268 *MAINTAIN AUTO TELETEXT RECEPTION THRESHOLD 08269 .ORG VPP660T, *A=STSWD0 08270 MA(STSWD0), RAM>AR, 08271 JUMP(VPP661); ----- ----- 343 0002095B 64000000 ----- 08272 .ORG VPP661, *A=MREG1 08273 *Y=BADFLG 08274 MA(MREG1), RAM>AR, 08275 AR>A, B(BADFLG), AND, 08276 JUMP(VPP662); ----- ----- 95B 0002095C 65100810 ----- 08277 .ORG VPP662, *GOOD OR BAD? 08278 *Y=THRSH 08279 *A=RCM 08280 MA(RCM), RAM>AR, 08281 AR>A, B(THRSH), AND, 08282 JZ(VPP663F,VPP663T); ----- ----- 95C 0002234E 28100810 ----- 08283 .ORG VPP663T, *GOOD, CLEAR AOFF 08284 MA(RCM), 08285 AR>A, B(>FF-AOFF), AND, 08286 Y>RAM, 08287 JUMP(VPP700T); ----- ----- 34F 00000351 28BF0910 ----- 08288 .ORG VPP663F, *BAD, RETURN=1 08289 *AUTO RECEPTION THRESHOLD ENABLED? 08290 MA(RETURN), 08291 Y(1), 08292 Y>RAM, 08293 JZ(VPP664F,VPP700T); ----- ----- 34E 00002350 7C011100 ----- 08294 .ORG VPP664F, *YES, INHIBIT TEXT 08295 *AOFF=1 08296 *CALL CDTXT0 TO TERMINATE PAGES 08297 *RETURN=1, RETURN TO VPP665F 08298 MA(RCM), 08299 AR>A, B(AOFF), OR, 08300 Y>RAM, 08301 JUMP(CDTXT0); ----- ----- 350 0000095D 28401110 ----- 08302 .ORG VPP665F, * 08303 JUMP(VPP700T); ----- ----- 65E 00000351 00000000 ----- 08304 *CALL SPLL0 TO SET VDP REGISTERS 08305 .ORG VPP700T, *A=VPPRG2 08306 MA(VPPRG2), RAM>AR, 08307 JUMP(VPP701); ----- ----- 351 0002095E 62000000 ----- 08308 .ORG VPP701, *Y=CSPLL 08309 *B=UPLL 08310 MA(UPLL), RAM>BR, 08311 AR>A, B(CSPLL), AND, 08312 JUMP(VPP702); ----- ----- 95E 0001095F 6F040810 ----- 08313 .ORG VPP702, *CSPLL=0, CSPLL? 08314 *IF YES, JUMP TO SPLL0 08315 *RETURN TO VPP703F 08316 MA(VPPRG2), 08317 AR>A, B(>FF-CSPLL), AND, 08318 Y>RAM, 08319 JZ(SPLL0,VPP703F); ----- ----- 95F 00002352 62FB0910 ----- 08320 *END OF VBI POST PROCESSING 08321 .ORG VPP703F, 08322 JUMP(ST0F); ----- ----- 353 00000001 00000000 ----- 08323 * 08324 *+++SORT STORE TABLE ROUTINE 08325 * 08326 * This routine is called by VPP when store table (the table 08327 * which relates stores to latch numbers) must be re-configured 08328 * ie when:- 08329 * 1) new display page entered (if not in FLOF mode) 08330 * 2) FLOF display page has been captured 08331 * 3) TOP table has been captured 08332 * If a page has not been captured, this routine calls INLA to 08333 * initialise a latch. 08334 * PU, PT, PM== (base page for store allocation algorithm) 08335 * 08336 * OLDSTR= contains pointers for store 0 and 6 to sort out row 24 08337 * 08338 *entry point to sort background latches 08339 .ORG SST0B, *INIT LOOP VARIABLE, STORE=0 08340 *GO STRAIGHT TO FPFS ROUTINE 08341 MA(STORE), 08342 Y(0), 08343 Y>RAM, Y>AR, 08344 JUMP(FPFS0F); ----- ----- 30D 00220362 77001100 ----- 08345 *entry point to sort all latches 08346 .ORG SST0A, *INIT LOOP VARIABLE, STORE=0 08347 MA(STORE), 08348 Y(0), 08349 Y>RAM, 08350 JUMP(SST1); ----- ----- 8E1 00000960 77001100 ----- 08351 .ORG SST1, *CALL PIL0 08352 *RETURN=0, RETURN TO SST2Y 08353 MA(RETURN), 08354 A(0), B(0), AND, 08355 Y>RAM, 08356 JUMP(PIL0); ----- ----- 960 000008D4 7C000900 ----- 08357 *START OF STORE LOOP (FIND PAGE FOR STORE RETURNS HERE) 08358 * A=RETURN DATA FROM PIL, PU/T/M=CURRENT PAGE 08359 .ORG SST2Y, *AR==RETURN DATA FROM PIL0 08360 *Y= PAGE NOT IN A LATCH FLAG 08361 *BR=SCREEN 08362 MA(SCREEN), RAM>BR, 08363 AR>A, B(>08), AND, 08364 JUMP(SST3); ----- ----- 290 00010961 60080810 ----- 08365 .ORG SST3, *PAGE IN A LATCH? 08366 *PR=STORE CONTAINING LATCH 08367 ARHI>A, B(7), AND, 08368 Y>PR, 08369 JZ(SST4F,SST4T); ----- ----- 961 00002354 80070820 ----- 08370 *PAGE IS NOT IN A LATCH 08371 .ORG SST4F, *Y=MENM 08372 *BR=LATCH IN STORE 7 08373 MA(STOR7), RAM>BR, 08374 A(MENM), BR>B, AND, 08375 JUMP(SST4A); ----- ----- 354 00010962 27080801 ----- 08376 .ORG SST4A, *MENM? 08377 *P= INDEX TO LAFx FOR STORE 7 08378 A(LAF0), BRHI>B, ADD, 08379 Y>PR, 08380 JZ(SST4BF,SST4BT); ----- ----- 962 00002356 8040000C ----- 08381 * 08382 .ORG SST4BT, *NOT MENU MODE 08383 *A= LAFx FOR STORE 7 08384 PR>MA, RAM>AR, 08385 JUMP(SST4BA); ----- ----- 357 00120963 00000000 ----- 08386 .ORG SST4BA, *Y=AITL 08387 AR>A, B(AITL), AND, 08388 JUMP(SST4BB); ----- ----- 963 00000964 00010810 ----- 08389 .ORG SST4BB, *STORE 7 BEING USED FOR AN AIT? 08390 *RET3= LOWEST PRIORITY STORE 08391 MA(RET3), 08392 Y(7), 08393 Y>RAM, 08394 JZ(SST4BCF,SST4DT); ----- ----- 964 00002358 7A071100 ----- 08395 .ORG SST4BCF, *YES, STORE 6 IS LOWEST PRIORITY 08396 MA(STOR6), RAM>BR, 08397 JUMP(SST4BD); ----- ----- 358 00010965 26000000 ----- 08398 .ORG SST4BD, *RET3= LOWEST PRIORITY STORE 08399 MA(RET3), 08400 Y(6), 08401 Y>RAM, 08402 JUMP(SST4DT); ----- ----- 965 00000359 7A061100 ----- 08403 * 08404 .ORG SST4BF, *MENU MODE, LOWEST PRIORITY LATCH IS 5 08405 *BR=LATCH IN STORE 5 08406 MA(STOR5), RAM>BR, 08407 JUMP(SST4C); ----- ----- 356 00010966 25000000 ----- 08408 .ORG SST4C, *RET3= LOWEST PRIORITY STORE 08409 MA(RET3), 08410 Y(5), 08411 Y>RAM, 08412 JUMP(SST4DT); ----- ----- 966 00000359 7A051100 ----- 08413 * B= STORx WHERE x IS THE LOWEST PRIORITY STORE 08414 * RET3= LOWEST PRIORITY STORE 08415 .ORG SST4DT, *AR==LATCH FOR INIT 08416 A(0), BRHI>B, OR, 08417 Y>AR, 08418 JUMP(SST4E); ----- ----- 359 00220967 0000100C ----- 08419 .ORG SST4E, *CALL INLA0 TO INITIALISE THE LATCH WHICH IS THE 08420 *LOWEST PRIORITY STORE AT THE MOMENT 08421 *RETURN=0, RETURN TO SST5Y 08422 *PU,PT,PM==PAGE FOR LATCH 08423 *RETURN=0 08424 MA(RETURN), 08425 Y(0), 08426 Y>RAM, 08427 JUMP(INLA0); ----- ----- 967 000008E5 7C001100 ----- 08428 .ORG SST5Y, *A=RET3 (LOWST PRIORITY STORE FOR SHUFFLE) 08429 MA(RET3), RAM>AR, 08430 JUMP(SST8); ----- ----- 298 00020968 7A000000 ----- 08431 *PAGE IS IN A LATCH 08432 .ORG SST4T, *PAGE HAS BEEN CAPTURED 08433 *BR=STORE CONTAINING LATCH 08434 *PR=RETURN DATA FROM PIL 08435 PR>BR, 08436 AR>A, B(0), OR, 08437 Y>PR, 08438 JUMP(SST7); ----- ----- 355 00410969 80001010 ----- 08439 .ORG SST7, *AR=RET3=STORE CONTAINING LATCH 08440 MA(RET3), 08441 A(0), BR>B, OR, 08442 Y>AR, Y>RAM, 08443 JUMP(SST8); ----- ----- 969 00220968 7A001101 ----- 08444 *SHUFFLE LATCH TABLE (MISSING TOP TABLES) 08445 * AR=RET3=STORE CONTAINING LATCH TO BE MOVED 08446 * STORE=DESTINATION STORE FOR LATCH 08447 .ORG SST8, *PR=INDEX TO LATCH TO BE MOVED 08448 AR>A, B(STOR0), ADD, 08449 Y>PR, 08450 JUMP(SST9A); ----- ----- 968 0000096A 80200010 ----- 08451 .ORG SST9A, *BR=LATCH TO BE MOVED 08452 PR>MA, RAM>BR, 08453 JUMP(SST10); ----- ----- 96A 0011096B 00000000 ----- 08454 .ORG SST10, *COUNT= LATCH TO BE MOVED 08455 MA(COUNT), 08456 A(0), BRHI>B, OR, 08457 Y>RAM, 08458 JUMP(SST10A); ----- ----- 96B 0000096C 7800110C ----- 08459 *ENTRY TO SHUFFLE LOOP 08460 *INPUT PARS:- 08461 * AR=RET3=STORE CONTAINING LATCH TO BE MOVED 08462 * STORE=DESTINATION STORE FOR LATCH 08463 * COUNT=LATCH TO BE MOVED 08464 *VARS:- 08465 * AR=RET3=DESTINATION STORE FOR EACH COPY DOWN 08466 * RET4=SOURCE STORE FOR EACH COPY DOWN 08467 .ORG SST10A, *BR=STORE 08468 MA(STORE), RAM>BR, 08469 JUMP(SST11); ----- ----- 96C 0001096D 77000000 ----- 08470 .ORG SST11, *Y=STORE-RET3 08471 NAR>A, BR>B, ADD, O>CIN, 08472 JUMP(SST11A); ----- ----- 96D 0000096E 00000441 ----- 08473 .ORG SST11A, *Y=STORE-RET3 08474 *RET3=STORE? 08475 NAR>A, BR>B, ADD, O>CIN, 08476 JZ(SST11CF,SST11CT); ----- ----- 96E 0000235A 00000441 ----- 08477 *SHUFFLE COMPLETE, LOAD STORE WITH LATCH BEING MOVED AND EXIT 08478 .ORG SST11CT, *STORES THE SAME 08479 *P=INDEX TO DESINATION STORE 08480 *A=LATCH BEING MOVED 08481 MA(COUNT), RAM>AR, 08482 A(STOR0), BR>B, ADD, 08483 Y>PR, 08484 JUMP(SST11D); ----- ----- 35B 0002096F F8200001 ----- 08485 .ORG SST11D, *B=STOREx 08486 PR>MA, RAM>BR, 08487 JUMP(SST11E); ----- ----- 96F 00110970 00000000 ----- 08488 .ORG SST11E, *MOVE LATCH AND EXIT 08489 PR>MA, 08490 AR<<4>A, BR.0F>B, OR, 08491 Y>RAM, 08492 JUMP(FPFS0F); ----- ----- 970 00100362 00001132 ----- 08493 *SHUFFLE NOT COMPLETE, FIND NEXT STORE UP (SKIP TOP TABLES) 08494 * AR=RET4 (OR RET3 ON FIRST ENTRY FROM SST11A) 08495 .ORG SST11CF, *RET4-- 08496 MA(RET4), 08497 AR>A, B(-1), ADD, 08498 Y>RAM, Y>AR, 08499 JUMP(SST12); ----- ----- 35A 00220971 79FF0110 ----- 08500 .ORG SST12, *P=INDEX TO RET4 STORE 08501 AR>A, B(STOR0), ADD, 08502 Y>PR, 08503 JUMP(SST13); ----- ----- 971 00000972 80200010 ----- 08504 .ORG SST13, *A=LATCH IN RET4 STORE 08505 PR>MA, RAM>AR, 08506 JUMP(SST13A); ----- ----- 972 00120973 00000000 ----- 08507 .ORG SST13A, *P=INDEX TO LAFx 08508 ARHI>A, B(LAF0), ADD, 08509 Y>PR, 08510 JUMP(SST13B); ----- ----- 973 00000974 80400020 ----- 08511 .ORG SST13B, *B=LAFx 08512 PR>MA, RAM>BR, 08513 JUMP(SST13C); ----- ----- 974 00110975 00000000 ----- 08514 .ORG SST13C, *Y=BTTL+AITL 08515 *B=RET3 08516 MA(RET3), RAM>BR, 08517 A(AITL+BTTL), BR>B, AND, 08518 JUMP(SST13D); ----- ----- 975 00010976 7A030801 ----- 08519 .ORG SST13D, *TOP TABLE? 08520 *P=INDEX TO DESTINATION STORE FOR COPY DOWN 08521 A(STOR0), BR>B, ADD, 08522 Y>PR, 08523 JZ(SST13EF,SST13ET); ----- ----- 976 0000235C 80200001 ----- 08524 .ORG SST13EF, *RETURN FOR NEXT STORE 08525 *AR=RET4 08526 MA(RET4), RAM>AR, 08527 JUMP(SST11CF); ----- ----- 35C 0002035A 79000000 ----- 08528 *NOT A TOP TABLE, COPY DOWN LATCH 08529 .ORG SST13ET, *BR=STORx 08530 PR>MA, RAM>BR, 08531 JUMP(SST14); ----- ----- 35D 00110977 00000000 ----- 08532 .ORG SST14, *COMPLETE COPY DOWN 08533 PR>MA, 08534 AR.F0>A, BR.0F>B, OR, 08535 Y>RAM, 08536 JUMP(SST14A); ----- ----- 977 00100978 000011D2 ----- 08537 .ORG SST14A, *AR=RET4 08538 MA(RET4), RAM>AR, 08539 JUMP(SST14B); ----- ----- 978 00020979 79000000 ----- 08540 .ORG SST14B, *AR=RET3=RET4 08541 MA(RET3), 08542 AR>A, B(0), OR, 08543 Y>RAM, 08544 JUMP(SST10A); ----- ----- 979 0000096C 7A001110 ----- 08545 *SHUFFLE COMPLETE, FIND PAGE FOR STORE 08546 .ORG FPFS0F, *AR=STORE 08547 MA(STORE), RAM>AR, 08548 JUMP(FPFS1); ----- ----- 362 0002097A 77000000 ----- 08549 .ORG FPFS1, *Y=STORE-7 08550 *B=SYS2 08551 MA(SYS2), RAM>BR, 08552 AR>A, B(-7), ADD, 08553 JUMP(FPFS2); ----- ----- 97A 0001097B 09F90010 ----- 08554 .ORG FPFS2, *STORE++ 08555 *LAST STORE? 08556 MA(STORE), 08557 AR>A, B(1), ADD, 08558 Y>RAM, Y>AR, 08559 JZ(FPFS3F,FPFS3T); ----- ----- 97B 0022235E 77010110 ----- 08560 *INITIALISE THIS STORE 08561 * A=STORE 08562 .ORG FPFS3F, *P=INDEX TO STORx 08563 AR>A, B(STOR0), ADD, 08564 Y>PR, 08565 JUMP(FPFS4); ----- ----- 35E 0000097C 80200010 ----- 08566 .ORG FPFS4, *B=STORx 08567 PR>MA, RAM>BR, 08568 JUMP(FPFS5); ----- ----- 97C 0011097D 00000000 ----- 08569 .ORG FPFS5, *P=INDEX TO LAFx 08570 *B=SCREEN 08571 MA(SCREEN), RAM>BR, 08572 A(LAF0), BRHI>B, ADD, 08573 Y>PR, 08574 JUMP(FPFS10); ----- ----- 97D 0001097E E040000C ----- 08575 .ORG FPFS10, *B=LAFx 08576 *Y=MENM 08577 PR>MA, RAM>BR, 08578 A(MENM), BR>B, AND, 08579 JUMP(FPFS11); ----- ----- 97E 0011097F 00080801 ----- 08580 .ORG FPFS11, *MENU MODE? 08581 JZ(FPFS11AF,FPFS11AT); ----- ----- 97F 00002360 00000000 ----- 08582 .ORG FPFS11AF, *MENU MODE, CHECK IF STORE IS A MENU PAGE OR A TOP TABLE 08583 *Y=AITL+BTTL+MPG 08584 *B=SYS1 08585 MA(SYS1), RAM>BR, 08586 A(AITL+BTTL+MPG), BR>B, AND, 08587 JUMP(FPFS12); ----- ----- 360 00010980 08070801 ----- 08588 .ORG FPFS11AT, *NOT MENU MODE, CHECK IF STORE IS A TOP TABLE ONLY 08589 *Y=AITL+BTTL 08590 *B=SYS1 08591 MA(SYS1), RAM>BR, 08592 A(AITL+BTTL), BR>B, AND, 08593 JUMP(FPFS12); ----- ----- 361 00010980 08030801 ----- 08594 .ORG FPFS12, *SKIP THIS STORE? 08595 *Y=PCM 08596 A(3), BRHI>B, AND, 08597 JZ(FPFS0F,FPFS19T); ----- ----- 980 00002362 0003080C ----- 08598 .ORG FPFS19T, *Y=STORE-6 08599 *CASE PCM=? 08600 AR>A, B(-6), ADD, 08601 JY(FPFS30Y); ----- ----- 363 0000C2AC 00FA0010 ----- 08602 *CASE NORMAL 08603 .ORG FPFS30Y, *Y=STORE-6, STORE<6? 08604 AR>A, B(-6), ADD, 08605 JN(FPFS101F,FPFS101T); ----- ----- 2AC 00004364 00FA0010 ----- 08606 *CASE TOP 08607 .ORG FPFS31, *A=DPM (POINT TO DISPLAY PAGE) 08608 *CALL PNTIN0 TO RETURN DBB DATA FOR DISPLAY PAGE 08609 Y(DPM), 08610 Y>AR, 08611 JUMP(FPFS40); ----- ----- 2AD 00220981 00681000 ----- 08612 *CASE FLOF 08613 .ORG FPFS32, *Y=STORE-6, STORE<6? 08614 *RETURN=2 08615 MA(RETURN), 08616 Y(2), 08617 Y>RAM, 08618 JN(FPFS32AF,FPFS200T); ----- ----- 2AE 00004366 7C021100 ----- 08619 .ORG FPFS32AF, *STORE 6 OR 7, DO THE SAME AS NORMAL 08620 AR>A, B(-6), ADD, 08621 JUMP(FPFS101F); ----- ----- 366 00000364 00FA0010 ----- 08622 *CASE FAVP 08623 .ORG FPFS33, *Y=STORE-6, STORE<6? 08624 *IF STORE 2, 3, 4 OR 5, CALL GFP0T 08625 *RETURN=0, RETURN TO FPFS60Y 08626 MA(RETURN), 08627 Y(0), 08628 Y>RAM, 08629 JN(FPFS33AF,GFP0T); ----- ----- 2AF 00004368 7C001100 ----- 08630 .ORG FPFS33AF, *STORE 6 OR 7, DO THE SAME AS NORMAL 08631 AR>A, B(-6), ADD, 08632 JUMP(FPFS101F); ----- ----- 368 00000364 00FA0010 ----- 08633 * 08634 .ORG FPFS40, *CALL PNTIN0 TO RETURN DBB DATA FOR DISPLAY PAGE 08635 *RETURN=3, RETURN TO FPFS41 08636 MA(RETURN), 08637 Y(3), 08638 Y>RAM, 08639 JUMP(PNTIN0); ----- ----- 981 0000080D 7C031100 ----- 08640 * AR=DBB RETURN DATA 08641 .ORG FPFS41, *B=STORE 08642 MA(STORE), RAM>BR, 08643 JUMP(FPFS42); ----- ----- 793 00010982 77000000 ----- 08644 .ORG FPFS42, *Y=STORE-7 08645 *B=MREG1 08646 MA(MREG1), RAM>BR, 08647 A(-7), BR>B, ADD, 08648 JUMP(FPFS43); ----- ----- 982 00010983 65F90001 ----- 08649 .ORG FPFS43, *STORE 7? 08650 *Y=RKM 08651 A(RKM), BR>B, AND, 08652 JZ(FPFS44F,FPFS44T); ----- ----- 983 0000236A 00020801 ----- 08653 * STORE 7 08654 .ORG FPFS44T, *SIMPLE RED KEY MODE? 08655 *Y= BLOCK PAGE FLAG 08656 AR>A, B(4), AND, 08657 JZ(FPFS44AF,FPFS44AT); ----- ----- 36B 0000236C 00040810 ----- 08658 .ORG FPFS44AF, *SIMPLE RED KEY MODE 08659 *LOOK FOR ANY PAGE 08660 *MASK=7 08661 MA(MASK), 08662 Y(7), 08663 Y>RAM, 08664 JUMP(FPFS46T); ----- ----- 36C 0000037D 73071100 ----- 08665 .ORG FPFS44AT, *Y= GROUP PAGE FLAG 08666 *DISPLAY PAGE A BLOCK PAGE? 08667 AR>A, B(2), AND, 08668 JZ(FPFS45F,FPFS45T); ----- ----- 36D 0000236E 00020810 ----- 08669 .ORG FPFS45F, *BLOCK PAGE, LOOK FOR LAST BLOCK 08670 *MASK=4 08671 MA(MASK), 08672 Y(4), 08673 Y>RAM, 08674 JUMP(FPFS46T); ----- ----- 36E 0000037D 73041100 ----- 08675 .ORG FPFS45T, *DISPLAY PAGE A GROUP PAGE? 08676 *ELSE, LOOK FOR ANY PAGE 08677 *MASK=7 08678 MA(MASK), 08679 Y(7), 08680 Y>RAM, 08681 JZ(FPFS46F,FPFS46T); ----- ----- 36F 0000237C 73071100 ----- 08682 .ORG FPFS46F, *GROUP PAGE, LOOK FOR LAST GROUP OR BLOCK 08683 *MASK=6 08684 MA(MASK), 08685 Y(6), 08686 Y>RAM, 08687 JUMP(FPFS46T); ----- ----- 37C 0000037D 73061100 ----- 08688 *ENTRY POINT FROM STORE 7 IN NORMAL MODE 08689 .ORG FPFS46T, *CALL SBT0B, 08690 *RETURN=1, RETURN TO FPFS331 08691 MA(RETURN), 08692 Y(1), 08693 Y>RAM, 08694 JUMP(SBT0B); ----- ----- 37D 000004C9 7C011100 ----- 08695 * NOT STORE 7 08696 * A=DBB RETURN DATA 08697 .ORG FPFS44F, *Y=TV PAGE FLAG 08698 *B=LTK 08699 MA(LTK), RAM>BR, 08700 AR>A, B(>08), AND, 08701 JUMP(FPFS47); ----- ----- 36A 00010984 11080810 ----- 08702 .ORG FPFS47, *TV PAGE? 08703 *Y=LAST TOP KEY 08704 *A=STORE 08705 MA(STORE), RAM>AR, 08706 A(3), BRHI>B, AND, 08707 JZ(FPFS48F,FPFS48T); ----- ----- 984 0002237E 7703080C ----- 08708 .ORG FPFS48F, *TV PAGE 08709 *Y=STORE 08710 AR>A, B(7), AND, 08711 JUMP(FPFS51); ----- ----- 37E 000002B5 00070810 ----- 08712 .ORG FPFS48T, *NOT A TV PAGE 08713 *CASE LAST TOP KEY=? 08714 *STORE MUST BE GREATER THAN 3 08715 *Y=STORE-4 08716 AR.0F>A, B(-4), ADD, 08717 JY(FPFS50Y); ----- ----- 37F 0000C2B4 00FC00C0 ----- 08718 .ORG FPFS50Y, *CASE LTK=RED 08719 *CASE STORE-4=? 08720 JY(FPFS110Y); ----- ----- 2B4 0000C768 00000000 ----- 08721 *ENTRY POINT IF TV PAGE 08722 .ORG FPFS51, *CASE LTK=GREEN 08723 *SET MASK FOR NEXT N, G OR B 08724 *MASK=7 08725 MA(MASK), 08726 Y(7), 08727 Y>RAM, 08728 JUMP(FPFS300B); ----- ----- 2B5 00000391 73071100 ----- 08729 .ORG FPFS52, *CASE LTK=YELLOW 08730 *SET MASK FOR NEXT G OR B 08731 *MASK=6 08732 MA(MASK), 08733 Y(6), 08734 Y>RAM, 08735 JUMP(FPFS300B); ----- ----- 2B6 00000391 73061100 ----- 08736 .ORG FPFS53, *CASE LTK=BLUE 08737 *SET MASK FOR NEXT B 08738 *MASK=4 08739 MA(MASK), 08740 Y(4), 08741 Y>RAM, 08742 JUMP(FPFS300B); ----- ----- 2B7 00000391 73041100 ----- 08743 *FAVOURITE PAGE MODE STORES 2, 3, 4, 5 08744 * B=PU, PM,PT,PU=FAV PAGE 08745 .ORG FPFS60Y, *Y=PU LSB (NON-ZERO INDICATES NUMBER NOT PROGRAMMED) 08746 A(1), BR>B, AND, 08747 JUMP(FPFS61); ----- ----- 270 00000985 00010801 ----- 08748 .ORG FPFS61, *HAS THIS FAV PAGE NUMBER BEEN PROGRAMMED? 08749 JZ(FPFS62F,FPFS62T); ----- ----- 985 00002380 00000000 ----- 08750 .ORG FPFS62T, *YES, SEE IF THE PAGE IS IN A LATCH 08751 JUMP(FPFS332); ----- ----- 381 00000731 00000000 ----- 08752 .ORG FPFS62F, *NO, SET MASK TO LOOK FOR NEXT PAGE IN INVENTORY 08753 MA(MASK), 08754 Y(>80), 08755 Y>RAM, 08756 JUMP(FPFS300A); ----- ----- 380 00000390 73801100 ----- 08757 *NORMAL MODE AND TOP MODE IF BTT NOT CAPTURED 08758 * LAST Y WAS STORE-6, A=STORE 08759 *ENTRY POINT FOR STORES 2,3,4 OR 5 08760 .ORG FPFS101T, *STORE 2,3,4 OR 5 08761 *SET MASK TO LOOK FOR NEXT PAGE IN INVENTORY 08762 MA(MASK), 08763 Y(>80), 08764 Y>RAM, 08765 JUMP(FPFS300B); ----- ----- 365 00000391 73801100 ----- 08766 *ENTRY POINT FOR STORES 6 OR 7 08767 *ENTRY POINT FROM FLOF CODE 08768 *ENTRY POINT FROM FAVOURITE PAGE MODE 08769 * LAST Y WAS STORE-6 08770 .ORG FPFS101F, *STORE 6 OR 7, STORE 6? 08771 *A=DPM 08772 MA(DPM), RAM>AR, 08773 JZ(FPFS102F,FPFS102T); ----- ----- 364 00022382 68000000 ----- 08774 *STORE 6 IN NORMAL OR FLOF 08775 * A=DPM 08776 .ORG FPFS102T, *PM=LAST PAGE MAG 08777 MA(PM), 08778 AR<<4>A, B(0), OR, 08779 Y>RAM, 08780 JUMP(FPFS103); ----- ----- 383 00000986 74001130 ----- 08781 .ORG FPFS103, *A=DPT 08782 MA(DPT), RAM>AR, 08783 JUMP(FPFS103A); ----- ----- 986 00020987 69000000 ----- 08784 .ORG FPFS103A, *PT=LAST PAGE TENS 08785 MA(PT), 08786 AR<<4>A, B(0), OR, 08787 Y>RAM, 08788 JUMP(FPFS103B); ----- ----- 987 00000988 75001130 ----- 08789 .ORG FPFS103B, *A=DPU 08790 MA(DPU), RAM>AR, 08791 JUMP(FPFS103C); ----- ----- 988 00020989 6A000000 ----- 08792 .ORG FPFS103C, *PU=LAST PAGE UNITS 08793 MA(PU), 08794 AR<<4>A, B(0), OR, 08795 Y>RAM, 08796 JUMP(FPFS103D); ----- ----- 989 0000098A 76001130 ----- 08797 .ORG FPFS103D, *SET MASK TO RETURN NEXT PAGE IF ALREADY IN A LATCH 08798 MA(MASK), 08799 Y(0), 08800 Y>RAM, 08801 JUMP(FPFS332); ----- ----- 98A 00000731 73001100 ----- 08802 *STORE 7 IN NORMAL OR FLOF 08803 * A=DPM 08804 .ORG FPFS102F, *A=DPM 08805 Y(DPM), 08806 Y>AR, 08807 JUMP(FPFS104); ----- ----- 382 0022098B 00681000 ----- 08808 .ORG FPFS104, *CALL PNTIN0 08809 *RETURN=8, RETURN TO FPFS105 08810 MA(RETURN), 08811 Y(8), 08812 Y>RAM, 08813 JUMP(PNTIN0); ----- ----- 98B 0000080D 7C081100 ----- 08814 .ORG FPFS105, *SET MASK TO LOOK FOR LAST PAGE IN INVENTORY 08815 *JUMP TO TOP CODE 08816 MA(MASK), 08817 Y(>80), 08818 Y>RAM, 08819 JUMP(FPFS46T); ----- ----- 798 0000037D 73801100 ----- 08820 *TOP MODE WITH BTT CAPTURED, LAST TOP KEY WAS RED 08821 .ORG FPFS110Y, *CASE STORE 4 IN TOP 08822 *SET MASK FOR NEXT N, G OR B 08823 *MASK=7 08824 MA(MASK), 08825 Y(7), 08826 Y>RAM, 08827 JUMP(FPFS300B); ----- ----- 768 00000391 73071100 ----- 08828 .ORG FPFS111, *CASE STORE 5 IN TOP 08829 *SET MASK FOR NEXT G OR B 08830 *MASK=6 08831 MA(MASK), 08832 Y(6), 08833 Y>RAM, 08834 JUMP(FPFS300B); ----- ----- 769 00000391 73061100 ----- 08835 .ORG FPFS112, *CASE STORE 6 IN TOP 08836 *SET MASK FOR NEXT B 08837 *MASK=4 08838 MA(MASK), 08839 Y(4), 08840 Y>RAM, 08841 JUMP(FPFS300B); ----- ----- 76A 00000391 73041100 ----- 08842 .ORG FPFS113, *CASE STORE 7 IN TOP 08843 *SET MASK FOR NEXT B 08844 *MASK=4 08845 MA(MASK), 08846 Y(4), 08847 Y>RAM, 08848 JUMP(FPFS300B); ----- ----- 76B 00000391 73041100 ----- 08849 *STORES 1-5 IN FLOF MODE 08850 * RETURN=2, A=STORE 08851 .ORG FPFS200T, *A=POINTER TO FLOF LINK 08852 *CALL GFL0 08853 *RETURN=2, RETURN TO FPFS210 08854 AR>A, B(-1), ADD, 08855 Y>AR, 08856 JUMP(GFL0); ----- ----- 367 0022098C 00FF0010 ----- 08857 .ORG FPFS210, * 08858 JUMP(FPFS332); ----- ----- 062 00000731 00000000 ----- 08859 *FIND PAGE 08860 * This routine finds the next page of the type defined by MASK. 08861 * 08862 *ENTRY POINT TO SEARCH FROM THE PAGE IN PM/PT/PU 08863 .ORG FPFS300B, *POINT TO PAGE NUMBER IN PU,PT,PM 08864 *A=PM 08865 Y(PM), 08866 Y>AR, 08867 JUMP(FPFS301); ----- ----- 391 0022098D 00741000 ----- 08868 *ENTRY POINT TO SEARCH FROM THE DISPLAY PAGE 08869 .ORG FPFS300A, *POINT TO PAGE NUMBER IN DPU,DPT,DPM 08870 *A=DPM 08871 Y(DPM), 08872 Y>AR, 08873 JUMP(FPFS301); ----- ----- 390 0022098D 00681000 ----- 08874 * A=POINTER TO BASE PAGE NUMBER IN SCRATCH RAM 08875 .ORG FPFS301, *FIND BTT POINTER 08876 *CALL PNTIN0 08877 *RETURN=1, RETURN TO FPFS320); 08878 MA(RETURN), 08879 Y(1), 08880 Y>RAM, 08881 JUMP(PNTIN0); ----- ----- 98D 0000080D 7C011100 ----- 08882 *CHECK IF IT IS NECESSARY TO ROTATE IN BLOCK 08883 .ORG FPFS320, *B=MREG1 08884 MA(MREG1), RAM>BR, 08885 JUMP(FPFS321); ----- ----- 791 0001098E 65000000 ----- 08886 .ORG FPFS321, *B=ROTATE 08887 *Y=RIB 08888 MA(ROTATE), RAM>BR, 08889 A(RIB), BR>B, AND, 08890 JUMP(FPFS322); ----- ----- 98E 0001098F 15010801 ----- 08891 .ORG FPFS322, *Y=NBY AND ROTT 08892 *ROTATE IN BLOCK ENABLED? 08893 *A=MASK 08894 MA(MASK), RAM>AR, 08895 A(NBY+ROTT), BR>B, AND, 08896 JZ(FPFS323F,FPFS330T); ----- ----- 98F 00022384 73300801 ----- 08897 .ORG FPFS323F, *BLOCK NOT FOUND OR ROTATED ALREADY? 08898 *Y=NORMAL AND GROUP FLAGS 08899 AR>A, B(>03), AND, 08900 JZ(FPFS324F,FPFS324T); ----- ----- 384 00002386 00030810 ----- 08901 .ORG FPFS324F, *BLOCK NOT FOUND OR ROTATED ALREADY 08902 JUMP(FPFS330T); ----- ----- 386 00000385 00000000 ----- 08903 .ORG FPFS324T, *SEARCHING FOR BLOCKS ONLY? 08904 *RETURN=8 08905 MA(RETURN), 08906 Y(8), 08907 Y>RAM, 08908 JZ(FPFS325F,FPFS325T); ----- ----- 387 00002388 7C081100 ----- 08909 .ORG FPFS325T, *SEARCHING FOR BLOCKS ONLY, DO NOT ROTATE 08910 JUMP(FPFS330T); ----- ----- 389 00000385 00000000 ----- 08911 *ROTATE IN BLOCK 08912 * A=MASK, B=ROTATE 08913 .ORG FPFS325F, *USE TEST FOR TEMP STORE FOR MASK 08914 MA(TEST), 08915 AR>A, B(0), OR, 08916 Y>RAM, 08917 JUMP(FPFS326); ----- ----- 388 00000990 70001110 ----- 08918 .ORG FPFS326, *SET MASK TO LOOK FOR BLOCK 08919 MA(MASK), 08920 Y(>04), 08921 Y>RAM, 08922 JUMP(FPFS326A); ----- ----- 990 00000991 73041100 ----- 08923 .ORG FPFS326A, *SET ROTT 08924 *CALL SBT0B TO SEARCH BACK TO LAST BLOCK 08925 *RETURN=8, RETURN TO FPFS327 08926 MA(ROTATE), 08927 A(ROTT), BR>B, OR, 08928 Y>RAM, 08929 JUMP(SBT0B); ----- ----- 991 000004C9 15101101 ----- 08930 .ORG FPFS327, *A=TEST 08931 MA(TEST), RAM>AR, 08932 JUMP(FPFS328); ----- ----- 7A8 00020992 70000000 ----- 08933 .ORG FPFS328, *RESTORE ORIGINAL MASK 08934 MA(MASK), 08935 AR>A, B(0), OR, 08936 Y>RAM, 08937 JUMP(FPFS330T); ----- ----- 992 00000385 73001110 ----- 08938 *END OF RIB CODE 08939 .ORG FPFS330T, *SEARCH BTT 08940 *CALL SBT0A 08941 *RETURN=1, RETURN TO FPFS331 08942 MA(RETURN), 08943 Y(1), 08944 Y>RAM, 08945 JUMP(SBT0A); ----- ----- 385 000004C8 7C011100 ----- 08946 .ORG FPFS331, *Y=BLOCK FOUND FLAG 08947 AR>A, B(>04), AND, 08948 JUMP(FPFS331A); ----- ----- 7A1 00000993 00040810 ----- 08949 .ORG FPFS331A, *BLOCK FOUND? 08950 *B=ROTATE 08951 MA(ROTATE), RAM>BR, 08952 JZ(FPFS331AF,FPFS331AT); ----- ----- 993 0001238A 15000000 ----- 08953 .ORG FPFS331AF, *BLOCK FOUND, CLEAR NBY 08954 MA(ROTATE), 08955 A(>FF-NBY), BR>B, AND, 08956 Y>RAM, 08957 JUMP(FPFS331AT); ----- ----- 38A 0000038B 15DF0901 ----- 08958 * 08959 .ORG FPFS331AT, *CONVERT BTT POINTER TO PAGE IN PU,PT,PM 08960 *CALL INTPN0 08961 *RETURN=1, RETURN TO FPFS332 08962 MA(RETURN), 08963 Y(1), 08964 Y>RAM, 08965 JUMP(INTPN0); ----- ----- 38B 000007A3 7C011100 ----- 08966 * PM, PT AND PU CONTAIN PROPOSED NEXT PAGE 08967 .ORG FPFS332, *CHECK IF ALREADY IN A LATCH 08968 *CALL PIL0 08969 *RETURN=3, RETURN TO FPFS333 08970 MA(RETURN), 08971 Y(3), 08972 Y>RAM, 08973 JUMP(PIL0); ----- ----- 731 000008D4 7C031100 ----- 08974 .ORG FPFS333, *Y=PAGE IN LATCH FLAG 08975 AR>A, B(>08), AND, 08976 JUMP(FPFS334); ----- ----- 293 00000994 00080810 ----- 08977 .ORG FPFS334, *PAGE ALREADY IN A LATCH? 08978 *LOCAL=A 08979 MA(LOCAL), 08980 AR>A, B(0), OR, 08981 Y>RAM, 08982 JZ(FPFS335F,FPFS335T); ----- ----- 994 0000238C 72001110 ----- 08983 .ORG FPFS335T, *A=STORE SET FOR PAGE IF IN A LATCH ALREADY 08984 *B=CURRENT STORE 08985 MA(STORE), RAM>BR, 08986 ARHI>A, B(7), AND, 08987 Y>AR, 08988 JUMP(FPFS336); ----- ----- 38D 00230995 77070820 ----- 08989 .ORG FPFS336, *IN A LATCH ALREADY 08990 *COMPARE STORES 08991 *(MISS O>CIN TO GET >= TEST) 08992 *A=MASK 08993 MA(MASK), RAM>AR, 08994 NAR>A, BR>B, ADD, 08995 JUMP(FPFS337); ----- ----- 995 00020996 73000041 ----- 08996 .ORG FPFS337, *STORE SET FOR PAGE >= CURRENT STORE? 08997 *IF YES, LOOP BACK TO FIND ANOTHER PAGE 08998 *Y=MASK 08999 AR>A, B(0), OR, 09000 JN(FPFS338F,FPFS338T); ----- ----- 996 0000438E 00001010 ----- 09001 .ORG FPFS338F, *MASK=0? 09002 * Need to clear MASK here because all the pages which meet the 09003 * search criteria defined by MASK may already be in a latch, 09004 * this would cause an endless loop. 09005 MA(MASK), 09006 Y(0), 09007 Y>RAM, 09008 JZ(FPFS300A,FPFS300B); ----- ----- 38E 00002390 73001100 ----- 09009 .ORG FPFS338T, *STORE SET FOR PAGE >= CURRENT STORE 09010 *OK TO RETURN TO SORT ROUTINE 09011 JUMP(FPFS335F); ----- ----- 38F 0000038C 00000000 ----- 09012 *COMMON EXIT TO SORT STORE ROUTINE 09013 .ORG FPFS335F, *RESTORE PIL RETURN DATA TO A 09014 MA(LOCAL), RAM>AR, 09015 JUMP(SST2Y); ----- ----- 38C 00020290 72000000 ----- 09016 *INITIALISED ALL STORES, SORT OUT ROW 24 09017 *COPY ROW24 FROM OLD STOR0 TO NEW STOR0 IF APIN 09018 * B=SYS2 09019 .ORG FPFS3T, *Y=APIN, B=OLDSTR (SOURCE LATCH) 09020 MA(OLDSTR), RAM>BR, 09021 A(APIN), BR>B, AND, 09022 JUMP(FPFS400); ----- ----- 35F 00010997 71010801 ----- 09023 .ORG FPFS400, *A=STOR0 (DEST LATCH) 09024 *APIN? 09025 MA(STOR0), RAM>AR, 09026 JZ(FPFS401F,FPFS401T); ----- ----- 997 00022392 20000000 ----- 09027 .ORG FPFS401T, *B=STOR0 09028 MA(STOR0), RAM>BR, 09029 JUMP(FPFS410); ----- ----- 393 000100A1 20000000 ----- 09030 .ORG FPFS401F, *CALL CBR0 TO KEEP USER DEFINED PROMPT 09031 *KEEP ROW 24 DISPLAY 09032 *RETURN=1, RETURN TO FPFS410 09033 MA(RETURN), 09034 Y(1), 09035 Y>RAM, 09036 JUMP(CBR0); ----- ----- 392 0000094C 7C011100 ----- 09037 * B=NEW STOR0 09038 .ORG FPFS410, *A=OLDSTR 09039 MA(OLDSTR), RAM>AR, 09040 JUMP(FPFS411); ----- ----- 0A1 00020998 71000000 ----- 09041 .ORG FPFS411, *Y=NEW STOR0 XOR OLD STOR7 09042 AR.0F>A, BRHI>B, XOR, 09043 JUMP(FPFS412); ----- ----- 998 00000999 000018CC ----- 09044 .ORG FPFS412, *NEW STOR0 = OLD STOR7? 09045 *STORE MSN = OLD STOR7 09046 MA(STORE), 09047 AR<<4>A, B(0), OR, 09048 Y>RAM, 09049 JZ(FPFS413F,FPFS413T); ----- ----- 999 00002394 77001130 ----- 09050 *STOR0 IS OLD STOR7 09051 .ORG FPFS413T, *B=VPPRG1 09052 MA(VPPRG1), RAM>BR, 09053 JUMP(FPFS440); ----- ----- 395 0001099A 61000000 ----- 09054 *COPY ROW 24 BUFFER FROM OLD STOR7 TO NEW STOR7 09055 .ORG FPFS413F, *OK TO COPY ACROSS 09056 *B=SOURCE LATCH 09057 MA(STORE), RAM>BR, 09058 JUMP(FPFS420); ----- ----- 394 0001099B 77000000 ----- 09059 .ORG FPFS420, *A=DEST LATCH 09060 MA(STOR7), RAM>AR, 09061 JUMP(FPFS421); ----- ----- 99B 0002099C 27000000 ----- 09062 .ORG FPFS421, *CALL CBR0 09063 *RETURN=2, RETURN TO FPFS430 09064 MA(RETURN), 09065 Y(2), 09066 Y>RAM, 09067 JUMP(CBR0); ----- ----- 99C 0000094C 7C021100 ----- 09068 * RWL= NEW STOR7 09069 .ORG FPFS430, *POINT TO FLOF FLAGS 09070 Y(-16), 09071 Y>PR, 09072 JUMP(FPFS431); ----- ----- 0A2 0000099D 80F01000 ----- 09073 .ORG FPFS431, *CLEAR STOR7 FLOF FLAGS 09074 *B=VPPRG1 09075 MA(VPPRG1), RAM>BR, 09076 Y(0), 09077 Y>DR, 09078 JUMP(FPFS440); ----- ----- 99D 0001199A 61001000 ----- 09079 * B=VPPRG1 09080 .ORG FPFS440, *Y=SBL 09081 A(SBL), BR>B, AND, 09082 JUMP(FPFS441); ----- ----- 99A 0000099E 00800801 ----- 09083 .ORG FPFS441, *SBL=0, SBL? 09084 *IF YES, RETURN TO SST0A CALL 09085 MA(VPPRG1), 09086 A(>FF-SBL), BR>B, AND, 09087 Y>RAM, 09088 JZ(FPFS442F,VPP290); ----- ----- 99E 00002396 617F0901 ----- 09089 .ORG FPFS442F, *RETURN TO SST0B CALL 09090 *AR=VPPRG1 09091 MA(VPPRG1), RAM>AR, 09092 JUMP(VPP310); ----- ----- 396 0002030B 61000000 ----- 09093 * 09094 *+++PAGE IN LATCH ROUTINE 09095 * 09096 * This routine checks whether the page in PU, PT and PM is 09097 * in a latch and if it has been captured. This information 09098 * is returned in AR in the following format:- 09099 * ----------------------------------------------------------------- 09100 * |CAP |store number |not in |latch number | 09101 * | | |latch | | 09102 * ----------------------------------------------------------------- 09103 * If the page is in a latch, the routine also returns the latch 09104 * flags (LAFx) in BR. 09105 * 09106 * The latch number is the highest latch number that contains 09107 * this page number. 09108 * RETURN=return pointer 09109 .ORG PIL0, *COUNT=7 09110 MA(COUNT), 09111 A(7), B(7), OR, 09112 Y>RAM, Y>AR, 09113 JUMP(PIL1F); ----- ----- 8D4 0022039E 78071100 ----- 09114 * 09115 .ORG PIL1F, *AR=PU, PR=U0+COUNT 09116 MA(PU), RAM>AR, 09117 AR>A, B(U0), ADD, 09118 Y>PR, 09119 JUMP(PIL2); ----- ----- 39E 0002099F F6200010 ----- 09120 .ORG PIL2, *BR=LATCH UNITS 09121 *AR=ARHI 09122 PR>MA, RAM>BR, 09123 ARHI>A, B(0), OR, 09124 Y>AR, 09125 JUMP(PIL3); ----- ----- 99F 003309A0 00001020 ----- 09126 .ORG PIL3, *Y=LATCH UNITS - PU 09127 *BR=PR 09128 PR>BR, 09129 NAR>A, BR.0F>B, O>CIN, ADD, 09130 JUMP(PIL4); ----- ----- 9A0 004109A1 00000442 ----- 09131 .ORG PIL4, *SAME UNITS? 09132 *PR=BR-8 (POINT TO TENS) 09133 *AR=PT 09134 MA(PT), RAM>AR, 09135 A(-8), BR>B, ADD, 09136 Y>PR, 09137 JZ(PIL5F,PIL5T); ----- ----- 9A1 00022398 F5F80001 ----- 09138 .ORG PIL5F, *DIFFERENT UNITS 09139 *AR=COUNT 09140 MA(COUNT), RAM>AR, 09141 JUMP(PIL11F); ----- ----- 398 0002039C 78000000 ----- 09142 .ORG PIL5T, *SAME UNITS 09143 *BR=LATCH TENS 09144 *AR=ARHI 09145 PR>MA, RAM>BR, 09146 ARHI>A, B(0), OR, 09147 Y>AR, 09148 JUMP(PIL6); ----- ----- 399 003309A2 00001020 ----- 09149 .ORG PIL6, *Y=LATCH TENS - PT 09150 *BR=PR 09151 PR>BR, 09152 NAR>A, BR.0F>B, O>CIN, ADD, 09153 JUMP(PIL7); ----- ----- 9A2 004109A3 00000442 ----- 09154 .ORG PIL7, *SAME TENS? 09155 *PR=BR-8 (POINT TO MAG) 09156 *AR=PM 09157 MA(PM), RAM>AR, 09158 A(-8), BR>B, ADD, 09159 Y>PR, 09160 JZ(PIL8F,PIL8T); ----- ----- 9A3 0002239A F4F80001 ----- 09161 .ORG PIL8F, *DIFFERENT TENS 09162 *AR=COUNT 09163 MA(COUNT), RAM>AR, 09164 JUMP(PIL11F); ----- ----- 39A 0002039C 78000000 ----- 09165 .ORG PIL8T, *SAME TENS 09166 *BR=LATCH MAG 09167 *AR=ARHI 09168 PR>MA, RAM>BR, 09169 ARHI>A, B(0), OR, 09170 Y>AR, 09171 JUMP(PIL9); ----- ----- 39B 003309A4 00001020 ----- 09172 .ORG PIL9, *Y=LATCH MAG - PM 09173 NAR>A, BR.0F>B, O>CIN, ADD, 09174 JUMP(PIL10); ----- ----- 9A4 000009A5 00000442 ----- 09175 .ORG PIL10, *SAME MAG? 09176 *AR=COUNT 09177 MA(COUNT), RAM>AR, 09178 JZ(PIL11F,PIL11T); ----- ----- 9A5 0002239C 78000000 ----- 09179 * 09180 .ORG PIL11F, *PAGE IS NOT IN THIS LATCH 09181 *DEC COUNT, AR=COUNT 09182 MA(COUNT), 09183 AR>A, B(-1), ADD, 09184 Y>RAM, Y>AR, 09185 JUMP(PIL12); ----- ----- 39C 002209A6 78FF0110 ----- 09186 .ORG PIL12, *COUNT<0? 09187 *BR=RETURN 09188 MA(RETURN), RAM>BR, 09189 JN(PIL1F,PIL13T); ----- ----- 9A6 0001439E 7C000000 ----- 09190 *PAGE NOT IN A LATCH 09191 .ORG PIL13T, *Y=RETURN 09192 A(7), BR>B, AND, 09193 JUMP(PIL13A); ----- ----- 39F 000009A7 00070801 ----- 09194 .ORG PIL13A, *SET FLAG IN RETURN DATA 09195 *CASE RETURN=? 09196 Y(>08), 09197 Y>AR, 09198 JY(SST2Y); ----- ----- 9A7 0022C290 00081000 ----- 09199 *PAGE IN THIS LATCH, WHICH STORE? 09200 * AR==COUNT 09201 .ORG PIL11T, *SET STORE POINTER IN COUNT TO STORE 7 09202 AR>A, B(>70), OR, 09203 Y>AR, 09204 JUMP(PIL14F); ----- ----- 39D 002203A2 00701010 ----- 09205 * 09206 .ORG PIL14F, *POINT TO STORE TABLE LOC 09207 ARHI>A, B(STOR0), ADD, 09208 Y>PR, 09209 JUMP(PIL15); ----- ----- 3A2 000009A8 80200020 ----- 09210 .ORG PIL15, *BR=LATCH FOR THIS STORE 09211 PR>MA, RAM>BR, 09212 JUMP(PIL16); ----- ----- 9A8 001109A9 00000000 ----- 09213 .ORG PIL16, *COMPARE LATCH WITH LATCH IN TABLE 09214 AR.0F>A, BRHI>B, XOR, 09215 JUMP(PIL17); ----- ----- 9A9 000009AA 000018CC ----- 09216 .ORG PIL17, *Y=STORE NUMBER 09217 *LATCH IN THIS STORE? 09218 ARHI>A, B(0), OR, 09219 JZ(PIL18F,PIL18T); ----- ----- 9AA 000023A0 00001020 ----- 09220 .ORG PIL18F, *NOT IN THIS STORE 09221 *DEC STORE 09222 AR>A, B(-16), ADD, Y>AR, 09223 JZ(PIL14F,PIL19T); ----- ----- 3A0 002223A2 00F00010 ----- 09224 .ORG PIL19T, *LATCH NOT FOUND IN ANY STORE 09225 *BR=RETURN 09226 *ERROR 09227 MA(RETURN), RAM>BR, 09228 JUMP(PIL13T); ----- ----- 3A3 0001039F 7C000000 ----- 09229 *UPDATE CAP 09230 .ORG PIL18T, *PR=LAF0+COUNT 09231 AR.0F>A, B(LAF0), ADD, 09232 Y>PR, 09233 JUMP(PIL20); ----- ----- 3A1 000009AB 804000C0 ----- 09234 .ORG PIL20, *BR=LAFx 09235 *PR=LAF0+COUNT 09236 PR>MA, RAM>BR, 09237 AR.0F>A, B(LAF0), ADD, 09238 Y>PR, 09239 JUMP(PIL21); ----- ----- 9AB 001109AC 804000C0 ----- 09240 .ORG PIL21, *Y=CAP 09241 *BR=RETURN 09242 MA(RETURN), RAM>BR, 09243 A(CAP), BR>B, AND, 09244 JUMP(PIL22); ----- ----- 9AC 000109AD 7C800801 ----- 09245 .ORG PIL22, *PAGE CAPTURED? 09246 *Y=RETURN 09247 *BR=LAFx 09248 PR>MA, RAM>BR, 09249 A(7), BR>B, AND, 09250 JZ(PIL23F,PIL23T); ----- ----- 9AD 001123A4 00070801 ----- 09251 .ORG PIL23F, *YES, UPDATE CAP AND LATCH NUMBER IN RETURN DATA 09252 *CASE RETURN =? 09253 AR>A, B(CAP), OR, 09254 Y>AR, 09255 JY(SST2Y); ----- ----- 3A4 0022C290 00801010 ----- 09256 .ORG PIL23T, *NO, UPDATE CAP AND LATCH NUMBER IN RETURN DATA 09257 *CASE RETURN =? 09258 JY(SST2Y); ----- ----- 3A5 0000C290 00000000 ----- 09259 * 09260 *+++INLA: INITIALISE LATCH ROUTINE 09261 * 09262 * This routine initialises the latch in AR 09263 * to capture the page in PU, PT and PM 09264 * 09265 * input pars are:- 09266 * RETURN: return pointer 09267 * A: latch for init 09268 * PU,PT,PM: page for latch 09269 * local variables used are:- 09270 * COUNT 09271 * 09272 .ORG INLA0, *RWL=LATCH FOR INIT 09273 MA(RWL), 09274 AR>A, B(0), ADD, 09275 Y>RAM, Y>IO, 09276 JUMP(INLA0A); ----- ----- 8E5 000009AE 0B004110 ----- 09277 .ORG INLA0A, *COUNT=LATCH FOR INIT 09278 MA(COUNT), 09279 AR>A, B(0), ADD, 09280 Y>RAM, 09281 JUMP(INLA1); ----- ----- 9AE 000009AF 78000110 ----- 09282 *INIT LAFx 09283 .ORG INLA1, *PR=INDEX TO LAFx 09284 AR>A, B(LAF0), ADD, 09285 Y>PR, 09286 JUMP(INLA2); ----- ----- 9AF 000009B0 80400010 ----- 09287 .ORG INLA2, *CLEAR LAFx 09288 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 09289 PR>MA, 09290 Y(0), 09291 Y>RAM, 09292 JUMP(INLA14); ----- ----- 9B0 001009B1 00001100 ----- 09293 *INITIALISE NON-DISPLAY AREA (P=-8 -> -24) 09294 *CLEAR CLEAR PACKET 26 FLAGS AND ROW MARKERS 09295 .ORG INLA14, *PR=-8 09296 Y(-8), 09297 Y>PR, 09298 JUMP(INLA17F); ----- ----- 9B1 000003A6 80F81000 ----- 09299 * 09300 .ORG INLA17F, *DR=0, BR=PR 09301 PR>BR, 09302 Y(0), 09303 Y>DR, 09304 JUMP(INLA15); ----- ----- 3A6 004119B2 00001000 ----- 09305 .ORG INLA15, *Y=BR+12 09306 A(12), BR>B, ADD, 09307 JUMP(INLA16); ----- ----- 9B2 000009B3 000C0001 ----- 09308 .ORG INLA16, *LAST BYTE? 09309 *IF YES, CALL PXTOLA0T TO LOAD LATCH WITH PM, PT, PU 09310 *RETURN!=3, RETURN TO INLA30F, 09311 *PR++ 09312 A(-1), BR>B, ADD, 09313 Y>PR, 09314 JZ(INLA17F,PXTOLA0T); ----- ----- 9B3 000023A6 80FF0001 ----- 09315 * 09316 *PXTOLA: LOAD LATCH WITH PU, PT AND PM 09317 * A=LATCH FOR LOAD, RETURN=RETURN POINTER 09318 *UPDATE UNITS 09319 .ORG PXTOLA0T, *PR= LATCH UNITS INDEX 09320 *AR=PU 09321 MA(PU), RAM>AR, 09322 AR>A, B(U0), ADD, 09323 Y>PR, 09324 JUMP(PXTOLA2); ----- ----- 3A7 000209B4 F6200010 ----- 09325 .ORG PXTOLA2, *BR=OLD LATCH UNITS 09326 PR>MA, RAM>BR, 09327 JUMP(PXTOLA3); ----- ----- 9B4 001109B5 00000000 ----- 09328 .ORG PXTOLA3, *UPDATE LATCH UNITS 09329 PR>MA, PR>BR, 09330 ARHI>A, BR.F0>B, OR, 09331 Y>RAM, Y>IO, 09332 JUMP(PXTOLA4); ----- ----- 9B5 005109B6 00005123 ----- 09333 *UPDATE TENS 09334 .ORG PXTOLA4, *PR= LATCH TENS INDEX 09335 *AR=PT 09336 MA(PT), RAM>AR, 09337 A(-8), BR>B, ADD, 09338 Y>PR, 09339 JUMP(PXTOLA5); ----- ----- 9B6 000209B7 F5F80001 ----- 09340 .ORG PXTOLA5, *BR=OLD LATCH TENS 09341 PR>MA, RAM>BR, 09342 JUMP(PXTOLA6); ----- ----- 9B7 001109B8 00000000 ----- 09343 .ORG PXTOLA6, *UPDATE LATCH TENS 09344 PR>MA, PR>BR, 09345 ARHI>A, BR.F0>B, OR, 09346 Y>RAM, Y>IO, 09347 JUMP(PXTOLA7); ----- ----- 9B8 005109B9 00005123 ----- 09348 *UPDATE MAG 09349 .ORG PXTOLA7, *PR= LATCH MAG INDEX 09350 *AR=PM 09351 MA(PM), RAM>AR, 09352 A(-8), BR>B, ADD, 09353 Y>PR, 09354 JUMP(PXTOLA8); ----- ----- 9B9 000209BA F4F80001 ----- 09355 .ORG PXTOLA8, *BR=OLD LATCH MAG 09356 PR>MA, RAM>BR, 09357 JUMP(PXTOLA9); ----- ----- 9BA 001109BB 00000000 ----- 09358 .ORG PXTOLA9, *UPDATE LATCH MAG 09359 PR>MA, 09360 ARHI>A, BR.F0>B, OR, 09361 Y>RAM, Y>IO, 09362 JUMP(PXTOLA10); ----- ----- 9BB 001009BC 00005123 ----- 09363 .ORG PXTOLA10, *A=RETURN 09364 MA(RETURN), RAM>AR, 09365 JUMP(PXTOLA11); ----- ----- 9BC 000209BD 7C000000 ----- 09366 .ORG PXTOLA11, *AR=COUNT (CONTAINS LATCH FOR INIT) 09367 *Y=RETURN-3 09368 MA(COUNT), RAM>AR, 09369 AR.0F>A, B(-3), ADD, 09370 JUMP(PXTOLA12); ----- ----- 9BD 000209BE 78FD00C0 ----- 09371 .ORG PXTOLA12, *RETURN? 09372 JZ(INLA30F,TPP102T); ----- ----- 9BE 000023A8 00000000 ----- 09373 *CLOSE ANY MAGS OPEN FOR THIS LATCH 09374 * A=COUNT 09375 .ORG INLA30F, *COUNT=7, INIT LOOP COUNT 09376 MA(COUNT), 09377 Y(7), 09378 Y>RAM, 09379 JUMP(INLA32); ----- ----- 3A8 000009BF 78071100 ----- 09380 .ORG INLA32, *SET MOP IN AR FOR COMPARISON 09381 *BR=COUNT 09382 MA(COUNT), RAM>BR, 09383 AR>A, B(MOP), OR, 09384 Y>AR, 09385 JUMP(INLA39F); ----- ----- 9BF 002303AC 78081010 ----- 09386 * 09387 .ORG INLA39F, *PR= MFx INDEX 09388 A(MF0), BR>B, ADD, 09389 Y>PR, 09390 JUMP(INLA33); ----- ----- 3AC 000009C0 80580001 ----- 09391 .ORG INLA33, *BR= MFx 09392 PR>MA, RAM>BR, 09393 JUMP(INLA34); ----- ----- 9C0 001109C1 00000000 ----- 09394 .ORG INLA34, *COMPARE LATCH NUMBERS 09395 AR>A, BR.0F>B, XOR, 09396 JUMP(INLA35); ----- ----- 9C1 000009C2 00001812 ----- 09397 .ORG INLA35, *MAG OPEN FOR LATCH? 09398 JZ(INLA36F,INLA36T); ----- ----- 9C2 000023AA 00000000 ----- 09399 .ORG INLA36T, *YES 09400 *CLEAR MO AND MLP 09401 PR>MA, 09402 A(>F0), BR>B, AND, 09403 Y>RAM, 09404 JUMP(INLA36F); ----- ----- 3AB 001003AA 00F00901 ----- 09405 .ORG INLA36F, *BR=COUNT 09406 MA(COUNT), RAM>BR, 09407 JUMP(INLA37); ----- ----- 3AA 000109C3 78000000 ----- 09408 .ORG INLA37, *DEC COUNT 09409 MA(COUNT), 09410 A(-1), BR>B, ADD, 09411 Y>RAM, 09412 JUMP(INLA38); ----- ----- 9C3 000009C4 78FF0101 ----- 09413 .ORG INLA38, *BR=COUNT 09414 *COUNT<0? 09415 MA(COUNT), RAM>BR, 09416 JN(INLA39F,INLA39T); ----- ----- 9C4 000143AC 78000000 ----- 09417 *EXIT 09418 .ORG INLA39T, *BR=RETURN 09419 MA(RETURN), RAM>BR, 09420 JUMP(INLA40); ----- ----- 3AD 000109C5 7C000000 ----- 09421 .ORG INLA40, *Y=RETURN 09422 A(3), BR>B, AND, 09423 JUMP(INLA41); ----- ----- 9C5 000009C6 00030801 ----- 09424 .ORG INLA41, *CASE RETURN=? 09425 JY(SST5Y); ----- ----- 9C6 0000C298 00000000 ----- 09426 * 09427 *+++PAGE NUMBER TO INVENTORY PAGE POINTER 09428 * 09429 * This routine will return in P a pointer the address 09430 * in the inventory/BTT page of the page number indexed 09431 * by A. Invalid page numbers will return P=0. 09432 * 09433 * input pars are:- 09434 * A: page number index 09435 * RETURN: return pointer 09436 * return pars are:- 09437 * A: return data from DBB 09438 * P,B: inv/BTT pointer 09439 * TPD: inv/BTT byte 09440 * RWL: latch for store 1 09441 * last Y, LOCAL: error code 09442 * local variables used are 09443 * RET3, RET4, LOCAL 09444 .ORG PNTIN0, *RET4=P=INDEX TO PAGE NUMBER 09445 MA(RET4), 09446 AR>A, B(0), ADD, 09447 Y>RAM, Y>PR, 09448 JUMP(PNTIN1); ----- ----- 80D 000009C7 F9000110 ----- 09449 .ORG PNTIN1, *A=PAGE MAGS 09450 PR>MA, RAM>AR, 09451 JUMP(PNTIN2); ----- ----- 9C7 001209C8 00000000 ----- 09452 .ORG PNTIN2, *Y=MAG-8 09453 ARHI>A, B(-8), ADD, 09454 JUMP(PNTIN3); ----- ----- 9C8 000009C9 00F80020 ----- 09455 .ORG PNTIN3, *LEGAL MAG? 09456 *LOCAL MSN IS TEMP STORE FOR MAG 09457 *INIT LSN ERROR CODE TO ZERO 09458 MA(LOCAL), 09459 AR.F0>A, B(0), OR, 09460 Y>RAM, 09461 JN(PNTIN4F,PNTIN4T); ----- ----- 9C9 000043AE 720011D0 ----- 09462 .ORG PNTIN4F, *MAG ERROR 09463 *SET MAG STORE TO 0 09464 *ERROR CODE=1 09465 MA(LOCAL), 09466 Y(1), 09467 Y>RAM, 09468 JUMP(PNTIN4T); ----- ----- 3AE 000003AF 72011100 ----- 09469 .ORG PNTIN4T, *A=P=240 09470 A(120), B(120), ADD, 09471 Y>PR, Y>AR, 09472 JUMP(PNTIN5); ----- ----- 3AF 002209CA 80780000 ----- 09473 .ORG PNTIN5, *B=240, P=A=340 09474 PR>BR, 09475 AR>A, B(100), ADD, 09476 Y>PR, Y>AR, 09477 JUMP(PNTIN6); ----- ----- 9CA 006309CB 80640010 ----- 09478 .ORG PNTIN6, *A=580 09479 *B=MAG 09480 MA(LOCAL), RAM>BR, 09481 AR>A, BR>B, ADD, 09482 Y>AR, 09483 JUMP(PNTIN7); ----- ----- 9CB 002309CC 72000011 ----- 09484 .ORG PNTIN7, *Y=MAG 09485 A(7), BRHI>B, AND, 09486 JUMP(PNTIN8); ----- ----- 9CC 000009CD 0007080C ----- 09487 .ORG PNTIN8, *A=640, B=340 09488 *CASE MAG=? 09489 PR>BR, 09490 AR>A, B(60), ADD, 09491 Y>AR, 09492 JY(PNTIN10Y.0); ----- ----- 9CD 0063C7B0 003C0010 ----- 09493 * A=640, B=340, P=340 09494 *CASE MAG=0 09495 .ORG PNTIN10Y.0, 09496 *P=740 09497 MA(RET4), RAM>BR, 09498 AR>A, B(100), ADD, 09499 Y>PR, 09500 JUMP(PNTIN20); ----- ----- 7B0 000109CE F9640010 ----- 09501 *CASE MAG=1 09502 .ORG PNTIN10Y.1, 09503 *P=40 09504 *B=INDEX TO PAGE MAGS 09505 MA(RET4), RAM>BR, 09506 Y(40), 09507 Y>PR, 09508 JUMP(PNTIN20); ----- ----- 7B1 000109CE F9281000 ----- 09509 *CASE MAG=2 09510 .ORG PNTIN10Y.2, 09511 *P=140 09512 *B=INDEX TO PAGE MAGS 09513 MA(RET4), RAM>BR, 09514 A(70), B(70), ADD, 09515 Y>PR, 09516 JUMP(PNTIN20); ----- ----- 7B2 000109CE F9460000 ----- 09517 *CASE MAG=3 09518 .ORG PNTIN10Y.3, 09519 *P=240 09520 *B=INDEX TO PAGE MAGS 09521 MA(RET4), RAM>BR, 09522 A(120), B(120), ADD, 09523 Y>PR, 09524 JUMP(PNTIN20); ----- ----- 7B3 000109CE F9780000 ----- 09525 *CASE MAG=4 09526 .ORG PNTIN10Y.4, 09527 *P=340 09528 *B=INDEX TO PAGE MAGS 09529 MA(RET4), RAM>BR, 09530 A(0), BR>B, OR, 09531 Y>PR, 09532 JUMP(PNTIN20); ----- ----- 7B4 000109CE F9001001 ----- 09533 *CASE MAG=5 09534 .ORG PNTIN10Y.5, 09535 *P=440 09536 *B=INDEX TO PAGE MAGS 09537 MA(RET4), RAM>BR, 09538 A(100), BR>B, ADD, 09539 Y>PR, 09540 JUMP(PNTIN20); ----- ----- 7B5 000109CE F9640001 ----- 09541 *CASE MAG=6 09542 .ORG PNTIN10Y.6, 09543 *P=540 09544 *B=INDEX TO PAGE MAGS 09545 MA(RET4), RAM>BR, 09546 AR>A, B(-100), ADD, 09547 Y>PR, 09548 JUMP(PNTIN20); ----- ----- 7B6 000109CE F99C0010 ----- 09549 *CASE MAG=7 09550 .ORG PNTIN10Y.7, 09551 *P=640 09552 *B=INDEX TO PAGE MAGS 09553 MA(RET4), RAM>BR, 09554 AR>A, B(0), OR, 09555 Y>PR, 09556 JUMP(PNTIN20); ----- ----- 7B7 000109CE F9001010 ----- 09557 * P=BTT INDEX, B=POINTER TO PAGE MAG 09558 .ORG PNTIN20, *B=BTT INDEX, P=INDEX TO PAGE TENS 09559 PR>BR, 09560 A(1), BR>B, ADD, 09561 Y>PR, 09562 JUMP(PNTIN21); ----- ----- 9CE 004109CF 80010001 ----- 09563 .ORG PNTIN21, *A=PAGE TENS 09564 PR>MA, RAM>AR, 09565 JUMP(PNTIN22); ----- ----- 9CF 001209D0 00000000 ----- 09566 .ORG PNTIN22, *Y=TENS-10 09567 ARHI>A, B(-10), ADD, 09568 JUMP(PNTIN23); ----- ----- 9D0 000009D1 00F60020 ----- 09569 .ORG PNTIN23, *Y=TENS, HEX TENS? 09570 ARHI>A, B(0), OR, 09571 JN(PNTIN24F,PNTIN24T); ----- ----- 9D1 000043C0 00001020 ----- 09572 .ORG PNTIN24F, *HEX TENS 09573 *DO THE SAME AS IF TENS=9 09574 *ERROR CODE=1 09575 MA(LOCAL), 09576 Y(1), 09577 Y>RAM, 09578 JUMP(PNTIN30Y.9); ----- ----- 3C0 000007C9 72011100 ----- 09579 .ORG PNTIN24T, *DECIMAL TENS, CASE TENS=? 09580 *P= BTT INDEX 09581 A(0), BR>B, OR, 09582 Y>PR, 09583 JY(PNTIN30Y.0); ----- ----- 3C1 0000C7C0 80001001 ----- 09584 *CASE TENS=0 09585 .ORG PNTIN30Y.0, 09586 *NO TENS TO ADD 09587 *B=BTT INDEX 09588 *A=INDEX TO PAGE MAGS 09589 PR>BR, 09590 MA(RET4), RAM>AR, 09591 JUMP(PNTIN40); ----- ----- 7C0 004309D2 79000000 ----- 09592 *CASE TENS=1 09593 .ORG PNTIN30Y.1, 09594 *ADD TENS INTO BTT INDEX 09595 A(10), BR>B, ADD, 09596 Y>PR, 09597 JUMP(PNTIN30Y.0); ----- ----- 7C1 000007C0 800A0001 ----- 09598 *CASE TENS=2 09599 .ORG PNTIN30Y.2, 09600 *ADD TENS INTO BTT INDEX 09601 A(20), BR>B, ADD, 09602 Y>PR, 09603 JUMP(PNTIN30Y.0); ----- ----- 7C2 000007C0 80140001 ----- 09604 *CASE TENS=3 09605 .ORG PNTIN30Y.3, 09606 *ADD TENS INTO BTT INDEX 09607 A(30), BR>B, ADD, 09608 Y>PR, 09609 JUMP(PNTIN30Y.0); ----- ----- 7C3 000007C0 801E0001 ----- 09610 *CASE TENS=4 09611 .ORG PNTIN30Y.4, 09612 *ADD TENS INTO BTT INDEX 09613 A(40), BR>B, ADD, 09614 Y>PR, 09615 JUMP(PNTIN30Y.0); ----- ----- 7C4 000007C0 80280001 ----- 09616 *CASE TENS=5 09617 .ORG PNTIN30Y.5, 09618 *ADD TENS INTO BTT INDEX 09619 A(50), BR>B, ADD, 09620 Y>PR, 09621 JUMP(PNTIN30Y.0); ----- ----- 7C5 000007C0 80320001 ----- 09622 *CASE TENS=6 09623 .ORG PNTIN30Y.6, 09624 *ADD TENS INTO BTT INDEX 09625 A(60), BR>B, ADD, 09626 Y>PR, 09627 JUMP(PNTIN30Y.0); ----- ----- 7C6 000007C0 803C0001 ----- 09628 *CASE TENS=7 09629 .ORG PNTIN30Y.7, 09630 *ADD TENS INTO BTT INDEX 09631 A(70), BR>B, ADD, 09632 Y>PR, 09633 JUMP(PNTIN30Y.0); ----- ----- 7C7 000007C0 80460001 ----- 09634 *CASE TENS=8 09635 .ORG PNTIN30Y.8, 09636 *ADD TENS INTO BTT INDEX 09637 A(80), BR>B, ADD, 09638 Y>PR, 09639 JUMP(PNTIN30Y.0); ----- ----- 7C8 000007C0 80500001 ----- 09640 *CASE TENS=9 09641 .ORG PNTIN30Y.9, 09642 *ADD TENS INTO BTT INDEX 09643 A(90), BR>B, ADD, 09644 Y>PR, 09645 JUMP(PNTIN30Y.0); ----- ----- 7C9 000007C0 805A0001 ----- 09646 * A=INDEX TO PAGE MAGS, B=BTT INDEX 09647 .ORG PNTIN40, *P=INDEX TO PAGE UNITS 09648 AR>A, B(2), ADD, 09649 Y>PR, 09650 JUMP(PNTIN41); ----- ----- 9D2 000009D3 80020010 ----- 09651 .ORG PNTIN41, *A=PAGE UNITS 09652 PR>MA, RAM>AR, 09653 JUMP(PNTIN42); ----- ----- 9D3 001209D4 00000000 ----- 09654 .ORG PNTIN42, *Y=PAGE UNITS- 10 09655 ARHI>A, B(-10), ADD, 09656 JUMP(PNTIN43); ----- ----- 9D4 000009D5 00F60020 ----- 09657 .ORG PNTIN43, *ADD UNITS INTO BTT INDEX 09658 *HEX UNITS? 09659 ARHI>A, BR>B, ADD, 09660 Y>PR, 09661 JN(PNTIN44F,PNTIN44T); ----- ----- 9D5 000043C2 80000021 ----- 09662 .ORG PNTIN44F, *HEX UNITS, DO THE SAME AS IF TENS=9 09663 A(9), BR>B, ADD, 09664 Y>PR, 09665 JUMP(PNTIN44A); ----- ----- 3C2 000009D6 80090001 ----- 09666 .ORG PNTIN44A, *ERROR CODE=1 09667 MA(LOCAL), 09668 Y(1), 09669 Y>RAM, 09670 JUMP(PNTIN44T); ----- ----- 9D6 000003C3 72011100 ----- 09671 * P= COMPLETE BTT POINTER 09672 .ORG PNTIN44T, *READ AND DECODE BTT BYTE 09673 *CALL DBB0 09674 *RET3=0, RETURN TO PNTIN46Y 09675 MA(RET3), 09676 Y(0), 09677 Y>RAM, 09678 JUMP(DBB0); ----- ----- 3C3 000009D7 7A001100 ----- 09679 *EXIT 09680 * LOCAL=ERROR CODE 09681 .ORG PNTIN46Y, *B=RETURN 09682 MA(RETURN), RAM>BR, 09683 JUMP(PNTIN47); ----- ----- 740 000109D8 7C000000 ----- 09684 .ORG PNTIN47, *Y=RETURN 09685 *B=LOCAL 09686 MA(LOCAL), RAM>BR, 09687 A(>0F), BR>B, AND, 09688 JUMP(PNTIN48); ----- ----- 9D8 000109D9 720F0801 ----- 09689 .ORG PNTIN48, *CASE RETURN=? 09690 *Y=LOCAL=ERROR CODE 09691 *B=BTT POINTER 09692 PR>BR, 09693 MA(LOCAL), 09694 A(0), BR.0F>B, OR, 09695 Y>RAM, 09696 JY(DIP4Y); ----- ----- 9D9 0041C790 72001102 ----- 09697 * 09698 *+++INVENTORY PAGE POINTER TO PAGE NUMBER 09699 * 09700 * This routine will return in to PU,PT and PM the page 09701 * indexed by inventory/BTT pointer in P. 09702 * Invalid page numbers will return P=>F. 09703 * 09704 * input pars are:- 09705 * P: inv/BTT pointer 09706 * RETURN: return pointer 09707 * return pars are:- 09708 * PU, PT, PM page number 09709 * RET2, mag with mag=8 (not zero) 09710 * local variables used are:- 09711 * 09712 .ORG INTPN0, *B=POINTER 09713 *PU=0 09714 PR>BR, 09715 MA(PU), 09716 Y(0), 09717 Y>RAM, 09718 JUMP(INTPN1); ----- ----- 7A3 004109DA 76001100 ----- 09719 .ORG INTPN1, *A=POINTER 09720 A(0), BR>B, OR, 09721 Y>AR, 09722 JUMP(INTPN2); ----- ----- 9DA 002209DB 00001001 ----- 09723 .ORG INTPN2, *A=POINTER+100 09724 AR>A, B(100), ADD, 09725 Y>AR, 09726 JUMP(INTPN3); ----- ----- 9DB 002209DC 00640010 ----- 09727 .ORG INTPN3, *P=POINTER-39 09728 A(-39), BR>B, ADD, 09729 Y>PR, 09730 JUMP(INTPN5); ----- ----- 9DC 000009DD 80D90001 ----- 09731 .ORG INTPN5, *PT=0 09732 MA(PT), 09733 Y(0), 09734 Y>RAM, 09735 JUMP(INTPN8); ----- ----- 9DD 000009DE 75001100 ----- 09736 .ORG INTPN8, *PM=1 09737 *B=P 09738 PR>BR, 09739 MA(PM), 09740 Y(>10), 09741 Y>RAM, 09742 JUMP(INTPN9); ----- ----- 9DE 004109DF 74101100 ----- 09743 *P NOW RANGING FROM 1 UPWARDS, PU=PT=PM=0, B=P 09744 .ORG INTPN9, *P=B-1 09745 *B=PM 09746 MA(PM), RAM>BR, 09747 A(-1), BR>B, ADD, 09748 Y>PR, 09749 JUMP(INTPN10); ----- ----- 9DF 000109E0 F4FF0001 ----- 09750 .ORG INTPN10, *A=PU, P=0? 09751 *IF P=0, EXIT 09752 MA(PU), RAM>AR, 09753 JZ(INTPN11F,INTPN11T); ----- ----- 9E0 000223C4 76000000 ----- 09754 .ORG INTPN11F, *Y=PU-9, B=PT 09755 MA(PT), RAM>BR, 09756 ARHI>A, B(-9), ADD, 09757 JUMP(INTPN12); ----- ----- 3C4 000109E1 75F70020 ----- 09758 .ORG INTPN12, *PU=PU+1, CARRY? 09759 MA(PU), 09760 AR>A, B(>10), ADD, 09761 Y>RAM, 09762 JZ(INTPN13F,INTPN13T); ----- ----- 9E1 000023C6 76100110 ----- 09763 .ORG INTPN13F, *NO CARRY, B=P 09764 PR>BR, 09765 JUMP(INTPN9); ----- ----- 3C6 004109DF 00000000 ----- 09766 .ORG INTPN13T, *CARRY TO TENS 09767 *PU=0 09768 MA(PU), 09769 Y(0), 09770 Y>RAM, 09771 JUMP(INTPN14); ----- ----- 3C7 000009E2 76001100 ----- 09772 .ORG INTPN14, *Y=PT-9, A=PM 09773 MA(PM), RAM>AR, 09774 A(-9), BRHI>B, ADD, 09775 JUMP(INTPN15); ----- ----- 9E2 000209E3 74F7000C ----- 09776 .ORG INTPN15, *PT=PT+1, CARRY? 09777 MA(PT), 09778 A(>10), BR>B, ADD, 09779 Y>RAM, 09780 JZ(INTPN16F,INTPN16T); ----- ----- 9E3 000023C8 75100101 ----- 09781 .ORG INTPN16F, *NO CARRY, B=P 09782 PR>BR, 09783 JUMP(INTPN9); ----- ----- 3C8 004109DF 00000000 ----- 09784 .ORG INTPN16T, *CARRY TO MAGS 09785 *PT=0 09786 MA(PT), 09787 Y(0), 09788 Y>RAM, 09789 JUMP(INTPN17); ----- ----- 3C9 000009E4 75001100 ----- 09790 .ORG INTPN17, *Y=PM-8 09791 ARHI>A, B(-8), ADD, 09792 JUMP(INTPN18); ----- ----- 9E4 000009E5 00F80020 ----- 09793 .ORG INTPN18, *PM=PM+1, MAG OVERFLOW? 09794 *B=P 09795 PR>BR, 09796 MA(PM), 09797 AR>A, B(>10), ADD, 09798 Y>RAM, 09799 JUMP(INTPN9); ----- ----- 9E5 004109DF 74100110 ----- 09800 *EXIT B=PM 09801 .ORG INTPN11T, *RET2= MAG WITH MAG 8= 8 (NOT ZERO) 09802 MA(RET2), 09803 A(0), BR.F0>B, OR, 09804 Y>RAM, 09805 JUMP(INTPN20); ----- ----- 3C5 000009E6 7B001103 ----- 09806 .ORG INTPN20, *Y=PM-8 09807 *A=RETURN 09808 MA(RETURN), RAM>AR, 09809 A(-8), BRHI>B, ADD, 09810 JUMP(INTPN20A); ----- ----- 9E6 000209E7 7CF8000C ----- 09811 .ORG INTPN20A, *Y=RETURN 09812 *MAG 8? 09813 AR>A, B(7), AND, 09814 JZ(INTPN21F,INTPN21T); ----- ----- 9E7 000023CA 00070810 ----- 09815 .ORG INTPN21F, *PM!=8 09816 JY(DIP20Y); ----- ----- 3CA 0000C730 00000000 ----- 09817 .ORG INTPN21T, *PM=8, SET TO 0 09818 MA(PM), 09819 Y(>00), 09820 Y>RAM, 09821 JY(DIP20Y); ----- ----- 3CB 0000C730 74001100 ----- 09822 * 09823 *+++SEARCH BTT 09824 * 09825 * This routine will searches the BTT/inventory page for 09826 * types of page. It searches forward or backwards 09827 * according to entry point. It returns a pointer to 09828 * the next or last page (as appropriate) if MASK is set 09829 * to zero, or if it can not find the type of page specified 09830 * in MASK. If the inventory page is not complete, the routine 09831 * will ignore the INCYCLE i/p flag. 09832 * 09833 * input pars are:- 09834 * MASK:- indicates bits to test, if MASK 09835 * is zero, the next or last page 09836 * will be returned 09837 * ----------------------------------------------------------------- 09838 * |INCYCLE|MP |AIT |SUBT |TV |BLOCK |GROUP |NORM | 09839 * ----------------------------------------------------------------- 09840 * RETURN:- return pointer 09841 * P: inv/BTT pointer 09842 * return pars are:- 09843 * A: the decoded BTT byte of the found page 09844 * MASK: set to zero if page not found 09845 * ----------------------------------------------------------------- 09846 * |INCYCLE|MP |AIT |SUBT |TV |BLOCK |GROUP |NORM | 09847 * ----------------------------------------------------------------- 09848 * P: inv/BTT pointer to found page 09849 * TPD: inv/BTT byte 09850 * last Y equal to A for page found test 09851 * local variables used are:- 09852 * LOCAL, RET2, RET3, COUNT 09853 *ENTRY POINT TO SEARCH FORWARDS 09854 .ORG SBT0A, *A=RET2=1 09855 MA(RET2), 09856 Y(1), 09857 Y>RAM, Y>AR, 09858 JUMP(SBT1); ----- ----- 4C8 002209E8 7B011100 ----- 09859 *ENTRY POINT TO SEARCH BACKWARDS 09860 .ORG SBT0B, *A=RET2=-1 09861 MA(RET2), 09862 Y(-1), 09863 Y>RAM, Y>AR, 09864 JUMP(SBT1); ----- ----- 4C9 002209E8 7BFF1100 ----- 09865 * 09866 .ORG SBT1, *B=INVCNT 09867 MA(INVCNT), RAM>BR, 09868 JUMP(SBT2); ----- ----- 9E8 000109E9 38000000 ----- 09869 .ORG SBT2, *Y= 'COMPLETE' FLAG 09870 A(1), BR>B, AND, 09871 JUMP(SBT3); ----- ----- 9E9 000009EA 00010801 ----- 09872 .ORG SBT3, *INVENTORY COMPLETE? 09873 *B=MASK 09874 MA(MASK), RAM>BR, 09875 JZ(SBT4F,SBT4T); ----- ----- 9EA 000123CC 73000000 ----- 09876 .ORG SBT4T, *INVENTORY NOT COMPLETE, CLEAR INCYCLE FLAG 09877 MA(MASK), 09878 A(>7F), BR>B, AND, 09879 Y>RAM, 09880 JUMP(SBT4F); ----- ----- 3CD 000003CC 737F0901 ----- 09881 * 09882 .ORG SBT4F, *B=POINTER 09883 *LOCAL= WRAP AROUND COUNT HUNDREDS 09884 PR>BR, 09885 MA(LOCAL), 09886 Y(8), 09887 Y>RAM, 09888 JUMP(SBT11); ----- ----- 3CC 004109EB 72081100 ----- 09889 .ORG SBT11, *COUNT= WRAP AROUND COUNT UNITS 09890 MA(COUNT), 09891 Y(101), 09892 Y>RAM, 09893 JUMP(SBT20); ----- ----- 9EB 000009EC 78651100 ----- 09894 * A=OFFSET, B=POINTER 09895 .ORG SBT20, *UPDATE POINTER 09896 *A=POINTER 09897 AR>A, BR>B, ADD, 09898 Y>PR, Y>AR, 09899 JUMP(SBT21); ----- ----- 9EC 002209ED 80000011 ----- 09900 .ORG SBT21, *POINTER>511? 09901 *Y=POINTER-40 09902 AR>A, B(-40), ADD, 09903 JN(SBT22F,SBT22T); ----- ----- 9ED 000043CE 00D80010 ----- 09904 .ORG SBT22F, *POINTER<512 09905 *POINTER<40? 09906 *A=-85 09907 Y(-85), 09908 Y>AR, 09909 JN(SBT23F,SBT23T); ----- ----- 3CE 002243D0 00AB1000 ----- 09910 .ORG SBT23T, *WRAP AROUND TO TOP 09911 *P=-185 09912 *B=LOCAL 09913 MA(LOCAL), RAM>BR, 09914 AR>A, B(-100), ADD, 09915 Y>PR, 09916 JUMP(SBT26T); ----- ----- 3D1 000103D3 F29C0010 ----- 09917 .ORG SBT23F, *NO WRAP AROUND 09918 JUMP(SBT26T); ----- ----- 3D0 000003D3 00000000 ----- 09919 * 09920 .ORG SBT22T, *POINTER>512 09921 *A=POINTER+84 09922 AR>A, B(84), ADD, 09923 Y>AR, 09924 JUMP(SBT24); ----- ----- 3CF 002209EE 00540010 ----- 09925 .ORG SBT24, *A=POINTER+184 09926 AR>A, B(100), ADD, 09927 Y>AR, 09928 JUMP(SBT25); ----- ----- 9EE 002209EF 00640010 ----- 09929 .ORG SBT25, *P>-185? 09930 JN(SBT26F,SBT26T); ----- ----- 9EF 000043D2 00000000 ----- 09931 .ORG SBT26F, *WRAP AROUND TO BOTTOM 09932 *P=40 09933 *B=LOCAL 09934 MA(LOCAL), RAM>BR, 09935 Y(40), 09936 Y>PR, 09937 JUMP(SBT26T); ----- ----- 3D2 000103D3 F2281000 ----- 09938 *P HAS BEEN UPDATED, CHECK IF ALL BTT SEARCHED 09939 .ORG SBT26T, *A=COUNT UNITS 09940 MA(COUNT), RAM>AR, 09941 JUMP(SBT27); ----- ----- 3D3 000209F0 78000000 ----- 09942 .ORG SBT27, *DEC UNITS 09943 MA(COUNT), 09944 AR>A, B(-1), ADD, 09945 Y>RAM, 09946 JUMP(SBT28); ----- ----- 9F0 000009F1 78FF0110 ----- 09947 .ORG SBT28, *UNITS=0? 09948 *A=COUNT HUNDREDS 09949 MA(LOCAL), RAM>AR, 09950 JZ(SBT29F,SBT29T); ----- ----- 9F1 000223D4 72000000 ----- 09951 .ORG SBT29T, *UNITS=0, DEC HUNDREDS 09952 MA(LOCAL), 09953 AR>A, B(-1), ADD, 09954 Y>RAM, 09955 JUMP(SBT30); ----- ----- 3D5 000009F2 72FF0110 ----- 09956 .ORG SBT29F, *UNITS>0 09957 JUMP(SBT31F); ----- ----- 3D4 000003D6 00000000 ----- 09958 .ORG SBT30, *UNITS=100, HUNDREDS=0? 09959 MA(COUNT), 09960 Y(100), 09961 Y>RAM, 09962 JZ(SBT31F,SBT31T); ----- ----- 9F2 000023D6 78641100 ----- 09963 .ORG SBT31T, *ALL BTT SEARCHED 09964 *SET MASK=0 TO EXIT AFTER DBB CALL 09965 MA(MASK), 09966 Y(0), 09967 Y>RAM, 09968 JUMP(SBT31F); ----- ----- 3D7 000003D6 73001100 ----- 09969 *CHECK DECODED BTT BYTE AGAINST MASK 09970 .ORG SBT31F, *CALL DBB TO DECODE BYTE 09971 *RET3=1, RETURN TO SBT33 09972 MA(RET3), 09973 Y(1), 09974 Y>RAM, 09975 JUMP(DBB0); ----- ----- 3D6 000009D7 7A011100 ----- 09976 *A=RETURN DATA FROM DBB 09977 .ORG SBT33, *B=MASK 09978 MA(MASK), RAM>BR, 09979 JUMP(SBT33A); ----- ----- 741 000109F3 73000000 ----- 09980 .ORG SBT33A, *Y=MASK 09981 A(0), BR>B, OR, 09982 JUMP(SBT34); ----- ----- 9F3 000009F4 00001001 ----- 09983 .ORG SBT34, *Y=MASKED RETURN DATA 09984 *MASK=0? 09985 AR>A, BR>B, AND, 09986 JZ(SBT35F,SBT35T); ----- ----- 9F4 000023D8 00000811 ----- 09987 .ORG SBT35T, *MASK=0, EXIT 09988 *B=RETURN 09989 MA(RETURN), RAM>BR, 09990 JUMP(SBT36F); ----- ----- 3D9 000103DA 7C000000 ----- 09991 .ORG SBT35F, *MASK NOT ZERO 09992 *THIS TYPE OF PAGE FOUND? 09993 *IF YES, EXIT 09994 *B=RETURN 09995 MA(RETURN), RAM>BR, 09996 JZ(SBT36F,SBT36T); ----- ----- 3D8 000123DA 7C000000 ----- 09997 .ORG SBT36T, *NOT FOUND YET 09998 *B=POINTER 09999 *A=OFFSET 10000 PR>BR, 10001 MA(RET2), RAM>AR, 10002 JUMP(SBT20); ----- ----- 3DB 004309EC 7B000000 ----- 10003 *EXIT 10004 * B=RETURN 10005 .ORG SBT36F, *Y=RETURN 10006 A(>0F), BR>B, AND, 10007 JUMP(SBT37); ----- ----- 3DA 000009F5 000F0801 ----- 10008 .ORG SBT37, *CASE RETURN 10009 *Y=A FOR PAGE FOUND TEST 10010 AR>A, B(0), OR, 10011 JY(DIP18Y); ----- ----- 9F5 0000C7A0 00001010 ----- 10012 * 10013 *+++DECODE BTT BYTE 10014 * 10015 * This routine will reads the BTT/inventory page byte 10016 * pointed to by P and sets flags accordingly in A. 10017 * 10018 * input pars are:- 10019 * RET3:- return pointer 10020 * P: inv/BTT pointer 10021 * return pars are:- 10022 * A: 10023 * ----------------------------------------------------------------- 10024 * |INCYCLE|MP |AIT |SUBT |TV |BLOCK |GROUP |NORM | 10025 * ----------------------------------------------------------------- 10026 * P: inv/BTT pointer 10027 * TPD: inv/BTT byte 10028 * RWL: latch for store 1 10029 * local variables used are:- 10030 * 10031 .ORG DBB0, *B=STOR1 10032 MA(STOR1), RAM>BR, 10033 JUMP(DBB1); ----- ----- 9D7 000109F6 21000000 ----- 10034 .ORG DBB1, *RWL=LATCH FOR STORE 1 10035 MA(RWL), 10036 A(0), BRHI>B, OR, 10037 Y>RAM, Y>IO, 10038 JUMP(DBB2); ----- ----- 9F6 000009F7 0B00510C ----- 10039 .ORG DBB2, *TPD=BTT/INV BYTE 10040 *B=RETURN POINTER 10041 RVDP, 10042 MA(RET3), RAM>BR, 10043 JUMP(DBB3); ----- ----- 9F7 000109F8 7A008000 ----- 10044 .ORG DBB3, *A=BYTE 10045 TPD>A, B(0), OR, 10046 Y>AR, 10047 JUMP(DBB4); ----- ----- 9F8 002209F9 00001090 ----- 10048 .ORG DBB4, *Y=BYTE LO NIB-12 10049 *PAGE IN INVENTORY? 10050 AR.0F>A, B(-12), ADD, 10051 JN(DBB5F,DBB5T); ----- ----- 9F9 000043DC 00F400C0 ----- 10052 .ORG DBB5T, *PAGE IN INVENTORY, SET INCYCLE BIT 10053 *VALID BTT CODE? 10054 *A=>80 10055 Y(>80), 10056 Y>AR, 10057 JN(DBB6F,DBB6T); ----- ----- 3DD 002243DE 00801000 ----- 10058 .ORG DBB5F, *PAGE NOT IN INVENTORY, CLEAR INCYCLE BIT 10059 *VALID BTT CODE? IF NOT, EXIT 10060 *A=>00 10061 Y(>00), 10062 Y>AR, 10063 JN(DBB6F,DBB6T); ----- ----- 3DC 002243DE 00001000 ----- 10064 .ORG DBB6T, *VALID BTT CODE, Y=BTT CODE 10065 TPD.0F>A, B(0), OR, 10066 JUMP(DBB7); ----- ----- 3DF 000009FA 000010A0 ----- 10067 .ORG DBB7, *CASE ON BTT CODE 10068 JY(DBB10Y); ----- ----- 9FA 0000C750 00000000 ----- 10069 .ORG DBB10Y, *CASE BTT CODE=0 10070 *NO BITS TO SET 10071 JUMP(DBB6F); ----- ----- 750 000003DE 00000000 ----- 10072 .ORG DBB11, *CASE BTT CODE=1 10073 *MP=0, AIT=1, SUBT=1 10074 *TV=0, BLOCK=0, GROUP=1, NORM=0 10075 AR>A, B(>32), OR, 10076 Y>AR, 10077 JUMP(DBB6F); ----- ----- 751 002203DE 00321010 ----- 10078 .ORG DBB12, *CASE BTT CODE=2 10079 *MP=0, AIT=1, SUBT=0 10080 *TV=1, BLOCK=1, GROUP=0, NORM=0 10081 AR>A, B(>2C), OR, 10082 Y>AR, 10083 JUMP(DBB6F); ----- ----- 752 002203DE 002C1010 ----- 10084 .ORG DBB13, *CASE BTT CODE=3 10085 *MP=1, AIT=1, SUBT=0 10086 *TV=1, BLOCK=1, GROUP=0, NORM=0 10087 AR>A, B(>6C), OR, 10088 Y>AR, 10089 JUMP(DBB6F); ----- ----- 753 002203DE 006C1010 ----- 10090 .ORG DBB14, *CASE BTT CODE=4 10091 *MP=0, AIT=1, SUBT=0 10092 *TV=0, BLOCK=1, GROUP=0, NORM=0 10093 AR>A, B(>24), OR, 10094 Y>AR, 10095 JUMP(DBB6F); ----- ----- 754 002203DE 00241010 ----- 10096 .ORG DBB15, *CASE BTT CODE=5 10097 *MP=1, AIT=1, SUBT=0 10098 *TV=0, BLOCK=1, GROUP=0, NORM=0 10099 AR>A, B(>64), OR, 10100 Y>AR, 10101 JUMP(DBB6F); ----- ----- 755 002203DE 00641010 ----- 10102 .ORG DBB16, *CASE BTT CODE=6 10103 *MP=0, AIT=1, SUBT=0 10104 *TV=0, BLOCK=0, GROUP=1, NORM=0 10105 AR>A, B(>22), OR, 10106 Y>AR, 10107 JUMP(DBB6F); ----- ----- 756 002203DE 00221010 ----- 10108 .ORG DBB17, *CASE BTT CODE=7 10109 *MP=1, AIT=1, SUBT=0 10110 *TV=0, BLOCK=0, GROUP=1, NORM=0 10111 AR>A, B(>62), OR, 10112 Y>AR, 10113 JUMP(DBB6F); ----- ----- 757 002203DE 00621010 ----- 10114 .ORG DBB18, *CASE BTT CODE=8 10115 *MP=0, AIT=0, SUBT=0 10116 *TV=0, BLOCK=0, GROUP=0, NORM=1 10117 AR>A, B(>01), OR, 10118 Y>AR, 10119 JUMP(DBB6F); ----- ----- 758 002203DE 00011010 ----- 10120 .ORG DBB19, *CASE BTT CODE=9 10121 *MP=0, AIT=1, SUBT=0 10122 *TV=0, BLOCK=0, GROUP=0, NORM=1 10123 AR>A, B(>21), OR, 10124 Y>AR, 10125 JUMP(DBB6F); ----- ----- 759 002203DE 00211010 ----- 10126 .ORG DBB1A, *CASE BTT CODE=A 10127 *MP=1, AIT=0, SUBT=0 10128 *TV=0, BLOCK=0, GROUP=0, NORM=1 10129 AR>A, B(>41), OR, 10130 Y>AR, 10131 JUMP(DBB6F); ----- ----- 75A 002203DE 00411010 ----- 10132 .ORG DBB1B, *CASE BTT CODE=B 10133 *MP=1, AIT=1, SUBT=0 10134 *TV=0, BLOCK=0, GROUP=0, NORM=1 10135 AR>A, B(>61), OR, 10136 Y>AR, 10137 JUMP(DBB6F); ----- ----- 75B 002203DE 00611010 ----- 10138 *COMMON EXIT 10139 .ORG DBB6F, *Y=RETURN POINTER 10140 A(1), BR>B, AND, 10141 JUMP(DBB20); ----- ----- 3DE 000009FB 00010801 ----- 10142 .ORG DBB20, *CASE RETURN 10143 *B=RETURN (FOR PNTIN RETURN) 10144 MA(RETURN), RAM>BR, 10145 JY(PNTIN46Y); ----- ----- 9FB 0001C740 7C000000 ----- 10146 * 10147 *+++DPTP: MOVE DPU, DPT AND DPM TO SCRATCH STORAGE IN PM, PT AND PU 10148 * AR=RETURN POINTER 10149 .ORG DPTP0, *BR=DPM 10150 MA(DPM), RAM>BR, 10151 JUMP(DPTP1); ----- ----- 8CA 000109FC 68000000 ----- 10152 .ORG DPTP1, *PM=DPM 10153 MA(PM), 10154 A(0), BR>B, OR, 10155 Y>RAM, 10156 JUMP(DPTP2); ----- ----- 9FC 000009FD 74001101 ----- 10157 .ORG DPTP2, *BR=DPT 10158 MA(DPT), RAM>BR, 10159 JUMP(DPTP3); ----- ----- 9FD 000109FE 69000000 ----- 10160 .ORG DPTP3, *PT=DPT 10161 MA(PT), 10162 A(0), BR>B, OR, 10163 Y>RAM, 10164 JUMP(DPTP4); ----- ----- 9FE 000009FF 75001101 ----- 10165 .ORG DPTP4, *AR=DPU 10166 *Y=RETURN POINTER 10167 MA(DPU), RAM>BR, 10168 AR>A, B(1), AND, 10169 JUMP(DPTP5); ----- ----- 9FF 00010A00 6A010810 ----- 10170 .ORG DPTP5, *PU=DPU 10171 MA(PU), 10172 A(0), BR>B, OR, 10173 Y>RAM, 10174 JY(VPP250Y); ----- ----- A00 0000C3F0 76001101 ----- 10175 * 10176 *+++GET FLOF LINK 10177 * 10178 * This routine places the FLOF link pointed by the link number 10179 * in A in PU, PT and PM. If the link is null, the las Y will 10180 * be non-zero. 10181 * 10182 * input pars are:- 10183 * A: indicates link (0 is red -> 4 is index) 10184 * RETURN: return pointer 10185 * return pars are:- 10186 * PU,PT,PM contains the link 10187 * last Y non-zero for a null link 10188 * TPD: FLOF flags:- 10189 * ----------------------------------------------------------------- 10190 * |P27R |P24R | X | |DR24 |other packet 27 flags | 10191 * ----------------------------------------------------------------- 10192 * local variables used are:- 10193 * RET2, 10194 * 10195 .ORG GFL0, *B=STOR0 10196 *P IS POINTER TO LINK TENS AND UNITS 10197 MA(STOR0), RAM>BR, 10198 AR>A, B(-24), ADD, 10199 Y>PR, 10200 JUMP(GFL10); ----- ----- 98C 00010A01 A0E80010 ----- 10201 .ORG GFL10, *RWL=DISPLAY PAGE LATCH 10202 MA(RWL), 10203 A(0), BRHI>B, OR, 10204 Y>RAM, Y>IO, 10205 JUMP(GFL20); ----- ----- A01 00000A02 0B00510C ----- 10206 .ORG GFL20, *TPD=LINK TENS AND UNITS 10207 *RET2=LINK 10208 RVDP, 10209 MA(RET2), 10210 AR>A, B(0), OR, 10211 Y>RAM, 10212 JUMP(GFL21); ----- ----- A02 00000A03 7B009110 ----- 10213 *UPDATE PT WITH TENS 10214 .ORG GFL21, *A=PT=TPD 10215 MA(PT), 10216 TPD>A, B(0), OR, 10217 Y>RAM, Y>AR, 10218 JUMP(GFL22); ----- ----- A03 00220A04 75001190 ----- 10219 *UPDATE PU WITH UNITS 10220 .ORG GFL22, * 10221 MA(PU), 10222 AR<<4>A, B(0), OR, 10223 Y>RAM, 10224 JUMP(GFL30); ----- ----- A04 00000A05 76001130 ----- 10225 .ORG GFL30, *A=LINK 10226 MA(RET2), RAM>AR, 10227 JUMP(GFL31); ----- ----- A05 00020A06 7B000000 ----- 10228 .ORG GFL31, *POINT TO LINK MAG 10229 *P=-19+LINK/2 10230 AR>>1>A, B(-19), ADD, 10231 Y>PR, 10232 JUMP(GFL32); ----- ----- A06 00000A07 80ED00E0 ----- 10233 .ORG GFL32, *Y=LINK-4 10234 *TPD=LINK MAG 10235 RVDP, 10236 AR>A, B(-4), ADD, 10237 JUMP(GFL33); ----- ----- A07 00000A08 00FC8010 ----- 10238 .ORG GFL33, *INDEX LINK? 10239 *Y=LINK LSB 10240 *B=RETURN 10241 MA(RETURN), RAM>BR, 10242 AR>A, B(1), AND, 10243 JZ(GFL34F,GFL34T); ----- ----- A08 000123E0 7C010810 ----- 10244 .ORG GFL34T, *INDEX, MAG IN TOP NIB 10245 *PM=TPD 10246 MA(PM), 10247 TPD.F0>A, B(0), OR, 10248 Y>RAM, 10249 JUMP(GFL40); ----- ----- 3E1 00000A09 740011B0 ----- 10250 .ORG GFL34F, *NOT INDEX 10251 *MAG IN TOP OR BOTTOM NIB? 10252 *A=TPD 10253 TPD>A, B(0), OR, 10254 Y>AR, 10255 JZ(GFL35F,GFL35T); ----- ----- 3E0 002223E2 00001090 ----- 10256 .ORG GFL35F, *MAG IN TOP NIB 10257 *PM=TPD 10258 MA(PM), 10259 TPD.F0>A, B(0), OR, 10260 Y>RAM, 10261 JUMP(GFL40); ----- ----- 3E2 00000A09 740011B0 ----- 10262 .ORG GFL35T, *MAG IN BOTTOM NIB 10263 *PM=TPD<<4 10264 MA(PM), 10265 AR<<4>A, B(0), OR, 10266 Y>RAM, 10267 JUMP(GFL40); ----- ----- 3E3 00000A09 74001130 ----- 10268 * B=RETURN 10269 .ORG GFL40, *P=1-6 (POINTER TO FLOF FLAGS) 10270 *A=PT (HAS UNITS IN BOTTOM NIB) 10271 MA(PT), RAM>AR, 10272 Y(-16), 10273 Y>PR, 10274 JUMP(GFL40A); ----- ----- A09 00020A0A F5F01000 ----- 10275 .ORG GFL40A, *CLEAR UNITS FROM BOTTOM NIB 10276 MA(PT), 10277 AR.F0>A, B(0), OR, 10278 Y>RAM, 10279 JUMP(GFL41); ----- ----- A0A 00000A0B 750011D0 ----- 10280 .ORG GFL41, *Y=LINK TENS AND UNITS XOR >FF 10281 *TPD=FLOF FLAGS 10282 RVDP, 10283 AR>A, B(>FF), XOR, 10284 JUMP(GFL42); ----- ----- A0B 00000A0C 00FF9810 ----- 10285 .ORG GFL42, *NULL LINK? 10286 *Y= P27R (PACKET 27 RECEIVED FLAG) 10287 TPD>A, B(>80), AND, 10288 JZ(GFL43F,GFL43T); ----- ----- A0C 000023E4 00800890 ----- 10289 .ORG GFL43F, *NOT NULL, PACKET 27 RECEIVED? 10290 *A=0 10291 Y(0), 10292 Y>AR, 10293 JZ(GFL44F,GFL44T); ----- ----- 3E4 002223E6 00001000 ----- 10294 .ORG GFL43T, *MARK LINK AS NULL IN A 10295 Y(>FF), 10296 Y>AR, 10297 JUMP(GFL44F); ----- ----- 3E5 002203E6 00FF1000 ----- 10298 .ORG GFL44T, *PACKET 27 NOT RECEIVED, SAME AS NULL LINK 10299 Y(>FF), 10300 Y>AR, 10301 JUMP(GFL44F); ----- ----- 3E7 002203E6 00FF1000 ----- 10302 * A<>0 IF NULL LINK, B=RETURN 10303 .ORG GFL44F, *Y=RETURN 10304 A(3), BR>B, AND, 10305 JUMP(GFL45); ----- ----- 3E6 00000A0D 00030801 ----- 10306 .ORG GFL45, *Y=NULL LINK MARKER 10307 *CASE RETURN=? 10308 AR>A, B(0), OR, 10309 JY(CKR200Y); ----- ----- A0D 0000C060 00001010 ----- 10310 * 10311 *+++GET FAVOURITE PAGE 10312 * 10313 * This routine places the favourite page pointed to by the store 10314 * number in A in PU, PT and PM. 10315 * 10316 * input pars are:- 10317 * A: indicates store (2 -> 5) 10318 * RETURN: return pointer 10319 * 10320 * return pars are:- 10321 * PU,PT,PM favourite page number, lsn contains favp 10322 * high nibble (non-zero if page not prog'd) 10323 * A: STOR0 10324 * B: PU 10325 * LAST Y: non-zero for page not prog'd 10326 * 10327 * local variables used are:- 10328 * MASK, LOCAL 10329 * 10330 .ORG GFP0T, *A=STORE-2 10331 AR>A, B(-2), ADD, 10332 Y>AR, 10333 JUMP(GFP10); ----- ----- 369 00220A0E 00FE0010 ----- 10334 .ORG GFP10, *P=POINTER TO RED AND YELLOW LINKS 10335 *CASE STORE-2? 10336 Y(-7), 10337 Y>PR, 10338 JY(GFP20Y); ----- ----- A0E 0000C208 80F91000 ----- 10339 * 10340 .ORG GFP20Y, *CASE RED LINK 10341 *RWL=5 10342 MA(RWL), 10343 Y(5), 10344 Y>RAM, Y>IO, 10345 JUMP(GFP30); ----- ----- 208 00000A0F 0B055100 ----- 10346 .ORG GFP21, *CASE GREEN LINK 10347 *P=POINTER TO GREEN LINK 10348 Y(-4), 10349 Y>PR, 10350 JUMP(GFP20Y); ----- ----- 209 00000208 80FC1000 ----- 10351 .ORG GFP22, *CASE YELLOW LINK 10352 *RWL=6 10353 MA(RWL), 10354 Y(6), 10355 Y>RAM, Y>IO, 10356 JUMP(GFP30); ----- ----- 20A 00000A0F 0B065100 ----- 10357 .ORG GFP23, *CASE CYAN LINK 10358 *P=POINTER TO CYAN LINK 10359 Y(-4), 10360 Y>PR, 10361 JUMP(GFP22); ----- ----- 20B 0000020A 80FC1000 ----- 10362 * P=POINTER TO LINK MAGS 10363 .ORG GFP30, *INIT DIGIT COUNT 10364 Y(4), 10365 Y>AR, 10366 JUMP(GFP40); ----- ----- A0F 00220A10 00041000 ----- 10367 *DIGIT LOOP START 10368 * A=LOOP, P=POINTER TO DIGIT 10369 .ORG GFP40, *LOCAL-- 10370 *TPD=DIGIT 10371 RVDP, 10372 MA(LOCAL), 10373 AR>A, B(-1), ADD, 10374 Y>RAM, 10375 JUMP(GFP42); ----- ----- A10 00000A11 72FF8110 ----- 10376 .ORG GFP42, *CASE LOCAL=? 10377 *A=TPD 10378 *B=RETURN 10379 MA(RETURN), RAM>BR, 10380 TPD>A, B(0), OR, 10381 Y>AR, 10382 JY(GFP50Y); ----- ----- A11 0023C540 7C001090 ----- 10383 .ORG GFP50Y, *LOCAL=0, EXIT 10384 *Y=RETURN 10385 *B=PU 10386 MA(PU), RAM>BR, 10387 A(3), BR>B, AND, 10388 JUMP(GFP70); ----- ----- 540 00010A12 76030801 ----- 10389 .ORG GFP51, *LOCAL=1 10390 *PUT POINTER TO PU IN MASK 10391 MA(MASK), 10392 Y(PU), 10393 Y>RAM, 10394 JUMP(GFP60); ----- ----- 541 00000A13 73761100 ----- 10395 .ORG GFP52, *LOCAL=2 10396 *PUT POINTER TO PT IN MASK 10397 MA(MASK), 10398 Y(PT), 10399 Y>RAM, 10400 JUMP(GFP60); ----- ----- 542 00000A13 73751100 ----- 10401 .ORG GFP53, *LOCAL=3 10402 *PUT POINTER TO PM IN MASK 10403 MA(MASK), 10404 Y(PM), 10405 Y>RAM, 10406 JUMP(GFP53A); ----- ----- 543 00000A14 73741100 ----- 10407 .ORG GFP53A, *CLEAR INVALID BIT IN MAG 10408 AR>A, B(>F7), AND, 10409 Y>AR, 10410 JUMP(GFP60); ----- ----- A14 00220A13 00F70810 ----- 10411 *NEED TO SWAP HI AND LO NIBBLES 10412 * A=DIGIT, MASK=POINTER TO Px IN SCRATCH RAM 10413 .ORG GFP60, *B=DIGIT POINTER, P LSN=FAVP DIGIT MSN 10414 PR>BR, 10415 ARHI>A, B(0), OR, 10416 Y>PR, 10417 JUMP(GFP61); ----- ----- A13 00410A15 80001020 ----- 10418 .ORG GFP61, *P=POINTER TO DIGIT 10419 *B LSN=FAVP MSN 10420 PR>BR, 10421 A(0), BR>B, OR, 10422 Y>PR, 10423 JUMP(GFP62); ----- ----- A15 00410A16 80001001 ----- 10424 .ORG GFP62, *A=FAVP DIGIT WITH SWAPPED NIBBLES 10425 *B=POINTER TO PU/PT/PM 10426 MA(MASK), RAM>BR, 10427 AR<<4>A, BR.0F>B, OR, 10428 Y>AR, 10429 JUMP(GFP63); ----- ----- A16 00230A17 73001032 ----- 10430 .ORG GFP63, *P=POINTER TO PU/PT/PM 10431 *B=POINTER TO NEXT DIGIT 10432 PR>BR, 10433 A(0), BR>B, OR, 10434 Y>PR, 10435 JUMP(GFP64); ----- ----- A17 00410A18 80001001 ----- 10436 .ORG GFP64, *UPDATE PU/PT/PM 10437 PR>MA, 10438 AR>A, B(0), OR, 10439 Y>RAM, 10440 JUMP(GFP65); ----- ----- A18 00100A19 00001110 ----- 10441 .ORG GFP65, *POINT TO NEXT DIGIT 10442 *A=LOCAL 10443 MA(LOCAL), RAM>AR, 10444 A(1), BR>B, ADD, 10445 Y>PR, 10446 JUMP(GFP40); ----- ----- A19 00020A10 F2010001 ----- 10447 *LOOP END 10448 * LAST Y WAS RETURN 10449 .ORG GFP70, *CASE RETURN=? 10450 *Y='DASH' AND 'SPACE' FLAGS 10451 *(IF NON-ZERO, PAGE NOT PROGRAMMED) 10452 *A=STOR0 10453 MA(STOR0), RAM>AR, 10454 A(>0C), BR>B, AND, 10455 JY(FPFS60Y); ----- ----- A12 0002C270 200C0801 ----- 10456 * 10457 *+++GET NORMAL PAGE 10458 * 10459 * This routine places the page pointed to by the store 10460 * number in A in PU, PT and PM. 10461 * 10462 * input pars are:- 10463 * A: indicates store (2 -> 5) 10464 * 10465 .ORG GNP0Y, *P=INDEX TO STORx 10466 AR>A, B(STOR0), ADD, 10467 Y>PR, 10468 JUMP(GNP1); ----- ----- 544 00000A1A 80200010 ----- 10469 .ORG GNP1, *B=LATCH FOR STORx 10470 PR>MA, RAM>BR, 10471 JUMP(GNP2); ----- ----- A1A 00110A1B 00000000 ----- 10472 .ORG GNP2, *P=INDEX TO LATCH MAGS 10473 A(M0), BRHI>B, ADD, 10474 Y>PR, 10475 JUMP(GNP3); ----- ----- A1B 00000A1C 8010000C ----- 10476 .ORG GNP3, *A=LATCH MAGS 10477 *P=INDEX TO LATCH TENS 10478 PR>MA, RAM>AR, 10479 A(T0), BRHI>B, ADD, 10480 Y>PR, 10481 JUMP(GNP4); ----- ----- A1C 00120A1D 8018000C ----- 10482 .ORG GNP4, *PM=LATCH MAGS 10483 MA(PM), 10484 AR<<4>A, B(0), OR, 10485 Y>RAM, 10486 JUMP(GNP5); ----- ----- A1D 00000A1E 74001130 ----- 10487 .ORG GNP5, *A=LATCH TENS 10488 *P=INDEX TO LATCH UNITS 10489 PR>MA, RAM>AR, 10490 A(U0), BRHI>B, ADD, 10491 Y>PR, 10492 JUMP(GNP6); ----- ----- A1E 00120A1F 8020000C ----- 10493 .ORG GNP6, *PT=LATCH TENS 10494 MA(PT), 10495 AR<<4>A, B(0), OR, 10496 Y>RAM, 10497 JUMP(GNP7); ----- ----- A1F 00000A20 75001130 ----- 10498 .ORG GNP7, *A=LATCH UNITS 10499 PR>MA, RAM>AR, 10500 JUMP(GNP8); ----- ----- A20 00120A21 00000000 ----- 10501 .ORG GNP8, *PU=LATCH UNITS 10502 *RETURN TO GAP ROUTINE 10503 MA(PU), 10504 AR<<4>A, B(0), OR, 10505 Y>RAM, 10506 JUMP(GAP60A); ----- ----- A21 00000A22 76001130 ----- 10507 ***GAP: GENERATE A PROMPT 10508 * BR=STOR0 10509 .ORG GAP0, *RWL=LATCH FOR STORE 0 10510 MA(RWL), 10511 A(0), BRHI>B, OR, 10512 Y>RAM, Y>IO, 10513 JUMP(GAP0A); ----- ----- 336 00000A23 0B00510C ----- 10514 .ORG GAP0A, *BR=SYS2 10515 MA(SYS2), RAM>BR, 10516 JUMP(GAP0B); ----- ----- A23 00010A24 09000000 ----- 10517 .ORG GAP0B, *AR=EXPREG 10518 *Y=APIN 10519 MA(EXPREG), RAM>AR, 10520 A(APIN), BR>B, AND, 10521 JUMP(GAP1); ----- ----- A24 00020A25 63010801 ----- 10522 .ORG GAP1, *Y=CPRF 10523 *AUTO PROMPTS ENABLED? 10524 AR>A, B(CPRF), AND, 10525 JZ(GAP2F,GAP2T); ----- ----- A25 000023E8 00040810 ----- 10526 *AUTO PROMPTS ENABLED, GENERATE A PROMPT 10527 .ORG GAP2T, *CLEAR PROMPTS FIRST? 10528 *CPRF=0, OLD CPRF? 10529 *AR=EXPREG FOR GAP3T 10530 MA(EXPREG), 10531 AR>A, B(>FF-CPRF), AND, 10532 Y>RAM, Y>AR, 10533 JZ(GAP3F,GAP3T); ----- ----- 3E9 002223EA 63FB0910 ----- 10534 *CLEAR ROW 24 FIRST 10535 .ORG GAP3F, *PR=-64 (POINT TO ROW 24 COL 0) 10536 Y(-64), 10537 Y>PR, 10538 JUMP(GAP7F); ----- ----- 3EA 000003EC 80C01000 ----- 10539 * 10540 .ORG GAP7F, *B=P, CLEAR LOC 10541 PR>BR, 10542 Y(>20), 10543 Y>DR, 10544 JUMP(GAP5); ----- ----- 3EC 00411A26 00201000 ----- 10545 .ORG GAP5, *Y=COL+25 10546 A(25), BR>B, ADD, 10547 JUMP(GAP6); ----- ----- A26 00000A27 00190001 ----- 10548 .ORG GAP6, *PR++ 10549 *LAST COL? 10550 A(1), BR>B, ADD, 10551 Y>PR, 10552 JZ(GAP7F,GAP7T); ----- ----- A27 000023EC 80010001 ----- 10553 .ORG GAP7T, *EXIT ROW 24 CLEAR 10554 *AR=EXPREG 10555 MA(EXPREG), RAM>AR, 10556 JUMP(GAP3T); ----- ----- 3ED 000203EB 63000000 ----- 10557 * AR=EXPREG 10558 .ORG GAP3T, *Y=USM 10559 AR>A, B(USM), AND, 10560 JUMP(GAP3A); ----- ----- 3EB 00000A28 00020810 ----- 10561 .ORG GAP3A, *USM? 10562 *Y=SRTC 10563 *B=PEN 10564 MA(PEN), RAM>BR, 10565 AR>A, B(SRTC), AND, 10566 JZ(GAP4F,GAP4T); ----- ----- A28 000123EE 1B010810 ----- 10567 *USER STATUS MODE, COPY STATUS TO 24 10568 * AR=EXPREG, LAST Y WAS SRTC 10569 *FIRST WRITE START AND END BOX CHARS 10570 .ORG GAP4F, *STATUS READY TO COPY? 10571 *SRTC=0 10572 MA(EXPREG), 10573 AR>A, B(>FF-SRTC), AND, 10574 Y>RAM, 10575 JZ(GAP11F,GAP11T); ----- ----- 3EE 000023F2 63FE0910 ----- 10576 .ORG GAP11T, *NO STATUS READY, EXIT 10577 JUMP(GAP2F); ----- ----- 3F3 000003E8 00000000 ----- 10578 .ORG GAP11F, *PR=-34 10579 Y(-34), 10580 Y>PR, 10581 JUMP(GAP12); ----- ----- 3F2 00000A29 80DE1000 ----- 10582 .ORG GAP12, *END BOX 10583 Y(>0A), 10584 Y>DR, 10585 JUMP(GAP13); ----- ----- A29 00001A2A 000A1000 ----- 10586 .ORG GAP13, *PR=-56 10587 10588 Y(-56), 10589 Y>PR, 10590 JUMP(GAP14); ----- ----- A2A 00000A2B 80C81000 ----- 10591 .ORG GAP14, *FIRST BOX 10592 Y(>0B), 10593 Y>DR, 10594 JUMP(GAP15); ----- ----- A2B 00001A2C 000B1000 ----- 10595 .ORG GAP15, *PR=-55 10596 Y(-55), 10597 Y>PR, 10598 JUMP(GAP16); ----- ----- A2C 00000A2D 80C91000 ----- 10599 .ORG GAP16, *SECOND BOX 10600 *AR=STOR0 10601 MA(STOR0), RAM>AR, 10602 Y(>0B), 10603 Y>DR, 10604 JUMP(GAP17); ----- ----- A2D 00021A2E 200B1000 ----- 10605 *INITIALISE VARIABLES FOR COPY LOOP 10606 .ORG GAP17, *RWL=AR MSN=2 10607 MA(RWL), 10608 AR.F0>A, B(2), OR, 10609 Y>RAM, Y>AR, Y>IO, 10610 JUMP(GAP18); ----- ----- A2E 00220A2F 0B0251D0 ----- 10611 * AR MSN= LATCH FOR STORE 0 10612 * AR LSN= LATCH OF STORED STATUS FIELD 10613 .ORG GAP18, *PR=POINTER TO 1ST STATUS STORE CHAR 10614 *BR=POINTER TO START POSITION IN STOR0 10615 PR>BR, 10616 Y(-6), 10617 Y>PR, 10618 JUMP(GAP25F); ----- ----- A2F 004103F4 80FA1000 ----- 10619 *START OF COPY LOOP 10620 .ORG GAP25F, *TPD=STATUS CHAR 10621 RVDP, 10622 JUMP(GAP20); ----- ----- 3F4 00000A30 00008000 ----- 10623 .ORG GAP20, *INCREMENT STORE0 POINTER 10624 *SWAP POINTERS 10625 PR>BR, 10626 A(1), BR>B, ADD, 10627 Y>PR, 10628 JUMP(GAP21); ----- ----- A30 00410A31 80010001 ----- 10629 .ORG GAP21, *RWL=STORE 0 LATCH 10630 MA(RWL), 10631 ARHI>A, B(0), OR, 10632 Y>RAM, Y>IO, 10633 JUMP(GAP22); ----- ----- A31 00000A32 0B005120 ----- 10634 .ORG GAP22, *WRITE STATUS CHAR TO STORE 0 10635 *BR=STATUS STORE POINTER 10636 TPD>A, B(0), OR, 10637 Y>DR, 10638 JUMP(GAP23); ----- ----- A32 00001A33 00001090 ----- 10639 .ORG GAP23, *INCREMENT STORE POINTER 10640 *SWAP POINTERS 10641 PR>BR, 10642 A(1), BR>B, ADD, 10643 Y>PR, 10644 JUMP(GAP24); ----- ----- A33 00410A34 80010001 ----- 10645 .ORG GAP24, *LAST STATUS CHARACTER IN THIS GROUP? 10646 *RWL=STATUS STORE LATCH 10647 MA(RWL), 10648 AR.0F>A, B(0), ADD, 10649 Y>RAM, Y>IO, 10650 JZ(GAP25F,GAP25T); ----- ----- A34 000023F4 0B0041C0 ----- 10651 *COMPLETED COPY OF THIS GROUP OF STATUS CHARS 10652 .ORG GAP25T, *Y=STATUS STORE LATCH-4 10653 AR.0F>A, B(-4), ADD, 10654 JUMP(GAP25A); ----- ----- 3F5 00000A35 00FC00C0 ----- 10655 .ORG GAP25A, *ANOTHER GROUP? 10656 *POINT TO NEXT GROUP 10657 MA(RWL), 10658 AR>A, B(1), ADD, 10659 Y>AR, Y>RAM, Y>IO, 10660 JZ(GAP26F,GAP26T); ----- ----- A35 002223F6 0B014110 ----- 10661 .ORG GAP26F, *INIT STORE POINTER TO BEGINNING OF NEXT GROUP 10662 Y(-7), 10663 Y>PR, 10664 JUMP(GAP25F); ----- ----- 3F6 000003F4 80F91000 ----- 10665 *FINISHED COPY 10666 .ORG GAP26T, *EXIT USER STATUS MODE 10667 JUMP(GAP2F); ----- ----- 3F7 000003E8 00000000 ----- 10668 *GENERATE A ROW 24 DISPLAY FOR A PAGE CAPTURE MODE 10669 * AR=EXPREG, B=PEN 10670 .ORG GAP4T, *Y=PEN-4 10671 A(-4), BRHI>B, ADD, 10672 JUMP(GAP4A); ----- ----- 3EF 00000A36 00FC000C ----- 10673 .ORG GAP4A, *SUB-PAGE MODE? 10674 *P=POINTER TO START OF PROMPT ROW 10675 *B=SYS1 10676 MA(SYS1), RAM>BR, 10677 Y(-64), 10678 Y>PR, 10679 JN(GAP4BF,GAP4BT); ----- ----- A36 000143F8 88C01000 ----- 10680 *MAIN PAGE MODE 10681 .ORG GAP4BT, *Y=PCM 10682 *B=MREG0 10683 MA(MREG0), RAM>BR, 10684 A(3), BRHI>B, AND, 10685 JUMP(GAP30); ----- ----- 3F9 00010A37 3903080C ----- 10686 .ORG GAP30, *CASE PCM=? 10687 *INIT THISRW FOR TOP MENU 10688 MA(THISRW), 10689 Y(27), 10690 Y>RAM, 10691 JY(GAP40Y); ----- ----- A37 0000C788 7D1B1100 ----- 10692 *CASE NORMAL 10693 .ORG GAP40Y, *Y=PMNM 10694 A(PMNM), BR>B, AND, 10695 JUMP(GAP50); ----- ----- 788 00000A38 00040801 ----- 10696 *CASE TOP 10697 .ORG GAP41, *P=POINTER TO START OF PROMPT ROW 10698 *THISRW=27 ###1 10699 Y(-64), 10700 Y>PR, 10701 JUMP(GAP100); ----- ----- 789 00000A39 80C01000 ----- 10702 *CASE FLOF 10703 .ORG GAP42, *A=FLFREG 10704 MA(FLFREG), RAM>AR, 10705 JUMP(GAP42A); ----- ----- 78A 00020A3A 12000000 ----- 10706 .ORG GAP42A, *Y=P27FLF 10707 AR>A, B(P27FLF), AND, 10708 JUMP(GAP42B); ----- ----- A3A 00000A3B 00400810 ----- 10709 .ORG GAP42B, *NEED TO GENERATE A ROW 24? 10710 *B=SYS2 10711 MA(SYS2), RAM>BR, 10712 JZ(GAP42CF,GAP42CT); ----- ----- A3B 000123FA 09000000 ----- 10713 .ORG GAP42CF, *CALL PAGE NUMBER MENU ROUTINE 10714 *CALL PND50T 10715 *RETURN=1, RETURN TO GAP51 10716 MA(RETURN), 10717 Y(1), 10718 Y>RAM, 10719 JUMP(PND50T); ----- ----- 3FA 00000A3C 7C011100 ----- 10720 .ORG GAP42CT, *NO, COPY ROW24 FROM STORE 6 10721 *CPYR24=1 10722 MA(SYS2), 10723 A(CPYR24), BR>B, OR, 10724 Y>RAM, 10725 JUMP(GAP2F); ----- ----- 3FB 000003E8 09041101 ----- 10726 *CASE FAVP 10727 .ORG GAP43, *GET PAGE PREFIX 10728 *CALL PND50T 10729 *RETURN=1, RETURN TO GAP51 10730 MA(RETURN), 10731 Y(1), 10732 Y>RAM, 10733 JUMP(PND50T); ----- ----- 78B 00000A3C 7C011100 ----- 10734 *GENERATE A NORMAL MODE MENU 10735 * LAST Y WAS PMNM 10736 .ORG GAP50, *PMNM=1? IF NO GET PAGE PREFIX 10737 * 10738 * TCJ Jan 94, 10739 * *CALL PND50T 10740 * *RETURN=1, RETURN TO GAP51 10741 * MA(RETURN), 10742 * Y(1), 10743 * Y>RAM, 10744 * JZ(GAP50AF,PND50T); 10745 JZ(GAP50AF,TCJGAP00T); ----- ----- A38 000023FC 00000000 ----- 10746 * 10747 *MAKE PLUS/ MINUS MENU 10748 .ORG GAP50AF, *SET P TO START POINT 10749 *JUMP TO PLUS/ MINUS ROUTINE 10750 Y(-55), 10751 Y>PR, 10752 JUMP(GAP200); ----- ----- 3FC 00000A3D 80C91000 ----- 10753 * 10754 * TCJ Jan 94 10755 * If NMOFF in MREG2 is set, then check that inventory 10756 * is complete before generating normal prompt. 10757 * 10758 .ORG TCJGAP00T, * AR = NMOFF flag 10759 MA(MREG2), RAM>AR, 10760 JUMP(TCJGAP01); ----- ----- 3FD 00020A3E 6E000000 ----- 10761 * 10762 .ORG TCJGAP01, * AR = inventory complete flag 10763 * Y = NMOFF flag 10764 MA(INVCNT), RAM>AR, 10765 AR>A, B(NMOFF), AND, 10766 JUMP(TCJGAP02); ----- ----- A3E 00020A3F 38040810 ----- 10767 * 10768 .ORG TCJGAP02, * NMOFF == 0 ? 10769 * Y = inventory complete flag 10770 AR>A, B(1), AND, 10771 JZ(TCJGAP03F,TCJGAP03T); ----- ----- A3F 000023FE 00010810 ----- 10772 * 10773 .ORG TCJGAP03F, * NMOFF is set, 10774 * Inventory complete ? 10775 JZ(TCJGAP04F,TCJGAP04T); ----- ----- 3FE 00002400 00000000 ----- 10776 * 10777 .ORG TCJGAP04F, * Inventory complete, 10778 * CALL PND50T 10779 * RETURN=1, RETURN TO GAP51 10780 MA(RETURN), 10781 Y(1), 10782 Y>RAM, 10783 JUMP(PND50T); ----- ----- 400 00000A3C 7C011100 ----- 10784 * 10785 .ORG TCJGAP04T, * Inventory not complete, 10786 * abort prompt generation 10787 JUMP(GAP2F); ----- ----- 401 000003E8 00000000 ----- 10788 * 10789 .ORG TCJGAP03T, * NMOFF not set 10790 * CALL PND50T 10791 * RETURN=1, RETURN TO GAP51 10792 MA(RETURN), 10793 Y(1), 10794 Y>RAM, 10795 JUMP(PND50T); ----- ----- 3FF 00000A3C 7C011100 ----- 10796 * 10797 *+++GENERATE PAGE NUMBER MENU 10798 * 10799 * This routine generates the default NORMAL menu, a FLOF menu 10800 * for pages with nor row 24 and the favourite page menu. 10801 * 10802 * input pars are:- 10803 * A: page pre-fix letter 10804 * SYS1: indicates NORMAL, FLOF or FAVP 10805 * return pars are:- 10806 * local variables used are:- 10807 * 10808 .ORG GAP51, *STORE=PREFIX LETTER 10809 MA(STORE), 10810 AR>A, B(0), OR, 10811 Y>RAM, 10812 JUMP(GAP52); ----- ----- 051 00000A40 77001110 ----- 10813 *WRITE FIRST THREE CHARS (BOX,BOX,RED) 10814 .ORG GAP52, *P=POINTER TO BEGINNING OF ROW 10815 Y(-64), 10816 Y>PR, 10817 JUMP(GAP53); ----- ----- A40 00000A41 80C01000 ----- 10818 .ORG GAP53, *D=BOX 10819 Y(>0B), 10820 Y>DR, 10821 JUMP(GAP54); ----- ----- A41 00001A42 000B1000 ----- 10822 .ORG GAP54, *P=-63 10823 Y(-63), 10824 Y>PR, 10825 JUMP(GAP55); ----- ----- A42 00000A43 80C11000 ----- 10826 .ORG GAP55, *D=BOX 10827 Y(>0B), 10828 Y>DR, 10829 JUMP(GAP56); ----- ----- A43 00001A44 000B1000 ----- 10830 .ORG GAP56, *P=-62 10831 Y(-62), 10832 Y>PR, 10833 JUMP(GAP57); ----- ----- A44 00000A45 80C21000 ----- 10834 .ORG GAP57, *D=ALPHA RED 10835 *B=SYS1 10836 MA(SYS1), RAM>BR, 10837 Y(>01), 10838 Y>DR, 10839 JUMP(GAP58); ----- ----- A45 00011A46 08011000 ----- 10840 *INIT PAGE NUMBER LOOP COUNT 10841 .ORG GAP58, *A=4 10842 MA(RET3), 10843 Y(4), 10844 Y>RAM, 10845 JUMP(GAP59F); ----- ----- A46 00000422 7A041100 ----- 10846 *LOOP START 10847 * B=SYS1 10848 .ORG GAP59F, *Y=PCM 10849 *A=RET3 10850 MA(RET3), RAM>AR, 10851 A(3), BRHI>B, AND, 10852 JUMP(GAP59A); ----- ----- 422 00020A47 7A03080C ----- 10853 .ORG GAP59A, *CASE PCM=? 10854 *IF NORMAL, JUMP TO GNP0Y 10855 *RETURN TO GAP60A, 10856 *A=STORE POINTER 10857 AR>A, B(1), ADD, 10858 Y>AR, 10859 JY(GNP0Y); ----- ----- A47 0022C544 00010010 ----- 10860 .ORG GAP60A, *SET REVERSE VIDEO FOR ALL NORMAL DISPLAY 10861 MA(LOCAL), 10862 Y(>01), 10863 Y>RAM, 10864 JUMP(GAP66T); ----- ----- A22 00000403 72011100 ----- 10865 *CASE FLOF 10866 .ORG GAP62, *A=LINK POINTER 10867 AR>A, B(-2), ADD, 10868 Y>AR, 10869 JUMP(GAP62A); ----- ----- 546 00220A48 00FE0010 ----- 10870 .ORG GAP62A, *CALL GFL0 10871 *RETURN=3, RETURN TO GAP62B 10872 MA(RETURN), 10873 Y(3), 10874 Y>RAM, 10875 JUMP(GFL0); ----- ----- A48 0000098C 7C031100 ----- 10876 .ORG GAP62B, *NULL LINK? 10877 *SET LOCAL FOR REVERSE VIDEO 10878 MA(LOCAL), 10879 Y(>01), 10880 Y>RAM, 10881 JZ(GAP62CF,GAP66T); ----- ----- 063 00002402 72011100 ----- 10882 .ORG GAP62CF, *NULL PAGE, INHIBIT PAGE DISPLAY 10883 MA(LOCAL), 10884 Y(>02), 10885 Y>RAM, 10886 JUMP(GAP66T); ----- ----- 402 00000403 72021100 ----- 10887 *CASE FAVP 10888 .ORG GAP63, *CALL GFP0T 10889 *RETURN=1, RETURN TO GAP63B 10890 MA(RETURN), 10891 Y(1), 10892 Y>RAM, 10893 JUMP(GFP0T); ----- ----- 547 00000369 7C011100 ----- 10894 * A=STOR0, B=PU, LAST Y WAS 'DASH' AND SPACE' FLAGS 10895 .ORG GAP63B, *FAVOURITE PAGE PROGRAMMED? 10896 *Y=REVERSE VIDEO FLAG 10897 A(>02), BR>B, AND, 10898 JZ(GAP63CF,GAP63CT); ----- ----- 271 00002404 00020801 ----- 10899 *FAVOURITE PAGE HAS NOT BEEN PROGRAMMED 10900 .ORG GAP63CF, *NOT PROGRAMMED, FLAG SET TO ENABLE REVERSE DISPLAY? 10901 *RESTORE RWL TO DISPLAY PAGE 10902 MA(RWL), 10903 ARHI>A, B(0), OR, 10904 Y>RAM, Y>IO, 10905 JZ(GAP63DF,GAP63DT); ----- ----- 404 00002406 0B005120 ----- 10906 .ORG GAP63DF, *DISPLAY IN REVERSE VIDEO 10907 MA(LOCAL), 10908 Y(>01), 10909 Y>RAM, 10910 JUMP(GAP66T); ----- ----- 406 00000403 72011100 ----- 10911 .ORG GAP63DT, *DO NOT DISPLAY IN REVERSE VIDEO 10912 MA(LOCAL), 10913 Y(>00), 10914 Y>RAM, 10915 JUMP(GAP66T); ----- ----- 407 00000403 72001100 ----- 10916 *FAVOURITE PAGE HAS BEEN PROGRAMMED 10917 .ORG GAP63CT, *Y=INHIBIT REVERSE VIDEO FLAG 10918 *A=STOR0 10919 MA(STOR0), RAM>AR, 10920 A(>01), BR>B, AND, 10921 JUMP(GAP63CA); ----- ----- 405 00020A49 20010801 ----- 10922 .ORG GAP63CA, *REVERSE VIDEO DISPLAY INHIBITED? 10923 *RESTORE RWL TO DISPLAY PAGE 10924 MA(RWL), 10925 ARHI>A, B(0), OR, 10926 Y>RAM, Y>IO, 10927 JZ(GAP63CBF,GAP63CBT); ----- ----- A49 00002408 0B005120 ----- 10928 .ORG GAP63CBF, *DO NOT DISPLAY IN REVERSE VIDEO 10929 MA(LOCAL), 10930 Y(>00), 10931 Y>RAM, 10932 JUMP(GAP66T); ----- ----- 408 00000403 72001100 ----- 10933 .ORG GAP63CBT, *CALL PIL TO SEE IF FAVP IN A LATCH 10934 *RETURN=4, RETURN TO GAP63E 10935 MA(RETURN), 10936 Y(4), 10937 Y>RAM, 10938 JUMP(PIL0); ----- ----- 409 000008D4 7C041100 ----- 10939 .ORG GAP63E, *Y=STORE FIELD AND NOT IN LATCH FLAG 10940 *A=STOR0 10941 MA(STOR0), RAM>AR, 10942 AR>A, B(>78), AND, 10943 JUMP(GAP63G); ----- ----- 294 00020A4A 20780810 ----- 10944 .ORG GAP63G, *FAVP PAGE THE DISPLAYED PAGE? 10945 *RESTORE RWL TO DISPLAY PAGE 10946 MA(RWL), 10947 ARHI>A, B(0), OR, 10948 Y>RAM, Y>IO, 10949 JZ(GAP63HF,GAP63HT); ----- ----- A4A 0000240A 0B005120 ----- 10950 .ORG GAP63HT, *YES, DISPLAY IN REVERSE VIDEO 10951 MA(LOCAL), 10952 Y(>01), 10953 Y>RAM, 10954 JUMP(GAP66T); ----- ----- 40B 00000403 72011100 ----- 10955 .ORG GAP63HF, *DO NOT DISPLAY IN REVERSE VIDEO 10956 MA(LOCAL), 10957 Y(>00), 10958 Y>RAM, 10959 JUMP(GAP66T); ----- ----- 40A 00000403 72001100 ----- 10960 *DIFFERENT PAGE CAPTURE MODES MERGE HERE 10961 * PU,PT,PM IS PAGE NUMBER 10962 * LOCAL LSB ENABLES REVERSE VIDEO 10963 * LOCAL 2LSB INHIBITS DISPLAY OF NULL PAGE 10964 .ORG GAP66T, *A=LOOP COUNT 10965 MA(RET3), RAM>AR, 10966 JUMP(GAP67); ----- ----- 403 00020A4B 7A000000 ----- 10967 .ORG GAP67, *DEC LOOP COUNT 10968 MA(RET3), 10969 AR>A, B(-1), ADD, 10970 Y>RAM, 10971 JUMP(GAP68); ----- ----- A4B 00000A4C 7AFF0110 ----- 10972 .ORG GAP68, *CASE LOOP COUNT? 10973 JY(GAP70Y); ----- ----- A4C 0000C5E8 00000000 ----- 10974 * 10975 .ORG GAP70Y, *CASE RED PAGE 10976 *POINT COLOUR FOR NEXT PAGE 10977 Y(-54), 10978 Y>PR, 10979 JUMP(GAP70A); ----- ----- 5E8 00000A4D 80CA1000 ----- 10980 .ORG GAP70A, *NEXT PAGE IS GREEN 10981 *B=POINTER 10982 PR>BR, 10983 Y(>02), 10984 Y>DR, 10985 JUMP(GAP75); ----- ----- A4D 00411A4E 00021000 ----- 10986 .ORG GAP71, *CASE GREEN PAGE 10987 *POINT COLOUR FOR NEXT PAGE 10988 Y(-45), 10989 Y>PR, 10990 JUMP(GAP71A); ----- ----- 5E9 00000A4F 80D31000 ----- 10991 .ORG GAP71A, *NEXT PAGE IS YELLOW 10992 *B=POINTER 10993 PR>BR, 10994 Y(>03), 10995 Y>DR, 10996 JUMP(GAP75); ----- ----- A4F 00411A4E 00031000 ----- 10997 .ORG GAP72, *CASE YELLOW PAGE 10998 *POINT COLOUR FOR NEXT PAGE 10999 Y(-36), 11000 Y>PR, 11001 JUMP(GAP72A); ----- ----- 5EA 00000A50 80DC1000 ----- 11002 .ORG GAP72A, *NEXT PAGE IS CYAN 11003 *B=POINTER 11004 PR>BR, 11005 Y(>06), 11006 Y>DR, 11007 JUMP(GAP75); ----- ----- A50 00411A4E 00061000 ----- 11008 .ORG GAP73, *CASE CYAN PAGE 11009 *POINT COLOUR FOR NEXT PAGE 11010 Y(-27), 11011 Y>PR, 11012 JUMP(GAP73A); ----- ----- 5EB 00000A51 80E51000 ----- 11013 .ORG GAP73A, *NO NEXT PAGE 11014 *B=POINTER 11015 PR>BR, 11016 Y(>20), 11017 Y>DR, 11018 JUMP(GAP75); ----- ----- A51 00411A4E 00201000 ----- 11019 *CLEAR FIRST CHARACTER AFTER DIGITS 11020 .ORG GAP75, *P=B-1 11021 A(-1), BR>B, ADD, 11022 Y>PR, 11023 JUMP(GAP76); ----- ----- A4E 00000A52 80FF0001 ----- 11024 .ORG GAP76, *D=>20 11025 *B=POINTER 11026 PR>BR, 11027 Y(>20), 11028 Y>DR, 11029 JUMP(GAP77); ----- ----- A52 00411A53 00201000 ----- 11030 *WRITE PAGE PREFIX 11031 .ORG GAP77, *POINT TO PAGE PREFIX 11032 *A=PAGE PREFIX 11033 MA(STORE), RAM>AR, 11034 A(-4), BR>B, ADD, 11035 Y>PR, 11036 JUMP(GAP78); ----- ----- A53 00020A54 F7FC0001 ----- 11037 .ORG GAP78, *D=PAGE PREFIX 11038 *B=POINTER 11039 *A=LOCAL 11040 PR>BR, 11041 MA(LOCAL), RAM>AR, 11042 AR>A, B(0), OR, 11043 Y>DR, 11044 JUMP(GAP79); ----- ----- A54 00431A55 72001010 ----- 11045 .ORG GAP79, *Y=NULL PAGE FLAG 11046 AR>A, B(>02), AND, 11047 JUMP(GAP79A); ----- ----- A55 00000A56 00020810 ----- 11048 .ORG GAP79A, *Y=REVERSE FLAG 11049 *NULL PAGE? 11050 AR>A, B(>01), AND, 11051 JZ(GAP79BF,GAP79BT); ----- ----- A56 0000240C 00010810 ----- 11052 *INHIBIT DISPLAY OF A NULL PAGE 11053 .ORG GAP79BF, *POINT TO BEGINNING OF PAGE FIELD 11054 A(-2), BR>B, ADD, 11055 Y>PR, 11056 JUMP(GAP79C); ----- ----- 40C 00000A57 80FE0001 ----- 11057 .ORG GAP79C, *D=ALPHA BLACK 11058 *B=POINTER 11059 PR>BR, 11060 Y(>00), 11061 Y>DR, 11062 JUMP(GAP81A); ----- ----- A57 00411A58 00001000 ----- 11063 *NOT A NULL PAGE 11064 .ORG GAP79BT, *POINT TO BEGINNING OF PAGE FIELD 11065 *DISPLAY PAGE IN REVERSE VIDEO? 11066 A(-2), BR>B, ADD, 11067 Y>PR, 11068 JZ(GAP80F,GAP80T); ----- ----- 40D 0000240E 80FE0001 ----- 11069 *DISPLAY PAGE IN REVERSE VIDEO 11070 .ORG GAP80F, *D=NEW BACKGROUND 11071 *B=POINTER 11072 PR>BR, 11073 Y(>1D), 11074 Y>DR, 11075 JUMP(GAP81A); ----- ----- 40E 00411A58 001D1000 ----- 11076 *ENTRY POINT FOR NULL PAGES 11077 .ORG GAP81A, *POINTER++ 11078 A(1), BR>B, ADD, 11079 Y>PR, 11080 JUMP(GAP81B); ----- ----- A58 00000A59 80010001 ----- 11081 .ORG GAP81B, *D=ALPHA BLACK 11082 *B=POINTER 11083 PR>BR, 11084 Y(>00), 11085 Y>DR, 11086 JUMP(GAP81C); ----- ----- A59 00411A5A 00001000 ----- 11087 .ORG GAP81C, *UPDATE POINTER 11088 A(7), BR>B, ADD, 11089 Y>PR, 11090 JUMP(GAP81D); ----- ----- A5A 00000A5B 80070001 ----- 11091 .ORG GAP81D, *D=BLACK BACKGROUND 11092 *A=PM 11093 MA(PM), RAM>AR, 11094 Y(>1C), 11095 Y>DR, 11096 JUMP(GAP82); ----- ----- A5B 00021A5C 741C1000 ----- 11097 *DO NOT DISPLAY PAGE IN REVERSE VIDEO 11098 * B=POINTER TO PAGE PRE-FIX 11099 .ORG GAP80T, *POINT TO LAST CHARACTER IN FIELD 11100 *A=PM 11101 MA(PM), RAM>AR, 11102 A(6), BR>B, ADD, 11103 Y>PR, 11104 JUMP(GAP82); ----- ----- 40F 00020A5C F4060001 ----- 11105 *WRITE DIGITS 11106 * P=POINTER TO LAST CHARACTER IN FIELD 11107 * A=PM 11108 .ORG GAP82, *Y=PAGE MAGS 11109 ARHI>A, B(7), AND, 11110 JUMP(GAP83); ----- ----- A5C 00000A5D 00070820 ----- 11111 .ORG GAP83, *MAGAZINE 8? 11112 MA(PM), 11113 AR>A, B(>7F), AND, 11114 Y>RAM, 11115 JZ(GAP84F,GAP84T); ----- ----- A5D 0000241A 747F0910 ----- 11116 .ORG GAP84T, *MAG 8 11117 MA(PM), 11118 AR.0F>A, B(>80), OR, 11119 Y>RAM, 11120 JUMP(GAP84F); ----- ----- 41B 0000041A 748011C0 ----- 11121 * 11122 .ORG GAP84F, *INIT DIGIT LOOP COUNT 11123 *A=4 11124 Y(4), 11125 Y>AR, 11126 JUMP(GAP86); ----- ----- 41A 00220A5E 00041000 ----- 11127 *LOOP START 11128 * A=LOOP 11129 .ORG GAP86, *DEC LOOP 11130 MA(LOCAL), 11131 AR>A, B(-1), ADD, 11132 Y>RAM, 11133 JUMP(GAP87); ----- ----- A5E 00000A5F 72FF0110 ----- 11134 .ORG GAP87, *CASE LOOP=? 11135 *B=POINTER 11136 *A=LOOP COUNT 11137 PR>BR, 11138 MA(RET3), RAM>AR, 11139 JY(GAP90Y); ----- ----- A5F 0043C5E0 7A000000 ----- 11140 .ORG GAP90Y, *EXIT 11141 *Y=LOOP COUNT 11142 AR>A, B(0), OR, 11143 JUMP(GAP96); ----- ----- 5E0 00000A60 00001010 ----- 11144 .ORG GAP91, *UNITS DIGIT 11145 *POINT TO UNITS 11146 *A=PU 11147 MA(PU), RAM>AR, 11148 A(1), BR>B, ADD, 11149 Y>PR, 11150 JUMP(GAP94); ----- ----- 5E1 00020A61 F6010001 ----- 11151 .ORG GAP92, *TENS DIGIT 11152 *POINT TO TENS 11153 *A=PT 11154 MA(PT), RAM>AR, 11155 A(1), BR>B, ADD, 11156 Y>PR, 11157 JUMP(GAP94); ----- ----- 5E2 00020A61 F5010001 ----- 11158 .ORG GAP93, *MAG DIGIT 11159 *POINT TO MAG 11160 *A=PM 11161 MA(PM), RAM>AR, 11162 A(-5), BR>B, ADD, 11163 Y>PR, 11164 JUMP(GAP94); ----- ----- 5E3 00020A61 F4FB0001 ----- 11165 * P=DIGIT POINTER, A=DIGIT 11166 .ORG GAP94, *Y=DIGIT DASH FLAG 11167 AR>A, B(>08), AND, 11168 JUMP(GAP95); ----- ----- A61 00000A62 00080810 ----- 11169 .ORG GAP95, *Y=DIGIT SPACE FLAG 11170 *DISPLAY A DASH? 11171 AR>A, B(>04), AND, 11172 JZ(GAP95AF,GAP95AT); ----- ----- A62 0000241C 00040810 ----- 11173 .ORG GAP95AF, *DISPLAY A DASH 11174 *A=LOCAL 11175 MA(LOCAL), RAM>AR, 11176 Y(>2D), 11177 Y>DR, 11178 JUMP(GAP86); ----- ----- 41C 00021A5E 722D1000 ----- 11179 .ORG GAP95AT, *DISPLAY A SPACE? 11180 *Y-DIGIT MSN-10 11181 ARHI>A, B(-10), ADD, 11182 JZ(GAP95BF,GAP95BT); ----- ----- 41D 0000241E 00F60020 ----- 11183 .ORG GAP95BF, *DISPLAY A SPACE 11184 *A=LOCAL 11185 MA(LOCAL), RAM>AR, 11186 Y(>20), 11187 Y>DR, 11188 JUMP(GAP86); ----- ----- 41E 00021A5E 72201000 ----- 11189 .ORG GAP95BT, *DISPLAY A DIGIT 11190 *HEX DIGIT? 11191 JN(GAP95CF,GAP95CT); ----- ----- 41F 00004420 00000000 ----- 11192 .ORG GAP95CF, *HEX DIGIT 11193 *A=LOCAL 11194 MA(LOCAL), RAM>AR, 11195 ARHI>A, B(>37), ADD, 11196 Y>DR, 11197 JUMP(GAP86); ----- ----- 420 00021A5E 72370020 ----- 11198 .ORG GAP95CT, *DECIMAL DIGIT 11199 *A=LOCAL 11200 MA(LOCAL), RAM>AR, 11201 ARHI>A, B(>30), OR, 11202 Y>DR, 11203 JUMP(GAP86); ----- ----- 421 00021A5E 72301020 ----- 11204 *THREE DIGITS COMPLETED 11205 * LAST Y WAS LOOP COUNT 11206 .ORG GAP96, *B=SYS1, MORE PAGE NUMBERS TO WRITE? 11207 MA(SYS1), RAM>BR, 11208 JZ(GAP59F,GAP97T); ----- ----- A60 00012422 08000000 ----- 11209 .ORG GAP97T, *NO, EXIT 11210 JUMP(GAP2F); ----- ----- 423 000003E8 00000000 ----- 11211 *GENERATE A TOP PROMPT 11212 * P=POINTER TO COL 0 OF PROMPT, THISRW=27 11213 *FIRST WRITE FIXED CHARACTERS 11214 .ORG GAP100, *B=PROMPT POINTER 11215 *COL 0= ALPHA RED 11216 PR>BR, 11217 Y(>01), 11218 Y>DR, 11219 JUMP(GAP101); ----- ----- A39 00411A63 00011000 ----- 11220 .ORG GAP101, *P=COL 1 OF PROMPT 11221 A(1), BR>B, ADD, 11222 Y>PR, 11223 JUMP(GAP102); ----- ----- A63 00000A64 80010001 ----- 11224 .ORG GAP102, *B=PROMPT POINTER 11225 *COL 1= NEW BACKGROUND 11226 PR>BR, 11227 Y(>1D), 11228 Y>DR, 11229 JUMP(GAP103); ----- ----- A64 00411A65 001D1000 ----- 11230 .ORG GAP103, *P=COL 2 OF PROMPT 11231 A(1), BR>B, ADD, 11232 Y>PR, 11233 JUMP(GAP104); ----- ----- A65 00000A66 80010001 ----- 11234 .ORG GAP104, *B=PROMPT POINTER 11235 *COL 2= ALPHA BLACK 11236 PR>BR, 11237 Y(>00), 11238 Y>DR, 11239 JUMP(GAP105); ----- ----- A66 00411A67 00001000 ----- 11240 .ORG GAP105, *P=COL 3 OF PROMPT 11241 A(1), BR>B, ADD, 11242 Y>PR, 11243 JUMP(GAP106); ----- ----- A67 00000A68 80010001 ----- 11244 .ORG GAP106, *B=PROMPT POINTER 11245 *COL 3= '-' 11246 PR>BR, 11247 Y(>2D), 11248 Y>DR, 11249 JUMP(GAP107); ----- ----- A68 00411A69 002D1000 ----- 11250 .ORG GAP107, *P=COL 4 OF PROMPT 11251 A(1), BR>B, ADD, 11252 Y>PR, 11253 JUMP(GAP108); ----- ----- A69 00000A6A 80010001 ----- 11254 .ORG GAP108, *B=PROMPT POINTER 11255 *COL 4= ' ' 11256 PR>BR, 11257 Y(>20), 11258 Y>DR, 11259 JUMP(GAP109); ----- ----- A6A 00411A6B 00201000 ----- 11260 .ORG GAP109, *P=COL 5 OF PROMPT 11261 A(1), BR>B, ADD, 11262 Y>PR, 11263 JUMP(GAP110); ----- ----- A6B 00000A6C 80010001 ----- 11264 .ORG GAP110, *B=PROMPT POINTER 11265 *COL 5= ALPHA GREEN 11266 PR>BR, 11267 Y(>02), 11268 Y>DR, 11269 JUMP(GAP111); ----- ----- A6C 00411A6D 00021000 ----- 11270 .ORG GAP111, *P=COL 6 OF PROMPT 11271 A(1), BR>B, ADD, 11272 Y>PR, 11273 JUMP(GAP112); ----- ----- A6D 00000A6E 80010001 ----- 11274 .ORG GAP112, *B=PROMPT POINTER 11275 *COL 6= NEW BACKGROUND 11276 PR>BR, 11277 Y(>1D), 11278 Y>DR, 11279 JUMP(GAP113); ----- ----- A6E 00411A6F 001D1000 ----- 11280 .ORG GAP113, *P=COL 7 OF PROMPT 11281 A(1), BR>B, ADD, 11282 Y>PR, 11283 JUMP(GAP114); ----- ----- A6F 00000A70 80010001 ----- 11284 .ORG GAP114, *B=PROMPT POINTER 11285 *COL 7= ALPHA BLACK 11286 PR>BR, 11287 Y(>00), 11288 Y>DR, 11289 JUMP(GAP115); ----- ----- A70 00411A71 00001000 ----- 11290 .ORG GAP115, *P=COL 8 OF PROMPT 11291 A(1), BR>B, ADD, 11292 Y>PR, 11293 JUMP(GAP116); ----- ----- A71 00000A72 80010001 ----- 11294 .ORG GAP116, *B=PROMPT POINTER 11295 *COL 8= '+' 11296 PR>BR, 11297 Y(>2B), 11298 Y>DR, 11299 JUMP(GAP117); ----- ----- A72 00411A73 002B1000 ----- 11300 .ORG GAP117, *P=COL 9 OF PROMPT 11301 A(1), BR>B, ADD, 11302 Y>PR, 11303 JUMP(GAP118); ----- ----- A73 00000A74 80010001 ----- 11304 .ORG GAP118, *B=PROMPT POINTER 11305 *COL 9= ' ' 11306 PR>BR, 11307 Y(>20), 11308 Y>DR, 11309 JUMP(GAP119); ----- ----- A74 00411A75 00201000 ----- 11310 .ORG GAP119, *P=COL 10 OF PROMPT 11311 A(1), BR>B, ADD, 11312 Y>PR, 11313 JUMP(GAP120); ----- ----- A75 00000A76 80010001 ----- 11314 .ORG GAP120, *B=PROMPT POINTER 11315 *COL 10= ALPHA YELLOW 11316 PR>BR, 11317 Y(>03), 11318 Y>DR, 11319 JUMP(GAP121); ----- ----- A76 00411A77 00031000 ----- 11320 .ORG GAP121, *P=COL 11 OF PROMPT 11321 A(1), BR>B, ADD, 11322 Y>PR, 11323 JUMP(GAP122); ----- ----- A77 00000795 80010001 ----- 11324 .ORG GAP122, *B=PROMPT POINTER 11325 *COL 11= NEW BACKGROUND 11326 PR>BR, 11327 Y(>1D), 11328 Y>DR, 11329 JUMP(GAP123); ----- ----- 795 00411A78 001D1000 ----- 11330 .ORG GAP123, *P=COL 12 OF PROMPT 11331 A(1), BR>B, ADD, 11332 Y>PR, 11333 JUMP(GAP124); ----- ----- A78 00000A79 80010001 ----- 11334 .ORG GAP124, *B=PROMPT POINTER 11335 *COL 12= ALPHA BLACK 11336 PR>BR, 11337 Y(>00), 11338 Y>DR, 11339 JUMP(GAP130); ----- ----- A79 00411A7A 00001000 ----- 11340 *WRITE NEXT GROUP 11341 .ORG GAP130, *POINT TO DISPLAY PAGE 11342 Y(DPM), 11343 Y>AR, 11344 JUMP(GAP131); ----- ----- A7A 00220A7B 00681000 ----- 11345 .ORG GAP131, *CONVERT PAGE NUMBER TO POINTER 11346 *RETURN=4, RETURN TO GAP132 11347 MA(RETURN), 11348 Y(4), 11349 Y>RAM, 11350 JUMP(PNTIN0); ----- ----- A7B 0000080D 7C041100 ----- 11351 .ORG GAP132, *SET MASK TO LOOK FOR NEXT BLOCK OR GROUP 11352 MA(MASK), 11353 Y(6), 11354 Y>RAM, 11355 JUMP(GAP133); ----- ----- 794 00000A7C 73061100 ----- 11356 *ENTRY POINT FROM ROTATE IN BLOCK CODE 11357 .ORG GAP133, *SEARCH FOR MASK 11358 *CALL SBT0A 11359 *RETURN=2, RETURN TO GAP133A 11360 MA(RETURN), 11361 Y(2), 11362 Y>RAM, 11363 JUMP(SBT0A); ----- ----- A7C 000004C8 7C021100 ----- 11364 *CHECK IF BLOCK FOUND, IF YES AND RIB=1 GO BACK FOR ROTATE 11365 .ORG GAP133A, *Y=BLOCK FLAG, B=MREG1 11366 MA(MREG1), RAM>BR, 11367 AR>A, B(>04), AND, 11368 JUMP(GAP133B); ----- ----- 7A2 00010A7D 65040810 ----- 11369 .ORG GAP133B, *FOUND A BLOCK? 11370 *Y=RIB 11371 A(RIB), BR>B, AND, 11372 JZ(GAP133CF,GAP133CT); ----- ----- A7D 00002424 00010801 ----- 11373 *BLOCK FOUND 11374 .ORG GAP133CF, *BLOCK FOUND, RIB? 11375 *RETURN=5 11376 MA(RETURN), 11377 Y(5), 11378 Y>RAM, 11379 JZ(GAP133DF,GAP133DT); ----- ----- 424 00002426 7C051100 ----- 11380 .ORG GAP133DT, *ROTATE DISABLED 11381 JUMP(GAP133CAF); ----- ----- 427 00000428 00000000 ----- 11382 .ORG GAP133DF, *NEED TO ROTATE 11383 *SEARCH BACKWARDS FOR LAST BLOCK 11384 *CALL SBT0B 11385 *RETURN=5, RETURN TO GAP133E 11386 *MASK=4 11387 MA(MASK), 11388 Y(>04), 11389 Y>RAM, 11390 JUMP(SBT0B); ----- ----- 426 000004C9 73041100 ----- 11391 .ORG GAP133E, *JUMP BACK TO GAP133 11392 *SET MASK TO LOOK FOR FIRST GROUP IN THE BLOCK 11393 *MASK=2 11394 MA(MASK), 11395 Y(>02), 11396 Y>RAM, 11397 JUMP(GAP133); ----- ----- 7A5 00000A7C 73021100 ----- 11398 * 11399 .ORG GAP133CT, *Y=GROUP FLAG 11400 AR>A, B(>02), AND, 11401 JUMP(GAP133CA); ----- ----- 425 00000A7E 00020810 ----- 11402 .ORG GAP133CA, *GROUP FOUND? 11403 *IF NO, TEST=0 11404 *(DISABLE AIT LABEL TO BE COPIED IN COP ROUTINE) 11405 MA(TEST), 11406 Y(0), 11407 Y>RAM, 11408 JZ(GAP133CAF,GAP133CAT); ----- ----- A7E 00002428 70001100 ----- 11409 *BLOCK OR GROUP PAGE FOUND 11410 .ORG GAP133CAF, *TEST=1 (ENABLE AIT LABEL TO BE COPIED IN COP ROUTINE) 11411 MA(TEST), 11412 Y(1), 11413 Y>RAM, 11414 JUMP(GAP133CAT); ----- ----- 428 00000429 70011100 ----- 11415 *YELLOW PAGE FOUND 11416 .ORG GAP133CAT, *CONVERT POINTER TO PAGE NUMBER 11417 *CALL INTPN0 11418 *RETURN=2, RETURN TO GAP133G 11419 MA(RETURN), 11420 Y(2), 11421 Y>RAM, 11422 JUMP(INTPN0); ----- ----- 429 000007A3 7C021100 ----- 11423 *SEARCH AITS FOR NEXT BLOCK OR GROUP LABEL 11424 .ORG GAP133G, *CALL SAT0, 11425 *RETURN=0, RETURN TO GAP134Y 11426 MA(RETURN), 11427 Y(0), 11428 Y>RAM, 11429 JUMP(SAT0); ----- ----- 732 00000A7F 7C001100 ----- 11430 * P=AIT POINTER, STORE=AIT LATCH, A=LAST Y=FOUND FLAG 11431 *COPY AIT LABEL OR PAGE NUMBER TO PROMPT 11432 .ORG GAP134Y, *AIT LABEL FOUND? 11433 *IF FOUND, CALL COP0F TO COPY LABEL 11434 *ELSE, CALL COP0T TO COPY NUMBER 11435 *RETURN=0, RETURN TO GAP136Y 11436 MA(RETURN), 11437 Y(0), 11438 Y>RAM, 11439 JZ(COP0F,COP0T); ----- ----- 778 0000242A 7C001100 ----- 11440 *FIND NEXT BLOCK 11441 .ORG GAP136Y, *POINT TO DISPLAY PAGE 11442 Y(DPM), 11443 Y>AR, 11444 JUMP(GAP137); ----- ----- 780 00220A80 00681000 ----- 11445 .ORG GAP137, *CALL PNTIN0 11446 *RETURN=6, RETURN TO GAP138 11447 MA(RETURN), 11448 Y(6), 11449 Y>RAM, 11450 JUMP(PNTIN0); ----- ----- A80 0000080D 7C061100 ----- 11451 .ORG GAP138, *SET MASK TO LOOK FOR NEXT BLOCK IN SBT0A 11452 MA(MASK), 11453 Y(>04), 11454 Y>RAM, 11455 JUMP(GAP139); ----- ----- 796 00000A81 73041100 ----- 11456 .ORG GAP139, *CALL SBT0A, 11457 *RETURN=4, RETURN TO GAP140 11458 MA(RETURN), 11459 Y(4), 11460 Y>RAM, 11461 JUMP(SBT0A); ----- ----- A81 000004C8 7C041100 ----- 11462 .ORG GAP140, *Y=BLOCK PAGE FLAG 11463 AR>A, B(>04), AND, 11464 JUMP(GAP141); ----- ----- 7A4 00000A82 00040810 ----- 11465 .ORG GAP141, *FOUND A BLOCK PAGE? 11466 *RETURN=4, RETURN TO GAP160 11467 MA(RETURN), 11468 Y(4), 11469 Y>RAM, 11470 JZ(GAP142F,GAP142T); ----- ----- A82 0000242C 7C041100 ----- 11471 .ORG GAP142F, *YES, TEST=1 11472 *(ENABLE AIT LABEL COPY IN COP ROUTINE) 11473 *FIND PAGE NUMBER OF NEXT BLOCK 11474 *CALL INTPN0 11475 *RETURN=4, RETURN TO GAP160 11476 MA(TEST), 11477 Y(1), 11478 Y>RAM, 11479 JUMP(INTPN0); ----- ----- 42C 000007A3 70011100 ----- 11480 .ORG GAP142T, *NO, TEST=0 11481 *(DISABLE AIT LABEL COPY IN COP ROUTINE) 11482 *FIND PAGE NUMBER OF NEXT BLOCK 11483 *CALL INTPN0 11484 *RETURN=4, RETURN TO GAP160 11485 MA(TEST), 11486 Y(0), 11487 Y>RAM, 11488 JUMP(INTPN0); ----- ----- 42D 000007A3 70001100 ----- 11489 *WRITE SPACES TO END OF NEXT GROUP 11490 .ORG GAP160, *A=STOR0 11491 MA(STOR0), RAM>AR, 11492 JUMP(GAP161); ----- ----- 734 00020A83 20000000 ----- 11493 .ORG GAP161, *RWL= LATCH OF DISPLAY PAGE 11494 MA(RWL), 11495 ARHI>A, B(0), OR, 11496 Y>RAM, Y>IO, 11497 JUMP(GAP162); ----- ----- A83 00000A84 0B005120 ----- 11498 .ORG GAP162, *A= PROMPT INDEX 11499 MA(THISRW), RAM>AR, 11500 JUMP(GAP162A); ----- ----- A84 00020A85 7D000000 ----- 11501 * 11502 .ORG GAP162A, *DECREMENT PROMPT INDEX 11503 MA(THISRW), 11504 AR>A, B(-1), ADD, 11505 Y>RAM, Y>AR, 11506 JUMP(GAP163); ----- ----- A85 00220A86 7DFF0110 ----- 11507 .ORG GAP163, *Y=PROMPT INDEX-14 11508 AR>A, B(-14), ADD, 11509 JUMP(GAP164); ----- ----- A86 00000A87 00F20010 ----- 11510 .ORG GAP164, *REACHED START POINT FOR NEXT BLOCK? 11511 *P= POINTER TO PROMPT ROW 11512 NAR>A, B(-25), ADD, O>CIN, 11513 Y>PR, 11514 JZ(GAP165F,GAP165T); ----- ----- A87 0000242E 80E70440 ----- 11515 .ORG GAP165F, *PROMPT INDEX >20 11516 *WRITE A SPACE 11517 Y(>20), 11518 Y>DR, 11519 JUMP(GAP162A); ----- ----- 42E 00001A85 00201000 ----- 11520 *CHANGE COLOUR FOR NEXT BLOCK 11521 .ORG GAP165T, *B=PROMPT POINTER 11522 *D=ALPHA CYAN 11523 PR>BR, 11524 Y(>06), 11525 Y>DR, 11526 JUMP(GAP165A); ----- ----- 42F 00411A88 00061000 ----- 11527 .ORG GAP165A, *P=POINTER TO NEXT PROMPT LOC 11528 A(1), BR>B, ADD, 11529 Y>PR, 11530 JUMP(GAP166); ----- ----- A88 00000A89 80010001 ----- 11531 .ORG GAP166, *B=PROMPT POINTER 11532 *D=NEW BACKGROUND 11533 PR>BR, 11534 Y(>1D), 11535 Y>DR, 11536 JUMP(GAP167); ----- ----- A89 00411A8A 001D1000 ----- 11537 .ORG GAP167, *P=POINTER TO NEXT PROMPT LOC 11538 A(1), BR>B, ADD, 11539 Y>PR, 11540 JUMP(GAP168); ----- ----- A8A 00000A8B 80010001 ----- 11541 .ORG GAP168, *D=ALPHA BLACK 11542 Y(>00), 11543 Y>DR, 11544 JUMP(GAP169); ----- ----- A8B 00001A8C 00001000 ----- 11545 .ORG GAP169, *UPDATE THISRW TO SKIP OVER THESE CONTROL CHARS 11546 *THISRW=THISRW-2 11547 MA(THISRW), 11548 AR>A, B(-2), ADD, 11549 Y>RAM, 11550 JUMP(GAP170); ----- ----- A8C 00000A8D 7DFE0110 ----- 11551 *SEARCH AITS FOR NEXT BLOCK LABEL 11552 .ORG GAP170, *CALL SAT0, 11553 *RETURN=1, RETURN TO GAP171 11554 MA(RETURN), 11555 Y(1), 11556 Y>RAM, 11557 JUMP(SAT0); ----- ----- A8D 00000A7F 7C011100 ----- 11558 * P=AIT POINTER, STORE=AIT LATCH, A=LAST Y=FOUND FLAG 11559 *COPY AIT LABEL OR PAGE NUMBER TO PROMPT 11560 .ORG GAP171, *AIT LABEL FOUND? 11561 *IF FOUND, CALL COP0F TO COPY LABEL 11562 *ELSE, CALL COP0T TO COPY NUMBER 11563 *RETURN=1, RETURN TO GAP173 11564 MA(RETURN), 11565 Y(1), 11566 Y>RAM, 11567 JZ(COP0F,COP0T); ----- ----- 779 0000242A 7C011100 ----- 11568 *COPIED LABELS, COMPLETE END OF MENU 11569 .ORG GAP173, *COMPLETED AIT LABEL COPIES, CLEAR TO END OF ROW 11570 *A=PROMPT INDEX 11571 MA(THISRW), RAM>AR, 11572 JUMP(GAP174); ----- ----- 781 00020A8E 7D000000 ----- 11573 * 11574 .ORG GAP174, *DEC THISRW 11575 AR>A, B(-1), ADD, 11576 Y>AR, 11577 JUMP(GAP175); ----- ----- A8E 00220A8F 00FF0010 ----- 11578 .ORG GAP175, *P= POINTER TO FIRST LOC AFTER LABEL 11579 *THISRW<0? 11580 NAR>A, B(-25), ADD, O>CIN, 11581 Y>PR, 11582 JN(GAP176F,GAP176T); ----- ----- A8F 00004434 80E70440 ----- 11583 .ORG GAP176F, *CLEARING TO END OF ROW INCOMPLETE, 11584 *WRITE A SPACE 11585 Y(>20), 11586 Y>DR, 11587 JUMP(GAP174); ----- ----- 434 00001A8E 00201000 ----- 11588 * 11589 .ORG GAP176T, *MENU COMPLETE, EXIT 11590 JUMP(GAP2F); ----- ----- 435 000003E8 00000000 ----- 11591 *MAKE PLUS MINUS MENU 11592 * P=-55 11593 * This routine is used to make the NORMAL menu and part of the 11594 * sub-page menu. 11595 * 11596 .ORG GAP200, *D=END BOX 11597 Y(>0A), 11598 Y>DR, 11599 JUMP(GAP200A); ----- ----- A3D 00001A90 000A1000 ----- 11600 .ORG GAP200A, *P=-27 11601 Y(-27), 11602 Y>PR, 11603 JUMP(GAP200B); ----- ----- A90 00000A91 80E51000 ----- 11604 .ORG GAP200B, *D=END BOX 11605 Y(>0A), 11606 Y>DR, 11607 JUMP(GAP200C); ----- ----- A91 00001A92 000A1000 ----- 11608 .ORG GAP200C, *P=-64 11609 Y(-64), 11610 Y>PR, 11611 JUMP(GAP201); ----- ----- A92 00000A93 80C01000 ----- 11612 *ENTRY POINT FROM SUB-PAGE MENU 11613 .ORG GAP201, *D=ALPHA RED 11614 PR>BR, 11615 Y(>01), 11616 Y>DR, 11617 JUMP(GAP202); ----- ----- A93 00411A94 00011000 ----- 11618 .ORG GAP202, *P=B+6 11619 A(6), BR>B, ADD, 11620 Y>PR, 11621 JUMP(GAP202A); ----- ----- A94 00000A95 80060001 ----- 11622 .ORG GAP202A, *D='-' 11623 Y(>2D), 11624 Y>DR, 11625 JUMP(GAP202B); ----- ----- A95 00001A96 002D1000 ----- 11626 .ORG GAP202B, *P=B+12 11627 A(12), BR>B, ADD, 11628 Y>PR, 11629 JUMP(GAP202C); ----- ----- A96 00000A97 800C0001 ----- 11630 .ORG GAP202C, *D=BLACK BACKGROUND 11631 Y(>1C), 11632 Y>DR, 11633 JUMP(GAP202D); ----- ----- A97 00001A98 001C1000 ----- 11634 .ORG GAP202D, *INIT LOOP 11635 MA(COUNT), 11636 Y(2), 11637 Y>RAM, 11638 JUMP(GAP202E); ----- ----- A98 00000A99 78021100 ----- 11639 .ORG GAP202E, *P=B+1 11640 A(1), BR>B, ADD, 11641 Y>PR, 11642 JUMP(GAP203); ----- ----- A99 00000A9A 80010001 ----- 11643 *LOOP START 11644 .ORG GAP203, *D=NEW BACKGROUND 11645 PR>BR, 11646 Y(>1D), 11647 Y>DR, 11648 JUMP(GAP204); ----- ----- A9A 00411A9B 001D1000 ----- 11649 .ORG GAP204, *P++ 11650 A(1), BR>B, ADD, 11651 Y>PR, 11652 JUMP(GAP204A); ----- ----- A9B 00000A9C 80010001 ----- 11653 .ORG GAP204A, *D=START BOX 11654 PR>BR, 11655 Y(>0B), 11656 Y>DR, 11657 JUMP(GAP204B); ----- ----- A9C 00411A9D 000B1000 ----- 11658 .ORG GAP204B, *P++ 11659 A(1), BR>B, ADD, 11660 Y>PR, 11661 JUMP(GAP204C); ----- ----- A9D 00000A9E 80010001 ----- 11662 .ORG GAP204C, *D=START BOX 11663 PR>BR, 11664 Y(>0B), 11665 Y>DR, 11666 JUMP(GAP204D); ----- ----- A9E 00411A9F 000B1000 ----- 11667 .ORG GAP204D, *P++ 11668 *A=COUNT 11669 MA(COUNT), RAM>AR, 11670 A(1), BR>B, ADD, 11671 Y>PR, 11672 JUMP(GAP204E); ----- ----- A9F 00020AA0 F8010001 ----- 11673 .ORG GAP204E, *COUNT-- 11674 MA(COUNT), 11675 AR>A, B(-1), ADD, 11676 Y>RAM, 11677 JUMP(GAP205); ----- ----- AA0 00000AA1 78FF0110 ----- 11678 .ORG GAP205, *D=ALPHA BLACK 11679 *REPEAT? 11680 PR>BR, 11681 Y(>00), 11682 Y>DR, 11683 JZ(GAP208F,GAP208T); ----- ----- AA1 00413436 00001000 ----- 11684 *REPEAT (GO BACK AND DO + MENU) 11685 .ORG GAP208F, *P=-35 11686 Y(-35), 11687 Y>PR, 11688 JUMP(GAP203); ----- ----- 436 00000A9A 80DD1000 ----- 11689 *LOOP EXIT 11690 .ORG GAP208T, *P=-30 11691 Y(-30), 11692 Y>PR, 11693 JUMP(GAP209); ----- ----- 437 00000AA2 80E21000 ----- 11694 .ORG GAP209, *D='+' 11695 Y(>2B), 11696 Y>DR, 11697 JUMP(GAP210); ----- ----- AA2 00001AA3 002B1000 ----- 11698 .ORG GAP210, *P=-36 11699 Y(-36), 11700 Y>PR, 11701 JUMP(GAP211); ----- ----- AA3 00000AA4 80DC1000 ----- 11702 .ORG GAP211, *D=ALPHA GREEN 11703 Y(>02), 11704 Y>DR, 11705 JUMP(GAP2F); ----- ----- AA4 000013E8 00021000 ----- 11706 *SUB-PAGE MODE 11707 * P=-64 11708 .ORG GAP4BF, *D=START BOX 11709 Y(>0B), 11710 Y>DR, 11711 JUMP(GAP300); ----- ----- 3F8 00001AA5 000B1000 ----- 11712 .ORG GAP300, *P=-63 11713 Y(-63), 11714 Y>PR, 11715 JUMP(GAP302); ----- ----- AA5 00000AA6 80C11000 ----- 11716 .ORG GAP302, *D=START BOX 11717 Y(>0B), 11718 Y>DR, 11719 JUMP(GAP303); ----- ----- AA6 00001AA7 000B1000 ----- 11720 .ORG GAP303, *POINT TO PREFIX OF MAIN PAGE NUMBER 11721 Y(-62), 11722 Y>PR, 11723 JUMP(GAP304); ----- ----- AA7 00000AA8 80C21000 ----- 11724 .ORG GAP304, *CALL PND10 AND PND50T TO WRITE PAGE NUMBER 11725 *AND FIND PREFIX LETTER 11726 *RETURN=2, RETURN TO GAP310 11727 MA(RETURN), 11728 Y(2), 11729 Y>RAM, 11730 JUMP(PND10); ----- ----- AA8 00000AA9 7C021100 ----- 11731 * A=PREFIX LETTER 11732 .ORG GAP310, 11733 Y(-62), 11734 Y>PR, 11735 JUMP(GAP311); ----- ----- 052 00000AAA 80C21000 ----- 11736 .ORG GAP311, *WRITE PREFIX LETTER 11737 AR>A, B(0), OR, 11738 Y>DR, 11739 JUMP(GAP312); ----- ----- AAA 00001AAB 00001010 ----- 11740 .ORG GAP312, *POINT TO '/' POSITION 11741 *JUMP TO PND15 ROUTINE TO WRITE PAGE NUMBER 11742 *RETURN TO GAP340 11743 Y(-58), 11744 Y>PR, 11745 JUMP(PND15); ----- ----- AAB 00000AAC 80C61000 ----- 11746 * A=DHREG, P= START POINT FOR DASHES 11747 .ORG GAP340, *Y=ICP, A=PEN 11748 MA(PEN), RAM>AR, 11749 AR>A, B(ICP), AND, 11750 JUMP(GAP340A); ----- ----- CBC 00020AAD 1B400810 ----- 11751 .ORG GAP340A, *A= NUMBER OF DASHES IF 3 OR LESS 11752 *ICP? 11753 ARHI>A, B(3), AND, 11754 Y>AR, 11755 JZ(GAP341AF,GAP341AT); ----- ----- AAD 00222438 00030820 ----- 11756 .ORG GAP341AF, *ICP, PEN=4? 11757 JZ(GAP341BF,GAP341BT); ----- ----- 438 0000243A 00000000 ----- 11758 .ORG GAP341BT, *PEN=4 AND ICP, NEED TO WRITE FOUR DASHES 11759 Y(4), 11760 Y>AR, 11761 JUMP(GAP341AT); ----- ----- 43B 00220439 00041000 ----- 11762 .ORG GAP341BF, *A CONTAINS NUMBER OF DASHES 11763 JUMP(GAP341AT); ----- ----- 43A 00000439 00000000 ----- 11764 * 11765 .ORG GAP341AT, *CALL PND72 TO WRITE DASHES IN A 11766 *RETURN=1, RETURN TO GAP342 11767 MA(RETURN), 11768 Y(1), 11769 Y>RAM, 11770 JUMP(PND72); ----- ----- 439 00000AAE 7C011100 ----- 11771 .ORG GAP342, *SET START POINT OF PLUS/ MINUS MENU 11772 *JUMP TO PLUS/ MINUS ROUTINE 11773 Y(-52), 11774 Y>PR, 11775 JUMP(GAP201); ----- ----- 071 00000A93 80CC1000 ----- 11776 *COMMON EXIT FROM GAP ROUTINE 11777 .ORG GAP2F, * 11778 JUMP(VPP450); ----- ----- 3E8 00000337 00000000 ----- 11779 * 11780 *+++SEARCH AITS FOR A PAGE NUMBER 11781 * 11782 * This routine will search through any captured AITs for the 11783 * the page in PU, PT and PM. If found, the last Y and A will 11784 * be set to one (otherwise zero). If found, P and RWL point 11785 * to the label of the page. 11786 * 11787 * input pars are:- 11788 * PU,PT: page units, page tens 11789 * RET2, page mag with mag 8= 8 (not zero) 11790 * RETURN: return pointer 11791 * return pars are:- 11792 * A: found/ not found 11793 * P: pointer to AIT label 11794 * STORE: pointer to AIT latch 11795 * RWL: set to display latch 11796 * local variables used are 11797 * COUNT, 11798 * 11799 .ORG SAT0, *INIT AIT LOOP COUNTER 11800 *A=COUNT=0 11801 MA(COUNT), 11802 Y(0), 11803 Y>RAM, Y>AR, 11804 JUMP(SAT20Y); ----- ----- A7F 002202E8 78001100 ----- 11805 * A=COUNT 11806 .ORG SAT10T, *INC AIT LOOP COUNTER 11807 *COUNT=A+1 11808 MA(COUNT), 11809 AR>A, B(1), ADD, 11810 Y>RAM, 11811 JUMP(SAT11); ----- ----- 449 00000AAF 78010110 ----- 11812 .ORG SAT11, *B=STOR7 11813 *CASE AIT=? 11814 MA(STOR7), RAM>BR, 11815 JY(SAT20Y); ----- ----- AAF 0001C2E8 27000000 ----- 11816 *CASE AIT LOOP 11817 .ORG SAT20Y, *CASE 1ST AIT 11818 *B=STOR2 11819 MA(STOR2), RAM>BR, 11820 JUMP(SAT22); ----- ----- 2E8 000102EA 22000000 ----- 11821 .ORG SAT21, *CASE 2ND AIT 11822 *B=STOR3 11823 MA(STOR3), RAM>BR, 11824 JUMP(SAT22); ----- ----- 2E9 000102EA 23000000 ----- 11825 * B=STORx FOR THIS AIT 11826 .ORG SAT22, *CASE 3RD AIT 11827 *P=INDEX TO LAFx 11828 A(LAF0), BRHI>B, ADD, 11829 Y>PR, 11830 JUMP(SAT30); ----- ----- 2EA 00000AB0 8040000C ----- 11831 .ORG SAT23, *CASE EXIT 11832 *A=FOUND FLAG 11833 *B=STOR0 11834 MA(STOR0), RAM>BR, 11835 Y(0), 11836 Y>AR, 11837 JUMP(SAT90); ----- ----- 2EB 00230AB1 20001000 ----- 11838 .ORG SAT30, *STORE=THIS LATCH 11839 MA(STORE), 11840 A(0), BRHI>B, OR, 11841 Y>RAM, 11842 JUMP(SAT31); ----- ----- AB0 00000AB2 7700110C ----- 11843 .ORG SAT31, *A=LATCH FLAGS FOR THIS AIT 11844 PR>MA, RAM>AR, 11845 JUMP(SAT32); ----- ----- AB2 00120AB3 00000000 ----- 11846 .ORG SAT32, *INVERT CAP AND AITL FLAGS 11847 AR>A, B(CAP+AITL), XOR, 11848 Y>AR, 11849 JUMP(SAT33); ----- ----- AB3 00220AB4 00811810 ----- 11850 .ORG SAT33, *Y=NOT CAP OR NOT AITL 11851 AR>A, B(CAP+AITL), AND, 11852 JUMP(SAT34); ----- ----- AB4 00000AB5 00810810 ----- 11853 .ORG SAT34, *DOES RWL CONTAIN A CAPTURED AIT? 11854 *RWL=LATCH FOR THIS STORE 11855 MA(RWL), 11856 A(0), BRHI>B, OR, 11857 Y>RAM, Y>IO, 11858 JZ(SAT35F,SAT35T); ----- ----- AB5 0000243C 0B00510C ----- 11859 .ORG SAT35F, *NO, GO TO NEXT AIT 11860 *A=COUNT 11861 MA(COUNT), RAM>AR, 11862 JUMP(SAT10T); ----- ----- 43C 00020449 78000000 ----- 11863 *RWL CONTAINS AN AIT 11864 .ORG SAT35T, *P=POINTER TO BOTTOM OF TABLE 11865 Y(-124), 11866 Y>PR, 11867 JUMP(SAT40F); ----- ----- 43D 00000448 80841000 ----- 11868 *SEARCH LABEL FIELD LOOP 11869 * P=POINTER TO MAG OF AIT LABEL 11870 .ORG SAT40F, *B=RET2 11871 *TPD=LABEL MAG 11872 RVDP, 11873 MA(RET2), RAM>BR, 11874 JUMP(SAT41); ----- ----- 448 00010AB6 7B008000 ----- 11875 .ORG SAT41, *COMPARE MAGS 11876 *B=LABEL MAG 11877 PR>BR, 11878 TPD.0F>A, BRHI>B, XOR, 11879 JUMP(SAT42); ----- ----- AB6 00410AB7 000018AC ----- 11880 .ORG SAT42, *P=TENS POINTER 11881 *SAME MAG? 11882 A(1), BR>B, ADD, 11883 Y>PR, 11884 JZ(SAT43F,SAT43T); ----- ----- AB7 0000243E 80010001 ----- 11885 .ORG SAT43F, *DIFFERENT MAG 11886 *P=UNITS POINTER 11887 A(2), BR>B, ADD, 11888 Y>PR, 11889 JUMP(SAT43A); ----- ----- 43E 00000AB8 80020001 ----- 11890 .ORG SAT43A, *B=UNITS POINTER 11891 PR>BR, 11892 JUMP(SAT50F); ----- ----- AB8 00410444 00000000 ----- 11893 .ORG SAT43T, *SAME MAG 11894 *TPD=LABEL TENS 11895 *B=PT 11896 *P=UNITS POINTER 11897 RVDP, 11898 MA(PT), RAM>BR, 11899 A(2), BR>B, ADD, 11900 Y>PR, 11901 JUMP(SAT44); ----- ----- 43F 00010AB9 F5028001 ----- 11902 .ORG SAT44, *COMPARE TENS 11903 *TPD=LABEL UNITS 11904 *B=PU 11905 RVDP, 11906 MA(PU), RAM>BR, 11907 TPD.0F>A, BRHI>B, XOR, 11908 JUMP(SAT45); ----- ----- AB9 00010ABA 760098AC ----- 11909 .ORG SAT45, *SAME TENS? 11910 *COMPARE UNITS 11911 *B=UNITS POINTER 11912 PR>BR, 11913 TPD.0F>A, BRHI>B, XOR, 11914 JZ(SAT50F,SAT46T); ----- ----- ABA 00412444 000018AC ----- 11915 .ORG SAT46T, *SAME TENS 11916 *SAME UNITS? 11917 *P=POINTER TO LABEL 11918 A(6), BR>B, ADD, 11919 Y>PR, 11920 JZ(SAT47F,SAT47T); ----- ----- 445 00002446 80060001 ----- 11921 .ORG SAT47F, *DIFFERENT UNITS 11922 JUMP(SAT50F); ----- ----- 446 00000444 00000000 ----- 11923 *FOUND LABEL 11924 * P=POINTER TO LABEL 11925 .ORG SAT47T, *A=1 (TO RETURN FOUND) 11926 *GO TO EXIT CODE 11927 *B=STOR0 11928 MA(STOR0), RAM>BR, 11929 Y(1), 11930 Y>AR, 11931 JUMP(SAT90); ----- ----- 447 00230AB1 20011000 ----- 11932 11933 *NOT THIS LABEL 11934 * *B=UNITS POINTER 11935 .ORG SAT50F, *Y=UNITS POINTER - 42 11936 A(-42), BR>B, ADD, 11937 JUMP(SAT51); ----- ----- 444 00000ABB 00D60001 ----- 11938 .ORG SAT51, *P= POINTER TO NEXT LABEL PAGE MAG 11939 *A=COUNT 11940 *LAST LABEL? 11941 MA(COUNT), RAM>AR, 11942 A(-22), BR>B, ADD, 11943 Y>PR, 11944 JZ(SAT40F,SAT10T); ----- ----- ABB 00022448 F8EA0001 ----- 11945 *EXIT 11946 * B=STOR0, A=FOUND FLAG 11947 .ORG SAT90, *RWL=LATCH OF DISPLAY PAGE 11948 MA(RWL), 11949 A(0), BRHI>B, OR, 11950 Y>RAM, Y>IO, 11951 JUMP(SAT91); ----- ----- AB1 00000ABC 0B00510C ----- 11952 .ORG SAT91, *B=RETURN 11953 MA(RETURN), RAM>BR, 11954 JUMP(SAT92); ----- ----- ABC 00010ABD 7C000000 ----- 11955 .ORG SAT92, *Y=RETURN 11956 A(1), BR>B, AND, 11957 JUMP(SAT93); ----- ----- ABD 00000ABE 00010801 ----- 11958 .ORG SAT93, *Y=FOUND FLAG 11959 *CASE RETURN=? 11960 AR>A, B(0), OR, 11961 JY(GAP134Y); ----- ----- ABE 0000C778 00001010 ----- 11962 * 11963 *+++COPY AIT LABEL TO PROMPT ROW 11964 * 11965 * This routine copies the label pointed to by screen pointer, 11966 * P, and the latch in STORE to the next position in the prompt row 11967 * indicated by THISRW. Spaces and control characters at the 11968 * start of the label are ignored. THISRW returns a pointer to 11969 * the last character copied which is not a space or a control 11970 * character. If an AIT label has not been found, this routine 11971 * copies the page numbr in PU, PT and RET2 to the prompt display. 11972 * 11973 * This routine also copies the header language control bits of 11974 * the AIT to AITLAN. 11975 * 11976 * input pars are:- 11977 * PU, PT and RET2 page number to copy if no label 11978 * THISRW: pointer to position in prompt 11979 * P: pointer to AIT label 11980 * STORE: AIT latch 11981 * RETURN: return pointer 11982 * TEST: non-zero enables label copy 11983 * (a group or block page has been found) 11984 * return pars are:- 11985 * THISRW: pointer to last character of copy 11986 * RWL: set to display page 11987 * AITLAN: C14-C12 of this AIT 11988 * local variables used are 11989 * COUNT, 11990 * 11991 *ENTRY POINT IF LABEL FOUND 11992 .ORG COP0F, *A=TEST 11993 MA(TEST), RAM>AR, 11994 JUMP(COP1); ----- ----- 42A 00020ABF 70000000 ----- 11995 .ORG COP1, *Y=TEST 11996 *A=THISRW 11997 MA(THISRW), RAM>AR, 11998 AR>A, B(0), OR, 11999 JUMP(COP2); ----- ----- ABF 00020AC0 7D001010 ----- 12000 .ORG COP2, *INIT LABEL CHARACTER COUNT 12001 *COUNT=12 12002 *COPY ENABLED? 12003 *IF NO, JUMP TO PAGE NUMBER CODE 12004 MA(COUNT), 12005 Y(12), 12006 Y>RAM, 12007 JZ(COP3F,COP40T); ----- ----- AC0 0000244A 780C1100 ----- 12008 .ORG COP3F, *A=AIT LATCH 12009 *POINT TO CGB+CGA, STORE AIT POINTER IN B 12010 PR>BR, 12011 MA(STORE), RAM>AR, 12012 Y(-13), 12013 Y>PR, 12014 JUMP(COP4); ----- ----- 44A 00430AC1 F7F31000 ----- 12015 .ORG COP4, *RWL=AIT LATCH 12016 MA(RWL), 12017 AR>A, B(0), OR, 12018 Y>RAM, Y>IO, 12019 JUMP(COP5); ----- ----- AC1 00000AC2 0B005110 ----- 12020 .ORG COP5, *B=AITLAN 12021 *TPD=CGB+CGA OF THIS AIT 12022 *PUT AIT POINTER BACK IN P 12023 RVDP, 12024 MA(AITLAN), RAM>BR, 12025 A(0), BR>B, OR, 12026 Y>PR, 12027 JUMP(COP6); ----- ----- AC2 00010AC3 93009001 ----- 12028 .ORG COP6, *STORE C14-12 OF THIS AIT IN AITLAN 12029 MA(AITLAN), 12030 TPD.F0>A, BR.0F>B, OR, 12031 Y>RAM, 12032 JUMP(COP10F); ----- ----- AC3 0000044E 130011B2 ----- 12033 *FIRST SKIP LEADING CONTROL AND SPACE CHARACTERS 12034 .ORG COP10F, *TPD=LABEL CHAR 12035 RVDP, 12036 JUMP(COP11); ----- ----- 44E 00000AC4 00008000 ----- 12037 .ORG COP11, *Y=LABEL CHAR-33 12038 TPD>A, B(-33), ADD, 12039 JUMP(COP12); ----- ----- AC4 00000AC5 00DF0090 ----- 12040 .ORG COP12, *CONTROL OR SPACE CHARACTER? 12041 *B=LABEL POINTER 12042 *A=CHAR COUNT 12043 MA(COUNT), RAM>AR, 12044 PR>BR, 12045 JN(COP20F,COP13T); ----- ----- AC5 0043444C 78000000 ----- 12046 .ORG COP13T, *YES, MISS IT 12047 *DEC CHAR COUNT 12048 MA(COUNT), 12049 AR>A, B(-1), ADD, 12050 Y>RAM, 12051 JUMP(COP14); ----- ----- 44D 00000AC6 78FF0110 ----- 12052 .ORG COP14, *INC LABEL POINTER 12053 *LAST CHARACTER? 12054 A(1), BR>B, ADD, 12055 Y>PR, 12056 JZ(COP10F,COP15T); ----- ----- AC6 0000244E 80010001 ----- 12057 *NO VALID CHARS IN LABEL, EXIT 12058 .ORG COP15T, *B=RETURN 12059 MA(RETURN), RAM>BR, 12060 JUMP(COP50F); ----- ----- 44F 00010458 7C000000 ----- 12061 * P=POINTER TO LABEL CHARACTER 12062 .ORG COP20F, *A=AIT LATCH 12063 MA(STORE), RAM>AR, 12064 JUMP(COP20A); ----- ----- 44C 00020AC7 77000000 ----- 12065 .ORG COP20A, *RWL= AIT LATCH 12066 MA(RWL), 12067 AR>A, B(0), OR, 12068 Y>RAM, Y>IO, 12069 JUMP(COP20B); ----- ----- AC7 00000AC8 0B005110 ----- 12070 .ORG COP20B, *A=MENU POINTER 12071 *TPD= LABEL CHARACTER 12072 RVDP, 12073 MA(THISRW), RAM>AR, 12074 JUMP(COP21); ----- ----- AC8 00020AC9 7D008000 ----- 12075 .ORG COP21, *DEC MENU POINTER 12076 MA(THISRW), 12077 AR>A, B(-1), ADD, 12078 Y>RAM, Y>AR, 12079 JUMP(COP22); ----- ----- AC9 00220ACA 7DFF0110 ----- 12080 .ORG COP22, *END OF MENU LINE? 12081 *P=MENU POINTER 12082 *A=STOR0 12083 *B=LABEL POINTER 12084 PR>BR, 12085 MA(STOR0), RAM>AR, 12086 NAR>A, B(-25), ADD, O>CIN, 12087 Y>PR, 12088 JN(COP23F,COP23T); ----- ----- ACA 00434454 A0E70440 ----- 12089 .ORG COP23F, *RWL=DISPLAY PAGE 12090 MA(RWL), 12091 ARHI>A, B(0), OR, 12092 Y>RAM, Y>IO, 12093 JUMP(COP24); ----- ----- 454 00000ACB 0B005120 ----- 12094 .ORG COP24, *WRITE CHARACTER TO MENU 12095 *A=CHAR COUNT 12096 MA(COUNT), RAM>AR, 12097 TPD>A, B(0), OR, 12098 Y>DR, 12099 JUMP(COP25); ----- ----- ACB 00021ACC 78001090 ----- 12100 .ORG COP25, *DEC CHAR COUNT 12101 MA(COUNT), 12102 AR>A, B(-1), ADD, 12103 Y>RAM, 12104 JUMP(COP26); ----- ----- ACC 00000ACD 78FF0110 ----- 12105 .ORG COP26, *LAST CHARACTER? 12106 *A=THISRW 12107 MA(THISRW), RAM>AR, 12108 JZ(COP27F,COP27T); ----- ----- ACD 00022456 7D000000 ----- 12109 .ORG COP27F, *MORE CHARACTERS 12110 *POINT TO NEXT LABEL CHARACTER 12111 A(1), BR>B, ADD, 12112 Y>PR, 12113 JUMP(COP20F); ----- ----- 456 0000044C 80010001 ----- 12114 *END OF MENU LINE 12115 .ORG COP23T, *B=RETURN 12116 MA(RETURN), RAM>BR, 12117 JUMP(COP50F); ----- ----- 455 00010458 7C000000 ----- 12118 *COPIED LAST CHARACTER, MOVE PROMPT POINTER BACK TO LAST VALID CHAR 12119 * A=THISRW, RWL=DISPLAY PAGE 12120 .ORG COP27T, *P=POINTER TO PROMPT 12121 NAR>A, B(-25), ADD, O>CIN, 12122 Y>PR, 12123 JUMP(COP28); ----- ----- 457 00000ACE 80E70440 ----- 12124 .ORG COP28, *TPD=MENU CHARACTER 12125 RVDP, 12126 JUMP(COP29); ----- ----- ACE 00000ACF 00008000 ----- 12127 .ORG COP29, *Y= TPD-33 12128 TPD>A, B(-33), ADD, 12129 JUMP(COP30); ----- ----- ACF 00000AD0 00DF0090 ----- 12130 .ORG COP30, *CONTROL OR SPACE CHAR? IF NO, EXIT 12131 *B=RETURN 12132 MA(RETURN), RAM>BR, 12133 JN(COP50F,COP31T); ----- ----- AD0 00014458 7C000000 ----- 12134 .ORG COP31T, *INC PROMPT POINTER 12135 MA(THISRW), 12136 AR>A, B(1), ADD, 12137 Y>RAM, Y>AR, 12138 JUMP(COP27T); ----- ----- 459 00220457 7D010110 ----- 12139 *ENTRY POINT IF NO LABEL FOUND 12140 .ORG COP0T, *A=THISRW 12141 MA(THISRW), RAM>AR, 12142 JUMP(COP40T); ----- ----- 42B 0002044B 7D000000 ----- 12143 *ENTRY POINT FROM COP2 12144 .ORG COP40T, *B=STOR0 12145 *P= POINTER TO LABEL START 12146 MA(STOR0), RAM>BR, 12147 NAR>A, B(-24), ADD, O>CIN, 12148 Y>PR, 12149 JUMP(COP40A); ----- ----- 44B 00010AD1 A0E80440 ----- 12150 .ORG COP40A, *MOVE PROMPT POINTER PAST PAGE NUMBER 12151 MA(THISRW), 12152 AR>A, B(-6), ADD, 12153 Y>RAM, 12154 JUMP(COP41); ----- ----- AD1 00000AD2 7DFA0110 ----- 12155 .ORG COP41, *RWL= LATCH OF DISPLAY PAGE 12156 MA(RWL), 12157 A(0), BRHI>B, OR, 12158 Y>RAM, Y>IO, 12159 JUMP(COP42); ----- ----- AD2 00000AD3 0B00510C ----- 12160 *CLEAR LABEL UP TO MAGS 12161 .ORG COP42, *WRITE A SPACE 12162 PR>BR, 12163 Y(>20), 12164 Y>DR, 12165 JUMP(COP42A); ----- ----- AD3 00411AD4 00201000 ----- 12166 .ORG COP42A, *P++ 12167 A(1), BR>B, ADD, 12168 Y>PR, 12169 JUMP(COP42B); ----- ----- AD4 00000AD5 80010001 ----- 12170 .ORG COP42B, *WRITE A SPACE 12171 PR>BR, 12172 Y(>20), 12173 Y>DR, 12174 JUMP(COP42C); ----- ----- AD5 00411AD6 00201000 ----- 12175 .ORG COP42C, *P++ 12176 A(1), BR>B, ADD, 12177 Y>PR, 12178 JUMP(COP42D); ----- ----- AD6 00000AD7 80010001 ----- 12179 .ORG COP42D, *WRITE A SPACE 12180 PR>BR, 12181 Y(>20), 12182 Y>DR, 12183 JUMP(COP43); ----- ----- AD7 00411AD8 00201000 ----- 12184 .ORG COP43, *A= PAGE NUMBER MAGS 12185 *P++ 12186 MA(RET2), RAM>AR, 12187 A(1), BR>B, ADD, 12188 Y>PR, 12189 JUMP(COP44); ----- ----- AD8 00020AD9 FB010001 ----- 12190 .ORG COP44, *B= PROMPT POINTER 12191 *D= PAGE NUMBER MAGS 12192 PR>BR, 12193 ARHI>A, B(>30), OR, 12194 Y>DR, 12195 JUMP(COP45); ----- ----- AD9 00411ADA 00301020 ----- 12196 .ORG COP45, *P= POINTER TO TENS 12197 *A= PAGE NUMBER TENS 12198 MA(PT), RAM>AR, 12199 A(1), BR>B, ADD, 12200 Y>PR, 12201 JUMP(COP46); ----- ----- ADA 00020ADB F5010001 ----- 12202 .ORG COP46, *B= PROMPT POINTER 12203 *D= PAGE NUMBER TENS 12204 PR>BR, 12205 ARHI>A, B(>30), OR, 12206 Y>DR, 12207 JUMP(COP47); ----- ----- ADB 00411ADC 00301020 ----- 12208 .ORG COP47, *P= POINTER TO UNITS 12209 *A= PAGE NUMBER UNITS 12210 MA(PU), RAM>AR, 12211 A(1), BR>B, ADD, 12212 Y>PR, 12213 JUMP(COP48); ----- ----- ADC 00020ADD F6010001 ----- 12214 .ORG COP48, *B= RETURN 12215 *D= PAGE NUMBER UNITS 12216 MA(RETURN), RAM>BR, 12217 ARHI>A, B(>30), OR, 12218 Y>DR, 12219 JUMP(COP50F); ----- ----- ADD 00011458 7C301020 ----- 12220 *EXIT 12221 * B=RETURN 12222 .ORG COP50F, *Y=RETURN 12223 *A=STOR0 12224 MA(STOR0), RAM>AR, 12225 A(1), BR>B, AND, 12226 JUMP(COP51); ----- ----- 458 00020ADE 20010801 ----- 12227 .ORG COP51, *CASE RETURN=? 12228 *RWL= LATCH FOR DISPLAY PAGE 12229 MA(RWL), 12230 ARHI>A, B(0), OR, 12231 Y>RAM, Y>IO, 12232 JY(GAP136Y); ----- ----- ADE 0000C780 0B005120 ----- 12233 * 12234 *+++COMPARE SUB-PAGE IN SUB-PAGE LATCH WITH USER SUB-PAGE 12235 * 12236 * input pars are:- 12237 * A: sub-page latch index-1 12238 * return pars are:- 12239 * A, last Y: 1 if compare is true, else 0 12240 * RETURN: return pointer 12241 * local variables used are:- 12242 * COUNT, LOCAL, MASK 12243 .ORG CSP0, *STORE LATCH POINTER IN MASK 12244 MA(MASK), 12245 AR>A, B(1), ADD, 12246 Y>RAM, 12247 JUMP(CSP1); ----- ----- 8F0 00000ADF 73010110 ----- 12248 .ORG CSP1, *INIT LOOP 12249 *A=COUNT=0 12250 MA(COUNT), 12251 Y(0), 12252 Y>RAM, Y>AR, 12253 JUMP(CSP2F); ----- ----- ADF 0022045C 78001100 ----- 12254 *LOOP START 12255 * A=COUNT 12256 .ORG CSP2F, *P=INDEX TO USPx 12257 AR>A, B(USPI), ADD, 12258 Y>PR, 12259 JUMP(CSP3); ----- ----- 45C 00000AE0 80580010 ----- 12260 .ORG CSP3, *B=USPx 12261 PR>MA, RAM>BR, 12262 JUMP(CSP4); ----- ----- AE0 00110AE1 00000000 ----- 12263 .ORG CSP4, *KEEP IT IN LOCAL 12264 MA(LOCAL), 12265 A(0), BR>B, OR, 12266 Y>RAM, 12267 JUMP(CSP5); ----- ----- AE1 00000AE2 72001101 ----- 12268 .ORG CSP5, *B=INDEX TO LATCH 12269 MA(MASK), RAM>BR, 12270 JUMP(CSP6); ----- ----- AE2 00010AE3 73000000 ----- 12271 .ORG CSP6, *P=INDEX TO LATCH DIGIT 12272 *B=USP DIGIT 12273 MA(LOCAL), RAM>BR, 12274 AR>A, BR>B, ADD, 12275 Y>PR, 12276 JUMP(CSP7); ----- ----- AE3 00010AE4 F2000011 ----- 12277 .ORG CSP7, *A=LATCH DIGIT 12278 PR>MA, RAM>AR, 12279 JUMP(CSP8); ----- ----- AE4 00120AE5 00000000 ----- 12280 .ORG CSP8, *COMPARE DIGITS 12281 *A=COUNT 12282 MA(COUNT), RAM>AR, 12283 ARHI>A, BRHI>B, XOR, 12284 JUMP(CSP9); ----- ----- AE5 00020AE6 7800182C ----- 12285 .ORG CSP9, *DIGITS ARE THE SAME? 12286 *Y=COUNT-3 12287 *B=RETURN 12288 MA(RETURN), RAM>BR, 12289 AR>A, B(-3), ADD, 12290 JZ(CSP10F,CSP10T); ----- ----- AE6 0001245A 7CFD0010 ----- 12291 .ORG CSP10T, *DIGITS THE SAME 12292 *COUNT++ 12293 *COMPARED ALL THE DIGITS? 12294 MA(COUNT), 12295 AR>A, B(1), ADD, 12296 Y>RAM, Y>AR, 12297 JZ(CSP2F,CSP11T); ----- ----- 45B 0022245C 78010110 ----- 12298 * 12299 .ORG CSP10F, *DIGITS ARE NOT THE SAME 12300 *A=0 12301 *B=RETURN 12302 MA(RETURN), RAM>BR, 12303 Y(0), 12304 Y>AR, 12305 JUMP(CSP20); ----- ----- 45A 00230AE7 7C001000 ----- 12306 * 12307 .ORG CSP11T, *ALL THE DIGITS ARE THE SAME 12308 *A=1 12309 *B=RETURN 12310 MA(RETURN), RAM>BR, 12311 Y(1), 12312 Y>AR, 12313 JUMP(CSP20); ----- ----- 45D 00230AE7 7C011000 ----- 12314 *EXIT 12315 .ORG CSP20, *Y=RETURN 12316 A(1), BR>B, AND, 12317 JUMP(CSP21); ----- ----- AE7 00000AE8 00010801 ----- 12318 .ORG CSP21, *Y=RESULT FLAG 12319 AR>A, B(0), OR, 12320 JY(SPLM22Y); ----- ----- AE8 0000C2C0 00001010 ----- 12321 * 12322 *+++FIND SUB-PAGE 12323 * 12324 * This routine finds RAM pointers to the sub-page latches which 12325 * are associated with STORE 0, STORE 4 and STORE 5 (it does this 12326 * by comparing the latch numbers in LFSP0-2 with the latch 12327 * numbers in STORE 0, STORE 4, and STORE 5). 12328 * 12329 * input pars are:- 12330 * RETURN: return pointer 12331 * 12332 * return pars are:- 12333 * PM: pointer to STOR0 sub-page latch units-1 12334 * PT: pointer to STOR4 sub-page latch units-1 12335 * PU: pointer to STOR5 sub-page latch units-1 12336 * local variables used are:- 12337 * COUNT 12338 * 12339 .ORG FSP0F, *INIT LOOP 12340 *COUNT=0 12341 MA(COUNT), 12342 Y(0), 12343 Y>RAM, 12344 JUMP(FSP20Y.0); ----- ----- 30E 00000760 78001100 ----- 12345 * A=LOOP 12346 .ORG FSP10T, *INC LOOP 12347 MA(COUNT), 12348 AR>A, B(1), ADD, 12349 Y>RAM, 12350 JUMP(FSP11); ----- ----- 461 00000AE9 78010110 ----- 12351 .ORG FSP11, *A=STOR5, P=PU 12352 *CASE COUNT? 12353 MA(STOR5), RAM>AR, 12354 Y(PU), 12355 Y>PR, 12356 JY(FSP20Y.0); ----- ----- AE9 0002C760 A5761000 ----- 12357 .ORG FSP20Y.0, *COUNT=0 12358 *A=STORE0, P=PM 12359 MA(STOR0), RAM>AR, 12360 Y(PM), 12361 Y>PR, 12362 JUMP(FSP20Y.2); ----- ----- 760 00020762 A0741000 ----- 12363 .ORG FSP20Y.1, *COUNT=1 12364 *A=STORE4, P=PT 12365 MA(STOR4), RAM>AR, 12366 Y(PT), 12367 Y>PR, 12368 JUMP(FSP20Y.2); ----- ----- 761 00020762 A4751000 ----- 12369 * A=STORE, P=POINTER TO STORE 12370 .ORG FSP20Y.2, *COUNT=2 12371 *B=LFSP0 12372 MA(LFSP0), RAM>BR, 12373 JUMP(FSP30); ----- ----- 762 00010AEA 48000000 ----- 12374 .ORG FSP30, *COMPARE LATCH FOR STORE WITH LATCH FOR SUB-PAGE 0 12375 MA(LFSP1), RAM>BR, 12376 ARHI>A, BR.0F>B, XOR, 12377 JUMP(FSP31); ----- ----- AEA 00010AEB 49001822 ----- 12378 .ORG FSP31, *COMPARE LATCH FOR STORE WITH LATCH FOR SUB-PAGE 1 12379 *LATCH FOR STORE IN SP 0? 12380 *A= LOOP 12381 MA(COUNT), RAM>AR, 12382 ARHI>A, BR.0F>B, XOR, 12383 JZ(FSP32F,FSP32T); ----- ----- AEB 0002245E 78001822 ----- 12384 .ORG FSP32T, *LATCH FOR THIS STORE IS IN SUB-PAGE LATCH 0 12385 *Px=SP0I-1 12386 PR>MA, 12387 Y(SP0I-1), 12388 Y>RAM, 12389 JUMP(FSP10T); ----- ----- 45F 00100461 00471100 ----- 12390 .ORG FSP32F, *LATCH FOR STORE IN SP 1? 12391 *Px=SP1I-1 12392 PR>MA, 12393 Y(SP1I-1), 12394 Y>RAM, 12395 JZ(FSP33F,FSP10T); ----- ----- 45E 00102460 004B1100 ----- 12396 .ORG FSP33F, *LATCH FOR THIS STORE IS IN SUB-PAGE LATCH 2 12397 *Px=SP2I-1 12398 PR>MA, 12399 Y(SP2I-1), 12400 Y>RAM, 12401 JUMP(FSP10T); ----- ----- 460 00100461 004F1100 ----- 12402 * 12403 .ORG FSP20Y.3, *EXIT 12404 *A=RETURN 12405 MA(RETURN), RAM>AR, 12406 JUMP(FSP50); ----- ----- 763 00020AEC 7C000000 ----- 12407 .ORG FSP50, *Y=RETURN 12408 AR>A, B(3), AND, 12409 JUMP(FSP51); ----- ----- AEC 00000AED 00030810 ----- 12410 .ORG FSP51, *RETURN=? 12411 *A= VPPRG1 12412 MA(VPPRG1), RAM>AR, 12413 JY(SPLM0.0); ----- ----- AED 0002C430 61000000 ----- 12414 * 12415 ************************************************************************ 12416 * section 4: service interface * 12417 ************************************************************************ 12418 * 12419 ***RC0T: LOAD FLAG HAS BEEN DETECTED 12420 * 12421 * This routine does all the interface maintenance (eg RSTRXTX etc). 12422 * For instruction decode, it will call DI. 12423 * 12424 .ORG RC0T, *Y=SLAVERW 12425 A(%00001000), RCS>B, AND, 12426 JUMP(RC1); ----- ----- 00F 00000AEE 0008080B ----- 12427 .ORG RC1, *Y=SELEDGE 12428 *HOST READ MODE? 12429 *A=RCSTAT 12430 MA(RCSTAT), RAM>AR, 12431 A(%00000010), RCS>B, AND, 12432 JZ(RC10F,RC10T); ----- ----- AEE 00022462 2F02080B ----- 12433 *+++HOST WRITE MODE, RECEIVE A BYTE 12434 .ORG RC10T, *FIRST BYTE? 12435 JZ(RC11F,RC11T); ----- ----- 463 00002464 00000000 ----- 12436 .ORG RC11F, *FIRST BYTE 12437 *SET COMMAND MODE, DO NOT LOOK FOR OPERANDS 12438 *OPCNT=0, CHRM=0 12439 MA(RCSTAT), 12440 AR>A, B(>FF-CHRM-OPCNT), AND, 12441 Y>RAM, Y>AR, 12442 JUMP(RC11T); ----- ----- 464 00220465 2F700910 ----- 12443 * 12444 .ORG RC11T, *Y=CHRM 12445 AR>A, B(CHRM), AND, 12446 JUMP(RC12); ----- ----- 465 00000AEF 00800810 ----- 12447 .ORG RC12, *CHARACTER MODE? 12448 *Y=OPCNT 12449 AR>A, B(OPCNT), AND, 12450 JZ(RC30F,RC30T); ----- ----- AEF 00002466 000F0810 ----- 12451 *+++HOST READ MODE 12452 * A=RCSTAT, LAST Y WAS SELEDGE 12453 .ORG RC10F, *FIRST BYTE OF TRANSFER? 12454 *B=MREG1 12455 MA(MREG1), RAM>BR, 12456 JZ(RC20F,RC20T); ----- ----- 462 00012468 65000000 ----- 12457 .ORG RC20F, *FIRST BYTE 12458 *Y=ADDSTS 12459 A(ADDSTS), BR>B, AND, 12460 JUMP(RC21); ----- ----- 468 00000AF0 00400801 ----- 12461 .ORG RC21, *ADDITIONAL STATUS SELECTED? 12462 JZ(RC22F,RC22T); ----- ----- AF0 0000246A 00000000 ----- 12463 .ORG RC22F, *YES 12464 *RMODE=7, CHRM=0 12465 MA(RCSTAT), 12466 AR.0F>A, B(>70), OR, 12467 Y>RAM, Y>AR, 12468 JUMP(RC20T); ----- ----- 46A 00220469 2F7011C0 ----- 12469 .ORG RC22T, *NO 12470 *RMODE=2, CHRM=0 12471 MA(RCSTAT), 12472 AR.0F>A, B(>20), OR, 12473 Y>RAM, Y>AR, 12474 JUMP(RC20T); ----- ----- 46B 00220469 2F2011C0 ----- 12475 * 12476 * TCJ July 94, 12477 * It is possible to reach this instruction with the CHRM 12478 * flag set in RCSTAT. This causes an invalid jump of the 12479 * following JY. 12480 * 12481 *ORG RC20T, *Y=RMODE 12482 * *A=VDP2 12483 * MA(VDP2), RAM>AR, 12484 * ARHI>A, B(0), OR, 12485 * JUMP(RC23); 12486 * 12487 .ORG RC20T, *Y=RMODE 12488 *A=VDP2 12489 MA(VDP2), RAM>AR, 12490 ARHI>A, B(>07), AND, 12491 JUMP(RC23); ----- ----- 469 00020AF1 02070820 ----- 12492 * 12493 .ORG RC23, *CASE RMODE=? 12494 *A=LANG DISPLAYED AT THE MOMENT 12495 *B=DHREG 12496 MA(DHREG), RAM>BR, 12497 AR>A, B(%00001110), AND, 12498 Y>AR, 12499 JY(RC60Y); ----- ----- AF1 0023C0F0 320E0810 ----- 12500 * 12501 *+++RECEIVE A BYTE IN CHARACTER MODE 12502 * A=RCSTAT, LAST Y WAS OPCNT 12503 .ORG RC30F, *CHARACTER MODE 12504 *Y=RCS-ESCAPE 12505 *BR=ROWPTR FOR POINT0F 12506 MA(ROWPTR), RAM>BR, 12507 A(->1B), RCD>B, ADD, 12508 JUMP(RC31); ----- ----- 466 00010AF2 30E5000A ----- 12509 .ORG RC31, *ESCAPE CHARACTER? 12510 *IF NOT, CALL POINT0F 12511 *RETURN=0, RETURN TO RC40Y 12512 MA(RETURN), 12513 A(0), B(0), AND, 12514 Y>RAM, 12515 * 12516 JUMP(POINT0F); ----- ----- AF2 00000AF3 7C000900 ----- 12517 * 12518 * TCJ May 94, 12519 * Disabled termination of downloaed data by the 12520 * ESC (>1B) character. 12521 * 12522 * JZ(POINT0F,RC32T); 12523 *.ORG RC32T, *ESCAPE 12524 * *CHRM=0 12525 * RSTRXTX, 12526 * MA(RCSTAT), 12527 * AR>A, B(>FF-CHRM), AND, 12528 * Y>RAM, 12529 * JUMP(ST0F); 12530 * 12531 *NEED TO WRITE TO PAGE OR SCRATCH RAM? 12532 * A=OLD ROW, B=OLD COL, TPD=TELETEXT PAGE DATA 12533 .ORG RC40Y, *A=OLD ROW-26 ###3/4 (some duplication with RC60A) 12534 * 12535 *### Inhibit the means of writing to scratch RAM this way because 12536 * of the possible chaos which could be caused by bit errors 12537 * in the row field of MPTR. Can do it with SETREG (this is 12538 * much safer as only one byte can be written at a time). 12539 * 12540 * AR>A, B(-26), ADD, 12541 * Y>AR, 12542 * JUMP(RC41); 12543 *ORG RC41, *A=40*(OLD ROW-26) 12544 * *PAGE OR SCRATCH DATA? 12545 * AR<<3>A, AR<<5>B, ADD, 12546 * Y>AR, 12547 * JN(RC42F,RC42T); 12548 *WRITE TO SCRATCH RAM 12549 *ORG RC42F, *P=SCRATCH POINTER 12550 * AR>A, BR>B, ADD, 12551 * Y>PR, 12552 * JUMP(RC43); 12553 *ORG RC43, *WRITE TO SCRATCH AND IO REG 12554 * PR>MA, 12555 * A(0), RCD>B, OR, 12556 * Y>RAM, Y>IO, 12557 * JUMP(RC44); 12558 *WRITE TO PAGE MEMORY 12559 *ORG RC42T, *WRITE CHARACTER TO PAGE MEMORY 12560 A(0), RCD>B, OR, 12561 Y>DR, 12562 JUMP(RC44); ----- ----- 0C0 00001AF4 0000100A ----- 12563 *+++COMMON EXIT FROM READ A BYTE 12564 .ORG RC44, * 12565 RSTRXTX, 12566 JUMP(ST0F); ----- ----- AF4 00000001 00000200 ----- 12567 * 12568 *+++RECEIVE A BYTE IN COMMAND MODE 12569 * A=RCSTAT, LAST Y WAS OPCNT 12570 .ORG RC30T, *COMMAND MODE 12571 *OPCNT=0? 12572 JZ(RC50F,RC50T); ----- ----- 467 0000246C 00000000 ----- 12573 .ORG RC50T, *OPCNT==0 12574 *LSTINS=RCD 12575 MA(LSTINS), 12576 A(0), RCD>B, OR, 12577 Y>RAM, 12578 JUMP(RC56); ----- ----- 46D 00000AF5 2E00110A ----- 12579 *+++STORE OPERAND IN OP STORE 12580 .ORG RC50F, *OPCNT!=0 12581 *RWL=7 12582 MA(RWL), 12583 A(7), B(7), OR, 12584 Y>RAM, Y>IO, 12585 JUMP(RC51); ----- ----- 46C 00000AF6 0B075100 ----- 12586 .ORG RC51, *PR=-OPCNT 12587 NAR.0F>A, B(0), ADD, O>CIN, 12588 Y>PR, 12589 JUMP(RC52); ----- ----- AF6 00000AF7 80000460 ----- 12590 .ORG RC52, *DEC OPCNT 12591 MA(RCSTAT), 12592 AR>A, B(-1), ADD, 12593 Y>RAM, 12594 JUMP(RC53); ----- ----- AF7 00000AF8 2FFF0110 ----- 12595 .ORG RC53, *UPDATE PAGE MEMORY 12596 *STORE=RCD (ALSO STORE THIS OPERAND IN 'STORE') 12597 *OPCNT=0? 12598 MA(STORE), 12599 A(0), RCD>B, OR, 12600 Y>DR, Y>RAM, 12601 JZ(RC54F,RC54T); ----- ----- AF8 0000346E 7700110A ----- 12602 .ORG RC54F, *NO, MORE OPERANDS 12603 RSTRXTX, 12604 JUMP(ST0F); ----- ----- 46E 00000001 00000200 ----- 12605 * 12606 .ORG RC54T, *YES, GO AND DO IT 12607 *OPCNT=>F 12608 MA(RCSTAT), 12609 AR.F0>A, B(>0F), OR, 12610 Y>RAM, 12611 JUMP(RC56); ----- ----- 46F 00000AF5 2F0F11D0 ----- 12612 *+++ 12613 .ORG RC56, *CALL DECODE INSTRUCTION 12614 *B=INSTRUCTION 12615 RSTRXTX, 12616 MA(LSTINS), RAM>BR, 12617 JUMP(DI0); ----- ----- AF5 00010053 2E000200 ----- 12618 * 12619 *+++SEND A BYTE 12620 * 12621 * A=DISPLAYED LANG, B=DHREG 12622 .ORG RC60Y, *CASE RMODE==0 12623 *BR=ROWPTR FOR POINT0F 12624 MA(ROWPTR), RAM>BR, 12625 JUMP(RC60AA); ----- ----- 0F0 00010AF9 30000000 ----- 12626 .ORG RC60AA, *CALL POINT 12627 *RETURN=1, RETURN TO RC60A 12628 MA(RETURN), 12629 A(1), B(1), OR, 12630 Y>RAM, 12631 JUMP(POINT0F); ----- ----- AF9 00000AF3 7C011100 ----- 12632 *NEED TO OUTPUT PAGE OR SCRATCH RAM DATA? 12633 * A=OLD ROW, B=OLD COL, TPD=TELETEXT PAGE DATA 12634 .ORG RC60A, *A=OLD ROW-26 12635 AR>A, B(-26), ADD, 12636 Y>AR, 12637 JUMP(RC60B); ----- ----- 0C1 00220AFA 00E60010 ----- 12638 .ORG RC60B, *A=40*(OLD ROW-26) 12639 *PAGE OR SCRATCH DATA? 12640 AR<<3>A, AR<<5>B, ADD, 12641 Y>AR, 12642 JN(RC60CF,RC60CT); ----- ----- AFA 00224470 00000059 ----- 12643 *OUTPUT SCRATCH DATA 12644 .ORG RC60CF, *P=SCRATCH POINTER 12645 AR>A, BR>B, ADD, 12646 Y>PR, 12647 JUMP(RC60D); ----- ----- 470 00000AFB 80000011 ----- 12648 .ORG RC60D, *A=SCRATCH DATA 12649 PR>MA, RAM>AR, 12650 JUMP(RC60E); ----- ----- AFB 00120AFC 00000000 ----- 12651 .ORG RC60E, *OUTPUT BYTE 12652 *BR=RCSTAT 12653 MA(RCSTAT), RAM>BR, 12654 AR>A, B(0), OR, 12655 Y>RCI, 12656 JUMP(RC80); ----- ----- AFC 00050AFD 2F001210 ----- 12657 *OUTPUT PAGE DATA 12658 .ORG RC60CT, *OUTPUT BYTE 12659 *(RVDP IN POINT0F) 12660 *BR=RCSTAT 12661 MA(RCSTAT), RAM>BR, 12662 TPD>A, B(0), OR, 12663 Y>RCI, 12664 JUMP(RC80); ----- ----- 471 00050AFD 2F001290 ----- 12665 .ORG RC61, *CASE RMODE=1 12666 *A=DEVICE ID 12667 Y(>13), 12668 Y>AR, 12669 JUMP(RC70F); ----- ----- 0F1 00220472 00131000 ----- 12670 .ORG RC62, *CASE RMODE=2 12671 *Y=NRH 12672 *B=STSWD0 12673 MA(STSWD0), RAM>BR, 12674 A(NRH), BR>B, AND, 12675 JUMP(RC62A); ----- ----- 0F2 00010AFE 64100801 ----- 12676 .ORG RC62A, *OR IN MSN, CLEAR SEARCH BIT 12677 *HEADER ROLLING? 12678 AR.0F>A, BR.F0>B, OR, 12679 Y>AR, 12680 JZ(RC70F,RC62BT); ----- ----- AFE 00222472 000010C3 ----- 12681 .ORG RC62BT, *HEADER ROLLING, SET SEARCH BIT 12682 AR>A, B(1), OR, 12683 Y>AR, 12684 JUMP(RC70F); ----- ----- 473 00220472 00011010 ----- 12685 .ORG RC63, *CASE RMODE=3 12686 *A=PDCRG2 12687 MA(PDCRG2), RAM>AR, 12688 JUMP(RC70F); ----- ----- 0F3 00020472 6D000000 ----- 12689 .ORG RC64, *CASE RMODE=4 12690 *A=PDCRG1 12691 MA(PDCRG1), RAM>AR, 12692 JUMP(RC70F); ----- ----- 0F4 00020472 6C000000 ----- 12693 .ORG RC65, *CASE RMODE=5 12694 *A=NO OF TELETEXT LINES 12695 MA(LINCNT), RAM>AR, 12696 JUMP(RC70F); ----- ----- 0F5 00020472 66000000 ----- 12697 .ORG RC66, *CASE RMODE=6 12698 *A=TELETEXT ERROR COUNT 12699 MA(ERRCNT), RAM>AR, 12700 JUMP(RC70F); ----- ----- 0F6 00020472 3A000000 ----- 12701 *MAKE UP STATUS BYTE 2 12702 .ORG RC67, *CASE RMODE=7 12703 *B=STOR4 12704 MA(STOR4), RAM>BR, 12705 JUMP(RC67A); ----- ----- 0F7 00010AFF 24000000 ----- 12706 .ORG RC67A, *P=POINTER TO STOR4 LATCH FLAGS 12707 *B=STOR5 12708 MA(STOR5), RAM>BR, 12709 A(LAF0), BRHI>B, ADD, 12710 Y>PR, 12711 JUMP(RC67B); ----- ----- AFF 00010B00 A540000C ----- 12712 .ORG RC67B, *A=LATCH FLAGS FOR STOR4 12713 *P=POINTER TO STOR5 LATCH FLAGS 12714 PR>MA, RAM>AR, 12715 A(LAF0), BRHI>B, ADD, 12716 Y>PR, 12717 JUMP(RC67C); ----- ----- B00 00120B01 8040000C ----- 12718 .ORG RC67C, *Y=CAP FOR STOR4 12719 *B=LATCH FLAGS FOR STOR5 12720 PR>MA, RAM>BR, 12721 AR>A, B(CAP), AND, 12722 JUMP(RC67D); ----- ----- B01 00110B02 00800810 ----- 12723 .ORG RC67D, *NEXT SUB-PAGE CAPTURED? 12724 *A=FLAG INPUTS 12725 A(3), GPIO>B, AND, 12726 Y>AR, 12727 JZ(RC67EF,RC67ET); ----- ----- B02 00222474 0003080F ----- 12728 .ORG RC67EF, *NEXT SUB-PAGE CAPTURED, SET NSP FLAG 12729 AR>A, B(>04), OR, 12730 Y>AR, 12731 JUMP(RC67ET); ----- ----- 474 00220475 00041010 ----- 12732 * 12733 .ORG RC67ET, *Y=CAP FOR STOR5 12734 A(CAP), BR>B, AND, 12735 JUMP(RC67G); ----- ----- 475 00000B03 00800801 ----- 12736 .ORG RC67G, *NEXT NEXT SUB-PAGE CAPTURED? 12737 *B=STSWD1 12738 MA(STSWD1), RAM>BR, 12739 JZ(RC67HF,RC67HT); ----- ----- B03 00012476 14000000 ----- 12740 .ORG RC67HF, *NEXT NEXT SUB-PAGE CAPTURED, SET NNSP FLAG 12741 AR>A, B(>08), OR, 12742 Y>AR, 12743 JUMP(RC67HT); ----- ----- 476 00220477 00081010 ----- 12744 * A=STATUS WORD LO NIB, B=STSWD1 (HI NIB) 12745 .ORG RC67HT, *COMBINE LO AND HI NIBS 12746 AR.0F>A, BR.F0>B, OR, 12747 Y>PR, 12748 JUMP(RC67J); ----- ----- 477 00000B04 800010C3 ----- 12749 .ORG RC67J, *A=LINE LOCK FLAG, B=P 12750 PR>BR, 12751 A(1), PLL>B, AND, 12752 Y>AR, 12753 JUMP(RC67K); ----- ----- B04 00630B05 0001080E ----- 12754 .ORG RC67K, *OR IN LINE LOCK, STORE IN P 12755 *B=STOR0 12756 MA(STOR0), RAM>BR, 12757 AR<<4>A, BR>B, OR, 12758 Y>PR, 12759 JUMP(RC67L); ----- ----- B05 00010B06 A0001031 ----- 12760 .ORG RC67L, *B=STATUS BYTE, P=POINTER TO DISPLAY PAGE LATCH FLAGS 12761 PR>BR, 12762 A(LAF0), BRHI>B, ADD, 12763 Y>PR, 12764 JUMP(RC67M); ----- ----- B06 00410B07 8040000C ----- 12765 .ORG RC67M, *A=DISPLAY PAGE LATCH FLAGS 12766 PR>MA, RAM>AR, 12767 JUMP(RC67N); ----- ----- B07 00120B08 00000000 ----- 12768 .ORG RC67N, *A=CAP+OPN 12769 AR>A, B(CAP+OPN), AND, 12770 Y>AR, 12771 JUMP(RC67P); ----- ----- B08 00220B09 00900810 ----- 12772 .ORG RC67P, *Y=OPN OR !CAP 12773 AR>A, B(CAP), XOR, 12774 JUMP(RC67Q); ----- ----- B09 00000B0A 00801810 ----- 12775 .ORG RC67Q, *PAGE CAPTURED AND NOT OPEN? 12776 JZ(RC67SF,RC67ST); ----- ----- B0A 00002478 00000000 ----- 12777 * 12778 .ORG RC67SF, *CLEAR DPCAP FLAG IN STATUS BYTE 12779 MA(SYS2), RAM>BR, 12780 A(>7F), BR>B, AND, 12781 Y>AR, 12782 JUMP(RC67U); ----- ----- 478 00230B0B 097F0801 ----- 12783 * 12784 .ORG RC67ST, *SET DPCAP FLAG IN STATUS BYTE 12785 MA(SYS2), RAM>BR, 12786 A(>80), BR>B, OR, 12787 Y>AR, 12788 JUMP(RC67U); ----- ----- 479 00230B0B 09801001 ----- 12789 * 12790 * TCJ march 94 12791 * Add VPS bit to status byte 2 12792 * 12793 .ORG RC67U, 12794 A(TVPS), BR>B, AND, 12795 JUMP(RC67V); ----- ----- B0B 00000B0C 00100801 ----- 12796 * 12797 .ORG RC67V, *TVPS set ? 12798 JZ(RC67WF,RC67WT); ----- ----- B0C 0000247A 00000000 ----- 12799 * 12800 .ORG RC67WF, *TVPS set, 12801 *set appropriate bit in status 2 12802 AR>A, B(TVPS), OR, 12803 Y>AR, 12804 JUMP(RC70F); ----- ----- 47A 00220472 00101010 ----- 12805 * 12806 .ORG RC67WT, *TVPS not set, 12807 *clear appropriate bit in status 2 12808 AR>A, B(>FF-TVPS), AND, 12809 Y>AR, 12810 JUMP(RC70F); ----- ----- 47B 00220472 00EF0810 ----- 12811 * 12812 * A=BYTE TO SEND 12813 .ORG RC70F, *B=RCSTAT 12814 *OUTPUT BYTE 12815 MA(RCSTAT), RAM>BR, 12816 AR>A, B(0), OR, 12817 Y>RCI, 12818 JUMP(RC71); ----- ----- 472 00050B0D 2F001210 ----- 12819 .ORG RC71, *DEC RMODE 12820 MA(RCSTAT), 12821 A(->10), BR>B, ADD, 12822 Y>RAM, 12823 JUMP(RC80); ----- ----- B0D 00000AFD 2FF00101 ----- 12824 *+++COMMON EXIT FROM SEND A BYTE 12825 * BR=RCSTAT 12826 .ORG RC80, * 12827 JUMP(ST0F); ----- ----- AFD 00000001 00000000 ----- 12828 * 12829 *+++DECODE INSTRUCTION 12830 * 12831 *ENTRY POINT FROM POLL CODE TO COMPLETE DELAYED INSTRUCTION 12832 * BR=INSTRUCTION 12833 .ORG DI0, *CALL DECODE INSTRUCTION 12834 *Y=INSTRUCTION HI NIB -8 12835 A(-8), BRHI>B, ADD, 12836 JUMP(DI0AA); ----- ----- 053 00000B0E 00F8000C ----- 12837 .ORG DI0AA, *A=LAST INSTRUCTION, VALID INSTRUCTION? 12838 *Y=INSTRUCTION HIGH NIBBLE 12839 MA(LSTINS), RAM>AR, 12840 A(0), BRHI>B, OR, 12841 JN(DI1AAF,DI1AAT); ----- ----- B0E 0002447C 2E00100C ----- 12842 .ORG DI1AAF, *INVALID INSTRUCTION 12843 JUMP(DI100); ----- ----- 47C 000000D1 00000000 ----- 12844 .ORG DI1AAT, *CASE INSTRUCTION HIGH NIBBLE 12845 *Y=INSTRUCTION LOW NIBBLE 12846 *BR=RCSTAT 12847 MA(RCSTAT), RAM>BR, 12848 AR.0F>A, B(>0F), AND, 12849 JY(DI0XY); ----- ----- 47D 0001C200 2F0F08C0 ----- 12850 *///0- 12851 * BR=RCSTAT, AR=INSTRUCTION 12852 .ORG DI0XY, *CASE INS HIGH NIB=>0 12853 *Y=OPCNT 12854 A(0), BR.0F>B, OR, 12855 JY(DI00Y); ----- ----- 200 0000C210 00001002 ----- 12856 .ORG DI00Y, *CASE INS >00 12857 JUMP(DI100); ----- ----- 210 000000D1 00000000 ----- 12858 .ORG DI01, *CASE INS >01 12859 *LGSEL 12860 *OPCNT? A=USRLAN 12861 * MA(USRLAN), RAM>AR, 12862 JZ(LGS0F,LGS0T); ----- ----- 211 0000247E 00000000 ----- 12863 * 12864 .ORG DI02, *CASE INS >02 12865 *SRST 12866 JUMP(SRST0); ----- ----- 212 00000B0F 00000000 ----- 12867 .ORG DI03, *CASE INS >03 12868 *INIT 12869 *DO THE SAME AS CHNGE 1 FOR NOW ### 12870 JUMP(CHNG0); ----- ----- 213 00000B10 00000000 ----- 12871 .ORG DI04, *CASE INS >04 12872 *CHNGE1 12873 JUMP(CHNG0); ----- ----- 214 00000B10 00000000 ----- 12874 .ORG DI05, *CASE INS >05 12875 *CHNGE2 12876 JUMP(CHNG3); ----- ----- 215 000000D4 00000000 ----- 12877 .ORG DI06, *CASE INS >06 12878 *CHNGE3 12879 JUMP(CHNG0); ----- ----- 216 00000B10 00000000 ----- 12880 .ORG DI07, *CASE INS >07 12881 *CHNGE4 12882 JUMP(CHNG3); ----- ----- 217 000000D4 00000000 ----- 12883 .ORG DI08, *CASE INS >08 12884 *SETREG 12885 *OPCNT=0? 12886 *RWL=7 12887 MA(RWL), 12888 A(7), B(7), OR, 12889 Y>RAM, Y>IO, 12890 JZ(POKE0F,POKE0T); ----- ----- 218 00002484 0B075100 ----- 12891 .ORG DI09, *CASE INS >09 12892 *TEST0 12893 *OPCNT=0? 12894 *A=LAST OPERAND 12895 MA(STORE), RAM>AR, 12896 JZ(TST0F,TST0T); ----- ----- 219 00022486 77000000 ----- 12897 .ORG DI0A, *CASE INS >0A 12898 *TEST1 12899 JUMP(DI120); ----- ----- 21A 0000059C 00000000 ----- 12900 .ORG DI0B, *CASE INS >0B 12901 JUMP(DI100); ----- ----- 21B 000000D1 00000000 ----- 12902 .ORG DI0C, *CASE INS >0C 12903 JUMP(DI100); ----- ----- 21C 000000D1 00000000 ----- 12904 .ORG DI0D, *CASE INS >0D 12905 *STOP 12906 *B=RCM 12907 MA(RCM), RAM>BR, 12908 JUMP(STXT0); ----- ----- 21D 00010B11 28000000 ----- 12909 .ORG DI0E, *CASE INS >0E 12910 *START 12911 *B=RCM 12912 MA(RCM), RAM>BR, 12913 JUMP(START0); ----- ----- 21E 00010B12 28000000 ----- 12914 .ORG DI0F, *CASE INS >0F 12915 JUMP(DI100); ----- ----- 21F 000000D1 00000000 ----- 12916 */// 12917 *+++LGSEL: LANGUAGE SELECT (INCLUDED FOR UNITEXT COMPATIBILITY) 12918 * AR=USRLAN, BR=RCSTAT, LAST Y WAS OPCNT 12919 * 12920 * TCJ April 94, 209 mods 12921 * LGSEL command removed. It now performs a NOP 12922 * requiring one parameter which is ignored. 12923 * 12924 *WAIT FOR OPERAND 12925 .ORG LGS0T, *OPCNT=1 12926 A(1), BR.F0>B, 12927 OR, 12928 MA(RCSTAT), Y>RAM, 12929 JUMP(ST0F); ----- ----- 47F 00000001 2F011103 ----- 12930 * 12931 *GOT OPERAND 12932 * 12933 .ORG LGS0F, 12934 * 12935 * *CLEAR LANG FIELD IN AR COPY OF USRLAN 12936 * *BR=LAST OPERAND 12937 * MA(STORE), RAM>BR, 12938 * AR>A, B(%11001111), AND, 12939 * Y>AR, 12940 * JUMP(LGS2); 12941 *ORG LGS2, *Y=LG10 12942 * A(%00010000), BR>B, AND, 12943 * JUMP(LGS3); 12944 *.ORG LGS3, *Y=LG01 12945 * *LG10? 12946 * A(%00000001), BR>B, AND, 12947 * JZ(LGS4F,LGS4T); 12948 *.ORG LGS4F, *LG10 12949 * *SET LANG FIELD TO 10 12950 * MA(USRLAN), 12951 * AR>A, B(%00100000), OR, 12952 * Y>RAM, 12953 * JUMP(DI120); 12954 *.ORG LGS4T, *LG01? 12955 * JZ(LGS5F,LGS5T); 12956 *.ORG LGS5F, *LG01 12957 * *SET LANG FIELD TO 01 12958 * MA(USRLAN), 12959 * AR>A, B(%00010000), OR, 12960 * Y>RAM, 12961 * JUMP(DI120); 12962 *.ORG LGS5T, *NOT LG10 OR LG01 12963 * *ELSE SET LANG FIELD TO 00 12964 * MA(USRLAN), 12965 * AR>A, B(0), OR, 12966 * Y>RAM, 12967 * 12968 JUMP(DI120); ----- ----- 47E 0000059C 00000000 ----- 12969 * 12970 *+++STXT: STOP TELETEXT RECEPTION 12971 * B=RCM 12972 .ORG STXT0, *TOFF=1 12973 MA(RCM), 12974 A(TOFF), BR>B, OR, 12975 Y>RAM, 12976 JUMP(STXT1); ----- ----- B11 00000B13 28801101 ----- 12977 .ORG STXT1, *ERRCNT=0 12978 MA(ERRCNT), 12979 Y(0), 12980 Y>RAM, 12981 JUMP(STXT2); ----- ----- B13 00000B14 3A001100 ----- 12982 .ORG STXT2, *CALL CDTXT0 TO CLOSE DOWN TELETEXT 12983 *RETURN=0, RETURN TO STXT10T 12984 MA(RETURN), 12985 Y(0), 12986 Y>RAM, 12987 JUMP(CDTXT0); ----- ----- B14 0000095D 7C001100 ----- 12988 .ORG STXT10T, * 12989 JUMP(DI120); ----- ----- 65F 0000059C 00000000 ----- 12990 *+++START: SET ROLLING HEADER 12991 * B=RCM 12992 .ORG START0, *TOFF=0 12993 MA(RCM), 12994 A(>FF-TOFF), BR>B, AND, 12995 Y>RAM, 12996 JUMP(START1); ----- ----- B12 00000B15 287F0901 ----- 12997 .ORG START1, *ERRCNT=0 12998 MA(ERRCNT), 12999 Y(0), 13000 Y>RAM, 13001 JUMP(DI120); ----- ----- B15 0000059C 3A001100 ----- 13002 *+++POKE DATA TO SCRATCH RAM AND IO REGISTERS 13003 * RWL=7 13004 .ORG POKE0T, *OPCNT==0 13005 *OPCNT=2 13006 MA(RCSTAT), 13007 A(2), BR.F0>B, ADD, 13008 Y>RAM, 13009 JUMP(ST0F); ----- ----- 485 00000001 2F020103 ----- 13010 .ORG POKE0F, *OPCNT!=0 13011 *PR=-2 (INDEX TO 1ST OPERAND) 13012 Y(-2), 13013 Y>PR, 13014 JUMP(POKE1); ----- ----- 484 00000B16 80FE1000 ----- 13015 .ORG POKE1, *READ 1ST OPERAND 13016 RVDP, 13017 JUMP(POKE2); ----- ----- B16 00000B17 00008000 ----- 13018 .ORG POKE2, *P= ADDRESS 13019 *A= DATA 13020 MA(STORE), RAM>AR, 13021 TPD>A, B(>7F), AND, 13022 Y>PR, 13023 JUMP(POKE3); ----- ----- B17 00020B18 F77F0890 ----- 13024 .ORG POKE3, *WRITE DATA TO SCRATCH RAM AND IO SPACE 13025 PR>MA, 13026 AR>A, B(0), OR, 13027 Y>RAM, Y>IO, 13028 JUMP(DI100); ----- ----- B18 001000D1 00005110 ----- 13029 *+++TEST0: DISPLAY A STORE FOR DEBUG 13030 * A=LAST OPERAND, B=RCSTAT 13031 .ORG TST0T, *OPCNT=1 13032 MA(RCSTAT), 13033 A(1), BR.F0>B, OR, 13034 Y>RAM, 13035 JUMP(ST0F); ----- ----- 487 00000001 2F011103 ----- 13036 .ORG TST0F, *POINT TO STORE INDICATED IN OPERAND 13037 AR.0F>A, B(STOR0), ADD, 13038 Y>PR, 13039 JUMP(TST1); ----- ----- 486 00000B19 802000C0 ----- 13040 .ORG TST1, *A=LATCH FOR THIS STORE 13041 PR>MA, RAM>AR, 13042 JUMP(TST2); ----- ----- B19 00120B1A 00000000 ----- 13043 .ORG TST2, *DISPLAY STORE, ENABLE ALL ROWS 13044 MA(VDP0), 13045 ARHI>A, B(>70), OR, 13046 Y>IO, 13047 JUMP(DI100); ----- ----- B1A 000000D1 00705020 ----- 13048 *///1- 13049 * BR=RCSTAT, AR=INSTRUCTION 13050 .ORG DI1X, *CASE INS HIGH NIB=>1 13051 *Y=VBI, B=SCREEN 13052 MA(SCREEN), RAM>BR, 13053 A(%01000000), RCS>B, AND, 13054 JY(DI10Y); ----- ----- 201 0001C220 6040080B ----- 13055 .ORG DI10Y, *CASE INS >10 13056 *UPDATE 13057 *AR=VDPTXT 13058 *Y=TDISP 13059 MA(VDPTXT), RAM>AR, 13060 A(TDISP), BR>B, AND, 13061 JZ(UPD0F,UPD0T); ----- ----- 220 00022488 2B040801 ----- 13062 *ENTRY POINT FROM CLOCK 13063 * A=INSTRUCTION, B=SCREEN, LAST Y WAS VBI 13064 .ORG DI11, *CASE INS >11 13065 *SPAGE, IN VBI? 13066 *Y=TDISP 13067 A(TDISP), BR>B, AND, 13068 JZ(TPM0F,TPM0T); ----- ----- 221 0000248A 00040801 ----- 13069 .ORG DI12, *CASE INS >12 13070 *TIME, IN VBI? 13071 *Y=TDISP 13072 A(TDISP), BR>B, AND, 13073 JZ(TPM0F,TPM0T); ----- ----- 222 0000248A 00040801 ----- 13074 .ORG DI13, *CASE INS >13 13075 *EXPAND 13076 *AR=VDPTXT 13077 *Y=TDISP 13078 MA(VDPTXT), RAM>AR, 13079 A(TDISP), BR>B, AND, 13080 JUMP(EXP0); ----- ----- 223 00020B1B 2B040801 ----- 13081 .ORG DI14, *CASE INS >14 13082 *PPAGE 13083 *Y=TDISP, BR=PEN 13084 MA(PEN), RAM>BR, 13085 A(TDISP), BR>B, AND, 13086 JUMP(PPAGE0); ----- ----- 224 00010B1C 1B040801 ----- 13087 .ORG DI15, *CASE INS >15 13088 *DPAGE 13089 *VBI? 13090 *Y=TDISP 13091 *B=PEN 13092 MA(PEN), RAM>BR, 13093 A(TDISP), BR>B, AND, 13094 JZ(DIP0F,DIP0T); ----- ----- 225 0001248C 1B040801 ----- 13095 .ORG DI16, *CASE INS >16 13096 *IPAGE 13097 *VBI? 13098 *Y=TDISP 13099 *B=PEN 13100 MA(PEN), RAM>BR, 13101 A(TDISP), BR>B, AND, 13102 JZ(DIP0F,DIP0T); ----- ----- 226 0001248C 1B040801 ----- 13103 * 13104 * TCJ Dec 93 13105 * Adding of STBRW bit for subtitle browse, the normal 13106 * browse command must clear this bit. 13107 * 13108 .ORG DI17, *CASE INS >17 13109 *BROWSE 13110 *AR=VPPRG2 13111 MA(DHREG), RAM>AR, 13112 JUMP(TCJDI7A); ----- ----- 227 00020B1D 32000000 ----- 13113 * 13114 .ORG TCJDI7A, *STBRW=0 13115 MA(DHREG), 13116 AR>A, B(>FF-STBRW), AND, 13117 Y>RAM, 13118 JUMP(TCJDI7B); ----- ----- B1D 00000B1E 32FD0910 ----- 13119 * 13120 .ORG TCJDI7B, *Y=VBI, B=SCREEN 13121 A(%01000000), RCS>B, AND, 13122 JUMP(TCJDI7C); ----- ----- B1E 00000B1F 0040080B ----- 13123 * 13124 .ORG TCJDI7C, *AR=VPPRG1 13125 *Y=TDISP, IN VBI? 13126 MA(VPPRG1), RAM>AR, 13127 A(TDISP), BR>B, AND, 13128 JZ(BROWSE0F,BROWSE0T); ----- ----- B1F 0002248E 61040801 ----- 13129 * 13130 .ORG DI18, *CASE INS >18 13131 *THOLD 13132 *Y=TDISP 13133 *IN VBI? 13134 MA(VDPTXT), RAM>BR, 13135 A(TDISP), BR>B, AND, 13136 JZ(HOLD0F,HOLD0T); ----- ----- 228 00012490 2B040801 ----- 13137 .ORG DI19, *CASE INS >19 13138 *CHOLD 13139 *Y=TDISP 13140 *IN VBI? 13141 MA(VDPTXT), RAM>BR, 13142 A(TDISP), BR>B, AND, 13143 JZ(HOLD0F,HOLD0T); ----- ----- 229 00012490 2B040801 ----- 13144 .ORG DI1A, *CASE INS >1A 13145 *THOLD 13146 *Y=TDISP 13147 *IN VBI? 13148 MA(VDPTXT), RAM>BR, 13149 A(TDISP), BR>B, AND, 13150 JZ(HOLD0F,HOLD0T); ----- ----- 22A 00012490 2B040801 ----- 13151 .ORG DI1B, *CASE INS >1B 13152 JUMP(DI100); ----- ----- 22B 000000D1 00000000 ----- 13153 .ORG DI1C, *CASE INS >1C 13154 *REVEAL 13155 *AR=VDPTXT 13156 MA(VDPTXT), RAM>AR, 13157 JUMP(REV0); ----- ----- 22C 00020B20 2B000000 ----- 13158 *ENTRY POINT FROM R24PIC 13159 .ORG DI1D, *CASE INS >1D 13160 *CSTAT 13161 *JUMP INTO STAT0 CODE 13162 *AR=EXPREG, 13163 MA(EXPREG), RAM>AR, 13164 JUMP(STAT2F); ----- ----- 22D 000204E6 63000000 ----- 13165 .ORG DI1E, *CASE INS >1E 13166 *SSTAT 13167 *SET Y=0 AND JUMP INTO STAT0 CODE 13168 *AR=EXPREG, 13169 MA(EXPREG), RAM>AR, 13170 Y(0), 13171 JUMP(STAT1); ----- ----- 22E 00020B21 63001000 ----- 13172 .ORG DI1F, *CASE INS >1F 13173 *TSTAT 13174 *AR=EXPREG, 13175 MA(EXPREG), RAM>AR, 13176 JUMP(STAT0); ----- ----- 22F 00020B22 63000000 ----- 13177 */// 13178 *+++UPDATE 13179 * LAST Y WAS TDISP, BR=SCREEN, AR=VDPTXT 13180 *INSIDE VBI, DELAY 13181 .ORG UPD0F, *A=POLREG 13182 MA(POLREG), RAM>AR, 13183 JUMP(DI110); ----- ----- 488 00020572 10000000 ----- 13184 *OUTSIDE VBI 13185 .ORG UPD0T, *TELETEXT DISPLAY? 13186 *Y=UPD 13187 *BR=PEN 13188 MA(PEN), RAM>BR, 13189 AR>A, B(UPD), AND, 13190 JZ(UPD1F,UPD1T); ----- ----- 489 00012492 1B200810 ----- 13191 .ORG UPD1T, *NO TELETEXT DISPLAY, UPDATE IS INVALID 13192 JUMP(DI100); ----- ----- 493 000000D1 00000000 ----- 13193 .ORG UPD1F, *TELETEXT DISPLAY, UPD? 13194 JZ(UPD2F,UPD2T); ----- ----- 492 00002494 00000000 ----- 13195 .ORG UPD2F, *ALREADY IN UPDATE, CLEAR IT 13196 *UPD=0 13197 MA(VDPTXT), 13198 AR>A, B(>FF-UPD), AND, 13199 Y>RAM, 13200 JUMP(DI120); ----- ----- 494 0000059C 2BDF0910 ----- 13201 *SET UPDATE, GRUNDIG REQUESTED THAT THIS SHOULD BE POSSIBLE EVEN IN 13202 *HOLD AND INCOMPLETE PAGE! 13203 .ORG UPD2T, *CLEAR C8YET, UEXT AND UEXB IN AR COPY OF VDPTXT 13204 AR>A, B(>FF-C8YET-UEXT-UEXB), AND, 13205 Y>AR, 13206 JUMP(UPD3); ----- ----- 495 00220B23 00EC0810 ----- 13207 .ORG UPD3, *UPD=1, C8YET=0 13208 MA(VDPTXT), 13209 AR>A, B(UPD), OR, 13210 Y>RAM, 13211 JUMP(UPD4); ----- ----- B23 00000B24 2B201110 ----- 13212 .ORG UPD4, *Y=PEN-4 13213 A(-4), BRHI>B, ADD, 13214 JUMP(UPD5); ----- ----- B24 00000B25 00FC000C ----- 13215 .ORG UPD5, *SUB-PAGE MODE? 13216 *Y=PEN 13217 A(0), BRHI>B, OR, 13218 JN(UPD6F,UPD6T); ----- ----- B25 00004496 0000100C ----- 13219 .ORG UPD6F, *SUB-PAGE MODE 13220 *SET TIMOUT TO TERMINATE TIME OUT IN NEXT VPP 13221 MA(TIMOUT), 13222 Y(1), 13223 Y>RAM, 13224 JUMP(DI120); ----- ----- 496 0000059C 3B011100 ----- 13225 .ORG UPD6T, *MAIN PAGE MODE, IS IT COMPLETE? 13226 *SET TIMOUT TO TERMINATE TIME OUT IN NEXT VPP 13227 MA(TIMOUT), 13228 Y(1), 13229 Y>RAM, 13230 JZ(UPD7F,UPD7T); ----- ----- 497 0000249E 3B011100 ----- 13231 .ORG UPD7T, *COMPLETE MAIN PAGE 13232 JUMP(DI120); ----- ----- 49F 0000059C 00000000 ----- 13233 .ORG UPD7F, *INCOMPLETE MAIN PAGE, NEED TO GO TO PREVIOUS PAGE 13234 *CALL PPDP0 13235 *P=0, RETURN TO PPAGE2Y 13236 MA(DPU), RAM>AR, RAM>BR, 13237 Y(0), 13238 Y>PR, 13239 JUMP(PPDP0); ----- ----- 49E 000304BE EA001000 ----- 13240 *+++TPM: TIME PAGE MODE (SPMODE, TIME, CLOCK) 13241 * LAST Y WAS TDISP, BR=SCREEN, AR=INSTRUCTION 13242 *INSIDE VBI, DELAY IT 13243 .ORG TPM0F, *A=POLREG 13244 MA(POLREG), RAM>AR, 13245 JUMP(DI110); ----- ----- 48A 00020572 10000000 ----- 13246 .ORG TPM0T, *OUTSIDE VBI 13247 *Y=MNDP0+MNDP1 13248 *TELETEXT DISPLAY? 13249 *Y=SPAGE-INSTRUCTION 13250 NAR>A, B(>11), O>CIN, ADD, 13251 JZ(TPM1F,TPM1T); ----- ----- 48B 000024A0 00110440 ----- 13252 .ORG TPM1F, *TELETEXT DISPLAY 13253 *Y=CLOCK-INSTRUCTION 13254 NAR>A, B(>4A), O>CIN, ADD, 13255 JUMP(TPM2); ----- ----- 4A0 00000B26 004A0440 ----- 13256 .ORG TPM2, *CLOCK? 13257 *BR=PEN 13258 MA(PEN), RAM>BR, 13259 JZ(SPMOD0F,TPM3T); ----- ----- B26 000124A2 1B000000 ----- 13260 .ORG TPM3T, *CLOCK COMMAND WITH TELETEXT DISPLAY 13261 *NO ACTION 13262 JUMP(DI100); ----- ----- 4A3 000000D1 00000000 ----- 13263 .ORG TPM1T, *NO TEXT DISPLAY 13264 *SPAGE? 13265 A(MNDP0+MNDP1), BR>B, AND, 13266 JZ(TPM4F,TPM4T); ----- ----- 4A1 000024A4 00030801 ----- 13267 .ORG TPM4T, *SPAGE COMMAND WITH NO TEXT DISPLAY 13268 *NO ACTION 13269 JUMP(DI100); ----- ----- 4A5 000000D1 00000000 ----- 13270 .ORG TPM4F, *MENU PAGE DISPLAYED? 13271 *Y=SCREEN MSN 13272 *AR=VDPTXT 13273 MA(VDPTXT), RAM>AR, 13274 A(0), BR.F0>B, OR, 13275 JZ(TPM5F,TPM5T); ----- ----- 4A4 000224A6 2B001003 ----- 13276 .ORG TPM5T, *NOT A MENU DISPLAY PAGE, GO TO CLOCK 13277 JUMP(CLOCK0T); ----- ----- 4A7 000004A9 00000000 ----- 13278 .ORG TPM5F, *YES, GO TO CLOCK IF IN TV MODE 13279 JZ(TPM6F,CLOCK0T); ----- ----- 4A6 000024A8 00000000 ----- 13280 .ORG TPM6F, *MENU PAGE VISIBLE, INHIBIT CLOCK 13281 JUMP(DI100); ----- ----- 4A8 000000D1 00000000 ----- 13282 *+++CLOCK 13283 * AR=VDPTXT 13284 .ORG CLOCK0T, *TOGGLE UCLK 13285 MA(VDPTXT), 13286 AR>A, B(UCLK), XOR, 13287 Y>RAM, 13288 JUMP(DI120); ----- ----- 4A9 0000059C 2B801910 ----- 13289 *+++SUB-PAGE MODE 13290 * BR=PEN, 13291 .ORG SPMOD0F, *Y=PEN-4 13292 *A=VDPTXT 13293 MA(VDPTXT), RAM>AR, 13294 A(-4), BRHI>B, ADD, 13295 JUMP(SPMOD1); ----- ----- 4A2 00020B27 2BFC000C ----- 13296 .ORG SPMOD1, *PEN<4? 13297 *IF NO, SUB-PAGE MODE ALREADY, RETURN TO MAIN PAGE MODE 13298 *CLEAR UPDATE MODE 13299 MA(VDPTXT), 13300 AR>A, B(>FF-UPD), AND, 13301 Y>RAM, 13302 JN(SPMOD1AF,SPMOD1AT); ----- ----- B27 000044AA 2BDF0910 ----- 13303 *CLEARING SUB-PAGE MODE 13304 .ORG SPMOD1AF, *B=EXPREG 13305 MA(EXPREG), RAM>BR, 13306 JUMP(SPMOD1B); ----- ----- 4AA 00010B28 63000000 ----- 13307 .ORG SPMOD1B, *CGAP=CPRF=1 TO GENERATE MAIN PAGE MENU DISPLAY 13308 MA(EXPREG), 13309 A(CGAP+CPRF), BR>B, OR, 13310 Y>RAM, 13311 JUMP(CMPE0); ----- ----- B28 000004DF 630C1101 ----- 13312 *SETTING SUB-PAGE MODE 13313 .ORG SPMOD1AT, *Y=PEN 13314 *A=DHREG 13315 MA(DHREG), RAM>AR, 13316 A(0), BR.F0>B, OR, 13317 JUMP(SPMOD2); ----- ----- 4AB 00020B29 32001003 ----- 13318 *SET SUB-PAGE MODE 13319 .ORG SPMOD2, *COMPLETE PAGE ENTERED? 13320 *Y=NRH 13321 *A=VPPRG1 13322 MA(VPPRG1), RAM>AR, 13323 AR>A, B(NRH), AND, 13324 JZ(SPMOD3F,SPMOD3T); ----- ----- B29 000224AC 61100810 ----- 13325 *INCOMPLETE MAIN-PAGE NUMBER ENTERED 13326 .ORG SPMOD3F, *COPY PREV PAGE TO DISPLAY PAGE 13327 *PMPN=1 13328 MA(VPPRG1), 13329 AR>A, B(PMPN), OR, 13330 Y>RAM, 13331 JUMP(SPMOD4); ----- ----- 4AC 00000B2A 61201110 ----- 13332 .ORG SPMOD4, *COPY PREV PAGE TO DISPLAY PAGE 13333 *CALL PPDP0 13334 *P=2, RETURN TO SPMOD5 13335 *A=DPU, B=DPU 13336 MA(DPU), RAM>AR, RAM>BR, 13337 Y(2), 13338 Y>PR, 13339 JUMP(PPDP0); ----- ----- B2A 000304BE EA021000 ----- 13340 .ORG SPMOD5, * 13341 JUMP(SPMOD10T); ----- ----- 49A 000004AF 00000000 ----- 13342 *###? This routine sets up the sub-page background latches for the 13343 * next two sub-pages after the sub-page captured. If the main 13344 * page has not been captured, the backgound latches are set to 13345 * look for sub-page 1 and 2. Approx 15 instructions could be 13346 * saved if the code is altered to always capture sub-pages 1 13347 * and 2 until the user enters a sub-page. 13348 * 13349 .ORG SPMOD3T, *COMPLETE MAIN PAGE ENTERED, CAPTURED IT? 13350 *AR=STOR0 13351 *PR=INDEX TO SPX, SPI 13352 MA(STOR0), RAM>AR, 13353 Y(-15), 13354 Y>PR, 13355 JZ(SPMOD10F,SPMOD10T); ----- ----- 4AD 000224AE A0F11000 ----- 13356 *MAIN PAGE HAS BEEN CAPTURED, GET SUB-PAGE FROM PAGE RAM 13357 * A=STOR0, P= INDEX TO SPX, SPI 13358 .ORG SPMOD10F, *RWL=DISPLAY LATCH 13359 MA(RWL), 13360 ARHI>A, B(7), AND, 13361 Y>RAM, Y>IO, 13362 JUMP(SPMOD11); ----- ----- 4AE 00000B2B 0B074920 ----- 13363 .ORG SPMOD11, *BR=USPI 13364 *TPD=SPX, SPI 13365 RVDP, 13366 MA(USPI), RAM>BR, 13367 JUMP(SPMOD12); ----- ----- B2B 00010B2C 58008000 ----- 13368 .ORG SPMOD12, *AR=SPX, SPI (MASK C4) 13369 TPD>A, B(%01111111), AND, 13370 Y>AR, 13371 JUMP(SPMOD13); ----- ----- B2C 00220B2D 007F0890 ----- 13372 .ORG SPMOD13, *UPDATE USPI 13373 MA(USPI), 13374 AR<<4>A, BR.0F>B, OR, 13375 Y>RAM, 13376 JUMP(SPMOD14); ----- ----- B2D 00000B2E 58001132 ----- 13377 .ORG SPMOD14, *BR=USPX 13378 *PR=INDEX TO SPM, SPC 13379 MA(USPX), RAM>BR, 13380 Y(-14), 13381 Y>PR, 13382 JUMP(SPMOD15); ----- ----- B2E 00010B2F D9F21000 ----- 13383 .ORG SPMOD15, *UPDATE USPX 13384 *TPD=SPM, SPC 13385 RVDP, 13386 MA(USPX), 13387 AR.F0>A, BR.0F>B, OR, 13388 Y>RAM, 13389 JUMP(SPMOD16); ----- ----- B2F 00000B30 590091D2 ----- 13390 .ORG SPMOD16, *BR=USPC 13391 *AR=SPM, SPC (C5, C6 MASKED) 13392 MA(USPC), RAM>BR, 13393 TPD>A, B(%00111111), AND, 13394 Y>AR, 13395 JUMP(SPMOD17); ----- ----- B30 00230B31 5A3F0890 ----- 13396 .ORG SPMOD17, *UPDATE USPC 13397 MA(USPC), 13398 AR<<4>A, BR.0F>B, OR, 13399 Y>RAM, 13400 JUMP(SPMOD18); ----- ----- B31 00000B32 5A001132 ----- 13401 .ORG SPMOD18, *BR=USPM 13402 MA(USPM), RAM>BR, 13403 JUMP(SPMOD19); ----- ----- B32 00010B33 5B000000 ----- 13404 .ORG SPMOD19, *UPDATE USPM 13405 MA(USPM), 13406 AR.F0>A, BR.0F>B, OR, 13407 Y>RAM, 13408 JUMP(SPMOD20); ----- ----- B33 00000B34 5B0011D2 ----- 13409 .ORG SPMOD20, *A=VPPRG1 13410 MA(VPPRG1), RAM>AR, 13411 JUMP(SPMOD30T); ----- ----- B34 000204B3 61000000 ----- 13412 *MAIN PAGE HAS NOT BEEN CAPTURED, INIT USP TO ZEROS 13413 *ENTRY POINT FROM INCOMPLETE PAGE 13414 .ORG SPMOD10T, *CALL CUSP0 13415 *RETURN=0, RETURN TO SPMOD30T 13416 MA(RETURN), 13417 Y(0), 13418 Y>RAM, 13419 JUMP(CUSP0); ----- ----- 4AF 00000B35 7C001100 ----- 13420 * 13421 *+++ CLEAR USER SUB-PAGE 13422 * RETURN=RETURN POINTER 13423 .ORG CUSP0, *P=USPI 13424 Y(USPI), 13425 Y>PR, 13426 JUMP(CUSP30); ----- ----- B35 00000B36 80581000 ----- 13427 *LOOP START 13428 .ORG CUSP30, *B=P 13429 *A=USPx 13430 PR>BR, 13431 PR>MA, RAM>AR, 13432 JUMP(CUSP31); ----- ----- B36 00530B37 00000000 ----- 13433 .ORG CUSP31, *Y=P-USPM 13434 A(-USPM), BR>B, ADD, 13435 JUMP(CUSP32); ----- ----- B37 00000B38 00A50001 ----- 13436 .ORG CUSP32, *CLEAR USPx 13437 *LAST CLEAR? 13438 PR>MA, 13439 AR.0F>A, B(0), OR, 13440 Y>RAM, 13441 JZ(CUSP33F,CUSP33T); ----- ----- B38 001024B0 000011C0 ----- 13442 .ORG CUSP33F, *NO, INC P 13443 A(1), BR>B, ADD, 13444 Y>PR, 13445 JUMP(CUSP30); ----- ----- 4B0 00000B36 80010001 ----- 13446 *LOOP END 13447 .ORG CUSP33T, *A=RETURN 13448 MA(RETURN), RAM>AR, 13449 JUMP(CUSP40); ----- ----- 4B1 00020B39 7C000000 ----- 13450 .ORG CUSP40, *A=VPPRG1 FOR SPMOD30T CODE 13451 *Y=RETURN 13452 MA(VPPRG1), RAM>AR, 13453 AR>A, B(1), AND, 13454 JUMP(CUSP41); ----- ----- B39 00020B3A 61010810 ----- 13455 .ORG CUSP41, *RETURN? 13456 JZ(DIP43F,SPMOD30T); ----- ----- B3A 000024B2 00000000 ----- 13457 *COMMON SET SUB-PAGE CODE 13458 * A=VPPRG1 13459 .ORG SPMOD30T, *SPIN=1, HOSP=0, PCSP=0 13460 MA(VPPRG1), 13461 AR.F0>A, B(SPIN), OR, 13462 Y>RAM, 13463 JUMP(SPMOD34); ----- ----- 4B3 00000B3B 610111D0 ----- 13464 .ORG SPMOD34, *A=DHREG 13465 MA(DHREG), RAM>AR, 13466 JUMP(SPMOD35); ----- ----- B3B 00020B3C 32000000 ----- 13467 .ORG SPMOD35, *ICP=1 13468 MA(DHREG), 13469 AR>A, B(ICP), OR, 13470 Y>RAM, 13471 JUMP(SPMOD40); ----- ----- B3C 00000B3D 32401110 ----- 13472 .ORG SPMOD40, *B=PEN 13473 MA(PEN), RAM>BR, 13474 JUMP(SPMOD41); ----- ----- B3D 00010B3E 1B000000 ----- 13475 .ORG SPMOD41, *PEN=4 13476 MA(PEN), 13477 A(>40), BR.0F>B, OR, 13478 Y>RAM, 13479 JUMP(SPMOD42); ----- ----- B3E 00000B3F 1B401102 ----- 13480 *IF TOP AND NOT MENU MODE, SWAP STORES 4 AND 6 TO KEEP TOP1 13481 .ORG SPMOD42, *A=SYS1 13482 MA(SYS1), RAM>AR, 13483 JUMP(SPMOD43); ----- ----- B3F 00020B40 08000000 ----- 13484 .ORG SPMOD43, *B=SCREEN 13485 *Y=PCM-1 13486 MA(SCREEN), RAM>BR, 13487 ARHI>A, B(-1), ADD, 13488 JUMP(SPMOD44); ----- ----- B40 00010B41 60FF0020 ----- 13489 .ORG SPMOD44, *Y=MENM, A=STOR4 13490 *TOP? 13491 MA(STOR4), RAM>AR, 13492 A(MENM), BR>B, AND, 13493 JZ(SPMOD45F,SPMOD45T); ----- ----- B41 000224B4 24080801 ----- 13494 .ORG SPMOD45F, *NOT TOP MODE 13495 JUMP(SPMOD50F); ----- ----- 4B4 000004B6 00000000 ----- 13496 .ORG SPMOD45T, *TOP MODE, MENU MODE? 13497 *B=STOR6 13498 MA(STOR6), RAM>BR, 13499 JZ(SPMOD50F,SPMOD46T); ----- ----- 4B5 000124B6 26000000 ----- 13500 *OK TO SWAP STORES 13501 .ORG SPMOD46T, *STORE 4-> 6 13502 MA(STOR6), 13503 AR.F0>A, BR.0F>B, OR, 13504 Y>RAM, 13505 JUMP(SPMOD47); ----- ----- 4B7 00000B42 260011D2 ----- 13506 .ORG SPMOD47, *STORE 6-> 4 13507 MA(STOR4), 13508 AR.0F>A, BR.F0>B, OR, 13509 Y>RAM, 13510 JUMP(SPMOD48); ----- ----- B42 00000B43 240011C3 ----- 13511 .ORG SPMOD48, *A=SYS2 13512 MA(SYS2), RAM>AR, 13513 JUMP(SPMOD49); ----- ----- B43 00020B44 09000000 ----- 13514 .ORG SPMOD49, *S6T1=1 13515 MA(SYS2), 13516 AR>A, B(S6T1), OR, 13517 Y>RAM, 13518 JUMP(SPMOD50F); ----- ----- B44 000004B6 09201110 ----- 13519 * 13520 .ORG SPMOD50F, *A=STOR0 13521 MA(STOR0), RAM>AR, 13522 JUMP(SPMOD51); ----- ----- 4B6 00020B45 20000000 ----- 13523 .ORG SPMOD51, *B=LFSP0 13524 MA(LFSP0), RAM>BR, 13525 JUMP(SPMOD52); ----- ----- B45 00010B46 48000000 ----- 13526 .ORG SPMOD52, *LFSP0= STORE 0 LATCH 13527 MA(LFSP0), 13528 ARHI>A, BR.F0>B, OR, 13529 Y>RAM, 13530 JUMP(SPMOD53); ----- ----- B46 00000B47 48001123 ----- 13531 .ORG SPMOD53, *LFPCL0= STORE 0 LATCH, MSP0=7 13532 MA(SPREG0), 13533 AR.F0>A, B(>07), OR, 13534 Y>RAM, 13535 JUMP(SPMOD54); ----- ----- B47 00000B48 540711D0 ----- 13536 .ORG SPMOD54, *LFPCL1= STORE 0 LATCH, MSP1=7 13537 MA(SPREG1), 13538 AR.F0>A, B(>07), OR, 13539 Y>RAM, 13540 JUMP(SPMOD55); ----- ----- B48 00000B49 550711D0 ----- 13541 .ORG SPMOD55, *LFPCL2= STORE 0 LATCH, MSP2=7 13542 MA(SPREG2), 13543 AR.F0>A, B(>07), OR, 13544 Y>RAM, 13545 JUMP(SPMOD60); ----- ----- B49 00000B4A 560711D0 ----- 13546 *INIT STORE 4 13547 .ORG SPMOD60, *A=STOR4 13548 MA(STOR4), RAM>AR, 13549 JUMP(SPMOD61); ----- ----- B4A 00020B4B 24000000 ----- 13550 .ORG SPMOD61, *B=LFSP1 13551 *P= INDEX TO LATCH FLAGS FOR STORE 4 (LAFx) 13552 MA(LFSP1), RAM>BR, 13553 ARHI>A, B(LAF0), ADD, 13554 Y>PR, 13555 JUMP(SPMOD62); ----- ----- B4B 00010B4C C9400020 ----- 13556 .ORG SPMOD62, *LAFx=0 (CLEAR LATCH FLAGS) 13557 PR>MA, 13558 Y(0), 13559 Y>RAM, 13560 JUMP(SPMOD63); ----- ----- B4C 00100B4D 00001100 ----- 13561 .ORG SPMOD63, *LFSP1= LATCH FOR STORE 4 13562 MA(LFSP1), 13563 ARHI>A, BR.F0>B, OR, 13564 Y>RAM, 13565 JUMP(SPMOD64); ----- ----- B4D 00000B4E 49001123 ----- 13566 .ORG SPMOD64, *P= INDEX TO STORE 4 MAGS 13567 ARHI>A, B(M0), ADD, 13568 Y>PR, 13569 JUMP(SPMOD65); ----- ----- B4E 00000B4F 80100020 ----- 13570 .ORG SPMOD65, *B= Mx 13571 PR>MA, RAM>BR, 13572 JUMP(SPMOD66); ----- ----- B4F 00110B50 00000000 ----- 13573 .ORG SPMOD66, *PUT NULL VALUE IN MAG 13574 PR>MA, 13575 A(>0F), BR.F0>B, OR, 13576 Y>RAM, Y>IO, 13577 JUMP(SPMOD70); ----- ----- B50 00100B51 000F5103 ----- 13578 *INIT STORE 5 13579 .ORG SPMOD70, *A=STOR5 13580 MA(STOR5), RAM>AR, 13581 JUMP(SPMOD71); ----- ----- B51 00020B52 25000000 ----- 13582 .ORG SPMOD71, *B=LFSP2 13583 *P= INDEX TO LATCH FLAGS FOR STORE 5 (LAFx) 13584 MA(LFSP2), RAM>BR, 13585 ARHI>A, B(LAF0), ADD, 13586 Y>PR, 13587 JUMP(SPMOD72); ----- ----- B52 00010B53 CA400020 ----- 13588 .ORG SPMOD72, *LAFx=0 (CLEAR LATCH FLAGS) 13589 PR>MA, 13590 Y(0), 13591 Y>RAM, 13592 JUMP(SPMOD73); ----- ----- B53 00100B54 00001100 ----- 13593 .ORG SPMOD73, *LFSP2= LATCH FOR STORE 5 13594 MA(LFSP2), 13595 ARHI>A, BR.F0>B, OR, 13596 Y>RAM, 13597 JUMP(SPMOD74); ----- ----- B54 00000B55 4A001123 ----- 13598 .ORG SPMOD74, *P= INDEX TO STORE 5 MAGS 13599 ARHI>A, B(M0), ADD, 13600 Y>PR, 13601 JUMP(SPMOD75); ----- ----- B55 00000B56 80100020 ----- 13602 .ORG SPMOD75, *B= Mx 13603 PR>MA, RAM>BR, 13604 JUMP(SPMOD76); ----- ----- B56 00110B57 00000000 ----- 13605 .ORG SPMOD76, *PUT NULL VALUE IN MAG 13606 PR>MA, 13607 A(>0F), BR.F0>B, OR, 13608 Y>RAM, Y>IO, 13609 JUMP(SPMOD77); ----- ----- B57 00100B58 000F5103 ----- 13610 .ORG SPMOD77, *DHREG 13611 MA(DHREG), RAM>AR, 13612 JUMP(SPMOD78); ----- ----- B58 00020B59 32000000 ----- 13613 .ORG SPMOD78, *NRH=1 13614 MA(DHREG), 13615 AR>A, B(NRH), OR, 13616 Y>RAM, 13617 JUMP(PAGEA); ----- ----- B59 00000B5A 32101110 ----- 13618 *+++EXPAND 13619 * AR=VDPTXT, LAST Y WAS TDISP 13620 .ORG EXP0, *Y=UPD 13621 *TELETEXT DISPLAY? 13622 AR>A, B(UPD), AND, 13623 JZ(EXP1F,EXP1T); ----- ----- B1B 000024B8 00200810 ----- 13624 .ORG EXP1T, *NO TELETEXT DISPLAY 13625 JUMP(DI100); ----- ----- 4B9 000000D1 00000000 ----- 13626 .ORG EXP1F, *UPDATE MODE? 13627 *Y=UEXT+UEXB? 13628 AR>A, B(UEXT+UEXB), AND, 13629 JZ(EXP2F,EXP2T); ----- ----- 4B8 000024BA 00030810 ----- 13630 .ORG EXP2F, *UPDATE MODE, EXPAND NOT ALLOWED 13631 JUMP(DI100); ----- ----- 4BA 000000D1 00000000 ----- 13632 .ORG EXP2T, *CASE UEXT=? 13633 JY(EXP10Y); ----- ----- 4BB 0000C348 00000000 ----- 13634 * 13635 .ORG EXP10Y, *CASE UEXT=0, UEXB=0, NOT IN EXPAND MODE 13636 *SET EXPAND TOP 13637 MA(VDPTXT), 13638 AR>A, B(UEXT), OR, 13639 Y>RAM, 13640 JUMP(DI120); ----- ----- 348 0000059C 2B021110 ----- 13641 .ORG EXP11, *CASE UEXT=0, UEXB=1, IN EXPAND BOTTOM 13642 *CLEAR EXPAND 13643 MA(VDPTXT), 13644 AR>A, B(UEXB), XOR, 13645 Y>RAM, 13646 JUMP(DI120); ----- ----- 349 0000059C 2B011910 ----- 13647 .ORG EXP12, *CASE UEXT=1, UEXB=0, IN EXPAND TOP 13648 *SET EXPAND BOTTOM 13649 MA(VDPTXT), 13650 AR>A, B(UEXT+UEXB), XOR, 13651 Y>RAM, 13652 JUMP(DI120); ----- ----- 34A 0000059C 2B031910 ----- 13653 .ORG EXP13, *CASE UEXT=1, UEXB=1, ###1 ERROR 13654 *SET EXPAND BOTTOM 13655 MA(VDPTXT), 13656 AR>A, B(UEXT), XOR, 13657 Y>RAM, 13658 JUMP(DI120); ----- ----- 34B 0000059C 2B021910 ----- 13659 13660 *+++PPAGE 13661 * BR=PEN, LAST Y WAS TDISP 13662 .ORG PPAGE0, *TDISP? 13663 *Y=PEN 13664 A(0), BR.F0>B, OR, 13665 JZ(PPAGE1F,PPAGE1T); ----- ----- B1C 000024BC 00001003 ----- 13666 .ORG PPAGE1T, *NO TEXT DISPLAY, COMMAND INVALID 13667 JUMP(DI100); ----- ----- 4BD 000000D1 00000000 ----- 13668 .ORG PPAGE1F, *TEXT DISPLAY, COMPLETE MAIN PAGE? 13669 *IF NOT, CALL PPDP0 13670 *PR=0, RETURN TO PPAGE2Y 13671 *AR=UNITS, BR=UNITS 13672 MA(DPU), RAM>AR, RAM>BR, 13673 Y(0), 13674 Y>PR, 13675 JZ(PPDP0,PPAGE2T); ----- ----- 4BC 000324BE EA001000 ----- 13676 *TV ON INCOMPLETE PAGE ALSO EXITS HERE 13677 *UPDATE ON INCOMPLETE MAIN PAGE ALSO EXITS HERE 13678 .ORG PPAGE2Y, * 13679 JUMP(CMPE0); ----- ----- 498 000004DF 00000000 ----- 13680 *+++PPDP: COPY PREV PAGE TO DISPLAY PAGE 13681 * PR=RETURN POINTER 13682 .ORG PPDP0, *AR=UNITS, BR=UNITS 13683 MA(DPU), RAM>AR, RAM>BR, 13684 JUMP(PPDP0A); ----- ----- 4BE 00030B5B 6A000000 ----- 13685 .ORG PPDP0A, *MOVE UNITS 13686 MA(DPU), 13687 AR<<4>A, BR.0F>B, OR, 13688 Y>RAM, 13689 JUMP(PPDP1); ----- ----- B5B 00000B5C 6A001132 ----- 13690 .ORG PPDP1, *AR=DPT, BR=DPT 13691 MA(DPT), RAM>AR, RAM>BR, 13692 JUMP(PPDP2); ----- ----- B5C 00030B5D 69000000 ----- 13693 .ORG PPDP2, *MOVE TENS 13694 *BR=RETURN POINTER 13695 MA(DPT), PR>BR, 13696 AR<<4>A, BR.0F>B, OR, 13697 Y>RAM, 13698 JUMP(PPDP3); ----- ----- B5D 00410B5E 69001132 ----- 13699 .ORG PPDP3, *AR=DPM, BR=DPM 13700 *Y=RETURN POINTER 13701 MA(DPM), RAM>AR, RAM>BR, 13702 A(7), BR>B, AND, 13703 JUMP(PPDP4); ----- ----- B5E 00030B5F 68070801 ----- 13704 .ORG PPDP4, *MOVE MAGAZINES 13705 *CASE RETURN 13706 MA(DPM), 13707 AR<<4>A, BR.0F>B, OR, 13708 Y>RAM, 13709 JY(PPAGE2Y); ----- ----- B5F 0000C498 68001132 ----- 13710 *COMPLETE MAIN PAGE, SWAP DISPLAY PAGE AND PREVIOUS PAGE 13711 .ORG PPAGE2T, *SWAP UNITS 13712 MA(DPU), 13713 AR<<4>A, BRHI>B, OR, 13714 Y>RAM, 13715 JUMP(PPAGE6); ----- ----- 4BF 00000B60 6A00113C ----- 13716 .ORG PPAGE6, *AR=DPT, BR=DPT 13717 MA(DPT), RAM>AR, RAM>BR, 13718 JUMP(PPAGE7); ----- ----- B60 00030B61 69000000 ----- 13719 .ORG PPAGE7, *SWAP TENS 13720 MA(DPT), 13721 AR<<4>A, BRHI>B, OR, 13722 Y>RAM, 13723 JUMP(PPAGE8); ----- ----- B61 00000B62 6900113C ----- 13724 .ORG PPAGE8, *AR=DPM, BR=DPM 13725 MA(DPM), RAM>AR, RAM>BR, 13726 JUMP(PPAGE9); ----- ----- B62 00030B63 68000000 ----- 13727 .ORG PPAGE9, *SWAP MAGAZINES 13728 MA(DPM), 13729 AR<<4>A, BRHI>B, OR, 13730 Y>RAM, 13731 JUMP(CMPE0); ----- ----- B63 000004DF 6800113C ----- 13732 *+++DECREMENT/ INCREMENT PAGE 13733 * AR=INSTRUCTION, B=PEN, LAST Y WAS TDISP 13734 * 13735 *INSIDE VBI, DELAY IT 13736 .ORG DIP0F, *A=POLREG 13737 MA(POLREG), RAM>AR, 13738 JUMP(DI110); ----- ----- 48C 00020572 10000000 ----- 13739 *OUTSIDE VBI OK TO EXECUTE 13740 .ORG DIP0T, *Y=PEN-4 13741 *TELETEXT DISPLAY? 13742 A(-4), BRHI>B, ADD, 13743 JZ(DIP0AF,DIP0AT); ----- ----- 48D 000024C0 00FC000C ----- 13744 .ORG DIP0AT, *NO TELETEXT DISPLAY 13745 JUMP(DI100); ----- ----- 4C1 000000D1 00000000 ----- 13746 .ORG DIP0AF, *TELETEXT DISPLAY 13747 *SUB-PAGE MODE? 13748 *Y=PEN 13749 A(0), BRHI>B, OR, 13750 JN(DIP1F,DIP1T); ----- ----- 4C0 000044C2 0000100C ----- 13751 *ENTRY POINT FROM CKR111T (GREEN OR RED KEY PRESSED WHEN PMNM=1) 13752 * LAST Y WAS PEN 13753 .ORG DIP1T, *COMPLETE MAIN PAGE? 13754 *IF YES, CALL PPB0 TO UPDATE PREV PAGE BUFFER 13755 *PR=2, RETURN TO DIP2 13756 *B=PEN 13757 MA(PEN), RAM>BR, 13758 Y(2), 13759 Y>PR, 13760 JZ(DIP1AF,PPB0); ----- ----- 4C3 000124C4 9B021000 ----- 13761 .ORG DIP1AF, *INCOMPLETE MAIN PAGE 13762 *CALL PPDP0 13763 *P=4, RETURN TO DIP1B 13764 MA(DPU), RAM>AR, RAM>BR, 13765 Y(4), 13766 Y>PR, 13767 JUMP(PPDP0); ----- ----- 4C4 000304BE EA041000 ----- 13768 .ORG DIP1B, * 13769 JUMP(DIP2); ----- ----- 49C 000002DA 00000000 ----- 13770 * 13771 .ORG DIP2, *AR=INDEX TO DISPLAY PAGE MAG 13772 Y(DPM), 13773 Y>AR, 13774 JUMP(DIP3); ----- ----- 2DA 00220B64 00681000 ----- 13775 .ORG DIP3, *CALL PNTIN0 13776 *RETURN=0, RETURN TO DIP4Y 13777 MA(RETURN), 13778 Y(0), 13779 Y>RAM, 13780 JUMP(PNTIN0); ----- ----- B64 0000080D 7C001100 ----- 13781 * P=POINTER 13782 .ORG DIP4Y, *B=SYS1 13783 MA(SYS1), RAM>BR, 13784 JUMP(DIP5); ----- ----- 790 00010B65 08000000 ----- 13785 .ORG DIP5, *Y=PCM 13786 A(3), BRHI>B, AND, 13787 JUMP(DIP6); ----- ----- B65 00000B66 0003080C ----- 13788 .ORG DIP6, *CASE PCM=? 13789 *B=LSTINS 13790 MA(LSTINS), RAM>BR, 13791 JY(DIP8Y.0); ----- ----- B66 0001C2E0 2E000000 ----- 13792 .ORG DIP8Y.0, *CASE PCM=NORMAL 13793 *SET MASK TO LOOK FOR PAGE IN THE INVENTORY 13794 *MASK=>80 13795 MA(MASK), 13796 Y(>80), 13797 Y>RAM, 13798 JUMP(DIP10); ----- ----- 2E0 00000B67 73801100 ----- 13799 .ORG DIP8Y.1, *CASE PCM=TOP 13800 *SET MASK TO SEARCH FOR 13801 *BLOCK, GROUP AND NORMAL PAGES 13802 *MASK=>07 13803 MA(MASK), 13804 Y(>07), 13805 Y>RAM, 13806 JUMP(DIP10); ----- ----- 2E1 00000B67 73071100 ----- 13807 .ORG DIP8Y.2, *CASE PCM=FLOF 13808 *SET MASK TO INC OR DEC PAGE 13809 *MASK=>00 13810 MA(MASK), 13811 Y(>00), 13812 Y>RAM, 13813 JUMP(DIP10); ----- ----- 2E2 00000B67 73001100 ----- 13814 .ORG DIP8Y.3, *CASE PCM=FAVP, DO THE SAME AS NORMAL 13815 *SET MASK TO LOOK FOR PAGE IN THE INVENTORY 13816 *MASK=>80 13817 MA(MASK), 13818 Y(>80), 13819 Y>RAM, 13820 JUMP(DIP10); ----- ----- 2E3 00000B67 73801100 ----- 13821 * MASK SET TO DEFINE TYPE OF SEARCH IN SBT 13822 * B=LSTINS (CAN BE DPAGE, IPAGE, RED, GREEN 13823 .ORG DIP10, *Y=INSTRUCTION XOR >38 13824 A(>38), BR>B, XOR, 13825 JUMP(DIP11); ----- ----- B67 00000B68 00381801 ----- 13826 .ORG DIP11, *Y=INSTRUCTION XOR >15 13827 *RED? 13828 A(>15), BR>B, XOR, 13829 JZ(DIP12F,DIP12T); ----- ----- B68 000024C6 00151801 ----- 13830 .ORG DIP12T, *RED, DECREMENT PAGE 13831 *GO AND SEARCH BTT 13832 *CALL SBT0 13833 *RETURN=0, RETURN TO DIP18Y, 13834 MA(RETURN), 13835 Y(0), 13836 Y>RAM, 13837 JUMP(SBT0B); ----- ----- 4C7 000004C9 7C001100 ----- 13838 .ORG DIP12F, *WAS INSTRUCTION DPAGE? (ELSE IPAGE OR GREEN) 13839 *GO AND SEARCH BTT 13840 *CALL SBT0 13841 *RETURN=0, RETURN TO DIP18Y, 13842 MA(RETURN), 13843 Y(0), 13844 Y>RAM, 13845 JZ(SBT0A,SBT0B); ----- ----- 4C6 000024C8 7C001100 ----- 13846 *ENTRY POINT FROM COLOURED KEY ROUTINE 13847 .ORG DIP18Y, *PUT NEW PAGE IN PU,PT, PM 13848 *CALL INTPN0 13849 *RETURN=0, RETURN TO DIP20Y 13850 MA(RETURN), 13851 Y(0), 13852 Y>RAM, 13853 JUMP(INTPN0); ----- ----- 7A0 000007A3 7C001100 ----- 13854 *ENTRY POINT FROM NON-NULL FLOF COLOURED KEY PRESSED (CKR210) 13855 *ENTRY POINT FROM NON-NULL FLOF INDEX KEY PRESSED (IKR21T) 13856 *ENTRY POINT FROM TV SEARCH AFTER TOP INDEX (IKR50) 13857 *COPY Px TO DPx 13858 .ORG DIP20Y, *A=PM 13859 MA(PM), RAM>AR, 13860 JUMP(DIP21); ----- ----- 730 00020B69 74000000 ----- 13861 .ORG DIP21, *B=DPM 13862 MA(DPM), RAM>BR, 13863 JUMP(DIP22); ----- ----- B69 00010B6A 68000000 ----- 13864 .ORG DIP22, *UPDATE DPM 13865 MA(DPM), 13866 AR.F0>A, BR.0F>B, ADD, 13867 Y>RAM, 13868 JUMP(DIP23); ----- ----- B6A 00000B6B 680001D2 ----- 13869 .ORG DIP23, *A=PT 13870 MA(PT), RAM>AR, 13871 JUMP(DIP24); ----- ----- B6B 00020B6C 75000000 ----- 13872 .ORG DIP24, *B=DPT 13873 MA(DPT), RAM>BR, 13874 JUMP(DIP25); ----- ----- B6C 00010B6D 69000000 ----- 13875 .ORG DIP25, *UPDATE DPT 13876 MA(DPT), 13877 AR.F0>A, BR.0F>B, ADD, 13878 Y>RAM, 13879 JUMP(DIP26); ----- ----- B6D 00000B6E 690001D2 ----- 13880 .ORG DIP26, *A=PU 13881 MA(PU), RAM>AR, 13882 JUMP(DIP27); ----- ----- B6E 00020B6F 76000000 ----- 13883 .ORG DIP27, *B=DPU 13884 MA(DPU), RAM>BR, 13885 JUMP(DIP28); ----- ----- B6F 00010B70 6A000000 ----- 13886 .ORG DIP28, *UPDATE DPU 13887 MA(DPU), 13888 AR.F0>A, BR.0F>B, ADD, 13889 Y>RAM, 13890 JUMP(CMPE0); ----- ----- B70 000004DF 6A0001D2 ----- 13891 *SUB-PAGE MODE 13892 *ENTRY POINT FROM GREEN AND RED KEYS IN SUB-PAGE MODE 13893 * First call FSP0F to return a scratch RAM pointer to the 13894 * sub-page latch for STOR0 in PM. 13895 * 13896 .ORG DIP1F, *CALL FSP0F 13897 *RETURN=1, RETURN TO DIP30.1 13898 MA(RETURN), 13899 Y(1), 13900 Y>RAM, 13901 JUMP(FSP0F); ----- ----- 4C2 0000030E 7C011100 ----- 13902 * Call DISP0 to get the sub-page for STOR0, inc or dec it 13903 * placing the result in USP. 13904 .ORG DIP30.1, *A=LSTINS 13905 MA(LSTINS), RAM>AR, 13906 JUMP(DIP31); ----- ----- 431 00020B71 2E000000 ----- 13907 .ORG DIP31, *Y=LSTINS->15 13908 *B=INDEX TO SUB-PAGE FOR STOR0 13909 MA(PM), RAM>BR, 13910 AR>A, B(->15), ADD, 13911 JUMP(DIP32); ----- ----- B71 00010B72 74EB0010 ----- 13912 .ORG DIP32, *RET2=SOURCE INDEX FOR DISP0 13913 *DECREMENTING? 13914 MA(RET2), 13915 A(0), BR>B, OR, 13916 Y>RAM, 13917 JZ(DIP33F,DIP33T); ----- ----- B72 000024CA 7B001101 ----- 13918 .ORG DIP33F, *INCREMENTING 13919 *RET4=OFFSET FOR DISP0 13920 MA(RET4), 13921 Y(1), 13922 Y>RAM, 13923 JUMP(DIP34); ----- ----- 4CA 00000B73 79011100 ----- 13924 .ORG DIP33T, *DECREMENTING 13925 *RET4=OFFSET FOR DISP0 13926 MA(RET4), 13927 Y(-1), 13928 Y>RAM, 13929 JUMP(DIP34); ----- ----- 4CB 00000B73 79FF1100 ----- 13930 * 13931 .ORG DIP34, *RET3=DEST INDEX FOR DISP0 13932 MA(RET3), 13933 Y(USPI-1), 13934 Y>RAM, 13935 JUMP(DIP35); ----- ----- B73 00000B74 7A571100 ----- 13936 .ORG DIP35, *CALL DISP0 13937 *RETURN=0, RETURN TO DIP40Y 13938 MA(RETURN), 13939 Y(0), 13940 Y>RAM, 13941 JUMP(DISP0); ----- ----- B74 0000090F 7C001100 ----- 13942 * A=DHREG 13943 .ORG DIP40Y, *Y=ICP 13944 *A=PEN 13945 MA(PEN), RAM>AR, 13946 AR>A, B(ICP), AND, 13947 JUMP(DIP41); ----- ----- 440 00020B75 1B400810 ----- 13948 .ORG DIP41, *PEN=4 13949 *COMPLETE PAGE ENTERED? 13950 *IF YES, JUMP TO STRAIGHT TO CSPE0 13951 *IF NO, CALL CUSP0 FIRST 13952 MA(PEN), 13953 AR.0F>A, B(>40), OR, 13954 Y>RAM, 13955 JZ(DIP42F,CSPE0); ----- ----- B75 000024CC 1B4011C0 ----- 13956 .ORG DIP42F, *CALL CUSP0 13957 *RETURN=1, RETURN TO DIP43F 13958 MA(RETURN), 13959 Y(1), 13960 Y>RAM, 13961 JUMP(CUSP0); ----- ----- 4CC 00000B35 7C011100 ----- 13962 .ORG DIP43F, * 13963 JUMP(CSPE0); ----- ----- 4B2 000004CD 00000000 ----- 13964 * 13965 *+++DECREMENT/ INCREMENT SUB-PAGE 13966 * 13967 * input pars are:- 13968 * RET2: source index-1 13969 * RET3: destination index-1 13970 * RET4: offset 13971 * RETURN: return pointer 13972 * local variables used are:- 13973 * COUNT, RET4 13974 .ORG DISP0, *INIT DIGIT COUNT 13975 MA(COUNT), 13976 Y(4), 13977 Y>RAM, 13978 JUMP(DISP1F); ----- ----- 90F 000004D2 78041100 ----- 13979 * 13980 .ORG DISP1F, *B=SOURCE INDEX 13981 MA(RET2), RAM>BR, 13982 JUMP(DISP9); ----- ----- 4D2 00010B76 7B000000 ----- 13983 .ORG DISP9, *INC SOURCE INDEX 13984 *P=SOURCE INDEX 13985 MA(RET2), 13986 A(1), BR>B, ADD, 13987 Y>PR, Y>RAM, 13988 JUMP(DISP10); ----- ----- B76 00000B77 FB010101 ----- 13989 .ORG DISP10, *A=OFFSET 13990 MA(RET4), RAM>AR, 13991 JUMP(DISP11); ----- ----- B77 00020B78 79000000 ----- 13992 .ORG DISP11, *B=SOURCE DIGIT 13993 PR>MA, RAM>BR, 13994 JUMP(DISP12); ----- ----- B78 00110B79 00000000 ----- 13995 .ORG DISP12, *A=NEW SOURCE DIGIT 13996 *B=DEST INDEX 13997 MA(RET3), RAM>BR, 13998 AR<<4>A, BR>B, ADD, 13999 Y>AR, 14000 JUMP(DISP13); ----- ----- B79 00230B7A 7A000031 ----- 14001 .ORG DISP13, *INC DEST INDEX 14002 *P=DEST INDEX 14003 *DIGIT UNDERFLOW? 14004 MA(RET3), 14005 A(1), BR>B, ADD, 14006 Y>PR, Y>RAM, 14007 JN(DISP14F,DISP14T); ----- ----- B7A 000044CE FA010101 ----- 14008 *DIGIT UNDERFLOW 14009 .ORG DISP14T, *B=DEST 14010 PR>MA, RAM>BR, 14011 JUMP(DISP15); ----- ----- 4CF 00110B7B 00000000 ----- 14012 .ORG DISP15, *DIGIT=9 14013 PR>MA, 14014 A(>90), BR.0F>B, OR, 14015 Y>RAM, 14016 JUMP(DISP30); ----- ----- B7B 00100B7C 00901102 ----- 14017 * 14018 .ORG DISP14F, *Y=A-10 14019 *B=DEST 14020 PR>MA, RAM>BR, 14021 ARHI>A, B(-10), ADD, 14022 JUMP(DISP20); ----- ----- 4CE 00110B7D 00F60020 ----- 14023 .ORG DISP20, *DIGIT OVERFLOW? 14024 JN(DISP21F,DISP21T); ----- ----- B7D 000044D0 00000000 ----- 14025 *DIGIT OVERFLOW 14026 .ORG DISP21F, *DIGIT=0 14027 PR>MA, 14028 A(0), BR.0F>B, OR, 14029 Y>RAM, 14030 JUMP(DISP30); ----- ----- 4D0 00100B7C 00001102 ----- 14031 *NO CARRY, UPDATE DIGIT AND SET ZERO OFFSET TO COPY REMAINING DIGITS 14032 .ORG DISP21T, * 14033 PR>MA, 14034 AR.F0>A, BR.0F>B, OR, 14035 Y>RAM, 14036 JUMP(DISP22); ----- ----- 4D1 00100B7E 000011D2 ----- 14037 .ORG DISP22, *RET4=0 14038 MA(RET4), 14039 Y(0), 14040 Y>RAM, 14041 JUMP(DISP30); ----- ----- B7E 00000B7C 79001100 ----- 14042 *CARRY 14043 .ORG DISP30, *A=LOOP 14044 MA(COUNT), RAM>AR, 14045 JUMP(DISP31); ----- ----- B7C 00020B7F 78000000 ----- 14046 .ORG DISP31, *DEC LOOP 14047 MA(COUNT), 14048 AR>A, B(-1), ADD, 14049 Y>RAM, 14050 JUMP(DISP32); ----- ----- B7F 00000B80 78FF0110 ----- 14051 .ORG DISP32, *LAST DIGIT? 14052 JZ(DISP1F,DISP33T); ----- ----- B80 000024D2 00000000 ----- 14053 *EXIT 14054 .ORG DISP33T, *A=RETURN 14055 MA(RETURN), RAM>AR, 14056 JUMP(DISP34); ----- ----- 4D3 00020B81 7C000000 ----- 14057 .ORG DISP34, *Y=RETURN 14058 *B=VPPRG1 FOR SPLM110 14059 MA(VPPRG1), RAM>BR, 14060 AR>A, B(3), AND, 14061 JUMP(DISP35); ----- ----- B81 00010B82 61030810 ----- 14062 .ORG DISP35, *CASE RETURN=? 14063 *A=DHREG FOR DIP40Y 14064 MA(DHREG), RAM>AR, 14065 JY(DIP40Y); ----- ----- B82 0002C440 32000000 ----- 14066 *+++BROWSE 14067 * AR=VPPRG1, LAST Y WAS TDISP 14068 *INSIDE VBI, DELAY IT 14069 .ORG BROWSE0F, *A=POLREG 14070 MA(POLREG), RAM>AR, 14071 JUMP(DI110); ----- ----- 48E 00020572 10000000 ----- 14072 *OUTSIDE VBI 14073 .ORG BROWSE0T, *TDISP? 14074 *COUNT=1 (CLEAR HOLD ONLY IN PAGE0 CODE) 14075 MA(COUNT), 14076 Y(1), 14077 Y>RAM, 14078 JZ(BROWSE1F,BROWSE1T); ----- ----- 48F 000024D4 78011100 ----- 14079 .ORG BROWSE1T, *NO TEXT DISPLAY, INVALID COMMAND 14080 JUMP(DI100); ----- ----- 4D5 000000D1 00000000 ----- 14081 .ORG BROWSE1F, *SLFB=1 (SET LATCH FOR BROWSE) 14082 MA(VPPRG1), 14083 AR>A, B(SLFB), OR, 14084 Y>RAM, 14085 JUMP(CMPE1); ----- ----- 4D4 00000B83 61401110 ----- 14086 *+++HOLD 14087 * A=INSTRUCTION, B=VDPTXT, LAST Y WAS TDISP 14088 *INSIDE VBI, DELAY IT 14089 .ORG HOLD0F, *A=POLREG 14090 MA(POLREG), RAM>AR, 14091 JUMP(DI110); ----- ----- 490 00020572 10000000 ----- 14092 *OUTSIDE VBI 14093 .ORG HOLD0T, *Y=STOP, TDISP? 14094 A(STOP), BR>B, AND, 14095 JZ(HOLD1F,HOLD1T); ----- ----- 491 000024D6 00040801 ----- 14096 .ORG HOLD1T, *NO TEXT DISPLAY, INVALID COMMAND 14097 JUMP(DI100); ----- ----- 4D7 000000D1 00000000 ----- 14098 .ORG HOLD1F, *ALREADY IN HOLD? 14099 *Y=INSTUCTION->18 14100 *B=PEN 14101 MA(PEN), RAM>BR, 14102 AR>A, B(->18), ADD, 14103 JZ(HOLD3F,HOLD3T); ----- ----- 4D6 000124D8 1BE80010 ----- 14104 *IN HOLD MODE 14105 .ORG HOLD3F, *IN HOLD, SHOLD? 14106 *Y=PEN-4 14107 A(-4), BRHI>B, ADD, 14108 JZ(HOLD4F,HOLD4T); ----- ----- 4D8 000024DA 00FC000C ----- 14109 .ORG HOLD4T, *SHOLD IN HOLD, EXIT 14110 JUMP(DI100); ----- ----- 4DB 000000D1 00000000 ----- 14111 .ORG HOLD4F, *CLEARING HOLD, PEN=4? 14112 *Y=PEN 14113 A(0), BRHI>B, OR, 14114 JZ(HOLD5F,HOLD5T); ----- ----- 4DA 000024DC 0000100C ----- 14115 .ORG HOLD5T, *COMPLETE SUB-PAGE ENTERED 14116 JUMP(CSPE0); ----- ----- 4DD 000004CD 00000000 ----- 14117 .ORG HOLD5F, *PEN=0? 14118 *IF YES, COMPLETE MAIN PAGE 14119 JZ(HOLD6F,CMPE0); ----- ----- 4DC 000024DE 00000000 ----- 14120 .ORG HOLD6F, *INCOMPLETE SUB-PAGE 14121 JUMP(PSPE0); ----- ----- 4DE 00000B84 00000000 ----- 14122 *NOT IN HOLD MODE 14123 * A=INSTRUCTION, B=PEN 14124 .ORG HOLD3T, *Y=INSTRUCTION->19 14125 *A=VDPTXT 14126 MA(VDPTXT), RAM>AR, 14127 AR>A, B(->19), ADD, 14128 JUMP(HOLD10); ----- ----- 4D9 00020B85 2BE70010 ----- 14129 .ORG HOLD10, *CHOLD? 14130 JZ(HOLD11F,HOLD11T); ----- ----- B85 000024E0 00000000 ----- 14131 .ORG HOLD11T, *CHOLD IN NO HOLD, EXIT 14132 JUMP(DI100); ----- ----- 4E1 000000D1 00000000 ----- 14133 .ORG HOLD11F, *STOP=1 14134 MA(VDPTXT), 14135 AR>A, B(STOP), OR, 14136 Y>RAM, 14137 JUMP(HOLD12); ----- ----- 4E0 00000B86 2B041110 ----- 14138 .ORG HOLD12, *Y=PEN-4 14139 *A=DHREG 14140 MA(DHREG), RAM>AR, 14141 A(-4), BRHI>B, ADD, 14142 JUMP(HOLD13); ----- ----- B86 00020B87 32FC000C ----- 14143 .ORG HOLD13, *SUB-PAGE MODE? 14144 *Y=PEN 14145 A(0), BRHI>B, OR, 14146 JN(HOLD14F,HOLD14T); ----- ----- B87 000044E2 0000100C ----- 14147 .ORG HOLD14F, *SUB-PAGE MODE 14148 *NRH=1 14149 MA(DHREG), 14150 AR>A, B(NRH), OR, 14151 Y>RAM, 14152 JUMP(HOLD14A); ----- ----- 4E2 00000B88 32101110 ----- 14153 .ORG HOLD14A, *A=VPPRG1 14154 MA(VPPRG1), RAM>AR, 14155 JUMP(HOLD14B); ----- ----- B88 00020B89 61000000 ----- 14156 .ORG HOLD14B, *HOSP=1 14157 *(SPLM HOLDS IT THINKING ITS AN INCOMPLETE SP) 14158 MA(VPPRG1), 14159 AR>A, B(HOSP), OR, 14160 Y>RAM, 14161 JUMP(PAGEB); ----- ----- B89 00000B8A 61041110 ----- 14162 .ORG HOLD14T, *COMPLETE MAIN PAGE? 14163 *NRH=1 14164 MA(DHREG), 14165 AR>A, B(NRH), OR, 14166 Y>RAM, 14167 JZ(HOLD15F,HOLD15T); ----- ----- 4E3 000024E4 32101110 ----- 14168 .ORG HOLD15T, *COMPLETE MAIN PAGE 14169 JUMP(PMPE4); ----- ----- 4E5 00000499 00000000 ----- 14170 .ORG HOLD15F, *INCOMPLETE MAIN PAGE 14171 *PEN=0 14172 MA(PEN), 14173 A(0), BR.0F>B, OR, 14174 Y>RAM, 14175 JUMP(HOLD16); ----- ----- 4E4 00000B8B 1B001102 ----- 14176 .ORG HOLD16, *GO TO PREVIOUS PAGE 14177 *CALL PPDP0 14178 *PR=1, RETURN TO PMPE4 14179 Y(1), 14180 Y>PR, 14181 JUMP(PPDP0); ----- ----- B8B 000004BE 80011000 ----- 14182 *+++REVEAL 14183 * AR=VDPTXT 14184 .ORG REV0, *TOGGLE URVL 14185 MA(VDPTXT), 14186 AR>A, B(URVL), XOR, 14187 Y>RAM, 14188 JUMP(DI120); ----- ----- B20 0000059C 2B081910 ----- 14189 *+++STATUS: USER STATUS MODE 14190 * BR=SCREEN, AR=EXPREG 14191 .ORG STAT0, *Y=USM 14192 AR>A, B(USM), AND, 14193 JUMP(STAT1); ----- ----- B22 00000B21 00020810 ----- 14194 *ENTRY POINT FROM SSTAT, LAST Y=0 14195 .ORG STAT1, *Y=SCREEN 14196 *USM? 14197 A(0), BRHI>B, OR, 14198 JZ(STAT2F,STAT2T); ----- ----- B21 000024E6 0000100C ----- 14199 *ENTRY POINT FROM CSTAT 14200 .ORG STAT2F, *ALREADY SET, CLEAR IT 14201 *USM=0 14202 MA(EXPREG), 14203 AR>A, B(>FF-USM), AND, 14204 Y>RAM, Y>AR, 14205 JUMP(STAT4); ----- ----- 4E6 00220B8C 63FD0910 ----- 14206 .ORG STAT2T, *NOT SET YET 14207 *PICTURE MODE? 14208 JZ(STAT3F,STAT3T); ----- ----- 4E7 000024E8 00000000 ----- 14209 .ORG STAT3F, *NOT PICTURE MODE, IGNORE 14210 JUMP(DI100); ----- ----- 4E8 000000D1 00000000 ----- 14211 .ORG STAT3T, *SET USER STATUS MODE 14212 *USM=1 14213 MA(EXPREG), 14214 AR>A, B(USM), OR, 14215 Y>RAM, Y>AR, 14216 JUMP(STAT4); ----- ----- 4E9 00220B8C 63021110 ----- 14217 .ORG STAT4, *CPRF=1, CGAP=1 14218 MA(EXPREG), 14219 AR>A, B(CPRF+CGAP), OR, 14220 Y>RAM, 14221 JUMP(DI120); ----- ----- B8C 0000059C 630C1110 ----- 14222 *///2- 14223 * BR=RCSTAT, AR=INSTRUCTION 14224 .ORG DI2X, *CASE INS HIGH NIB=>2 14225 *DIGIT ENTRY 14226 *Y=VBI 14227 A(%01000000), RCS>B, AND, 14228 JUMP(DIG0); ----- ----- 202 00000B8D 0040080B ----- 14229 */// 14230 *+++ DIG: DIGIT ENTRY 14231 * AR=INSTRUCTION, LAST Y WAS VBI 14232 .ORG DIG0, *VBI? 14233 *BR=SCREEN 14234 *PR=0 14235 MA(SCREEN), RAM>BR, 14236 Y(0), 14237 Y>PR, 14238 JZ(DIG0F,DIG0T); ----- ----- B8D 000124EA E0001000 ----- 14239 .ORG DIG0F, *IN VBI, DELAY 14240 *A=POLREG 14241 MA(POLREG), RAM>AR, 14242 JUMP(DI110); ----- ----- 4EA 00020572 10000000 ----- 14243 .ORG DIG0T, *Y=TDISP 14244 *B=MREG1 14245 MA(MREG1), RAM>BR, 14246 A(TDISP), BR>B, AND, 14247 JUMP(DIG1); ----- ----- 4EB 00010B8E 65040801 ----- 14248 .ORG DIG1, *STORE=DIGIT 14249 *Y=DETV, TDISP? 14250 *B=LTK 14251 MA(LTK), RAM>BR, 14252 A(DETV), BR>B, AND, 14253 JZ(DIG2F,DIG2T); ----- ----- B8E 000124EC 11040801 ----- 14254 .ORG DIG2T, *NO TEXT DISPLAY, DETV? 14255 JZ(DIG2AF,DIG2AT); ----- ----- 4ED 000024EE 00000000 ----- 14256 .ORG DIG2AT, *NO TEXT DISPLAY, DETV=0 14257 *INVALID DIGIT 14258 JUMP(DI100); ----- ----- 4EF 000000D1 00000000 ----- 14259 .ORG DIG2AF, *NO TEXT DISPLAY, DETV=1 14260 *DIGIT IS VALID 14261 JUMP(DIG2F); ----- ----- 4EE 000004EC 00000000 ----- 14262 *DIGIT IS VALID 14263 * A=DIGIT, B=LTK 14264 .ORG DIG2F, *LTK=0 14265 MA(LTK), 14266 A(0), BR.0F>B, OR, 14267 Y>RAM, 14268 JUMP(DIG2A); ----- ----- 4EC 00000B8F 11001102 ----- 14269 .ORG DIG2A, *B=MREG0 14270 MA(MREG0), RAM>BR, 14271 JUMP(DIG2B); ----- ----- B8F 00010B90 39000000 ----- 14272 .ORG DIG2B, *STORE=DIGIT 14273 MA(STORE), 14274 AR.0F>A, B(0), ADD, 14275 Y>RAM, 14276 JUMP(DIG2C); ----- ----- B90 00000B91 770001C0 ----- 14277 .ORG DIG2C, *Y=DETO 14278 *B=VDP1 14279 MA(VDP1), RAM>BR, 14280 A(DETO), BR>B, AND, 14281 JUMP(DIG3); ----- ----- B91 00010B92 01800801 ----- 14282 .ORG DIG3, *Y=BOX 14283 *B=DHREG 14284 *DIGIT ENTRY TIME-OUTS? 14285 MA(DHREG), RAM>BR, 14286 A(BOX), BR>B, AND, 14287 JZ(DIG4F,DIG4T); ----- ----- B92 000124F0 32040801 ----- 14288 .ORG DIG4F, *Y=ENDIG 14289 *B=VDP0 14290 *BOX MODE? 14291 MA(VDP0), RAM>BR, 14292 A(ENDIG), BR>B, AND, 14293 JZ(DIG5F,DIG5T); ----- ----- 4F0 000124F2 00040801 ----- 14294 .ORG DIG5F, *BOX MODE 14295 *Y=R0ON 14296 *HEADER VISIBLE? 14297 A(R0ON), BR>B, AND, 14298 JZ(DIG6F,DIG6T); ----- ----- 4F2 000024F4 00100801 ----- 14299 .ORG DIG5T, *NOT BOX 14300 *Y=R0ON 14301 A(R0ON), BR>B, AND, 14302 JUMP(DIG6F); ----- ----- 4F3 000004F4 00100801 ----- 14303 14304 .ORG DIG6T, *TIME OUT HEADER DISPLAY (DO NOT ACCEPT DIGIT) 14305 *A=DHREG 14306 MA(DHREG), RAM>AR, 14307 JUMP(STOD0); ----- ----- 4F5 00020B93 32000000 ----- 14308 * 14309 .ORG DIG6F, *HEADER VISIBLE 14310 *R0ON? 14311 JZ(DIG7F,DIG7T); ----- ----- 4F4 000024F6 00000000 ----- 14312 .ORG DIG7T, *TIME OUT HEADER DISPLAY (DO NOT ACCEPT DIGIT) 14313 *A=DHREG 14314 MA(DHREG), RAM>AR, 14315 JUMP(STOD0); ----- ----- 4F7 00020B93 32000000 ----- 14316 .ORG DIG7F, *OK TO ACCEPT DIGIT 14317 JUMP(DIG4T); ----- ----- 4F6 000004F1 00000000 ----- 14318 *OK TO ENTER DIGIT 14319 .ORG DIG4T, *B=VDPTXT 14320 MA(VDPTXT), RAM>BR, 14321 JUMP(DIG4A); ----- ----- 4F1 00010B94 2B000000 ----- 14322 .ORG DIG4A, *C8YET=1 (FOR DIGIT ENTRY IN UPDATE MODE) 14323 MA(VDPTXT), 14324 A(C8YET), BR>B, OR, 14325 Y>RAM, 14326 JUMP(DIG4B); ----- ----- B94 00000B95 2B101101 ----- 14327 .ORG DIG4B, *BR=PAGE ENTRY STATE 14328 MA(PEN), RAM>BR, 14329 JUMP(DIG8); ----- ----- B95 00010B96 1B000000 ----- 14330 .ORG DIG8, *Y=PEN 14331 A(7), BR>>4>B, AND, 14332 JUMP(DIG9); ----- ----- B96 00000B97 00070804 ----- 14333 .ORG DIG9, *UPDATE PAGE ENTRY STATE 14334 *CASE PEN=? 14335 MA(PEN), 14336 A(->10), BR>B, ADD, 14337 Y>RAM, 14338 JY(DIG10Y); ----- ----- B97 0000C238 1BF00101 ----- 14339 * 14340 .ORG DIG10Y, *CASE PEN=0 14341 *DIGIT IS MAIN PAGE MAG 14342 *CALL PPB0 TO LOAD PREV PAGE BUFFER 14343 *PR=0, RETURN TO DIG30Y 14344 *PEN=2, B=OLD PEN 14345 MA(PEN), 14346 A(>20), BR.0F>B, ADD, 14347 Y>RAM, 14348 JUMP(PPB0); ----- ----- 238 000004C5 1B200102 ----- 14349 * 14350 .ORG DIG11, *CASE PEN=1 14351 *DIGIT IS MAIN PAGE UNITS 14352 *BR=DPU 14353 MA(DPU), RAM>BR, 14354 JUMP(DIG11A); ----- ----- 239 00010B98 6A000000 ----- 14355 .ORG DIG11A, *DPU=DIGIT 14356 *GO TO COMPLETE PAGE ENTERED 14357 MA(DPU), 14358 AR<<4>A, BR.0F>B, OR, 14359 Y>RAM, 14360 JUMP(CMPE0); ----- ----- B98 000004DF 6A001132 ----- 14361 * 14362 .ORG DIG12, *CASE PEN=2 14363 *DIGIT IS MAIN PAGE TENS 14364 *BR=DPT 14365 MA(DPT), RAM>BR, 14366 JUMP(DIG12A); ----- ----- 23A 00010B99 69000000 ----- 14367 .ORG DIG12A, *DPT=DIGIT 14368 MA(DPT), 14369 AR<<4>A, BR.0F>B, OR, 14370 Y>RAM, 14371 JUMP(PMPE4); ----- ----- B99 00000499 69001132 ----- 14372 * 14373 *CASE PEN=3 IS AN ERROR 14374 * 14375 .ORG DIG14, *CASE PEN=4 14376 *DIGIT IS SP THOUSANDS 14377 *PEN=7 14378 MA(PEN), 14379 A(>70), BR.0F>B, ADD, 14380 Y>RAM, 14381 JUMP(DIG14A); ----- ----- 23C 00000B9A 1B700102 ----- 14382 .ORG DIG14A, *BR=USPM 14383 MA(USPM), RAM>BR, 14384 JUMP(DIG14B); ----- ----- B9A 00010B9B 5B000000 ----- 14385 .ORG DIG14B, *USPM=DIGIT 14386 MA(USPM), 14387 AR<<4>A, BR.0F>B, OR, 14388 Y>RAM, 14389 JUMP(PSPE0); ----- ----- B9B 00000B84 5B001132 ----- 14390 .ORG DIG15, *CASE PEN=5 14391 *DIGIT IS SP UNITS 14392 *BR=USPI 14393 MA(USPI), RAM>BR, 14394 JUMP(DIG15A); ----- ----- 23D 00010B9C 58000000 ----- 14395 .ORG DIG15A, *USPI=DIGIT 14396 MA(USPI), 14397 AR<<4>A, BR.0F>B, OR, 14398 Y>RAM, 14399 JUMP(CSPE0); ----- ----- B9C 000004CD 58001132 ----- 14400 .ORG DIG16, *CASE PEN=6 14401 *DIGIT IS SP TENS 14402 *BR=USPX 14403 MA(USPX), RAM>BR, 14404 JUMP(DIG16A); ----- ----- 23E 00010B9D 59000000 ----- 14405 .ORG DIG16A, *USPX=DIGIT 14406 MA(USPX), 14407 AR<<4>A, BR.0F>B, OR, 14408 Y>RAM, 14409 JUMP(PAGEC); ----- ----- B9D 00000B9E 59001132 ----- 14410 .ORG DIG17, *CASE PEN=7 14411 *DIGIT IS SP HUNDREDS 14412 *BR=USPC 14413 MA(USPC), RAM>BR, 14414 JUMP(DIG17A); ----- ----- 23F 00010B9F 5A000000 ----- 14415 .ORG DIG17A, *USPC=DIGIT 14416 MA(USPC), 14417 AR<<4>A, BR.0F>B, OR, 14418 Y>RAM, 14419 JUMP(PAGEC); ----- ----- B9F 00000B9E 5A001132 ----- 14420 *RETURN FROM PPB, ENTERING DISPLAY PAGE MAG 14421 * AR=MAG DIGIT, LAST Y WAS MAG DIGIT-8 14422 .ORG DIG30Y, *MAG DIGIT=8? 14423 *BR=DPM 14424 *MASK 4TH BIT OF DIGIT 14425 MA(DPM), RAM>BR, 14426 AR>A, B(7), AND, 14427 Y>AR, 14428 JZ(DIG31F,DIG31T); ----- ----- 2D8 002324F8 68070810 ----- 14429 .ORG DIG31F, *MAG DIGIT NOT 8 14430 *DPM=MASKED DIGIT 14431 *GO TO PARTIAL PAGE ENTRY CODE 14432 MA(DPM), 14433 AR<<4>A, BR.0F>B, OR, 14434 Y>RAM, 14435 JUMP(PMPE0); ----- ----- 4F8 00000BA0 68001132 ----- 14436 .ORG DIG31T, *MAG DIGIT IS 8 14437 *DPM=0 14438 *GO TO PARTIAL PAGE ENTRY CODE 14439 MA(DPM), 14440 A(0), BR.0F>B, OR, 14441 Y>RAM, 14442 JUMP(PMPE0); ----- ----- 4F9 00000BA0 68001102 ----- 14443 *ENTRY POINT FROM CLEAR HOLD IF COMPLETE SUB-PAGE ENTERED 14444 *ENTRY POINT FROM DIP CODE 14445 *COMPLETE SUB-PAGE HAS BEEN ENTERED BY DIGITS, 14446 *CLEAR CAP AND VBICAP TO INDICATE THIS SUB-PAGE NOT CAPTURED YET 14447 .ORG CSPE0, *AR=VPPRG1 14448 MA(VPPRG1), RAM>AR, 14449 JUMP(CSPE2); ----- ----- 4CD 00020BA1 61000000 ----- 14450 .ORG CSPE2, *PCSP=1 14451 MA(VPPRG1), 14452 AR>A, B(PCSP), OR, 14453 Y>RAM, 14454 JUMP(CSPE3); ----- ----- BA1 00000BA2 61021110 ----- 14455 .ORG CSPE3, *A=DHREG 14456 MA(DHREG), RAM>AR, 14457 JUMP(CSPE4); ----- ----- BA2 00020BA3 32000000 ----- 14458 .ORG CSPE4, *NRH=0, ICP=0 14459 MA(DHREG), 14460 AR>A, B(>FF-NRH-ICP), AND, 14461 Y>RAM, 14462 JUMP(PAGEC); ----- ----- BA3 00000B9E 32AF0910 ----- 14463 *+++ CMPE: COMPLETE MAIN PAGE ENTERED 14464 *ENTRY POINT FROM LPP59, SPMOD1, PPAGE2Y, PPAGE9, DIP28, HOLD3F 14465 *DIG11A, CKR129, SPCM1 14466 .ORG CMPE0, *COUNT=3 (CLEAR HOLD AND BROWSE IN PAGE0 CODE) 14467 MA(COUNT), 14468 Y(3), 14469 Y>RAM, 14470 JUMP(CMPE1); ----- ----- 4DF 00000B83 78031100 ----- 14471 *ENTRY POINT FROM BROWSE1F, CHNG60T, CHNG62 14472 .ORG CMPE1, *BR=PEN 14473 MA(PEN), RAM>BR, 14474 JUMP(CMPE1A); ----- ----- B83 00010BA4 1B000000 ----- 14475 .ORG CMPE1A, *Y=PEN-4 14476 A(-4), BRHI>B, ADD, 14477 JUMP(CMPE1B); ----- ----- BA4 00000BA5 00FC000C ----- 14478 .ORG CMPE1B, *RESET DIGIT ENTRY STATE 14479 *PEN=0 14480 *SUB-PAGE MODE? 14481 MA(PEN), 14482 A(0), BR.0F>B, OR, 14483 Y>RAM, 14484 JN(CMPE2F,CMPE2T); ----- ----- BA5 000044FA 1B001102 ----- 14485 *CLEARING SUB-PAGE MODE 14486 *CLEAR THE LATCH FLAGS OF THE MAIN PAGE NUMBER TO ROLL THE HEADER 14487 .ORG CMPE2F, *A=SPREG0 14488 MA(SPREG0), RAM>AR, 14489 JUMP(CMPE2A); ----- ----- 4FA 00020BA6 54000000 ----- 14490 .ORG CMPE2A, *P= INDEX TO LAFx 14491 ARHI>A, B(LAF0), ADD, 14492 Y>PR, 14493 JUMP(CMPE2B); ----- ----- BA6 00000BA7 80400020 ----- 14494 .ORG CMPE2B, *LAFx=0 14495 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 14496 PR>MA, 14497 Y(0), 14498 Y>RAM, 14499 JUMP(CMPE2C); ----- ----- BA7 00100BA8 00001100 ----- 14500 .ORG CMPE2C, *A=SYS2 14501 MA(SYS2), RAM>AR, 14502 JUMP(CMPE2D); ----- ----- BA8 00020BA9 09000000 ----- 14503 .ORG CMPE2D, *Y=S6T1 14504 *B=STOR6 14505 MA(STOR6), RAM>BR, 14506 AR>A, B(S6T1), AND, 14507 JUMP(CMPE2E); ----- ----- BA9 00010BAA 26200810 ----- 14508 .ORG CMPE2E, *IS TOP1 IN STORE 6? 14509 *IF NO, DO NOT SWAP BACK 14510 *S6T1=0 14511 MA(SYS2), 14512 AR>A, B(>FF-S6T1), AND, 14513 Y>RAM, 14514 JZ(CMPE2GF,CMPE2GT); ----- ----- BAA 000024FC 09DF0910 ----- 14515 *SWAP STORES 4 AND 6 TO RESTORE TOP1 14516 * B=STOR6 14517 .ORG CMPE2GF, *A=STOR4 14518 MA(STOR4), RAM>AR, 14519 JUMP(CMPE2H); ----- ----- 4FC 00020BAB 24000000 ----- 14520 .ORG CMPE2H, *STORE 6-> STORE 4 14521 MA(STOR4), 14522 AR.0F>A, BR.F0>B, OR, 14523 Y>RAM, 14524 JUMP(CMPE2I); ----- ----- BAB 00000BAC 240011C3 ----- 14525 .ORG CMPE2I, *STORE 4-> STORE 6 14526 MA(STOR6), 14527 AR.F0>A, BR.0F>B, OR, 14528 Y>RAM, 14529 JUMP(CMPE2GT); ----- ----- BAC 000004FD 260011D2 ----- 14530 *RE-INIT SUB-PAGE REGISTERS 14531 .ORG CMPE2GT, *CALL INSPRG0 14532 *A=2, RETURN TO CMPE5 14533 Y(2), 14534 Y>AR, 14535 JUMP(INSPRG0); ----- ----- 4FD 00220876 00021000 ----- 14536 *SUB-PAGE MODE NOT SET 14537 .ORG CMPE2T, * 14538 JUMP(CMPE5); ----- ----- 4FB 000006B2 00000000 ----- 14539 .ORG CMPE5, *BR=VPPRG1 14540 MA(VPPRG1), RAM>BR, 14541 JUMP(CMPE6); ----- ----- 6B2 00010BAD 61000000 ----- 14542 .ORG CMPE6, *SET PROCESS NEW PAGE NUMBER FLAG 14543 *CLEAR SUB-PAGE MODE, PCSP=0, HOSP=0, SPIN=0 14544 MA(VPPRG1), 14545 A(PMPN), BR.F0>B, OR, 14546 Y>RAM, 14547 JUMP(CMPE7); ----- ----- BAD 00000BAE 61201103 ----- 14548 .ORG CMPE7, *BR=STOR0 14549 MA(STOR0), RAM>BR, 14550 JUMP(CMPE8); ----- ----- BAE 00010BAF 20000000 ----- 14551 .ORG CMPE8, *PR=INDEX TO DISPLAY PAGE MAG 14552 A(M0), BRHI>B, ADD, 14553 Y>PR, 14554 JUMP(CMPE11); ----- ----- BAF 00000BB0 8010000C ----- 14555 .ORG CMPE11, *A=SYS1 14556 MA(SYS1), RAM>AR, 14557 JUMP(CMPE12); ----- ----- BB0 00020BB1 08000000 ----- 14558 .ORG CMPE12, *BR=DHREG 14559 *Y=PCM-2 14560 MA(DHREG), RAM>BR, 14561 ARHI>A, B(-2), ADD, 14562 JUMP(CMPE12A); ----- ----- BB1 00010BB2 32FE0020 ----- 14563 .ORG CMPE12A, *ICP=0, NRH=0 14564 *FLOF MODE? 14565 MA(DHREG), 14566 A(>FF-ICP), BR>B, AND, 14567 Y>RAM, 14568 JZ(CMPE13F,CMPE13T); ----- ----- BB2 000024FE 32BF0901 ----- 14569 *FLOF MODE, SKIP INVENTORY CHECK 14570 .ORG CMPE13T, *B=COUNT 14571 MA(COUNT), RAM>BR, 14572 JUMP(CMPE13A); ----- ----- 4FF 00010BB3 78000000 ----- 14573 .ORG CMPE13A, *SET 5TH LSB TO INHIBIT CGAP AND CPRF SET IN PAGE0 14574 *CODE 14575 MA(COUNT), 14576 A(>10), BR>B, OR, 14577 Y>RAM, 14578 JUMP(PAGE0); ----- ----- BB3 00000505 78101101 ----- 14579 *NOT FLOF, CHECK IF PAGE IS IN CYCLE 14580 .ORG CMPE13F, *B=MREG0 14581 *Y=PCM-1 14582 MA(MREG0), RAM>BR, 14583 ARHI>A, B(-1), ADD, 14584 JUMP(CMPE20); ----- ----- 4FE 00010BB4 39FF0020 ----- 14585 .ORG CMPE20, *A=INVCNT 14586 *Y=COOCD 14587 *NORMAL MODE? 14588 MA(INVCNT), RAM>AR, 14589 A(COOCD), BR>B, AND, 14590 JZ(CMPE21F,CMPE21T); ----- ----- BB4 00022500 38020801 ----- 14591 *NORMAL OR FAVP 14592 .ORG CMPE21F, *Y=INVENTORY COMPLETE FLAG 14593 *OUT OF CYCLE DISPLAY ENABLED? 14594 AR>A, B(1), AND, 14595 JZ(CMPE22F,CMPE22T); ----- ----- 500 00002502 00010810 ----- 14596 .ORG CMPE22F, *OOC DISPLAY DISABLED 14597 JUMP(PAGE0); ----- ----- 502 00000505 00000000 ----- 14598 .ORG CMPE22T, *OOC DISPLAY ENABLED 14599 *INVENTORY COMPLETE? 14600 *IF NO, GO STRAIGHT TO PAGE0 14601 *STORE= >80 (SET MASK FOR DBB DATA) 14602 MA(STORE), 14603 Y(>80), 14604 Y>RAM, 14605 JZ(CMPE23F,PAGE0); ----- ----- 503 00002504 77801100 ----- 14606 *TOP 14607 .ORG CMPE21T, *A=TOPRG1 14608 MA(TOPRG1), RAM>AR, 14609 JUMP(CMPE30); ----- ----- 501 00020BB5 37000000 ----- 14610 .ORG CMPE30, *Y=BTTCAP 14611 AR>A, B(BTTCAP), AND, 14612 JUMP(CMPE31); ----- ----- BB5 00000BB6 00400810 ----- 14613 .ORG CMPE31, *BTT TABLE IN MEMORY? 14614 JZ(CMPE32F,CMPE32T); ----- ----- BB6 00002506 00000000 ----- 14615 .ORG CMPE32T, *NO BTT YET 14616 *### HOW ABOUT PARALLEL TOP !!! 14617 JUMP(PAGE0); ----- ----- 507 00000505 00000000 ----- 14618 .ORG CMPE32F, *YES, 14619 *STORE= >07 (SET MASK FOR DBB RETURN DATA) 14620 MA(STORE), 14621 Y(>07), 14622 Y>RAM, 14623 JUMP(CMPE23F); ----- ----- 506 00000504 77071100 ----- 14624 * STORE= MASK FOR DBB DATA 14625 .ORG CMPE23F, *MAKE DISLAY 14626 *POINT TO DISPLAY PAGE FOR PNTIN0 14627 *A=DPM 14628 Y(DPM), 14629 Y>AR, 14630 JUMP(CMPE24); ----- ----- 504 00220BB7 00681000 ----- 14631 .ORG CMPE24, *CALL PNTIN0 TO SEE IF IN CYCLE 14632 *RETURN=9, RETURN TO CMPE40 14633 MA(RETURN), 14634 Y(9), 14635 Y>RAM, 14636 JUMP(PNTIN0); ----- ----- BB7 0000080D 7C091100 ----- 14637 * A=DBB DATA, COUNT=PAGE0 I/P PAR, STORE= MASK FOR DBB DATA 14638 .ORG CMPE40, *B= STORE 14639 MA(STORE), RAM>BR, 14640 JUMP(CMPE41); ----- ----- 799 00010BB8 77000000 ----- 14641 .ORG CMPE41, *Y=DBB DATA AND MASK 14642 *A=STOR0 14643 MA(STOR0), RAM>AR, 14644 AR>A, BR>B, AND, 14645 JUMP(CMPE42); ----- ----- BB8 00020BB9 20000811 ----- 14646 .ORG CMPE42, *PAGE IN CYCLE? 14647 *P= END OF DISPLAY 14648 Y(31), 14649 Y>PR, 14650 JZ(CMPE43F,CMPE43T); ----- ----- BB9 00002508 801F1000 ----- 14651 .ORG CMPE43F, *PAGE IS IN CYCLE 14652 JUMP(PAGE0); ----- ----- 508 00000505 00000000 ----- 14653 *GENERATE PAGE NOT IN CYCLE DISPLAY 14654 * A=STOR0 14655 .ORG CMPE43T, *RWL= LATCH FOR STORE 0 14656 MA(RWL), 14657 ARHI>A, B(0), OR, 14658 Y>RAM, Y>IO, 14659 JUMP(CMPE47F); ----- ----- 509 0000050A 0B005120 ----- 14660 *START BY CLEARING HEADER 14661 .ORG CMPE47F, *B=P, WRITE A SPACE 14662 PR>BR, 14663 Y(>20), 14664 Y>DR, 14665 JUMP(CMPE45); ----- ----- 50A 00411BBA 00201000 ----- 14666 .ORG CMPE45, *Y=B-8 14667 A(-8), BR>B, ADD, 14668 JUMP(CMPE46); ----- ----- BBA 00000BBB 00F80001 ----- 14669 .ORG CMPE46, *POINT TO NEXT COL, LAST COL? 14670 *A=DHREG 14671 MA(DHREG), RAM>AR, 14672 A(-1), BR>B, ADD, 14673 Y>PR, 14674 JZ(CMPE47F,CMPE47T); ----- ----- BBB 0002250A B2FF0001 ----- 14675 * 14676 .ORG CMPE47T, *P=8 14677 Y(8), 14678 Y>PR, 14679 JUMP(CMPE48); ----- ----- 50B 00000BBC 80081000 ----- 14680 .ORG CMPE48, *8TH CHAR= FLASH 14681 Y(>08), 14682 Y>DR, 14683 JUMP(CMPE49); ----- ----- BBC 00001BBD 00081000 ----- 14684 .ORG CMPE49, *P=9 14685 Y(9), 14686 Y>PR, 14687 JUMP(CMPE50); ----- ----- BBD 00000BBE 80091000 ----- 14688 .ORG CMPE50, *9TH CHAR= ALPHA RED 14689 Y(>01), 14690 Y>DR, 14691 JUMP(CMPE51); ----- ----- BBE 00001BBF 00011000 ----- 14692 .ORG CMPE51, *P=10 14693 Y(10), 14694 Y>PR, 14695 JUMP(CMPE52); ----- ----- BBF 00000BC0 800A1000 ----- 14696 .ORG CMPE52, *10TH CHAR='>' 14697 Y(>3E), 14698 Y>DR, 14699 JUMP(CMPE53); ----- ----- BC0 00001BC1 003E1000 ----- 14700 .ORG CMPE53, *SET P TO COL BEFORE PAGE NUMBER DISPLAY 14701 *P=11 14702 Y(11), 14703 Y>PR, 14704 JUMP(CMPE54); ----- ----- BC1 00000BC2 800B1000 ----- 14705 .ORG CMPE54, *CALL PND10 TO WRITE PAGE NUMBER 14706 *RETURN=3, RETURN TO CMPE55T 14707 MA(RETURN), 14708 Y(3), 14709 Y>RAM, 14710 JUMP(PND10); ----- ----- BC2 00000AA9 7C031100 ----- 14711 .ORG CMPE55T, *P=16 14712 Y(16), 14713 Y>PR, 14714 JUMP(CMPE56); ----- ----- 61D 00000BC3 80101000 ----- 14715 .ORG CMPE56, *16TH CHAR='<' 14716 Y(>3C), 14717 Y>DR, 14718 JUMP(CMPE57); ----- ----- BC3 00001BC4 003C1000 ----- 14719 .ORG CMPE57, *P=17 14720 Y(17), 14721 Y>PR, 14722 JUMP(CMPE58); ----- ----- BC4 00000BC5 80111000 ----- 14723 .ORG CMPE58, *17TH CHAR= STEADY 14724 Y(>09), 14725 Y>DR, 14726 JUMP(CMPE59); ----- ----- BC5 00001BC6 00091000 ----- 14727 .ORG CMPE59, *P=18 14728 *B=COUNT 14729 MA(COUNT), RAM>BR, 14730 Y(18), 14731 Y>PR, 14732 JUMP(CMPE60); ----- ----- BC6 00010BC7 F8121000 ----- 14733 .ORG CMPE60, *18TH CHAR= ALPHA GREEN 14734 Y(>02), 14735 Y>DR, 14736 JUMP(CMPE68); ----- ----- BC7 00001BC8 00021000 ----- 14737 .ORG CMPE68, *SET 4LSB TO START POOCD TIME OUT IN PAGE0 14738 MA(COUNT), 14739 A(>08), BR>B, OR, 14740 Y>RAM, 14741 JUMP(PAGE0); ----- ----- BC8 00000505 78081101 ----- 14742 *+++ PSPE: PARTIAL SUB-PAGE ENTERED 14743 .ORG PSPE0, *AR=VPPRG1 14744 MA(VPPRG1), RAM>AR, 14745 JUMP(PSPE1); ----- ----- B84 00020BC9 61000000 ----- 14746 .ORG PSPE1, *HOSP=1 14747 MA(VPPRG1), 14748 AR>A, B(HOSP), OR, 14749 Y>RAM, 14750 JUMP(PSPE2); ----- ----- BC9 00000BCA 61041110 ----- 14751 .ORG PSPE2, *A=DHREG 14752 MA(DHREG), RAM>AR, 14753 JUMP(PSPE3); ----- ----- BCA 00020BCB 32000000 ----- 14754 .ORG PSPE3, *NRH=1, ICP=1 14755 MA(DHREG), 14756 AR>A, B(NRH+ICP), OR, 14757 Y>RAM, 14758 JUMP(PAGEA); ----- ----- BCB 00000B5A 32501110 ----- 14759 *+++ PMPE: PARTIAL MAIN PAGE ENTERED 14760 .ORG PMPE0, *BR=VPPRG1 14761 MA(VPPRG1), RAM>BR, 14762 JUMP(PMPE1); ----- ----- BA0 00010BCC 61000000 ----- 14763 .ORG PMPE1, *CLR PROCESS NEW PAGE NUMBER FLAG 14764 MA(VPPRG1), 14765 A(>FF-PMPN), BR>B, AND, 14766 Y>RAM, 14767 JUMP(PMPE2); ----- ----- BCC 00000BCD 61DF0901 ----- 14768 .ORG PMPE2, *AR=DHREG 14769 MA(DHREG), RAM>AR, 14770 JUMP(PMPE3); ----- ----- BCD 00020BCE 32000000 ----- 14771 .ORG PMPE3, *STOP ROLLING HEADERS 14772 *NRH=1 14773 *ICP=1 14774 MA(DHREG), 14775 AR>A, B(ICP+NRH), OR, 14776 Y>RAM, 14777 JUMP(PMPE3A); ----- ----- BCE 00000BCF 32501110 ----- 14778 *CLEAR HOLD MODE, CAN'T DO THIS WITH PAGE ROUTINE BECAUSE 14779 *PMPN SHOULD BE 0 14780 .ORG PMPE3A, *AR=VDPTXT 14781 MA(VDPTXT), RAM>AR, 14782 JUMP(PMPE3B); ----- ----- BCF 00020BD0 2B000000 ----- 14783 .ORG PMPE3B, *STOP=0 14784 MA(VDPTXT), 14785 AR>A, B(>FF-STOP), AND, 14786 Y>RAM, 14787 JUMP(PMPE4); ----- ----- BD0 00000499 2BFB0910 ----- 14788 *ENTRY POINT FOR SET HOLD ROUTINE 14789 *ENTRY POINT FROM TENS ENTERED (DIG12A) 14790 .ORG PMPE4, *COUNT=>12 14791 *CLEAR BROWSE AND INHIBIT MENU INIT IN PAGE0 CODE 14792 MA(COUNT), 14793 Y(>12), 14794 Y>RAM, 14795 JUMP(NDP0); ----- ----- 499 00000BD1 78121100 ----- 14796 *+++ NDP: NULLIFY DISPLAY PAGE LATCH 14797 .ORG NDP0, *BR=STOR0 14798 MA(STOR0), RAM>BR, 14799 JUMP(NDP1); ----- ----- BD1 00010BD2 20000000 ----- 14800 .ORG NDP1, *PR=INDEX TO DISPLAY PAGE MAG 14801 A(M0), BRHI>B, ADD, 14802 Y>PR, 14803 JUMP(NDP2); ----- ----- BD2 00000BD3 8010000C ----- 14804 .ORG NDP2, *BR=DISPLAY PAGE MAG 14805 PR>MA, RAM>BR, 14806 JUMP(NDP3); ----- ----- BD3 00110BD4 00000000 ----- 14807 .ORG NDP3, *INHIBIT DISPLAY PAGE 14808 *DISPLAY PAGE MAG=>F 14809 PR>MA, 14810 A(>0F), BR.F0>B, OR, 14811 Y>RAM, Y>IO, 14812 JUMP(PAGE0); ----- ----- BD4 00100505 000F5103 ----- 14813 *+++ PPB: UPDATE PREVIOUS PAGE BUFFER 14814 * P=RETURN POINTER, B=PEN ###COULD SHORTEN WITH A LOOP 14815 .ORG PPB0, *BR=DPM, AR=DPM 14816 *Y=PEN 14817 MA(DPM), RAM>BR, RAM>AR, 14818 A(0), BRHI>B, OR, 14819 JUMP(PPB1); ----- ----- 4C5 00030BD5 6800100C ----- 14820 .ORG PPB1, *COMPLETE MAIN PAGE? 14821 JZ(PPB1AF,PPB1AT); ----- ----- BD5 0000250C 00000000 ----- 14822 *INCOMPLETE MAIN PAGE, DO NOT OVERWRITE BUFFER 14823 .ORG PPB1AF, *BR=RETURN POINTER 14824 PR>BR, 14825 JUMP(PPB9); ----- ----- 50C 00410BD6 00000000 ----- 14826 *COMPLETE MAIN PAGE, OK TO UPDATE BUFFER 14827 .ORG PPB1AT, *LPM=DPM 14828 MA(DPM), 14829 AR.F0>A, BRHI>B, OR, 14830 Y>RAM, 14831 JUMP(PPB2); ----- ----- 50D 00000BD7 680011DC ----- 14832 .ORG PPB2, *BR=DPT, AR=DPT 14833 MA(DPT), RAM>BR, RAM>AR, 14834 JUMP(PPB3); ----- ----- BD7 00030BD8 69000000 ----- 14835 .ORG PPB3, *LPT=DPT 14836 MA(DPT), 14837 AR.F0>A, BRHI>B, OR, 14838 Y>RAM, 14839 JUMP(PPB4); ----- ----- BD8 00000BD9 690011DC ----- 14840 .ORG PPB4, *BR=DPU, AR=DPU 14841 MA(DPU), RAM>BR, RAM>AR, 14842 JUMP(PPB5); ----- ----- BD9 00030BDA 6A000000 ----- 14843 .ORG PPB5, *LPU=DPU 14844 *BR=RETURN POINTER 14845 PR>BR, 14846 MA(DPU), 14847 AR.F0>A, BRHI>B, OR, 14848 Y>RAM, 14849 JUMP(PPB9); ----- ----- BDA 00410BD6 6A0011DC ----- 14850 * 14851 .ORG PPB9, *Y=RETURN POINTER 14852 *AR=DIGIT FOR DIG30Y 14853 MA(STORE), RAM>AR, 14854 A(7), BR>B, AND, 14855 JUMP(PPB10); ----- ----- BD6 00020BDB 77070801 ----- 14856 .ORG PPB10, *CASE RETURN POINTER=? 14857 *Y=DIGIT-8 FOR DIG30Y 14858 *B=SYS1 FOR IKR10 14859 MA(SYS1), RAM>BR, 14860 AR>A, B(-8), ADD, 14861 JY(DIG30Y); ----- ----- BDB 0001C2D8 08F80010 ----- 14862 *+++ PAGE: COMMON EXIT CODE FOR PAGE ENTRY COMMANDS 14863 *ENTRY POINT WHEN SETTING SUB-PAGE MODE 14864 .ORG PAGEA, *PR=3 14865 *CLEAR HOLD AND BROWSE 14866 Y(3), 14867 Y>PR, 14868 JUMP(PAGE1); ----- ----- B5A 00000BDC 80031000 ----- 14869 *ENTRY POINT WHEN SETTING HOLD IN SUB-PAGE MODE 14870 .ORG PAGEB, *PR=0 14871 Y(0), 14872 Y>PR, 14873 JUMP(PAGE1); ----- ----- B8A 00000BDC 80001000 ----- 14874 .ORG PAGEC, *PR=1 14875 *CLEAR HOLD 14876 Y(1), 14877 Y>PR, 14878 JUMP(PAGE1); ----- ----- B9E 00000BDC 80011000 ----- 14879 * 14880 .ORG PAGE0, *BR=COUNT 14881 MA(COUNT), RAM>BR, 14882 JUMP(PAGE0A); ----- ----- 505 00010BDD 78000000 ----- 14883 .ORG PAGE0A, *PR=BR 14884 A(0), BR>B, OR, 14885 Y>PR, 14886 JUMP(PAGE1); ----- ----- BDD 00000BDC 80001001 ----- 14887 * Flags in P have been set to have the following effects:- 14888 * 14889 * 1 lsb=1: clear HOLD 14890 * 2 lsb=1: clear BROWSE 14891 * 3 lsb=1: clear SINP (search for initial page) 14892 * 4 lsb=1: start POOCD 5s time out 14893 * (else terminate time outs) 14894 * 5 lsb=0: init MENU (CPRF=1, CGAP=1) 14895 * 14896 *1 lsb 14897 .ORG PAGE1, *BR=PR 14898 PR>BR, 14899 JUMP(PAGE1A); ----- ----- BDC 00410BDE 00000000 ----- 14900 .ORG PAGE1A, *AR=VDPTXT 14901 *Y=PR LSB 14902 MA(VDPTXT), RAM>AR, 14903 A(1), BR>B, AND, 14904 JUMP(PAGE2); ----- ----- BDE 00020BDF 2B010801 ----- 14905 .ORG PAGE2, *Y=STOP, PR LSB? 14906 *BR=VPPRG1 14907 MA(VPPRG1), RAM>BR, 14908 AR>A, B(STOP), AND, 14909 JZ(PAGE3F,PAGE3T); ----- ----- BDF 0001250E 61040810 ----- 14910 .ORG PAGE3T, *PR LSB NOT SET 14911 JUMP(PAGE4T); ----- ----- 50F 00000511 00000000 ----- 14912 *PR LSB SET, CLEAR STOP 14913 .ORG PAGE3F, *STOP=0 14914 *WAS STOP=1? 14915 MA(VDPTXT), 14916 AR>A, B(>FF-STOP), AND, 14917 Y>RAM, 14918 JZ(PAGE4F,PAGE4T); ----- ----- 50E 00002510 2BFB0910 ----- 14919 .ORG PAGE4F, *CLEARING STOP 14920 *PMPN=1 (RE-ENTER PAGE NUMBER) 14921 MA(VPPRG1), 14922 A(PMPN), BR>B, OR, 14923 Y>RAM, 14924 JUMP(PAGE4T); ----- ----- 510 00000511 61201101 ----- 14925 *2 lsb 14926 .ORG PAGE4T, *BR=PR, 14927 *AR=DHREG 14928 PR>BR, 14929 MA(DHREG), RAM>AR, 14930 JUMP(PAGE5); ----- ----- 511 00430BE0 32000000 ----- 14931 .ORG PAGE5, *Y=PR 2ND LSB 14932 A(2), BR>B, AND, 14933 JUMP(PAGE6); ----- ----- BE0 00000BE1 00020801 ----- 14934 .ORG PAGE6, *CLEAR BROWSE? 14935 *BR=VPPRG1 14936 MA(VPPRG1), RAM>BR, 14937 JZ(PAGE7F,PAGE7T); ----- ----- BE1 00012512 61000000 ----- 14938 *PR 2ND LSB SET, CLEAR BROWSE 14939 .ORG PAGE7F, *BWSE=0 14940 MA(DHREG), 14941 AR>A, B(>FF-BWSE), AND, 14942 Y>RAM, 14943 JUMP(PAGE8); ----- ----- 512 00000BE2 32FE0910 ----- 14944 .ORG PAGE8, *SLFB=0 14945 MA(VPPRG1), 14946 A(>FF-SLFB), BR>B, AND, 14947 Y>RAM, 14948 JUMP(PAGE7T); ----- ----- BE2 00000513 61BF0901 ----- 14949 *3 lsb 14950 .ORG PAGE7T, *BR=PR 14951 *AR=VDPTXT 14952 PR>BR, 14953 MA(VDPTXT), RAM>AR, 14954 JUMP(PAGE7A); ----- ----- 513 00430BE3 2B000000 ----- 14955 .ORG PAGE7A, *Y=PR 3RD LSB 14956 A(>04), BR>B, AND, 14957 JUMP(PAGE7B); ----- ----- BE3 00000BE4 00040801 ----- 14958 .ORG PAGE7B, *CHANNEL CHANGE INIT? 14959 *BR=EXPREG 14960 MA(EXPREG), RAM>BR, 14961 JZ(PAGE9F,PAGE9T); ----- ----- BE4 00012514 63000000 ----- 14962 *PR 3RD LSB NOT SET, CLEAR STOP LOOKING FOR 8/30 PAGE 14963 .ORG PAGE9T, *NO, OK TO CLEAR SINP 14964 *SINP=0 14965 MA(EXPREG), 14966 A(>FF-SINP), BR>B, AND, 14967 Y>RAM, 14968 JUMP(PAGE9F); ----- ----- 515 00000514 63EF0901 ----- 14969 .ORG PAGE9F, *Y=UEXB 14970 *B=MREG0 14971 MA(MREG0), RAM>BR, 14972 AR>A, B(UEXB), AND, 14973 JUMP(PAGE10); ----- ----- 514 00010BE5 39010810 ----- 14974 .ORG PAGE10, *UEXB? 14975 *Y=CAEXP 14976 A(CAEXP), BR>B, AND, 14977 JZ(PAGE10F,PAGE10T); ----- ----- BE5 00002516 00200801 ----- 14978 .ORG PAGE10T, *NOT EXPAND BOTTOM 14979 JUMP(PAGE11F); ----- ----- 517 00000518 00000000 ----- 14980 .ORG PAGE10F, *EXPAND BOTTOM, CAEXP? 14981 JZ(PAGE11F,PAGE11T); ----- ----- 516 00002518 00000000 ----- 14982 .ORG PAGE11T, *EXPAND BOTTOM, CAEXP=0, SET EXPAND TOP 14983 MA(VDPTXT), 14984 AR>A, B(UEXT+UEXB), XOR, 14985 Y>RAM, 14986 JUMP(PAGE11F); ----- ----- 519 00000518 2B031910 ----- 14987 *4 lsb 14988 .ORG PAGE11F, *A=DHREG 14989 MA(DHREG), RAM>AR, 14990 JUMP(PAGE12); ----- ----- 518 00020BE6 32000000 ----- 14991 .ORG PAGE12, *POOCD=0, TOD=0 14992 *B=P 14993 PR>BR, 14994 MA(DHREG), 14995 AR>A, B(>FF-POOCD-TOD), AND, 14996 Y>AR, Y>RAM, 14997 JUMP(PAGE12A); ----- ----- BE6 00630BE7 32D70910 ----- 14998 .ORG PAGE12A, *Y=PR 4TH LSB 14999 A(>08), BR>B, AND, 15000 JUMP(PAGE12B); ----- ----- BE7 00000BE8 00080801 ----- 15001 .ORG PAGE12B, *POOCD TIME OUT? 15002 *SET 5S TIME OUT 15003 MA(TIMOUT), 15004 Y(>FF), 15005 Y>RAM, 15006 JZ(PAGE12CF,PAGE12CT); ----- ----- BE8 0000251A 3BFF1100 ----- 15007 .ORG PAGE12CF, *POOCD TIME OUT 15008 *POOCD=1 15009 MA(DHREG), 15010 AR>A, B(POOCD), OR, 15011 Y>RAM, 15012 JUMP(PAGE12CT); ----- ----- 51A 0000051B 32201110 ----- 15013 *5 lsb 15014 .ORG PAGE12CT, *Y=PR 5TH LSB 15015 A(>10), BR>B, AND, 15016 JUMP(PAGE13A); ----- ----- 51B 00000BE9 00100801 ----- 15017 .ORG PAGE13A, *INIT MENU? 15018 *A=EXPREG 15019 MA(EXPREG), RAM>AR, 15020 JZ(PAGE14F,PAGE14T); ----- ----- BE9 0002251C 63000000 ----- 15021 .ORG PAGE14T, *INIT MENU 15022 MA(EXPREG), 15023 AR>A, B(CGAP+CPRF), OR, 15024 Y>RAM, 15025 JUMP(PAGE14F); ----- ----- 51D 0000051C 630C1110 ----- 15026 *EXIT PAGE ENTRY CODE 15027 .ORG PAGE14F, 15028 JUMP(DI120); ----- ----- 51C 0000059C 00000000 ----- 15029 *///3- 15030 * BR=RCSTAT, AR=INSTRUCTION 15031 .ORG DI3X, *CASE INS HIGH NIB=>3 15032 *Y=VBI, B=SCREEN 15033 MA(SCREEN), RAM>BR, 15034 A(%01000000), RCS>B, AND, 15035 JY(DI30Y); ----- ----- 203 0001C3B0 6040080B ----- 15036 .ORG DI30Y, *CASE INS >30 15037 *TEXP 15038 *A=VDPTXT, P=UEXT 15039 MA(VDPTXT), RAM>AR, 15040 Y(UEXT), 15041 Y>PR, 15042 JUMP(GEXP0); ----- ----- 3B0 00020BEA AB021000 ----- 15043 .ORG DI31, *CASE INS >31 15044 *BEXP 15045 *A=VDPTXT, P=UEXB 15046 MA(VDPTXT), RAM>AR, 15047 Y(UEXB), 15048 Y>PR, 15049 JUMP(GEXP0); ----- ----- 3B1 00020BEA AB011000 ----- 15050 .ORG DI32, *CASE INS >32 15051 *NEXP 15052 *A=VDPTXT, P=0 15053 MA(VDPTXT), RAM>AR, 15054 Y(0), 15055 Y>PR, 15056 JUMP(GEXP0); ----- ----- 3B2 00020BEA AB001000 ----- 15057 .ORG DI33, *CASE INS >33 15058 JUMP(DI100); ----- ----- 3B3 000000D1 00000000 ----- 15059 .ORG DI34, *CASE INS >34 15060 JUMP(DI100); ----- ----- 3B4 000000D1 00000000 ----- 15061 .ORG DI35, *CASE INS >35 15062 JUMP(DI100); ----- ----- 3B5 000000D1 00000000 ----- 15063 .ORG DI36, *CASE INS >36 15064 JUMP(DI100); ----- ----- 3B6 000000D1 00000000 ----- 15065 .ORG DI37, *CASE INS >37 15066 JUMP(DI100); ----- ----- 3B7 000000D1 00000000 ----- 15067 .ORG DI38, *CASE INS >38 15068 *RED 15069 *VBI? 15070 *Y=TDISP 15071 *B=VDP0 15072 MA(VDP0), RAM>BR, 15073 A(TDISP), BR>B, AND, 15074 JZ(KEY0F,KEY0T); ----- ----- 3B8 0001251E 00040801 ----- 15075 .ORG DI39, *CASE INS >39 15076 *GREEN 15077 *VBI? 15078 *Y=TDISP 15079 *B=VDP0 15080 MA(VDP0), RAM>BR, 15081 A(TDISP), BR>B, AND, 15082 JZ(KEY0F,KEY0T); ----- ----- 3B9 0001251E 00040801 ----- 15083 .ORG DI3A, *CASE INS >3A 15084 *YELLOW 15085 *VBI? 15086 *Y=TDISP 15087 *B=VDP0 15088 MA(VDP0), RAM>BR, 15089 A(TDISP), BR>B, AND, 15090 JZ(KEY0F,KEY0T); ----- ----- 3BA 0001251E 00040801 ----- 15091 .ORG DI3B, *CASE INS >3B 15092 *CYAN 15093 *VBI? 15094 *Y=TDISP 15095 *B=VDP0 15096 MA(VDP0), RAM>BR, 15097 A(TDISP), BR>B, AND, 15098 JZ(KEY0F,KEY0T); ----- ----- 3BB 0001251E 00040801 ----- 15099 .ORG DI3C, *CASE INS >3C 15100 *INDEX 15101 *VBI? 15102 *Y=TDISP, A=PEN 15103 MA(PEN), RAM>AR, 15104 A(TDISP), BR>B, AND, 15105 JZ(IKR0F,IKR0T); ----- ----- 3BC 00022520 1B040801 ----- 15106 .ORG DI3D, *CASE INS >3D 15107 *R24PIC 15108 *THIS WAS USED IN UNITEXT TO CLEAR THE STATUS DISPLAY, 15109 *THEREFORE DO THE SAME AS CSTAT 15110 JUMP(DI1D); ----- ----- 3BD 0000022D 00000000 ----- 15111 .ORG DI3E, *CASE INS >3E 15112 JUMP(DI100); ----- ----- 3BE 000000D1 00000000 ----- 15113 .ORG DI3F, *CASE INS >3F 15114 JUMP(DI100); ----- ----- 3BF 000000D1 00000000 ----- 15115 */// 15116 ***KEY: COLOUR KEY PRESSED 15117 * B=VDP0, LAST Y WAS TDISP 15118 .ORG KEY0F, *IN VBI, DELAY 15119 *A=POLREG 15120 MA(POLREG), RAM>AR, 15121 JUMP(DI110); ----- ----- 51E 00020572 10000000 ----- 15122 .ORG KEY0T, *TEXT DISPLAYED? 15123 *Y=R24ON 15124 *A=PEN 15125 MA(PEN), RAM>AR, 15126 A(R24ON), BR>B, AND, 15127 JZ(KEY1F,KEY1T); ----- ----- 51F 00022522 1B400801 ----- 15128 .ORG KEY1T, *TEXT NOT DISPLAYED, EXIT 15129 JUMP(DI100); ----- ----- 523 000000D1 00000000 ----- 15130 .ORG KEY1F, *R24ON? 15131 *Y=PEN-4 15132 *B=SYS1 15133 MA(SYS1), RAM>BR, 15134 ARHI>A, B(-4), ADD, 15135 JZ(KEY1BF,KEY1BT); ----- ----- 522 00012524 08FC0020 ----- 15136 .ORG KEY1BT, *AUTO PROMPTS ENABLED AND USER CAN NOT SEE ROW 24 15137 *TIME OUT DISPLAY 15138 *A=DHREG 15139 MA(DHREG), RAM>AR, 15140 JUMP(STOD0); ----- ----- 525 00020B93 32000000 ----- 15141 .ORG KEY1BF, *SUB-PAGE MODE? 15142 *ELSE, JUMP TO CKR ROUTINE 15143 *A=LSTINS 15144 MA(LSTINS), RAM>AR, 15145 JN(KEY2F,CKR0T); ----- ----- 524 00024526 2E000000 ----- 15146 *SUB-PAGE MODE 15147 .ORG KEY2F, *SUB-PAGE MODE 15148 *Y=INSRUCTION - >38 15149 AR>A, B(->38), ADD, 15150 JUMP(KEY3); ----- ----- 526 00000BEB 00C80010 ----- 15151 .ORG KEY3, *RED? 15152 *Y=INSRUCTION - >39 15153 AR>A, B(->39), ADD, 15154 JZ(KEY4F,KEY4T); ----- ----- BEB 00002528 00C70010 ----- 15155 .ORG KEY4T, *RED, JUMP TO DIP SUB-PAGE ROUTINE 15156 *SET LSTINS TO INDICATE PAGE- TO DIP CODE 15157 MA(LSTINS), 15158 Y(>15), 15159 Y>RAM, 15160 JUMP(DIP1F); ----- ----- 529 000004C2 2E151100 ----- 15161 .ORG KEY4F, *GREEN? 15162 JZ(KEY5F,KEY5T); ----- ----- 528 0000252A 00000000 ----- 15163 .ORG KEY5T, *GREEN, JUMP TO DIP SUB-PAGE ROUTINE 15164 *SET LSTINS TO INDICATE PAGE+ TO DIP CODE 15165 MA(LSTINS), 15166 Y(>16), 15167 Y>RAM, 15168 JUMP(DIP1F); ----- ----- 52B 000004C2 2E161100 ----- 15169 .ORG KEY5F, *THIS KEY DOES NOTHING IN SUB-PAGE MODE 15170 JUMP(DI100); ----- ----- 52A 000000D1 00000000 ----- 15171 ***IKR: INDEX KEY ROUTINE 15172 * 15173 * A=PEN, LAST Y WAS TDISP 15174 .ORG IKR0F, *IN VBI, DELAY 15175 *A=POLREG 15176 MA(POLREG), RAM>AR, 15177 JUMP(DI110); ----- ----- 520 00020572 10000000 ----- 15178 .ORG IKR0T, *TEXT DISPLAYED? 15179 JZ(IKR1F,IKR1T); ----- ----- 521 0000252C 00000000 ----- 15180 .ORG IKR1T, *TEXT NOT DISPLAYED, EXIT 15181 JUMP(DI100); ----- ----- 52D 000000D1 00000000 ----- 15182 .ORG IKR1F, *TELETEXT DISPLAYED 15183 *CALL PPB0 TO UPDATE PREVIOUS PAGE BUFFER 15184 *P=6, RETURN TO IKR10 15185 *B=PEN 15186 MA(PEN), RAM>BR, 15187 Y(6), 15188 Y>PR, 15189 JUMP(PPB0); ----- ----- 52C 000104C5 9B061000 ----- 15190 * B=SYS2 15191 .ORG IKR10, *Y=PCM-1 15192 A(-1), BRHI>B, ADD, 15193 JUMP(IKR11); ----- ----- 2DE 00000BEC 00FF000C ----- 15194 .ORG IKR11, *Y=PCM-2 15195 *TOP MODE? 15196 A(-2), BRHI>B, ADD, 15197 JZ(IKR12F,IKR12T); ----- ----- BEC 0000252E 00FE000C ----- 15198 .ORG IKR12F, *FLOF MODE? 15199 *A=INDEX POINTER FOR GFL0 15200 Y(4), 15201 Y>AR, 15202 JZ(IKR13F,IKR13T); ----- ----- 52E 00222530 00041000 ----- 15203 *FLOF MODE 15204 * A=4 15205 .ORG IKR13T, *CALL GFL0 TO GET LINK 15206 *RETURN=1, RETURN TO IKR20 15207 MA(RETURN), 15208 Y(1), 15209 Y>RAM, 15210 JUMP(GFL0); ----- ----- 531 0000098C 7C011100 ----- 15211 .ORG IKR20, *NULL LINK? 15212 *A=EXPREG 15213 MA(EXPREG), RAM>AR, 15214 JZ(IKR21F,IKR21T); ----- ----- 061 00022532 63000000 ----- 15215 .ORG IKR21F, *NULL LINK 15216 *SINP=1 TO LOOK FOR 8/30 INIT PAGE 15217 MA(EXPREG), 15218 AR>A, B(SINP), OR, 15219 Y>RAM, 15220 JUMP(IKR13F); ----- ----- 532 00000530 63101110 ----- 15221 .ORG IKR21T, *COPY Px TO Dx AND GO TO CMPE0 15222 JUMP(DIP20Y); ----- ----- 533 00000730 00000000 ----- 15223 *TOP MODE 15224 .ORG IKR12T, *A=POINTER TO DISPLAY PAGE 15225 Y(DPM), 15226 Y>AR, 15227 JUMP(IKR30); ----- ----- 52F 00220BED 00681000 ----- 15228 .ORG IKR30, *CALL PNTIN0 TO GET BTT POINTER 15229 *RETURN=10, RETURN TO IKR40 15230 MA(RETURN), 15231 Y(10), 15232 Y>RAM, 15233 JUMP(PNTIN0); ----- ----- BED 0000080D 7C0A1100 ----- 15234 * B=BTT POINTER 15235 .ORG IKR40, *Y=B-40 15236 A(-40), BR>B, ADD, 15237 JUMP(IKR41); ----- ----- 79A 00000BEE 00D80001 ----- 15238 .ORG IKR41, *IS DISPLAY PAGE PAGE 100? 15239 *SET MASK TO LOOK FOR TV PAGE 15240 MA(MASK), 15241 Y(>08), 15242 Y>RAM, 15243 JZ(IKR42F,IKR42T); ----- ----- BEE 00002534 73081100 ----- 15244 .ORG IKR42F, *NOT ON PAGE 100, GO TO PAGE 100 15245 JUMP(IKR13F); ----- ----- 534 00000530 00000000 ----- 15246 .ORG IKR42T, *ON PAGE 100, SEARCH FOR TV PAGE 15247 *CALL SBT0A 15248 *RETURN=3, RETURN TO INTPN0 15249 *CALL INTPN0 15250 *RETURN=3, RETURN TO IKR50, 15251 MA(RETURN), 15252 Y(3), 15253 Y>RAM, 15254 JUMP(SBT0A); ----- ----- 535 000004C8 7C031100 ----- 15255 .ORG IKR50, *COPY Px TO Dx AND GO TO CMPE0 15256 JUMP(DIP20Y); ----- ----- 733 00000730 00000000 ----- 15257 *NORMAL OR FAVP, ENTER PAGE 100 15258 *NEED TO SET UP COUNT FOR PAGE 0 15259 .ORG IKR13F, *COUNT=>3 (CLEAR BROWSE AND HOLD) 15260 MA(COUNT), 15261 Y(3), 15262 Y>RAM, 15263 JUMP(CHNG60F); ----- ----- 530 00000676 78031100 ----- 15264 */// 15265 ***CKR: COLOURED KEY ROUTINE 15266 * B=SYS1 15267 .ORG CKR0T, *Y=PCM-2 15268 *A=LSTINS 15269 MA(LSTINS), RAM>AR, 15270 A(-2), BRHI>B, ADD, 15271 JUMP(CKR1); ----- ----- 527 00020BEF 2EFE000C ----- 15272 .ORG CKR1, *FLOF MODE? 15273 *Y=PCM-3 15274 A(-3), BRHI>B, ADD, 15275 JZ(CKR1AF,CKR1AT); ----- ----- BEF 00002536 00FD000C ----- 15276 .ORG CKR1AF, *NOT FLOF, FAVP? 15277 *A=LSTINS->36 (STORE POINTER FOR GFP0T) 15278 AR>A, B(->36), ADD, 15279 Y>AR, 15280 JZ(CKR1BF,CKR1BT); ----- ----- 536 00222538 00CA0010 ----- 15281 *TOP OR NORMAL 15282 .ORG CKR1BF, *TOP OR NORMAL 15283 *CALL PPB0 15284 *P=4, RETURN TO CKR2 15285 *B=PEN 15286 MA(PEN), RAM>BR, 15287 Y(4), 15288 Y>PR, 15289 JUMP(PPB0); ----- ----- 538 000104C5 9B041000 ----- 15290 .ORG CKR2, *A=PAGE INDEX FOR PNTIN0 15291 Y(DPM), 15292 Y>AR, 15293 JUMP(CKR3); ----- ----- 2DC 00220BF0 00681000 ----- 15294 .ORG CKR3, *CALL PNTIN0 15295 *RETURN=2, RETURN TO CKR4 15296 MA(RETURN), 15297 Y(2), 15298 Y>RAM, 15299 JUMP(PNTIN0); ----- ----- BF0 0000080D 7C021100 ----- 15300 * A=DECODED BTT OF CURRENT DISPLAY PAGE 15301 .ORG CKR4, *B=SYS1 15302 MA(SYS1), RAM>BR, 15303 JUMP(CKR5); ----- ----- 792 00010BF1 08000000 ----- 15304 .ORG CKR5, *Y=PCM 15305 A(3), BRHI>B, AND, 15306 JUMP(CKR6); ----- ----- BF1 00000BF2 0003080C ----- 15307 .ORG CKR6, *NORMAL OR TOP? 15308 *BR=LSTINS 15309 MA(LSTINS), RAM>BR, 15310 JZ(CKR10F,CKR10T); ----- ----- BF2 0001253A 2E000000 ----- 15311 .ORG CKR10T, *NORMAL MODE 15312 *A=MODE 15313 MA(MREG0), RAM>AR, 15314 JUMP(CKR100); ----- ----- 53B 00020BF3 39000000 ----- 15315 .ORG CKR10F, *TOP MODE 15316 *Y=LSTINS LO NIB - 8 15317 *B=MREG1 15318 MA(MREG1), RAM>BR, 15319 A(-8), BR.0F>B, ADD, 15320 JUMP(CKR20); ----- ----- 53A 00010BF4 65F80002 ----- 15321 *COLOURED KEY IN TOP MODE 15322 * A=DECODED BTT BYTE, B=MREG1 15323 .ORG CKR20, *CASE COLOUR? 15324 *Y=RKM 15325 *B=LTK 15326 MA(LTK), RAM>BR, 15327 A(RKM), BR>B, AND, 15328 JY(CKR30Y); ----- ----- BF4 0001C230 11020801 ----- 15329 *RED KEY IN TOP MODE 15330 * A=DECODED BTT BYTE, LAST Y WAS RKM 15331 .ORG CKR30Y, *SIMPLE RED KEY MODE? 15332 *Y=BLOCK PAGE FLAG 15333 AR>A, B(>04), AND, 15334 JZ(CKR30AF,CKR30AT); ----- ----- 230 0000253C 00040810 ----- 15335 .ORG CKR30AF, *SIMPLE RED KEY MODE 15336 *SET MASK TO LOOK FOR ANY PAGE 15337 MA(MASK), 15338 Y(>07), 15339 Y>RAM, 15340 JUMP(CKR42T); ----- ----- 53C 00000551 73071100 ----- 15341 .ORG CKR30AT, *Y=GROUP PAGE FLAG 15342 *DISPLAY PAGE A BLOCK PAGE? 15343 AR>A, B(>02), AND, 15344 JZ(CKR40F,CKR40T); ----- ----- 53D 0000253E 00020810 ----- 15345 .ORG CKR40F, *BLOCK PAGE 15346 *SET MASK TO LOOK FOR BLOCK 15347 MA(MASK), 15348 Y(>04), 15349 Y>RAM, 15350 JUMP(CKR42T); ----- ----- 53E 00000551 73041100 ----- 15351 .ORG CKR40T, *GROUP PAGE? 15352 *SET MASK TO LOOK FOR ANY PAGE 15353 MA(MASK), 15354 Y(>07), 15355 Y>RAM, 15356 JZ(CKR42F,CKR42T); ----- ----- 53F 00002550 73071100 ----- 15357 .ORG CKR42F, *GROUP PAGE 15358 *SET MASK TO LOOK FOR BLOCK OR GROUP 15359 MA(MASK), 15360 Y(>06), 15361 Y>RAM, 15362 JUMP(CKR42T); ----- ----- 550 00000551 73061100 ----- 15363 * 15364 .ORG CKR42T, *B=LTK 15365 MA(LTK), RAM>BR, 15366 JUMP(CKR45); ----- ----- 551 00010BF5 11000000 ----- 15367 .ORG CKR45, *RED KEY, SET LTK=0 15368 MA(LTK), 15369 A(0), BR.0F>B, OR, 15370 Y>RAM, 15371 JUMP(CKR46); ----- ----- BF5 00000BF6 11001102 ----- 15372 .ORG CKR46, *CALL SBT0B TO SEARCH BACK FOR PAGE 15373 *RETURN=0, RETURN TO DIP18Y 15374 MA(RETURN), 15375 Y(0), 15376 Y>RAM, 15377 JUMP(SBT0B); ----- ----- BF6 000004C9 7C001100 ----- 15378 *GREEN KEY IN TOP MODE 15379 * A=DECODED BTT BYTE, B=LTK 15380 .ORG CKR31, *LTK=1 15381 MA(LTK), 15382 A(>10), BR.0F>B, OR, 15383 Y>RAM, 15384 JUMP(CKR31A); ----- ----- 231 00000BF7 11101102 ----- 15385 .ORG CKR31A, *SET MASK TO LOOK FOR ANY PAGE 15386 MA(MASK), 15387 Y(>07), 15388 Y>RAM, 15389 JUMP(CKR80); ----- ----- BF7 00000BF8 73071100 ----- 15390 *YELLOW KEY IN TOP MODE 15391 * A=DECODED BTT BYTE, B=LTK 15392 .ORG CKR32, *LTK=2 15393 MA(LTK), 15394 A(>20), BR.0F>B, OR, 15395 Y>RAM, 15396 JUMP(CKR60); ----- ----- 232 00000BF9 11201102 ----- 15397 * 15398 * TCJ July 94 15399 * CKR32A not used? 15400 * 15401 *.ORG CKR32A, *SET MASK TO LOOK FOR GROUP OR BLOCK 15402 * MA(MASK), 15403 * Y(>06), 15404 * Y>RAM, 15405 * JUMP(CKR80); 15406 * 15407 *CYAN KEY IN TOP MODE 15408 * A=DECODED BTT BYTE, B=LTK 15409 .ORG CKR33, *LTK=3 15410 MA(LTK), 15411 A(>30), BR.0F>B, OR, 15412 Y>RAM, 15413 JUMP(CKR33A); ----- ----- 233 00000BFA 11301102 ----- 15414 .ORG CKR33A, *SET MASK TO LOOK BLOCK 15415 MA(MASK), 15416 Y(>04), 15417 Y>RAM, 15418 JUMP(CKR80); ----- ----- BFA 00000BF8 73041100 ----- 15419 *ROTATE IN GROUP ROUTINE FOR THE YELLOW KEY 15420 .ORG CKR60, *FIRST SEARCH FOR GROUP OR BLOCK 15421 MA(MASK), 15422 Y(>06), 15423 Y>RAM, 15424 JUMP(CKR61); ----- ----- BF9 00000BFB 73061100 ----- 15425 .ORG CKR61, *CALL SBT0A 15426 *RETURN=6, RETURN TO CKR62 15427 MA(RETURN), 15428 Y(6), 15429 Y>RAM, 15430 JUMP(SBT0A); ----- ----- BFB 000004C8 7C061100 ----- 15431 .ORG CKR62, *B=MREG1, Y=BLOCK FLAG 15432 MA(MREG1), RAM>BR, 15433 AR>A, B(>04), AND, 15434 JUMP(CKR63); ----- ----- 7A6 00010BFC 65040810 ----- 15435 .ORG CKR63, *Y=RIB, BLOCK PAGE FOUND? 15436 A(RIB), BR>B, AND, 15437 JZ(CKR64F,CKR64T); ----- ----- BFC 00002552 00010801 ----- 15438 .ORG CKR64T, *GROUP FOUND, NO ROTATE 15439 JUMP(CKR65T); ----- ----- 553 00000555 00000000 ----- 15440 .ORG CKR64F, *BLOCK FOUND, ROTATE IN BLOCK? 15441 *RETURN=7 15442 MA(RETURN), 15443 Y(7), 15444 Y>RAM, 15445 JZ(CKR65F,CKR65T); ----- ----- 552 00002554 7C071100 ----- 15446 *ROTATE IN BLOCK 15447 .ORG CKR65F, *SEARCH BACK FOR LAST BLOCK 15448 *CALL SBT0B 15449 *RETURN=7, RETURN TO CKR66 15450 *MASK=4 15451 MA(MASK), 15452 Y(>04), 15453 Y>RAM, 15454 JUMP(SBT0B); ----- ----- 554 000004C9 73041100 ----- 15455 .ORG CKR66, *SET MASK TO LOOK FOR NEXT GROUP 15456 *MASK=2 15457 MA(MASK), 15458 Y(>02), 15459 Y>RAM, 15460 JUMP(CKR80); ----- ----- 7A7 00000BF8 73021100 ----- 15461 *NO ROTATE IN BLOCK 15462 .ORG CKR65T, * 15463 JUMP(DIP18Y); ----- ----- 555 000007A0 00000000 ----- 15464 *COMMON CODE FOR GREEN, YELLOW AND CYAN IN TOP MODE 15465 .ORG CKR80, *CALL SBT0A TO SEARCH FORWARD FOR PAGE 15466 *RETURN=0, RETURN TO DIP18Y 15467 MA(RETURN), 15468 Y(0), 15469 Y>RAM, 15470 JUMP(SBT0A); ----- ----- BF8 000004C8 7C001100 ----- 15471 *COLOURED KEY IN NORMAL MODE 15472 * A=MODE, B=LSTINS 15473 .ORG CKR100, *Y=PMNM 15474 AR>A, B(PMNM), AND, 15475 JUMP(CKR101); ----- ----- BF3 00000BFD 00040810 ----- 15476 .ORG CKR101, *PLUS MINUS NORMAL MENU? 15477 *A=LSTINS->38 15478 A(->38), BR>B, ADD, 15479 Y>AR, 15480 JZ(CKR102F,CKR102T); ----- ----- BFD 00222556 00C80001 ----- 15481 *PLUS MINUS NORMAL MENU 15482 .ORG CKR102F, *Y=A-2 15483 AR>A, B(-2), ADD, 15484 JUMP(CKR110); ----- ----- 556 00000BFE 00FE0010 ----- 15485 .ORG CKR110, *RED OR GREEN KEY? 15486 *A=PEN 15487 MA(PEN), RAM>AR, 15488 JN(CKR111F,CKR111T); ----- ----- BFE 00024558 1B000000 ----- 15489 .ORG CKR111T, *RED OR GREEN KEY 15490 *JUMP TO DIP CODE 15491 *Y=PEN 15492 ARHI>A, B(0), OR, 15493 JUMP(DIP1T); ----- ----- 559 000004C3 00001020 ----- 15494 .ORG CKR111F, *YELLOW OR CYAN KEY 15495 *NO PROMPT FOR THIS KEY, DO NOTHING 15496 JUMP(DI100); ----- ----- 558 000000D1 00000000 ----- 15497 *DEFAULT NORMAL MENU 15498 .ORG CKR102T, *DEFAULT NORMAL MENU 15499 *P=INDEX TO STORE FOR THIS KEY 15500 AR>A, B(STOR2), ADD, 15501 Y>PR, 15502 JUMP(CKR120); ----- ----- 557 00000BFF 80220010 ----- 15503 .ORG CKR120, *B=STORE FOR THIS KEY 15504 PR>MA, RAM>BR, 15505 JUMP(CKR121); ----- ----- BFF 00110C00 00000000 ----- 15506 .ORG CKR121, *P=INDEX TO MAGS IN THIS STORE 15507 *B=DPM 15508 MA(DPM), RAM>BR, 15509 A(M0), BRHI>B, ADD, 15510 Y>PR, 15511 JUMP(CKR122); ----- ----- C00 00010C01 E810000C ----- 15512 .ORG CKR122, *A=NEW MAGS 15513 PR>MA, RAM>AR, 15514 JUMP(CKR123); ----- ----- C01 00120C02 00000000 ----- 15515 .ORG CKR123, *UPDATE DISPLAY PAGE MAG 15516 *B=INDEX TO MAGS 15517 PR>BR, 15518 MA(DPM), 15519 AR<<4>A, BR.0F>B, OR, 15520 Y>RAM, 15521 JUMP(CKR124); ----- ----- C02 00410C03 68001132 ----- 15522 .ORG CKR124, *P=INDEX TO TENS 15523 *B=DPT 15524 MA(DPT), RAM>BR, 15525 A(8), BR>B, ADD, 15526 Y>PR, 15527 JUMP(CKR125); ----- ----- C03 00010C04 E9080001 ----- 15528 .ORG CKR125, *A=NEW TENS 15529 PR>MA, RAM>AR, 15530 JUMP(CKR126); ----- ----- C04 00120C05 00000000 ----- 15531 .ORG CKR126, *UPDATE DISPLAY PAGE TENS 15532 *B=INDEX TO TENS 15533 PR>BR, 15534 MA(DPT), 15535 AR<<4>A, BR.0F>B, OR, 15536 Y>RAM, 15537 JUMP(CKR127); ----- ----- C05 00410C06 69001132 ----- 15538 .ORG CKR127, *P=INDEX TO UNITS 15539 *B=DPU 15540 MA(DPU), RAM>BR, 15541 A(8), BR>B, ADD, 15542 Y>PR, 15543 JUMP(CKR128); ----- ----- C06 00010C07 EA080001 ----- 15544 .ORG CKR128, *A=NEW TENS 15545 PR>MA, RAM>AR, 15546 JUMP(CKR129); ----- ----- C07 00120C08 00000000 ----- 15547 .ORG CKR129, *UPDATE DISPLAY PAGE UNITS 15548 MA(DPU), 15549 AR<<4>A, BR.0F>B, OR, 15550 Y>RAM, 15551 JUMP(CMPE0); ----- ----- C08 000004DF 6A001132 ----- 15552 *FLOF MODE 15553 * A=LSTINS 15554 .ORG CKR1AT, *A=LSTINS->38 (LINK NUMBER) 15555 AR>A, B(->38), ADD, 15556 Y>AR, 15557 JUMP(CKR1AA); ----- ----- 537 00220C09 00C80010 ----- 15558 .ORG CKR1AA, *CALL GFL0 TO PUT FLOF LINK IN PU,PT,PM 15559 *RETURN=0, RETURN TO CKR200Y 15560 MA(RETURN), 15561 Y(0), 15562 Y>RAM, 15563 JUMP(GFL0); ----- ----- C09 0000098C 7C001100 ----- 15564 * LAST Y WAS NULL ILINK MARKER, TPD=FLOF FLAGS 15565 .ORG CKR200Y, *NULL LINK? 15566 JZ(CKR201F,CKR201T); ----- ----- 060 0000255A 00000000 ----- 15567 .ORG CKR201F, *NULL LINK 15568 JUMP(DI100); ----- ----- 55A 000000D1 00000000 ----- 15569 *ENTRY POINT FROM FAVP MODE 15570 .ORG CKR201T, *CALL PPB0 TO UPDATE PREVIOUS PAGE 15571 *P=5, RETURN TO CKR210 15572 *B=PEN 15573 MA(PEN), RAM>BR, 15574 Y(5), 15575 Y>PR, 15576 JUMP(PPB0); ----- ----- 55B 000104C5 9B051000 ----- 15577 .ORG CKR210, *JUMP TO GENERAL PURPOSE PAGE ENTRY 15578 JUMP(DIP20Y); ----- ----- 2DD 00000730 00000000 ----- 15579 *FAVP MODE 15580 * A=STORE POINTER FOR GFP0T 15581 .ORG CKR1BT, *CALL GFP0T 15582 *RETURN=2, RETURN TO CKR300 15583 MA(RETURN), 15584 Y(2), 15585 Y>RAM, 15586 JUMP(GFP0T); ----- ----- 539 00000369 7C021100 ----- 15587 * PU,PT,PM CONTAIN FAVP, LAST Y WAS PU LSN 15588 .ORG CKR300, *PAGE PROGRAMMED? 15589 JZ(CKR301F,CKR301T); ----- ----- 272 0000255C 00000000 ----- 15590 .ORG CKR301F, *NO PAGE, EXIT 15591 JUMP(DI100); ----- ----- 55C 000000D1 00000000 ----- 15592 .ORG CKR301T, *JUMP TO FLOF CODE 15593 JUMP(CKR201T); ----- ----- 55D 0000055B 00000000 ----- 15594 ***GEXP: GRUNDIG EXPAND COMMANDS 15595 * A=VDPTXT, P=NEW EXPAND BITS 15596 .ORG GEXP0, *CLEAR EXPAND BITS 15597 *B=NEW EXPAND BITS 15598 PR>BR, 15599 AR>A, B(>FF-UEXT-UEXB), AND, 15600 Y>AR, 15601 JUMP(GEXP1); ----- ----- BEA 00630C0A 00FC0810 ----- 15602 .ORG GEXP1, *UPDATE VDPTXT 15603 MA(VDPTXT), 15604 AR>A, BR>B, OR, 15605 Y>RAM, 15606 JUMP(DI120); ----- ----- C0A 0000059C 2B001111 ----- 15607 *///4- 15608 * BR=RCSTAT, AR=INSTRUCTION 15609 .ORG DI4X, *CASE INS HIGH NIB=>4 15610 *Y=OPCNT 15611 A(0), BR.0F>B, ADD, 15612 JY(DI40Y); ----- ----- 204 0000C240 00000002 ----- 15613 .ORG DI40Y, *CASE INS >40 15614 *MODE0 15615 *AR=STORE (LAST OPERAND) 15616 MA(STORE), RAM>AR, 15617 JZ(MODE0F,MODE0T); ----- ----- 240 0002255E 77000000 ----- 15618 .ORG DI41, *CASE INS >41 15619 *MODE1 15620 *OPCNT==0? 15621 *AR=STORE (LAST OPERAND) 15622 MA(STORE), RAM>AR, 15623 JZ(MODE10F,MODE10T); ----- ----- 241 00022560 77000000 ----- 15624 .ORG DI42, *CASE INS >42 15625 *LANG 15626 *OPCNT==0? 15627 *AR=STORE (LAST OPERAND) 15628 MA(STORE), RAM>AR, 15629 JZ(LANG0F,LANG0T); ----- ----- 242 00022562 77000000 ----- 15630 .ORG DI43, *CASE INS >43 15631 *CURSOR 15632 *PR=-2 (INDEX TO FIRST OPERAND) 15633 *OPCNT==0? 15634 *AR=STORE (LAST OPERAND) 15635 MA(STORE), RAM>AR, 15636 Y(-2), 15637 Y>PR, 15638 JZ(CURS0F,CURS0T); ----- ----- 243 00022564 F7FE1000 ----- 15639 * 15640 * TCJ Nov 92 15641 * Addition of command >44 to write to the new mode 15642 * register MODE2. 15643 * 15644 .ORG DI44, *CASE INS >44 15645 *MODE2 15646 *OPCNT == 0 ? 15647 *AR = STORE (Last Operand) 15648 MA(STORE), RAM>AR, 15649 JZ(MODE20F,MODE20T); ----- ----- 244 00022566 77000000 ----- 15650 * 15651 .ORG DI45, *CASE INS >45 15652 *ROW24 15653 *OPCNT==0? 15654 *AR=POLREG, Y=VBI 15655 MA(POLREG), RAM>AR, 15656 A(%01000000), RCS>B, AND, 15657 JZ(ROW0F,ROW0T); ----- ----- 245 00022568 1040080B ----- 15658 .ORG DI46, *CASE INS >46 15659 *MPTR, BR=RCSTAT, OPCNT=0? 15660 *RWL=7 15661 MA(RWL), 15662 Y(7), 15663 Y>RAM, Y>IO, 15664 JZ(MPTR0F,MPTR0T); ----- ----- 246 0000256A 0B075100 ----- 15665 * 15666 * TCJ Dec 93 15667 * Addition of the subtitle browse command, this 15668 * command must set the STBRW bit. 15669 * 15670 .ORG DI47, *CASE INS >47 15671 *SUBTITLE BROWSE 15672 *AR=DHREG 15673 MA(DHREG), RAM>AR, 15674 JUMP(TCJD47A); ----- ----- 247 00020C0B 32000000 ----- 15675 * 15676 .ORG TCJD47A, *STBRW=0 15677 MA(DHREG), 15678 AR>A, B(STBRW), OR, 15679 Y>RAM, 15680 JUMP(TCJD47B); ----- ----- C0B 00000C0C 32021110 ----- 15681 * 15682 .ORG TCJD47B, *Y=VBI, B=SCREEN 15683 MA(SCREEN), RAM>BR, 15684 A(%01000000), RCS>B, AND, 15685 JUMP(TCJD47C); ----- ----- C0C 00010C0D 6040080B ----- 15686 * 15687 .ORG TCJD47C, *AR=VPPRG1 15688 *Y=TDISP, IN VBI? 15689 MA(VPPRG1), RAM>AR, 15690 A(TDISP), BR>B, AND, 15691 JZ(BROWSE0F,BROWSE0T); ----- ----- C0D 0002248E 61040801 ----- 15692 * 15693 .ORG DI48, *CASE INS >48 15694 *SCLOCK 15695 *A=VDPTXT 15696 MA(VDPTXT), RAM>AR, 15697 JUMP(DI48A); ----- ----- 248 00020C0E 2B000000 ----- 15698 .ORG DI48A, *SET UCLK 15699 MA(VDPTXT), 15700 AR>A, B(UCLK), OR, 15701 Y>RAM, 15702 JUMP(DI120); ----- ----- C0E 0000059C 2B801110 ----- 15703 .ORG DI49, *CASE INS >49 15704 *CCLOCK 15705 *A=VDPTXT 15706 MA(VDPTXT), RAM>AR, 15707 JUMP(DI49A); ----- ----- 249 00020C0F 2B000000 ----- 15708 .ORG DI49A, *CLEAR UCLK 15709 MA(VDPTXT), 15710 AR>A, B(>FF-UCLK), AND, 15711 Y>RAM, 15712 JUMP(DI120); ----- ----- C0F 0000059C 2B7F0910 ----- 15713 .ORG DI4A, *CASE INS >4A 15714 *TCLOCK, JUMP TO SUB-PAGE 15715 *Y=VBI, B=SCREEN 15716 MA(SCREEN), RAM>BR, 15717 A(%01000000), RCS>B, AND, 15718 JUMP(DI11); ----- ----- 24A 00010221 6040080B ----- 15719 .ORG DI4B, *CASE INS >4B 15720 *CLKCOL, BR=RCSTAT, OPCNT=0? 15721 *AR=VDP4 15722 MA(VDP4), RAM>AR, 15723 JZ(COL0F,COL0T); ----- ----- 24B 0002256C 04000000 ----- 15724 .ORG DI4C, *CASE INS >4C 15725 *PLLMOD, BR=RCSTAT, OPCNT=0? 15726 *AR=STORE (LAST OPERAND) 15727 MA(STORE), RAM>AR, 15728 JZ(PLLM0F,PLLM0T); ----- ----- 24C 0002256E 77000000 ----- 15729 * 15730 * TCJ August 94, 211 Mods 15731 * Addition of LANG2 command 15732 * 15733 .ORG DI4D, *CASE INS >4D 15734 *LANG2 15735 *OPCNT == 0 ? 15736 *AR = STORE (Last Operand) 15737 MA(STORE), RAM>AR, 15738 JZ(LANG20F,LANG20T); ----- ----- 24D 00022570 77000000 ----- 15739 * 15740 .ORG DI4E, *CASE INS >4E 15741 *NOP [SFLOF ON UNITEXT] 15742 JUMP(DI100); ----- ----- 24E 000000D1 00000000 ----- 15743 .ORG DI4F, *CASE INS >4F 15744 JUMP(DI100); ----- ----- 24F 000000D1 00000000 ----- 15745 */// 15746 *+++MODE 0 15747 * AR=LAST OPERAND, BR=RCSTAT 15748 .ORG MODE0T, *OPCNT==0 15749 *OPCNT=1 15750 MA(RCSTAT), 15751 A(1), BR.F0>B, ADD, 15752 Y>RAM, 15753 JUMP(ST0F); ----- ----- 55F 00000001 2F010103 ----- 15754 .ORG MODE0F, *OPCNT!=0 15755 *OPCNT=0 15756 MA(RCSTAT), 15757 A(0), BR.F0>B, ADD, 15758 Y>RAM, 15759 JUMP(MODE1); ----- ----- 55E 00000C10 2F000103 ----- 15760 .ORG MODE1, *UPDATE MODE REGISTER 15761 MA(MREG0), 15762 AR>A, B(0), OR, 15763 Y>RAM, 15764 JUMP(MODE2); ----- ----- C10 00000C11 39001110 ----- 15765 .ORG MODE2, *A=EXPREG 15766 MA(EXPREG), RAM>AR, 15767 JUMP(MODE3); ----- ----- C11 00020C12 63000000 ----- 15768 .ORG MODE3, *CGAP=1, CPRF=1 TO INIT MENU 15769 *CALL SET VDP REGISTERS AFTER VBI 15770 MA(EXPREG), 15771 AR>A, B(CGAP+CPRF), OR, 15772 Y>RAM, 15773 JUMP(DI120); ----- ----- C12 0000059C 630C1110 ----- 15774 *+++MODE 1 15775 * AR=LAST OPERAND, BR=RCSTAT 15776 .ORG MODE10T, *OPCNT==0 15777 *OPCNT=1 15778 MA(RCSTAT), 15779 A(1), BR.F0>B, ADD, 15780 Y>RAM, 15781 JUMP(ST0F); ----- ----- 561 00000001 2F010103 ----- 15782 .ORG MODE10F, *UPDATE MREG1 15783 MA(MREG1), 15784 AR>A, B(0), OR, 15785 Y>RAM, 15786 JUMP(DI120); ----- ----- 560 0000059C 65001110 ----- 15787 * 15788 *+++MODE 2 15789 * 15790 * TCJ Nov 92 15791 * Addition of a MODE2 control register to add a control bit 15792 * for the NOKIA special subpage mode. 15793 * 15794 .ORG MODE20T, * AR = LAST OPERAND, BR = RCSTAT 15795 * OPCNT == 0 15796 * OPCNT = 1 15797 MA(RCSTAT), 15798 A(1), BR.F0>B, ADD, 15799 Y>RAM, 15800 JUMP(ST0F); ----- ----- 567 00000001 2F010103 ----- 15801 * 15802 .ORG MODE20F, * OPCNT != 0 15803 * UPDATE MREG2 15804 MA(MREG2), 15805 AR>A, B(0), OR, 15806 Y>RAM, 15807 JUMP(DI120); ----- ----- 566 0000059C 6E001110 ----- 15808 * 15809 *+++LANG 15810 * AR=LAST OPERAND, BR=RCSTAT 15811 .ORG LANG0T, *OPCNT==0 15812 *OPCNT=1 15813 MA(RCSTAT), 15814 A(1), BR.F0>B, ADD, 15815 Y>RAM, 15816 JUMP(ST0F); ----- ----- 563 00000001 2F010103 ----- 15817 .ORG LANG0F, *OPCNT!=0 15818 *OPCNT=0 15819 MA(RCSTAT), 15820 A(0), BR.F0>B, ADD, 15821 Y>RAM, 15822 JUMP(LANG1); ----- ----- 562 00000C13 2F000103 ----- 15823 .ORG LANG1, *USRLAN=LAST OPERAND 15824 MA(USRLAN), 15825 AR>A, B(0), OR, 15826 Y>RAM, 15827 JUMP(DI120); ----- ----- C13 0000059C 2D001110 ----- 15828 * 15829 *+++LANG2 15830 * 15831 * TCJ August 94, 211 Mods 15832 * Addtion of LANG2 command processing 15833 * 15834 * AR=LAST OPERAND, BR=RCSTAT 15835 .ORG LANG20T, *OPCNT==0 15836 *OPCNT=1 15837 MA(RCSTAT), 15838 A(1), BR.F0>B, ADD, 15839 Y>RAM, 15840 JUMP(ST0F); ----- ----- 571 00000001 2F010103 ----- 15841 15842 .ORG LANG20F, *OPCNT!=0 15843 *OPCNT=0 15844 MA(RCSTAT), 15845 A(0), BR.F0>B, ADD, 15846 Y>RAM, 15847 JUMP(LANG21); ----- ----- 570 00000C14 2F000103 ----- 15848 15849 .ORG LANG21, *USRLAN2=LAST OPERAND 15850 MA(VDP3), 15851 AR>A, B(0), OR, 15852 Y>RAM, 15853 JUMP(DI120); ----- ----- C14 0000059C 03001110 ----- 15854 * 15855 *+++CURSOR: CURSOR CONTROL ROUTINE 15856 * AR=LAST OPERAND, BR=RCSTAT, PR= INDEX TO 1ST OPERAND 15857 .ORG CURS0T, *OPCNT=2 (2 OPERANDS) 15858 MA(RCSTAT), 15859 A(2), BR.F0>B, ADD, 15860 Y>RAM, 15861 JUMP(ST0F); ----- ----- 565 00000001 2F020103 ----- 15862 * 15863 .ORG CURS0F, *LOAD CURSOR COLUMN 15864 *TPD=1ST OPERAND 15865 RVDP, 15866 MA(VDP6), 15867 AR>A, B(>3F), AND, 15868 Y>RAM, Y>IO, 15869 JUMP(CURS1); ----- ----- 564 00000C15 063FC910 ----- 15870 .ORG CURS1, *LOAD CURSOR ROW, STYLE AND CON 15871 MA(VDP5), 15872 TPD>A, B(>DF), AND, 15873 Y>RAM, Y>IO, 15874 JUMP(DI100); ----- ----- C15 000000D1 05DF4990 ----- 15875 *+++ROW 24 MODE 15876 * AR=POLREG, BR=RCSTAT, LAST Y WAS VBI 15877 .ORG ROW0T, *OLD OPCNT==0 15878 *OPCNT=1 15879 MA(RCSTAT), 15880 A(1), BR.F0>B, ADD, 15881 Y>RAM, 15882 JUMP(ST0F); ----- ----- 569 00000001 2F010103 ----- 15883 .ORG ROW0F, *IN VBI? 15884 JZ(DI110,ROW1T); ----- ----- 568 00002572 00000000 ----- 15885 *IF IN VBI, NEED TO DELAY 15886 *(this is so that further commands are delayed until packet 24 15887 *reception has been disabled if APIN=1 and R24EN=0) 15888 .ORG ROW1T, *B=SYS2 15889 MA(SYS2), RAM>BR, 15890 JUMP(ROW2); ----- ----- 573 00010C16 09000000 ----- 15891 .ORG ROW2, *A=LAST OPERAND 15892 *Y=OLD APIN 15893 MA(STORE), RAM>AR, 15894 A(APIN), BR>B, AND, 15895 JUMP(ROW3); ----- ----- C16 00020C17 77010801 ----- 15896 .ORG ROW3, *Y=NEW APIN 15897 *OLD APIN? 15898 *A=STOR0 15899 MA(STOR0), RAM>AR, 15900 AR>A, B(APIN), AND, 15901 JZ(ROW4F,ROW4T); ----- ----- C17 00022574 20010810 ----- 15902 .ORG ROW4F, *NOT SETTING APIN 15903 JUMP(ROW10); ----- ----- 574 000000D3 00000000 ----- 15904 .ORG ROW4T, *SETTING APIN? 15905 *RWL=DISPLAY PAGE 15906 MA(RWL), 15907 ARHI>A, B(0), OR, 15908 Y>RAM, Y>IO, 15909 JZ(ROW5F,ROW5T); ----- ----- 575 00002576 0B005120 ----- 15910 .ORG ROW5T, *NOT SETTING APIN 15911 JUMP(ROW10); ----- ----- 577 000000D3 00000000 ----- 15912 *SETTING APIN, CLEAR ROW 24 15913 .ORG ROW5F, *CALL CSCNB 15914 *RET4=3, RETURN TO ROW10 15915 MA(RET4), 15916 Y(3), 15917 Y>RAM, 15918 JUMP(CSCNB); ----- ----- 576 00000C18 79031100 ----- 15919 * B=SYS2 15920 .ORG ROW10, *CLEAR APIN, R24EN, R24OSD, READY FOR UPDATE 15921 MA(SYS2), 15922 A(>FF-APIN-R24EN-R24OSD), BR>B, AND, 15923 Y>RAM, 15924 JUMP(ROW11); ----- ----- 0D3 00000C19 093E0901 ----- 15925 .ORG ROW11, *A=LAST OPERAND 15926 MA(STORE), RAM>AR, 15927 * JUMP(ROW12); 15928 JUMP(ROW13); ----- ----- C19 00020C1A 77000000 ----- 15929 * 15930 * TCJ April 94, 209 mods 15931 * 15932 *ORG ROW12, *UPDATE ROW 24 LANG REGISTER 15933 * MA(R24LAN), 15934 * AR>A, B(%00111110), AND, 15935 * Y>RAM, 15936 * JUMP(ROW13); 15937 * 15938 .ORG ROW13, *B=SYS2, EXTRACT APIN, R24EN, R24OSD, FROM OPERAND IN A 15939 MA(SYS2), RAM>BR, 15940 AR>A, B(APIN+R24EN+R24OSD), AND, 15941 Y>AR, 15942 JUMP(ROW14); ----- ----- C1A 00230C1B 09C10810 ----- 15943 .ORG ROW14, *UPDATE SYS2 15944 MA(SYS2), 15945 AR>A, BR>B, OR, 15946 Y>RAM, 15947 JUMP(ROW15); ----- ----- C1B 00000C1C 09001111 ----- 15948 .ORG ROW15, *A=EXPREG 15949 MA(EXPREG), RAM>AR, 15950 JUMP(ROW16); ----- ----- C1C 00020C1D 63000000 ----- 15951 .ORG ROW16, *CGAP=1, CPRF=1 15952 MA(EXPREG), 15953 AR>A, B(CGAP+CPRF), OR, 15954 Y>RAM, 15955 JUMP(DI120); ----- ----- C1D 0000059C 630C1110 ----- 15956 *+++MPTR: MEMORY POINTER 15957 * RWL=7, BR=RCSTAT 15958 .ORG MPTR0T, *OPCNT==0 15959 *OPCNT=2 15960 MA(RCSTAT), 15961 A(2), BR.F0>B, ADD, 15962 Y>RAM, 15963 JUMP(ST0F); ----- ----- 56B 00000001 2F020103 ----- 15964 .ORG MPTR0F, *OPCNT!=0 15965 *CHRM=1 15966 MA(RCSTAT), 15967 A(CHRM), BR>B, OR, 15968 Y>RAM, 15969 JUMP(MPTR1); ----- ----- 56A 00000C1E 2F801101 ----- 15970 .ORG MPTR1, *PR=-2 15971 *BR=LAST OPERAND 15972 MA(STORE), RAM>BR, 15973 Y(-2), 15974 Y>PR, 15975 JUMP(MPTR2); ----- ----- C1E 00010C1F F7FE1000 ----- 15976 .ORG MPTR2, *TPD=1ST OPERAND 15977 *COLPTR=LAST OPERAND (MASK OUT LTC BIT) 15978 RVDP, 15979 MA(COLPTR), 15980 A(%00111111), BR>B, AND, 15981 Y>RAM, 15982 JUMP(MPTR3); ----- ----- C1F 00000C20 313F8901 ----- 15983 .ORG MPTR3, *AR=1ST OPERAND 15984 TPD>A, B(0), OR, 15985 Y>AR, 15986 JUMP(MPTR4); ----- ----- C20 00220C21 00001090 ----- 15987 .ORG MPTR4, *Y=LTC BIT 15988 A(%10000000), BR>B, AND, 15989 JUMP(MPTR5); ----- ----- C21 00000C22 00800801 ----- 15990 .ORG MPTR5, *LTC? 15991 *CLEAR MASK FIELD IN ROWPTR 15992 MA(ROWPTR), 15993 TPD>A, B(%00011111), AND, 15994 Y>RAM, 15995 JZ(MPTR6F,MPTR6T); ----- ----- C22 00002578 301F0990 ----- 15996 .ORG MPTR6F, *LTC=1, POINTING TO A LATCH 15997 *ROWPTR=1ST OPERAND 15998 MA(ROWPTR), 15999 TPD>A, B(0), ADD, 16000 Y>RAM, 16001 JUMP(DI100); ----- ----- 578 000000D1 30000190 ----- 16002 * 16003 .ORG MPTR6T, *MPTR, COLPTR IS STORE, NEED TO GET LATCH 16004 *MOVE STORE FIELD DOWN TO NIBBLE BOUNDARY 16005 *AND MASK OUT IRRELEVANT BITS 16006 AR>>1>A, B(>70), AND, 16007 Y>AR, 16008 JUMP(MPTR7); ----- ----- 579 00220C23 007008E0 ----- 16009 .ORG MPTR7, *PR=INDEX TO STORE TABLE 16010 ARHI>A, B(STOR0), ADD, 16011 Y>PR, 16012 JUMP(MPTR8); ----- ----- C23 00000C24 80200020 ----- 16013 .ORG MPTR8, *AR=BR=LATCH FOR STORE 16014 PR>MA, RAM>AR, RAM>BR, 16015 JUMP(MPTR9); ----- ----- C24 00130C25 00000000 ----- 16016 .ORG MPTR9, *AR=LATCH<<1, BR=ROWPTR 16017 MA(ROWPTR), RAM>BR, 16018 AR.F0>A, BR.F0>B, ADD, 16019 Y>AR, 16020 JUMP(MPTR10); ----- ----- C25 00230C26 300000D3 ----- 16021 .ORG MPTR10, *PUT LATCH IN ROWPTR 16022 MA(ROWPTR), 16023 AR>A, BR>B, OR, 16024 Y>RAM, 16025 JUMP(DI100); ----- ----- C26 000000D1 30001111 ----- 16026 *+++SET CLOCK COLOURS 16027 * AR=VDP4, BR=RCSTAT 16028 .ORG COL0T, *OPCNT==0 16029 *OPCNT=1 16030 MA(RCSTAT), 16031 A(1), BR.F0>B, ADD, 16032 Y>RAM, 16033 JUMP(ST0F); ----- ----- 56D 00000001 2F010103 ----- 16034 .ORG COL0F, *B=LAST OPERAND 16035 *Y=CLOCK 16036 MA(STORE), RAM>BR, 16037 AR>A, B(CLOCK), AND, 16038 JUMP(COL1); ----- ----- 56C 00010C27 77800810 ----- 16039 .ORG COL1, *A=LAST OPERAND WITH CLOCK MASKED 16040 *IN CLOCK MODE? 16041 A(>FF-CLOCK), BR>B, AND, 16042 Y>AR, 16043 JZ(COL2F,COL2T); ----- ----- C27 0022257A 007F0801 ----- 16044 .ORG COL2F, *CLOCK MODE 16045 MA(VDP4), 16046 AR>A, B(CLOCK), OR, 16047 Y>RAM, Y>IO, 16048 JUMP(DI120); ----- ----- 57A 0000059C 04805110 ----- 16049 .ORG COL2T, *NOT CLOCK MODE 16050 MA(VDP4), 16051 AR>A, B(0), OR, 16052 Y>RAM, Y>IO, 16053 JUMP(DI120); ----- ----- 57B 0000059C 04005110 ----- 16054 *+++PLL MODE 16055 * AR=LAST OPERAND, BR=RCSTAT 16056 .ORG PLLM0T, *OPCNT==0 16057 *OPCNT=1 16058 MA(RCSTAT), 16059 A(1), BR.F0>B, ADD, 16060 Y>RAM, 16061 JUMP(ST0F); ----- ----- 56F 00000001 2F010103 ----- 16062 .ORG PLLM0F, *UPDATE USER PLL REGISTER 16063 *CALL SVDP 16064 MA(UPLL), 16065 AR>A, B(0), OR, 16066 Y>RAM, 16067 JUMP(DI120); ----- ----- 56E 0000059C 6F001110 ----- 16068 *///5- 16069 * BR=RCSTAT, AR=INSTRUCTION 16070 .ORG DI5X, *CASE INS HIGH NIB=>5 16071 *B=UPLL 16072 *Y=INSTRUCTION LO NIB 16073 MA(UPLL), RAM>BR, 16074 AR.0F>A, B(0), OR, 16075 JUMP(DI5X1); ----- ----- 205 00010C28 6F0010C0 ----- 16076 .ORG DI5X1, *A=UPLL WITH HPOS, FSYNC, SIX24, ISYNC AND ILCE CLEARED 16077 *###8 CAN TEST BIT RATHER THAN DO CASE TO DECODE 16078 A(>FF-HPOS-FSYNC-SIX24-ISYNC-ILCE), BR>B, AND, 16079 Y>AR, 16080 JY(DI50Y); ----- ----- C28 0022C6F0 00C80801 ----- 16081 .ORG DI50Y, *CASE INS >50 16082 *DRST 16083 MA(UPLL), 16084 AR>A, B(0), OR, 16085 Y>RAM, 16086 JUMP(DI120); ----- ----- 6F0 0000059C 6F001110 ----- 16087 .ORG DI51, *CASE INS >51 16088 *A 16089 MA(UPLL), 16090 AR>A, B(SIX24), OR, 16091 Y>RAM, 16092 JUMP(DI120); ----- ----- 6F1 0000059C 6F041110 ----- 16093 .ORG DI52, *CASE INS >52 16094 *I 16095 MA(UPLL), 16096 AR>A, B(ILCE), OR, 16097 Y>RAM, 16098 JUMP(DI120); ----- ----- 6F2 0000059C 6F011110 ----- 16099 .ORG DI53, *CASE INS >53 16100 JUMP(DI100); ----- ----- 6F3 000000D1 00000000 ----- 16101 .ORG DI54, *CASE INS >54 16102 *S 16103 MA(UPLL), 16104 AR>A, B(ISYNC), OR, 16105 Y>RAM, 16106 JUMP(DI120); ----- ----- 6F4 0000059C 6F021110 ----- 16107 .ORG DI55, *CASE INS >55 16108 *SA 16109 MA(UPLL), 16110 AR>A, B(ISYNC+SIX24), OR, 16111 Y>RAM, 16112 JUMP(DI120); ----- ----- 6F5 0000059C 6F061110 ----- 16113 .ORG DI56, *CASE INS >56 16114 *SI 16115 MA(UPLL), 16116 AR>A, B(ISYNC+ILCE), OR, 16117 Y>RAM, 16118 JUMP(DI120); ----- ----- 6F6 0000059C 6F031110 ----- 16119 .ORG DI57, *CASE INS >57 16120 JUMP(DI100); ----- ----- 6F7 000000D1 00000000 ----- 16121 .ORG DI58, *CASE INS >58 16122 *R 16123 MA(UPLL), 16124 AR>A, B(HPOS), OR, 16125 Y>RAM, 16126 JUMP(DI120); ----- ----- 6F8 0000059C 6F201110 ----- 16127 .ORG DI59, *CASE INS >59 16128 *RA 16129 MA(UPLL), 16130 AR>A, B(HPOS+SIX24), OR, 16131 Y>RAM, 16132 JUMP(DI120); ----- ----- 6F9 0000059C 6F241110 ----- 16133 .ORG DI5A, *CASE INS >5A 16134 *RI 16135 MA(UPLL), 16136 AR>A, B(HPOS+ILCE), OR, 16137 Y>RAM, 16138 JUMP(DI120); ----- ----- 6FA 0000059C 6F211110 ----- 16139 .ORG DI5B, *CASE INS >5B 16140 JUMP(DI100); ----- ----- 6FB 000000D1 00000000 ----- 16141 .ORG DI5C, *CASE INS >5C 16142 *RS 16143 MA(UPLL), 16144 AR>A, B(HPOS+ISYNC), OR, 16145 Y>RAM, 16146 JUMP(DI120); ----- ----- 6FC 0000059C 6F221110 ----- 16147 .ORG DI5D, *CASE INS >5D 16148 *RSA 16149 MA(UPLL), 16150 AR>A, B(HPOS+ISYNC+SIX24), OR, 16151 Y>RAM, 16152 JUMP(DI120); ----- ----- 6FD 0000059C 6F261110 ----- 16153 .ORG DI5E, *CASE INS >5E 16154 *RSI 16155 MA(UPLL), 16156 AR>A, B(HPOS+ISYNC+ILCE), OR, 16157 Y>RAM, 16158 JUMP(DI120); ----- ----- 6FE 0000059C 6F231110 ----- 16159 .ORG DI5F, *CASE INS >5F 16160 JUMP(DI100); ----- ----- 6FF 000000D1 00000000 ----- 16161 */// 16162 *///6- 16163 * BR=RCSTAT, AR=INSTRUCTION 16164 .ORG DI6X, *CASE INS HIGH NIB=>6 16165 *Y=INS LO NIB-8 16166 AR.0F>A, B(-8), ADD, 16167 JUMP(DI6X1); ----- ----- 206 00000C29 00F800C0 ----- 16168 .ORG DI6X1, *CASE INS LO NIB 3LSBS 16169 *INSTRUCTION IN TOP HALF? 16170 AR>A, B(7), AND, 16171 JN(DI6X2F,DI6X2T); ----- ----- C29 0000457C 00070810 ----- 16172 .ORG DI6X2F, *IN TOP HALF, EXIT 16173 JUMP(DI100); ----- ----- 57C 000000D1 00000000 ----- 16174 .ORG DI6X2T, *AR=SCREEN 16175 *Y=OPCNT 16176 MA(SCREEN), RAM>AR, 16177 A(0), BR.0F>B, ADD, 16178 JY(DI60Y); ----- ----- 57D 0002C260 60000002 ----- 16179 .ORG DI60Y, *CASE INS >60 16180 *SMENM 16181 *OPCNT==0? 16182 *AR=POLREG, Y=VBI 16183 MA(POLREG), RAM>AR, 16184 A(%01000000), RCS>B, AND, 16185 JZ(SMENM0F,SMENM0T); ----- ----- 260 0002257E 1040080B ----- 16186 .ORG DI61, *CASE INS >61 16187 *CMENM 16188 *BR=VPPRG1, Y=MENM 16189 MA(VPPRG1), RAM>BR, 16190 AR>A, B(MENM), AND, 16191 JUMP(CMENM0); ----- ----- 261 00010C2A 61080810 ----- 16192 .ORG DI62, *CASE INS >62 16193 *DMEN0 16194 *AR=MNDP0+MENM 16195 *BR=SCREEN 16196 MA(SCREEN), RAM>BR, 16197 Y(MNDP0+MENM), 16198 Y>AR, 16199 JUMP(DMN0); ----- ----- 262 00230C2B 60091000 ----- 16200 .ORG DI63, *CASE INS >63 16201 *DMEN1 16202 *AR=MNDP1+MENM 16203 *BR=SCREEN 16204 MA(SCREEN), RAM>BR, 16205 Y(MNDP1+MENM), 16206 Y>AR, 16207 JUMP(DMN0); ----- ----- 263 00230C2B 600A1000 ----- 16208 *ENTRY POINT FROM CMENM CODE 16209 .ORG DI64, *CASE INS >64 16210 *DTPGE 16211 *MNDP0=0, MNDP1=0, TDISP=0 16212 MA(SCREEN), 16213 AR>A, B(%11111000), AND, 16214 Y>RAM, Y>AR, 16215 JUMP(DTPGE0); ----- ----- 264 00220C2C 60F80910 ----- 16216 .ORG DI65, *CASE INS >65 16217 JUMP(DI100); ----- ----- 265 000000D1 00000000 ----- 16218 .ORG DI66, *CASE INS >66 16219 *CMEN0 16220 *PR=INDEX TO STORE 6 16221 *AR=POLREG 16222 MA(POLREG), RAM>AR, 16223 Y(STOR0+6), 16224 Y>PR, 16225 JUMP(CMEN0); ----- ----- 266 00020C2D 90261000 ----- 16226 .ORG DI67, *CASE INS >67 16227 *CMEN1 16228 *PR=INDEX TO STORE 7 16229 *AR=POLREG 16230 MA(POLREG), RAM>AR, 16231 Y(STOR0+7), 16232 Y>PR, 16233 JUMP(CMEN0); ----- ----- 267 00020C2D 90271000 ----- 16234 */// 16235 *+++SET MENU MODE 16236 * AR=POLREG, BR=RCSTAT, LAST Y WAS VBI 16237 .ORG SMENM0T, *OLD OPCNT==0 16238 *OPCNT=1 16239 MA(RCSTAT), 16240 A(1), BR.F0>B, ADD, 16241 Y>RAM, 16242 JUMP(ST0F); ----- ----- 57F 00000001 2F010103 ----- 16243 .ORG SMENM0F, *IN VBI? 16244 *PR=INDEX TO STORE 6 16245 Y(STOR6), 16246 Y>PR, 16247 JZ(SMENM1F,SMENM1T); ----- ----- 57E 00002580 80261000 ----- 16248 *IN VBI, NEED TO DELAY 16249 .ORG SMENM1F, *EXIT TO SET WAIT 16250 JUMP(DI110); ----- ----- 580 00000572 00000000 ----- 16251 *OUT OF VBI 16252 .ORG SMENM1T, *OPCNT=0 16253 MA(RCSTAT), 16254 A(0), BR.F0>B, ADD, 16255 Y>RAM, 16256 JUMP(SMENM2); ----- ----- 581 00000C2E 2F000103 ----- 16257 .ORG SMENM2, *BR=SCREEN 16258 MA(SCREEN), RAM>BR, 16259 JUMP(SMENM2A); ----- ----- C2E 00010C2F 60000000 ----- 16260 .ORG SMENM2A, *Y=MENM 16261 *A=SYS2 16262 MA(SYS2), RAM>AR, 16263 A(MENM), BR>B, AND, 16264 JUMP(SMENM2B); ----- ----- C2F 00020C30 09080801 ----- 16265 .ORG SMENM2B, *MENM=1 16266 *MENU MODE ALREADY SET? 16267 MA(SCREEN), 16268 A(MENM), BR>B, OR, 16269 Y>RAM, 16270 JZ(SMENM3F,SMENM3T); ----- ----- C30 00002582 60081101 ----- 16271 *MENU MODE ALREADY SET, SKIP INIT LOOP 16272 .ORG SMENM3F, *A= OPERAND 16273 MA(STORE), RAM>AR, 16274 JUMP(SMENM10T); ----- ----- 582 00020585 77000000 ----- 16275 *MENU MODE NOT SET, INITIALISE LATCHES 16276 * A=SYS2 16277 .ORG SMENM3T, *S6T1=0 16278 MA(SYS2), 16279 AR>A, B(>FF-S6T1), AND, 16280 Y>RAM, 16281 JUMP(SMENM3A); ----- ----- 583 00000C31 09DF0910 ----- 16282 .ORG SMENM3A, *INIT LOOP COUNT, COUNT=2 16283 MA(COUNT), 16284 Y(2), 16285 Y>RAM, 16286 JUMP(SMENM10F); ----- ----- C31 00000584 78021100 ----- 16287 *LOOP TO PUT NULL VALUES IN LATCHES OF STORES 6 AND 7 AND CLEAR THEM 16288 * PR=INDEX TO STORE 16289 .ORG SMENM10F, *A=LATCH IN STORE 16290 PR>MA, RAM>AR, 16291 JUMP(SMENM4); ----- ----- 584 00120C32 00000000 ----- 16292 .ORG SMENM4, *PR=INDEX TO MAG LATCH OF STORE 16293 ARHI>A, B(M0), ADD, 16294 Y>PR, 16295 JUMP(SMENM4A); ----- ----- C32 00000C33 80100020 ----- 16296 .ORG SMENM4A, *BR=Mx 16297 PR>MA, RAM>BR, 16298 JUMP(SMENM4B); ----- ----- C33 00110C34 00000000 ----- 16299 .ORG SMENM4B, *SET Mx TO NULL MAGAZINE 16300 PR>MA, 16301 A(>0F), BR>B, OR, 16302 Y>RAM, Y>IO, 16303 JUMP(SMENM4C); ----- ----- C34 00100C35 000F5101 ----- 16304 .ORG SMENM4C, *PR=INDEX TO LATCH LAFx 16305 ARHI>A, B(LAF0), ADD, 16306 Y>PR, 16307 JUMP(SMENM4D); ----- ----- C35 00000C36 80400020 ----- 16308 .ORG SMENM4D, *LAFx=MPG 16309 *CAP=VBICAP=CLR=OPN=BTTL=AITL=0 16310 PR>MA, 16311 Y(MPG), 16312 Y>RAM, 16313 JUMP(SMENM5); ----- ----- C36 00100C37 00041100 ----- 16314 *SET UP I/P PARS FOR CSCNA 16315 .ORG SMENM5, *RWL=AR 16316 MA(RWL), 16317 ARHI>A, B(0), OR, 16318 Y>RAM, Y>IO, 16319 JUMP(SMENM6); ----- ----- C37 00000C38 0B005120 ----- 16320 .ORG SMENM6, *RET4=3 16321 *CALL CSCNA TO CLEAR STORE 16322 *RET4=0, RETURN TO SMENM7Y 16323 MA(RET4), 16324 Y(0), 16325 Y>RAM, 16326 JUMP(CSCNA); ----- ----- C38 00000C39 79001100 ----- 16327 .ORG SMENM7Y, *BR=COUNT, PR=INDEX TO STORE 7 16328 MA(COUNT), RAM>BR, 16329 Y(STOR7), 16330 Y>PR, 16331 JUMP(SMENM8); ----- ----- 0D0 00010C3A F8271000 ----- 16332 .ORG SMENM8, *COUNT-- 16333 MA(COUNT), 16334 A(-1), BR>B, ADD, 16335 Y>RAM, 16336 JUMP(SMENM9); ----- ----- C3A 00000C3B 78FF0101 ----- 16337 .ORG SMENM9, *GO BACK FOR STORE 7? 16338 *A= OPERAND 16339 MA(STORE), RAM>AR, 16340 JZ(SMENM10F,SMENM10T); ----- ----- C3B 00022584 77000000 ----- 16341 *LOOP END 16342 * A=OPERAND 16343 .ORG SMENM10T, *UPDATE RVL, CFU, EXPT, EXPB 16344 *P830F2? 16345 MA(VDPOSD), 16346 AR>A, B(%00001111), AND, 16347 Y>RAM, 16348 JUMP(SMENM13); ----- ----- 585 00000C3C 2C0F0910 ----- 16349 .ORG SMENM13, *BR=EXPREG 16350 *ONLY WANT P830F2, PDC AND VPS IN OPERAND COPY 16351 MA(EXPREG), RAM>BR, 16352 AR>A, B(P830F2+PDC+VPS), AND, * TCJ Feb 94 16353 Y>AR, 16354 JUMP(SMENM14); ----- ----- C3C 00230C3D 63E00810 ----- 16355 .ORG SMENM14, *CLEAR OLD P830F2 AND PDC 16356 MA(EXPREG), 16357 A(>FF-P830F2-PDC-VPS), BR>B, AND, * TCJ Feb 94 16358 Y>RAM, 16359 JUMP(SMENM15); ----- ----- C3D 00000C3E 631F0901 ----- 16360 .ORG SMENM15, *B=EXPREG 16361 MA(EXPREG), RAM>BR, 16362 JUMP(SMENM16); ----- ----- C3E 00010C3F 63000000 ----- 16363 .ORG SMENM16, *UPDATE P830F2 AND PDC 16364 MA(EXPREG), 16365 AR>A, BR>B, OR, 16366 Y>RAM, 16367 JUMP(DI120); ----- ----- C3F 0000059C 63001111 ----- 16368 *+++CLEAR MENU MODE 16369 * AR=SCREEN, BR=VPPRG1, LAST Y WAS MENM 16370 .ORG CMENM0, *ACTUALLY IN MENM? 16371 *MENM=0 16372 MA(SCREEN), 16373 AR>A, B(>FF-MENM), AND, 16374 Y>RAM, Y>AR, 16375 JZ(CMENM2F,CMENM2T); ----- ----- C2A 00222586 60F70910 ----- 16376 .ORG CMENM2T, *NO, EXIT 16377 JUMP(DI100); ----- ----- 587 000000D1 00000000 ----- 16378 .ORG CMENM2F, *SORT BACKROUND LATCHES TO RELEASE STORES 6 AND 7 16379 *SBL=1 16380 MA(VPPRG1), 16381 A(SBL), BR>B, OR, 16382 Y>RAM, 16383 JUMP(CMENM3); ----- ----- 586 00000C40 61801101 ----- 16384 .ORG CMENM3, *BR=EXPREG 16385 MA(EXPREG), RAM>BR, 16386 JUMP(CMENM4); ----- ----- C40 00010C41 63000000 ----- 16387 .ORG CMENM4, *P830F2=0, VPS=0, STOP RECEIVING EXTENSION PACKETS 16388 *A MUST BE SCREEN FOR DI64 16389 MA(EXPREG), 16390 A(>FF-P830F2-VPS), BR>B, AND, * TCJ Feb 94 16391 Y>RAM, 16392 JUMP(DI64); ----- ----- C41 00000264 635F0901 ----- 16393 *+++DISPLAY MENU PAGE 16394 * BR=SCREEN, AR=COPY OF MNDP0 OR MNDP1 AND MENM 16395 .ORG DMN0, *Y=MENM 16396 A(MENM), BR>B, AND, 16397 JUMP(DMN1); ----- ----- C2B 00000C42 00080801 ----- 16398 .ORG DMN1, *MENM? 16399 *BR=SCREEN 16400 MA(SCREEN), RAM>BR, 16401 JZ(DMN2F,DMN2T); ----- ----- C42 0001258E 60000000 ----- 16402 .ORG DMN2T, *NOT IN MENU MODE, INVALID COMMAND 16403 JUMP(DI100); ----- ----- 58F 000000D1 00000000 ----- 16404 .ORG DMN2F, *SET MNDP0 OR MNDP1 AS APPROPRIATE (TDISP=0) 16405 MA(SCREEN), 16406 AR.0F>A, BR.F0>B, OR, 16407 Y>RAM, 16408 JUMP(DI120); ----- ----- 58E 0000059C 600011C3 ----- 16409 *+++DISPLAY TELETEXT PAGE 16410 * AR=SCREEN WITH MENDP1=MENDP0=TDISP=0 16411 .ORG DTPGE0, *SCREEN MSN=0? 16412 JZ(DTPGE1F,DTPGE1T); ----- ----- C2C 00002594 00000000 ----- 16413 .ORG DTPGE1T, *NO TELETEXT DISPLAY 16414 JUMP(DI120); ----- ----- 595 0000059C 00000000 ----- 16415 .ORG DTPGE1F, *TELETEXT DISPLAY 16416 *TDISP=1 16417 MA(SCREEN), 16418 AR>A, B(TDISP), OR, 16419 Y>RAM, 16420 JUMP(DI120); ----- ----- 594 0000059C 60041110 ----- 16421 *+++CLEAR MENU PAGE 16422 * AR=POLREG, PR=INDEX TO STORE FOR THIS MENU PAGE 16423 .ORG CMEN0, *BR=STORx 16424 *Y=VBI 16425 PR>MA, RAM>BR, 16426 A(%01000000), RCS>B, AND, 16427 JUMP(CMEN1); ----- ----- C2D 00110C43 0040080B ----- 16428 .ORG CMEN1, *RWL=STORE LATCH, VBI? 16429 MA(RWL), 16430 A(0), BRHI>B, OR, 16431 Y>RAM, Y>IO, 16432 JZ(CMEN2F,CMEN2T); ----- ----- C43 00002596 0B00510C ----- 16433 *IN VBI, NEED TO DELAY 16434 .ORG CMEN2F, *WAIT=1 16435 MA(POLREG), 16436 AR>A, B(WAIT), OR, 16437 Y>RAM, 16438 JUMP(DI100); ----- ----- 596 000000D1 10401110 ----- 16439 *OUT OF VBI 16440 .ORG CMEN2T, *CALL CSCNA 16441 *RET4=1, RETURN TO DI100 16442 MA(RET4), 16443 Y(1), 16444 Y>RAM, 16445 JUMP(CSCNA); ----- ----- 597 00000C39 79011100 ----- 16446 *///7- 16447 * BR=RCSTAT, AR=INSTRUCTION 16448 .ORG DI7X, *CASE INS HIGH NIB=>7 16449 *BR=SCREEN 16450 *Y=VBI 16451 MA(SCREEN), RAM>BR, 16452 A(%01000000), RCS>B, AND, 16453 JUMP(DI7X1); ----- ----- 207 00010C44 6040080B ----- 16454 .ORG DI7X1, *IN VBI? 16455 *Y=INS LO NIB 16456 AR.0F>A, B(0), OR, 16457 JZ(DI7X2F,DI7X2T); ----- ----- C44 00002598 000010C0 ----- 16458 .ORG DI7X2F, *IN VBI, DELAY IT 16459 *A=POLREG 16460 MA(POLREG), RAM>AR, 16461 JUMP(DI110); ----- ----- 598 00020572 10000000 ----- 16462 .ORG DI7X2T, *CASE INS LO NIB=? 16463 JY(DI70Y); ----- ----- 599 0000C250 00000000 ----- 16464 .ORG DI70Y, *CASE INS >70 16465 *TV 16466 *SCREEN MSN=0, TDISP=0 16467 *GO AND CLEAR UPDATE 16468 MA(SCREEN), 16469 A(>FF-TDISP), BR.0F>B, AND, 16470 Y>RAM, 16471 JUMP(TEXT10F); ----- ----- 250 0000059A 60FB0902 ----- 16472 .ORG DI71, *CASE INS >71 16473 *TEXT 16474 *SCREEN=1 16475 MA(SCREEN), 16476 A(>10), BR.0F>B, ADD, 16477 Y>RAM, 16478 JUMP(TEXT0); ----- ----- 251 00000C45 60100102 ----- 16479 .ORG DI72, *CASE INS >72 16480 JUMP(DI100); ----- ----- 252 000000D1 00000000 ----- 16481 .ORG DI73, *CASE INS >73 16482 *MIX 16483 *SCREEN=2 16484 MA(SCREEN), 16485 A(>20), BR.0F>B, ADD, 16486 Y>RAM, 16487 JUMP(TEXT0); ----- ----- 253 00000C45 60200102 ----- 16488 .ORG DI74, *CASE INS >74 16489 JUMP(DI100); ----- ----- 254 000000D1 00000000 ----- 16490 .ORG DI75, *CASE INS >75 16491 *BOX 16492 *SCREEN=3 16493 MA(SCREEN), 16494 A(>30), BR.0F>B, ADD, 16495 Y>RAM, 16496 JUMP(TEXT0); ----- ----- 255 00000C45 60300102 ----- 16497 .ORG DI76, *CASE INS >76 16498 JUMP(DI100); ----- ----- 256 000000D1 00000000 ----- 16499 .ORG DI77, *CASE INS >77 16500 JUMP(DI100); ----- ----- 257 000000D1 00000000 ----- 16501 .ORG DI78, *CASE INS >78 16502 *AUTO 16503 *SET A FOR NEW SYS1 16504 *PCM=0, FIND=1, FNRM=0, FTOP=0, FFLF=0 16505 Y(FIND), 16506 Y>AR, 16507 JUMP(SPCM0); ----- ----- 258 00220C46 00081000 ----- 16508 .ORG DI79, *CASE INS >79 16509 *NORMAL 16510 *SET A FOR NEW SYS1 16511 *PCM=0, FIND=0, FNRM=1, FTOP=0, FFLF=0 16512 Y(FNRM), 16513 Y>AR, 16514 JUMP(SPCM0); ----- ----- 259 00220C46 00041000 ----- 16515 .ORG DI7A, *CASE INS >7A 16516 *FLOF 16517 *SET A FOR NEW SYS1 16518 *PCM=0, FIND=0, FNRM=0, FTOP=0, FFLF=1 16519 Y(FFLF), 16520 Y>AR, 16521 JUMP(SPCM0); ----- ----- 25A 00220C46 00011000 ----- 16522 .ORG DI7B, *CASE INS >7B 16523 *TOP 16524 *SET A FOR NEW SYS1 16525 *PCM=0, FIND=1, FNRM=0, FTOP=1, FFLF=0 16526 Y(FIND+FTOP), 16527 Y>AR, 16528 JUMP(SPCM0); ----- ----- 25B 00220C46 000A1000 ----- 16529 .ORG DI7C, *CASE INS >7C 16530 *FAVP 16531 *A=SYS1 16532 MA(SYS1), RAM>AR, 16533 JUMP(FVP0); ----- ----- 25C 00020C47 08000000 ----- 16534 .ORG DI7D, *CASE INS >7D 16535 JUMP(DI100); ----- ----- 25D 000000D1 00000000 ----- 16536 .ORG DI7E, *CASE INS >7E 16537 JUMP(DI100); ----- ----- 25E 000000D1 00000000 ----- 16538 .ORG DI7F, *CASE INS >7F 16539 JUMP(DI100); ----- ----- 25F 000000D1 00000000 ----- 16540 */// 16541 *+++TEXT, MIX OR BOX DISPLAY 16542 * 16543 .ORG TEXT0, *SCREEN MSN IS NON ZERO (TEXT, MIX OR BOX) 16544 *CHECK IF TELETEXT OR MENU DISPLAY 16545 *Y=MNDP0+MNDP1, BR=UPDATED SCREEN 16546 MA(SCREEN), RAM>BR, 16547 A(MNDP0+MNDP1), BR>B, AND, 16548 JUMP(TEXT1); ----- ----- C45 00010C48 60030801 ----- 16549 .ORG TEXT1, *MNDP0+MNDP1? 16550 JZ(TEXT10F,TEXT10T); ----- ----- C48 0000259A 00000000 ----- 16551 .ORG TEXT10T, *TELETEXT DISPLAY, SET TDISP 16552 MA(SCREEN), 16553 A(TDISP), BR>B, OR, 16554 Y>RAM, 16555 JUMP(TEXT10F); ----- ----- 59B 0000059A 60041101 ----- 16556 *ENTER HERE TO CLEAR UPDATE 16557 .ORG TEXT10F, *BR=VDPTXT 16558 MA(VDPTXT), RAM>BR, 16559 JUMP(TEXT11); ----- ----- 59A 00010C49 2B000000 ----- 16560 .ORG TEXT11, *UPD=C8YET=0 16561 MA(VDPTXT), 16562 A(>FF-UPD-C8YET), BR>B, AND, 16563 Y>RAM, 16564 JUMP(TEXT20); ----- ----- C49 00000C4A 2BCF0901 ----- 16565 .ORG TEXT20, *A=EXPREG 16566 MA(EXPREG), RAM>AR, 16567 JUMP(TEXT21); ----- ----- C4A 00020C4B 63000000 ----- 16568 .ORG TEXT21, *CLEAR USER STATUS MODE 16569 *USM=0 16570 MA(EXPREG), 16571 AR>A, B(>FF-USM), AND, 16572 Y>AR, 16573 JUMP(TEXT22); ----- ----- C4B 00220C4C 63FD0810 ----- 16574 .ORG TEXT22, *CPRF=CGAP=1 16575 MA(EXPREG), 16576 AR>A, B(CPRF+CGAP), OR, 16577 Y>RAM, 16578 JUMP(TEXT30); ----- ----- C4C 00000C4D 630C1110 ----- 16579 *GOING INTO TV WITH INCOMPLETE MAIN PAGE? 16580 .ORG TEXT30, *B=LSTINS 16581 MA(LSTINS), RAM>BR, 16582 JUMP(TEXT31); ----- ----- C4D 00010C4E 2E000000 ----- 16583 .ORG TEXT31, *Y=LSTINS LO NIB 16584 *A=PEN 16585 MA(PEN), RAM>AR, 16586 A(0), BR.0F>B, OR, 16587 JUMP(TEXT32); ----- ----- C4E 00020C4F 1B001002 ----- 16588 .ORG TEXT32, *GOING TO TV? IF NOT, EXIT 16589 *Y=PEN-4 16590 ARHI>A, B(-4), ADD, 16591 JZ(DI120,TEXT33T); ----- ----- C4F 0000259C 00FC0020 ----- 16592 .ORG TEXT33T, *SUB-PAGE MODE? 16593 *Y=PEN 16594 *A=VDPTXT 16595 MA(VDPTXT), RAM>AR, 16596 ARHI>A, B(0), OR, 16597 JN(TEXT34F,TEXT34T); ----- ----- 59D 0002459E 2B001020 ----- 16598 .ORG TEXT34F, *SUB-PAGE MODE, EXIT 16599 *CLEAR URVL 16600 MA(VDPTXT), 16601 AR>A, B(>FF-URVL), AND, 16602 Y>RAM, 16603 JUMP(DI120); ----- ----- 59E 0000059C 2BF70910 ----- 16604 .ORG TEXT34T, *MAIN PAGE MODE 16605 *INCOMPLETE MAIN PAGE? 16606 *CLEAR URVL 16607 MA(VDPTXT), 16608 AR>A, B(>FF-URVL), AND, 16609 Y>RAM, 16610 JZ(TEXT35F,TEXT35T); ----- ----- 59F 000025A8 2BF70910 ----- 16611 .ORG TEXT35T, *COMPLETE MAIN PAGE, NOTHING TO DO 16612 JUMP(DI120); ----- ----- 5A9 0000059C 00000000 ----- 16613 .ORG TEXT35F, *INCOMPLETE MAIN PAGE, CALL PPDP0 16614 *P=0, RETURN TO PPAGE2Y->CMPE0 16615 Y(0), 16616 Y>PR, 16617 JUMP(PPDP0); ----- ----- 5A8 000004BE 80001000 ----- 16618 *+++SET PAGE CAPTURE MODE 16619 * A=UPDATED SYS1 16620 .ORG SPCM0, *UPDATE SYS1 16621 MA(SYS1), 16622 AR>A, B(0), OR, 16623 Y>RAM, 16624 JUMP(SPCM0A); ----- ----- C46 00000C50 08001110 ----- 16625 *ENTRY POINT FROM FAVP 16626 .ORG SPCM0A, *CALL INPMC0F 16627 *RETURN=1, RETURN TO SPCM1 16628 MA(RETURN), 16629 Y(1), 16630 Y>RAM, 16631 JUMP(INPCM0); ----- ----- C50 000008B7 7C011100 ----- 16632 .ORG SPCM1, *B=PEN 16633 MA(PEN), RAM>BR, 16634 JUMP(SPCM2); ----- ----- 621 00010C51 1B000000 ----- 16635 .ORG SPCM2, *Y=PEN-4 16636 A(-4), BRHI>B, ADD, 16637 JUMP(SPCM3); ----- ----- C51 00000C52 00FC000C ----- 16638 .ORG SPCM3, *SUB-PAGE MODE? 16639 *Y=PEN 16640 A(0), BRHI>B, OR, 16641 JN(SPCM4F,SPCM4T); ----- ----- C52 000045AA 0000100C ----- 16642 .ORG SPCM4F, *SUB-PAGE MODE, GO TO CMPE0 TO CLEAR IT 16643 JUMP(CMPE0); ----- ----- 5AA 000004DF 00000000 ----- 16644 .ORG SPCM4T, *COMPLETE MAIN PAGE ENTERED? 16645 JZ(SPCM5F,SPCM5T); ----- ----- 5AB 000025AC 00000000 ----- 16646 .ORG SPCM5T, *YES 16647 JUMP(DI100); ----- ----- 5AD 000000D1 00000000 ----- 16648 .ORG SPCM5F, *NO, GO TO LAST PAGE 16649 *CALL PPDP0 16650 *P=3, RETURN TO SPCM6 16651 *A=DPU, B=DPU 16652 MA(DPU), RAM>AR, RAM>BR, 16653 Y(3), 16654 Y>PR, 16655 JUMP(PPDP0); ----- ----- 5AC 000304BE EA031000 ----- 16656 .ORG SPCM6, 16657 JUMP(CMPE0); ----- ----- 49B 000004DF 00000000 ----- 16658 *+++SET FAVOURITE PAGE MODE 16659 * A=SYS1 16660 .ORG FVP0, *UPDATE SYS1 16661 *PCM=3 16662 MA(SYS1), 16663 AR>A, B(>30), OR, 16664 Y>RAM, 16665 JUMP(SPCM0A); ----- ----- C47 00000C50 08301110 ----- 16666 */// 16667 *+++STOD: START TIME OUT DISPLAY 16668 *ENTRY POINT FROM KEY1DT, DIG6T, DIG7T 16669 * A=DHREG 16670 .ORG STOD0, *TOD=1 16671 MA(DHREG), 16672 AR>A, B(TOD), OR, 16673 Y>AR, 16674 JUMP(STOD1); ----- ----- B93 00220C53 32081010 ----- 16675 .ORG STOD1, *POOCD=0 16676 MA(DHREG), 16677 AR>A, B(>FF-POOCD), AND, 16678 Y>RAM, 16679 JUMP(STOD2); ----- ----- C53 00000C54 32DF0910 ----- 16680 .ORG STOD2, *INIT 5S TIME OUT 16681 MA(TIMOUT), 16682 Y(>FF), 16683 Y>RAM, 16684 JUMP(DI120); ----- ----- C54 0000059C 3BFF1100 ----- 16685 *///COMMON EXIT TO CLEAR OPCNT 16686 .ORG DI100, *AR=RCSTAT 16687 MA(RCSTAT), RAM>AR, 16688 JUMP(DI101); ----- ----- 0D1 00020C55 2F000000 ----- 16689 .ORG DI101, *OPCNT=0 16690 MA(RCSTAT), 16691 AR.F0>A, B(0), OR, 16692 Y>RAM, 16693 JUMP(ST0F); ----- ----- C55 00000001 2F0011D0 ----- 16694 *///COMMON EXIT TO SET WAIT 16695 * A=POLREG 16696 .ORG DI110, *WAIT=1, EXIT WITHOUT CLEARING OPCNT 16697 MA(POLREG), 16698 AR>A, B(WAIT), OR, 16699 Y>RAM, 16700 JUMP(ST0F); ----- ----- 572 00000001 10401110 ----- 16701 *///COMMON EXIT TO CLEAR OPCNT AND CALL SVDP ROUTINE IN NEXT VPP 16702 .ORG DI120, *AR=VPPRG1 16703 MA(VPPRG1), RAM>AR, 16704 JUMP(DI121); ----- ----- 59C 00020C56 61000000 ----- 16705 .ORG DI121, *CSVDP=1 16706 MA(VPPRG1), 16707 AR>A, B(CSVDP), OR, 16708 Y>RAM, 16709 JUMP(DI100); ----- ----- C56 000000D1 61101110 ----- 16710 ************************************************************************ 16711 * section 5: sub-routines * 16712 ************************************************************************ 16713 * 16714 ***SVDP: SET VDP 16715 * 16716 * This routine updates the VDP registers according to VDPTXT or VDPOSD 16717 * according to whether the display page is teletext or a menu page. 16718 * This should be the main place where VDP registers are updated. COUNT 16719 * is used a temp store for VDP---. 16720 * 16721 .ORG SVDP0, *AR=SCREEN 16722 MA(SCREEN), RAM>AR, 16723 JUMP(UDPL0); ----- ----- 33C 00020C57 60000000 ----- 16724 *UPDATE DISPLAY LATCH 16725 * AR=SCREEN 16726 .ORG UDPL0, *Y=SCREEN MSN (PIC, MIX, BOX, TEXT) 16727 AR.F0>A, B(0), OR, 16728 JUMP(UDPL1); ----- ----- C57 00000C58 000010D0 ----- 16729 .ORG UDPL1, *Y=MNDP1+MNDP0 16730 *TV MODE? 16731 *BR=STOR0 16732 MA(STOR0), RAM>BR, 16733 AR>A, B(MNDP1+MNDP0), AND, 16734 JZ(UDPL2F,UDPL2T); ----- ----- C58 000125AE 20030810 ----- 16735 .ORG UDPL2T, *TV MODE, SET DPL=STORE 0 TO ALLOW CLOCK DISPLAY 16736 *AR=VDP0 16737 MA(VDP0), RAM>AR, 16738 JUMP(UDPL3T); ----- ----- 5AF 000205B9 00000000 ----- 16739 .ORG UDPL2F, *DISPLAY A MENU PAGE? 16740 *Y=MNDP0 16741 *AR=VDP0 16742 MA(VDP0), RAM>AR, 16743 AR>A, B(MNDP0), AND, 16744 JZ(UDPL3F,UDPL3T); ----- ----- 5AE 000225B8 00010810 ----- 16745 .ORG UDPL3T, *DISPLAY TELETEXT PAGE 16746 *SET DPL TO LATCH IN STORE 0 16747 *AR=VDP0 16748 MA(VDP0), 16749 AR.F0>A, BRHI>B, OR, 16750 Y>RAM, Y>IO, Y>AR, 16751 JUMP(SVDP1); ----- ----- 5B9 00220C59 000051DC ----- 16752 .ORG UDPL3F, *DISPLAY WHICH MENU PAGE? 16753 *BR=STOR7 (LATCH FOR MENU PAGE 1) 16754 MA(STOR7), RAM>BR, 16755 JZ(UDPL4F,UDPL4T); ----- ----- 5B8 000125BA 27000000 ----- 16756 .ORG UDPL4F, *DISPLAY MENU PAGE 0 16757 *BR=STOR6 (LATCH FOR MENU PAGE 0) 16758 MA(STOR6), RAM>BR, 16759 JUMP(UDPL4T); ----- ----- 5BA 000105BB 26000000 ----- 16760 .ORG UDPL4T, *SET DPL TO MENU PAGE LATCH 16761 *AR=VDP0 16762 MA(VDP0), 16763 AR.F0>A, BRHI>B, OR, 16764 Y>RAM, Y>IO, Y>AR, 16765 JUMP(SVDP1); ----- ----- 5BB 00220C59 000051DC ----- 16766 * AR=VDP0 16767 .ORG SVDP1, *RWL=DPL 16768 MA(RWL), 16769 AR.0F>A, B(0), OR, 16770 Y>RAM, Y>IO, 16771 JUMP(SVDP1A); ----- ----- C59 00000C5A 0B0051C0 ----- 16772 .ORG SVDP1A, *AR=VDP1 16773 MA(VDP1), RAM>AR, 16774 JUMP(SVDP1B); ----- ----- C5A 00020C5B 01000000 ----- 16775 .ORG SVDP1B, *CLEAR BR24, EXPT, EXPB, BOX, MIX AND TEXT IN RAM COPY 16776 MA(VDP1), 16777 AR>A, B(>FF-BR24-EXPT-EXPB-BOX-MIX-TEXT), AND, 16778 Y>RAM, 16779 JUMP(SVDP1C); ----- ----- C5B 00000C5C 01480910 ----- 16780 .ORG SVDP1C, *BR=SCREEN 16781 MA(SCREEN), RAM>BR, 16782 JUMP(SVDP2); ----- ----- C5C 00010C5D 60000000 ----- 16783 .ORG SVDP2, *AR=VDP4 16784 *Y=SCREEN MSN 16785 MA(VDP4), RAM>AR, 16786 A(0), BR.F0>B, OR, 16787 JUMP(SVDP2A); ----- ----- C5D 00020C5E 04001003 ----- 16788 .ORG SVDP2A, *CLOCK=0 16789 *IN TV MODE? 16790 MA(VDP4), 16791 AR>A, B(>FF-CLOCK), AND, 16792 Y>RAM, Y>IO, 16793 JZ(SVDP3F,PIC0T); ----- ----- C5E 000025BC 047F4910 ----- 16794 *TV MODE 16795 .ORG PIC0T, *BR=VDPTXT 16796 MA(VDPTXT), RAM>BR, 16797 JUMP(PIC10); ----- ----- 5BD 00010C5F 2B000000 ----- 16798 .ORG PIC10, *Y=UCLK 16799 *AR=VDP0 16800 MA(VDP0), RAM>AR, 16801 A(UCLK), BR>B, AND, 16802 JUMP(PIC11); ----- ----- C5F 00020C60 00800801 ----- 16803 *WORK OUT VDP0 IN A 16804 .ORG PIC11, *UCLK? 16805 *R24ON=R1T23=R0ON=0 16806 AR>A, B(>FF-R24ON-R1T23-R0ON), AND, 16807 Y>AR, 16808 JZ(PIC12F,PIC12T); ----- ----- C60 002225BE 008F0810 ----- 16809 *IN CLOCK MODE 16810 .ORG PIC12F, *R0ON=1, B=VDP4 16811 MA(VDP4), RAM>BR, 16812 AR>A, B(R0ON), OR, 16813 Y>AR, 16814 JUMP(PIC13); ----- ----- 5BE 00230C61 04101010 ----- 16815 .ORG PIC13, *CLOCK=1 16816 MA(VDP4), 16817 A(CLOCK), BR>B, OR, 16818 Y>RAM, Y>IO, 16819 JUMP(PIC13A); ----- ----- C61 00000C62 04805101 ----- 16820 .ORG PIC13A, *B=VDP1 16821 MA(VDP1), RAM>BR, 16822 JUMP(PIC14); ----- ----- C62 00010C63 01000000 ----- 16823 .ORG PIC14, *SET BOX MODE 16824 MA(VDP1), 16825 A(TEXT+BOX), BR>B, OR, 16826 Y>RAM, Y>IO, 16827 JUMP(PIC12T); ----- ----- C63 000005BF 01055101 ----- 16828 * 16829 .ORG PIC12T, *B=EXPREG 16830 MA(EXPREG), RAM>BR, 16831 JUMP(PIC15); ----- ----- 5BF 00010C64 63000000 ----- 16832 .ORG PIC15, *Y=USM 16833 A(USM), BR>B, AND, 16834 JUMP(PIC16); ----- ----- C64 00000C65 00020801 ----- 16835 .ORG PIC16, *USER STATUS MODE? 16836 *B=VDP1 16837 MA(VDP1), RAM>BR, 16838 JZ(PIC17F,PIC17T); ----- ----- C65 000125C8 01000000 ----- 16839 .ORG PIC17T, *UPDATE VDP1 16840 MA(VDP1), 16841 A(0), BR>B, OR, 16842 Y>RAM, Y>IO, 16843 JUMP(PIC19); ----- ----- 5C9 00000C66 01005101 ----- 16844 *USER STATUS MODE 16845 .ORG PIC17F, *DISPLAY STATUS IN A BOX 16846 *SET BOX MODE 16847 MA(VDP1), 16848 A(TEXT+BOX), BR>B, OR, 16849 Y>RAM, Y>IO, 16850 JUMP(PIC18); ----- ----- 5C8 00000C67 01055101 ----- 16851 .ORG PIC18, *ENABLE ROW 24 16852 AR>A, B(R24ON), OR, 16853 Y>AR, 16854 JUMP(PIC19); ----- ----- C67 00220C66 00401010 ----- 16855 * 16856 .ORG PIC19, *UPDATE VDP0 16857 MA(VDP0), 16858 AR>A, B(0), OR, 16859 Y>RAM, Y>IO, 16860 JUMP(SVDP200); ----- ----- C66 00000C68 00005110 ----- 16861 *TEXT, BOX OR MIX MODE 16862 .ORG SVDP3F, *BR=SCREEN, PR=SPM INDEX 16863 MA(SCREEN), RAM>BR, 16864 Y(-14), 16865 Y>PR, 16866 JUMP(SVDP4); ----- ----- 5BC 00010C69 E0F21000 ----- 16867 .ORG SVDP4, *Y=MNDP0+MNDP1 16868 *TPD=SPM 16869 RVDP, 16870 A(MNDP0+MNDP1), BR>B, AND, 16871 JUMP(SVDP5); ----- ----- C69 00000C6A 00038801 ----- 16872 .ORG SVDP5, *MENU DISPLAY PAGE? 16873 JZ(SVDP6F,SVDP6T); ----- ----- C6A 000025CA 00000000 ----- 16874 *MENU PAGE LATCH, SKIP UPDATE PROCESSING 16875 .ORG SVDP6F, *OSD LATCH, AR=VDPOSD 16876 MA(VDPOSD), RAM>AR, 16877 JUMP(SVDP6A); ----- ----- 5CA 00020C6B 2C000000 ----- 16878 .ORG SVDP6A, *COUNT=AR 16879 MA(COUNT), 16880 AR>A, B(0), OR, 16881 Y>RAM, 16882 JUMP(SVDP6B); ----- ----- C6B 00000C6C 78001110 ----- 16883 .ORG SVDP6B, *B=VDP1 16884 *A=NEW EXPT AND EXPB (SHIFT UP UEXT+UEXB) 16885 MA(VDP1), RAM>BR, 16886 AR<<4>A, B(EXPT+EXPB), AND, 16887 Y>AR, 16888 JUMP(SVDP6C); ----- ----- C6C 00230C6D 01300830 ----- 16889 .ORG SVDP6C, *OR UEXT+UEXB INTO VDP1 16890 *UPDATE R24ON, R1T23, R0ON LATER 16891 MA(VDP1), 16892 AR>A, BR>B, OR, 16893 Y>RAM, *Y>IO, TCJ Jan 93 16894 JUMP(SVDP6D); ----- ----- C6D 00000C6E 01001111 ----- 16895 .ORG SVDP6D, *BR=SCREEN 16896 MA(SCREEN), RAM>BR, 16897 JUMP(SVDP6E); ----- ----- C6E 00010C6F 60000000 ----- 16898 .ORG SVDP6E, *Y=SCREEN 16899 *AR=VDP1 16900 MA(VDP1), RAM>AR, 16901 A(3), BRHI>B, AND, 16902 JUMP(SVDP6G); ----- ----- C6F 00020C70 0103080C ----- 16903 .ORG SVDP6G, *Y=0 16904 *BR=COUNT 16905 MA(COUNT), RAM>BR, 16906 Y(0), 16907 JY(SVDP20Y); ----- ----- C70 0001C090 78001000 ----- 16908 *TELETEXT LATCH, DO UPDATE PROCESSING 16909 .ORG SVDP6T, *AR=VDPTXT 16910 MA(VDPTXT), RAM>AR, 16911 JUMP(SVDP7); ----- ----- 5CB 00020C71 2B000000 ----- 16912 .ORG SVDP7, *COUNT=AR 16913 MA(COUNT), 16914 AR>A, B(0), OR, 16915 Y>RAM, 16916 JUMP(SVDP7A); ----- ----- C71 00000C72 78001110 ----- 16917 .ORG SVDP7A, *B=VDP1 16918 *A=NEW EXPT AND EXPB (SHIFT UP UEXT+UEXB) 16919 MA(VDP1), RAM>BR, 16920 AR<<4>A, B(EXPT+EXPB), AND, 16921 Y>AR, 16922 JUMP(SVDP8); ----- ----- C72 00230C73 01300830 ----- 16923 .ORG SVDP8, *OR UEXT+UEXB INTO VDP1 16924 *UPDATE R24ON, R1T23, R0ON LATER 16925 MA(VDP1), 16926 AR>A, BR>B, OR, 16927 Y>RAM, *Y>IO, TCJ Jan 93 16928 JUMP(SVDP8A); ----- ----- C73 00000C74 01001111 ----- 16929 .ORG SVDP8A, *BR=VDPTXT 16930 MA(VDPTXT), RAM>BR, 16931 JUMP(SVDP9); ----- ----- C74 00010C75 2B000000 ----- 16932 .ORG SVDP9, *Y=UPD+C8YET>>4 16933 *AR=SCREEN 16934 MA(SCREEN), RAM>AR, 16935 A(3), BRHI>B, AND, 16936 JUMP(SVDP9A); ----- ----- C75 00020C76 6003080C ----- 16937 .ORG SVDP9A, *CASE UPD+C8YET=? 16938 *Y=SCREEN 16939 *AR=VDP1 16940 MA(VDP1), RAM>AR, 16941 ARHI>A, B(3), AND, 16942 JY(SVDP10Y); ----- ----- C76 0002C080 01030820 ----- 16943 *ENTRY POINT AFTER CLEARING UPDATE IF PAGE IS SUBT OR NWSF 16944 .ORG SVDP10Y, *CASE NO UPD OR C8YET 16945 *BR=SCREEN 16946 MA(SCREEN), RAM>BR, 16947 JUMP(SVDP14); ----- ----- 080 00010C77 60000000 ----- 16948 .ORG SVDP11, *CASE C8YET 16949 *BR=SCREEN 16950 MA(SCREEN), RAM>BR, 16951 JUMP(SVDP14); ----- ----- 081 00010C77 60000000 ----- 16952 .ORG SVDP12, *CASE UPD 16953 *UPDATE MODE BUT PAGE NOT UPDATED 16954 *A=VDP0 16955 MA(VDP0), RAM>AR, 16956 JUMP(SVDP12A); ----- ----- 082 00020C78 00000000 ----- 16957 .ORG SVDP12A, *R0ON=1, R1T23=0, R24ON=0 16958 MA(VDP0), 16959 AR.0F>A, B(R0ON), OR, 16960 Y>RAM, Y>IO, 16961 JUMP(SVDP12B); ----- ----- C78 00000C79 001051C0 ----- 16962 .ORG SVDP12B, *A=DHREG 16963 MA(DHREG), RAM>AR, 16964 JUMP(SVDP13JT); ----- ----- C79 000205CF 32000000 ----- 16965 * 16966 .ORG SVDP13, *CASE UPD AND C8YET 16967 *Y=NWSF+SUBT 16968 TPD>A, B(NWSF+SUBT), AND, 16969 JUMP(SVDP13A); ----- ----- 083 00000C7A 00C00890 ----- 16970 .ORG SVDP13A, *NWSF OR SUBT? 16971 *BR=VDPTXT 16972 MA(VDPTXT), RAM>BR, 16973 JZ(SVDP13BF,SVDP13BT); ----- ----- C7A 000125CC 2B000000 ----- 16974 *NWSF OR SUBT, DISPLAY PAGE STRAIGHT AWAY 16975 .ORG SVDP13BF, *UPD=0 16976 MA(VDPTXT), 16977 A(>FF-UPD), BR>B, AND, 16978 Y>RAM, 16979 JUMP(SVDP10Y); ----- ----- 5CC 00000080 2BDF0901 ----- 16980 *DISPLAY UPDATED PAGE NUMBER 16981 *FIRST SET R1T23 FOR NOKIA ALARM CLOCK 16982 .ORG SVDP13BT, *A=VDP0 16983 MA(VDP0), RAM>AR, 16984 JUMP(SVDP13BA); ----- ----- 5CD 00020C7B 00000000 ----- 16985 .ORG SVDP13BA, *R0ON=1, R1T23=1, R24ON=0 16986 MA(VDP0), 16987 AR.0F>A, B(R0ON+R1T23), OR, 16988 Y>RAM, Y>IO, 16989 JUMP(SVDP13BB); ----- ----- C7B 00000C7C 003051C0 ----- 16990 * 16991 .ORG SVDP13BB, *B=PEN 16992 MA(PEN), RAM>BR, 16993 JUMP(SVDP13G); ----- ----- C7C 00010C7D 1B000000 ----- 16994 .ORG SVDP13G, *A=DHREG, Y=PEN-4 16995 MA(DHREG), RAM>AR, 16996 A(-4), BRHI>B, ADD, 16997 JUMP(SVDP13H); ----- ----- C7D 00020C7E 32FC000C ----- 16998 .ORG SVDP13H, *SUB-PAGE MODE? 16999 *A=ICP+NRH+TOD 17000 AR>A, B(ICP+NRH+TOD), AND, 17001 Y>AR, 17002 JN(SVDP13JF,SVDP13JT); ----- ----- C7E 002245CE 00580810 ----- 17003 *SUB-PAGE MODE 17004 .ORG SVDP13JF, *SUB-PAGE MODE 17005 *Y=ICP+!NRH+TOD 17006 AR>A, B(NRH), XOR, 17007 JUMP(SVDP13M); ----- ----- 5CE 00000C7F 00101810 ----- 17008 *NOT SUB-PAGE MODE, DISPLAY ROW 24 IF TOD SET 17009 *ENTRY POINT FROM SVDP12 17010 .ORG SVDP13JT, *Y=TOD 17011 AR>A, B(TOD), AND, 17012 JUMP(SVDP13M); ----- ----- 5CF 00000C7F 00080810 ----- 17013 *UPDATE VDP0 17014 .ORG SVDP13M, *DISPLAY ROW 24? 17015 *A=VDP0 17016 MA(VDP0), RAM>AR, 17017 JZ(SVDP13PF,SVDP13PT); ----- ----- C7F 000225D0 00000000 ----- 17018 .ORG SVDP13PF, *ENABLE ROW24 17019 *R24ON=1 17020 MA(VDP0), 17021 AR>A, B(R24ON), OR, 17022 Y>RAM, Y>IO, 17023 JUMP(SVDP13PT); ----- ----- 5D0 000005D1 00405110 ----- 17024 * 17025 .ORG SVDP13PT, *A=VDP1 17026 MA(VDP1), RAM>AR, 17027 JUMP(SVDP13R); ----- ----- 5D1 00020C80 01000000 ----- 17028 .ORG SVDP13R, *SET BOX MODE 17029 *GO AND UPDATE VDP2 AND VDP3 17030 MA(VDP1), 17031 AR>A, B(TEXT+BOX), OR, 17032 Y>RAM, Y>IO, 17033 JUMP(SVDP50T); ----- ----- C80 000005F7 01055110 ----- 17034 * 17035 .ORG SVDP14, *Y=SCREEN 17036 *AR=VDP1 17037 MA(VDP1), RAM>AR, 17038 A(3), BRHI>B, AND, 17039 JUMP(SVDP18); ----- ----- C77 00020C81 0103080C ----- 17040 .ORG SVDP18, *Y=SUBT+NWSF 17041 *BR=COUNT 17042 MA(COUNT), RAM>BR, 17043 TPD>A, B(SUBT+NWSF), AND, 17044 JY(SVDP20Y); ----- ----- C81 0001C090 78C00890 ----- 17045 *MENU AND TELETEXT ROUTINES JOIN UP HERE 17046 * COUNT= VDPTXT OR VDPOSD 17047 .ORG SVDP20Y, *PICTURE, ERROR ###1 17048 *BASE FOR CASE ONLY! DO THE SAME AS TEXT! 17049 *NOT MENU DISPLAY PAGE AND (NWSF+SUBT)? 17050 *AR=TEXT, BR=VDP1 17051 *VDP1 HAS TEXT, MIX, BOX MASKED 17052 MA(VDP1), RAM>BR, 17053 A(TEXT), B(TEXT), OR, 17054 Y>AR, 17055 JZ(SVDP22AF,SVDP22AT); ----- ----- 090 002325D2 01011000 ----- 17056 .ORG SVDP21, *CASE SCREEN=1, TEXT 17057 *NOT MENU DISPLAY PAGE AND (NWSF+SUBT)? 17058 *AR=TEXT, BR=VDP1 17059 *VDP1 HAS TEXT, MIX, BOX MASKED 17060 MA(VDP1), RAM>BR, 17061 A(TEXT), B(TEXT), OR, 17062 Y>AR, 17063 JZ(SVDP22AF,SVDP22AT); ----- ----- 091 002325D2 01011000 ----- 17064 .ORG SVDP22, *CASE SCREEN=2, MIX 17065 *NOT MENU DISPLAY PAGE AND (NWSF+SUBT)? 17066 *AR=TEXT+MIX, BR=VDP1 17067 *VDP1 HAS TEXT, MIX, BOX MASKED 17068 MA(VDP1), RAM>BR, 17069 A(TEXT+MIX), B(TEXT+MIX), OR, 17070 Y>AR, 17071 JZ(SVDP22AF,SVDP22AT); ----- ----- 092 002325D2 01031000 ----- 17072 .ORG SVDP22AF, *NOT MENU PAGE AND SUBT OR NWSF 17073 *SET BOX MODE 17074 MA(VDP1), 17075 A(TEXT+BOX), BR>B, OR, 17076 Y>RAM, Y>IO, 17077 JUMP(SVDP24); ----- ----- 5D2 00000C82 01055101 ----- 17078 .ORG SVDP22AT, *SET TEXT OR MIX 17079 MA(VDP1), 17080 AR>A, BR>B, OR, 17081 Y>RAM, Y>IO, 17082 JUMP(SVDP24); ----- ----- 5D3 00000C82 01005111 ----- 17083 .ORG SVDP23, *SET BOX 17084 *VDP1 HAS TEXT, MIX, BOX MASKED 17085 MA(VDP1), 17086 AR>A, B(TEXT+BOX), OR, 17087 Y>RAM, Y>IO, 17088 JUMP(SVDP24); ----- ----- 093 00000C82 01055110 ----- 17089 **COMPLETED UPDATE OF TEXT, BOX AND MIX BITS IN VDP1 17090 .ORG SVDP24, *B=COUNT 17091 MA(COUNT), RAM>BR, 17092 JUMP(SVDP25); ----- ----- C82 00010C83 78000000 ----- 17093 .ORG SVDP25, *Y=URVL 17094 *BR=SCREEN 17095 MA(SCREEN), RAM>BR, 17096 A(URVL), BR>B, AND, 17097 JUMP(SVDP26); ----- ----- C83 00010C84 60080801 ----- 17098 .ORG SVDP26, *URVL? 17099 *Y=MNDP0+MNDP1, AR=VDP1 17100 MA(VDP1), RAM>AR, 17101 A(MNDP0+MNDP1), BR>B, AND, 17102 JZ(SVDP27F,SVDP27T); ----- ----- C84 000225D4 01030801 ----- 17103 .ORG SVDP27F, *URVL, SET RVL BIT 17104 *MENU DISPLAY PAGE? 17105 MA(VDP1), 17106 AR>A, B(RVL), OR, 17107 Y>RAM, Y>IO, 17108 JZ(SVDP28F,SVDP28T); ----- ----- 5D4 000025D6 01085110 ----- 17109 .ORG SVDP27T, *CLR RVL BIT 17110 *MENU DISPLAY PAGE? 17111 MA(VDP1), 17112 AR>A, B(>FF-RVL), AND, 17113 Y>RAM, Y>IO, 17114 JZ(SVDP28F,SVDP28T); ----- ----- 5D5 000025D6 01F74910 ----- 17115 *+++THIS LATCH IS IN OSD MODE 17116 .ORG SVDP28F, *MENU DISPLAY PAGE 17117 *Y=MNDP1 17118 *AR=VDP0 17119 MA(VDP0), RAM>AR, 17120 A(MNDP1), BR>B, AND, 17121 JUMP(SVDP30); ----- ----- 5D6 00020C85 00020801 ----- 17122 .ORG SVDP30, *ENABLE ALL ROWS, MNDP1? 17123 MA(VDP0), 17124 AR.0F>A, B(R24ON+R1T23+R0ON), OR, 17125 Y>RAM, Y>IO, 17126 JZ(SVDP31F,SVDP31T); ----- ----- C85 000025D8 007051C0 ----- 17127 .ORG SVDP31F, *MNDP1, DISPLAY PAGE ROW 24 IS STORED IN ROW 24 17128 *INHIBIT ROW 24 DISPLAY 17129 MA(VDP0), 17130 AR.0F>A, B(R1T23+R0ON), OR, 17131 Y>RAM, Y>IO, 17132 JUMP(SVDP31T); ----- ----- 5D8 000005D9 003051C0 ----- 17133 * 17134 .ORG SVDP31T, *AR=USRLAN 17135 MA(USRLAN), RAM>AR, 17136 JUMP(SVDP32); ----- ----- 5D9 00020C86 2D000000 ----- 17137 .ORG SVDP32, *VDP2=USRLAN 17138 MA(VDP2), 17139 AR>A, B(0), OR, 17140 Y>RAM, 17141 * Y>IO, *<---- !TCJ! VDP2 write 17142 * JUMP(SVDP33); 17143 JUMP(SVDP200); ----- ----- C86 00000C68 02001110 ----- 17144 * 17145 *.ORG SVDP33, *VDP3=USRLAN 17146 * MA(VDP3), 17147 * AR>A, B(0), OR, Y>AR, 17148 * Y>IO, *<---- !TCJ! VDP3 write 17149 * JUMP(SVDP200); 17150 *+++THIS LATCH IS IN TELETEXT MODE 17151 *+++WORK OUT VDP0 IN AR, DISPLAY ROW 0 AND ROWS 1 TO 23? 17152 .ORG SVDP28T, *NOT A MENU DISPLAY PAGE 17153 *PR=-13 (POINT TO CG) 17154 A(-13), B(-13), OR, 17155 Y>PR, 17156 JUMP(SVDP40); ----- ----- 5D7 00000C87 80F31000 ----- 17157 .ORG SVDP40, *TPD=CG 17158 RVDP, 17159 JUMP(SVDP40A); ----- ----- C87 00000C88 00008000 ----- 17160 .ORG SVDP40A, *Y=IHD 17161 *A=VDP0 17162 MA(VDP0), RAM>AR, 17163 TPD>A, B(%1000), AND, 17164 JUMP(SVDP41); ----- ----- C88 00020C89 00080890 ----- 17165 .ORG SVDP41, *Y=SPH, IHD? 17166 *BR=VDPTXT 17167 MA(VDPTXT), RAM>BR, 17168 TPD>A, B(%0001), AND, 17169 JZ(SVDP42F,SVDP42T); ----- ----- C89 000125DA 2B010890 ----- 17170 .ORG SVDP42F, *IHD, R0ON=1, R1T23=0, R24ON=0 17171 *B=SYS2 17172 MA(SYS2), RAM>BR, 17173 AR.0F>A, B(R0ON), OR, 17174 Y>AR, 17175 JUMP(SVDP44); ----- ----- 5DA 00230C8A 091010C0 ----- 17176 .ORG SVDP42T, *NOT IHD, SPH? 17177 *Y=STOP 17178 *B=DHREG 17179 MA(DHREG), RAM>BR, 17180 A(STOP), BR>B, AND, 17181 JZ(SVDP43F,SVDP43T); ----- ----- 5DB 000125DC 32040801 ----- 17182 .ORG SVDP43T, *NO SPH, NO IHD R0ON=1, RIT23=1, R24ON=0 17183 *B=SYS2 17184 MA(SYS2), RAM>BR, 17185 AR.0F>A, B(R0ON+R1T23), OR, 17186 Y>AR, 17187 JUMP(SVDP44); ----- ----- 5DD 00230C8A 093010C0 ----- 17188 *SPH BIT SET, OK TO SUPPRESS IT? 17189 .ORG SVDP43F, *SPH 17190 *PAGE HELD? 17191 *Y=NRH 17192 A(NRH), BR>B, AND, 17193 JZ(SVDP43AF,SVDP43AT); ----- ----- 5DC 000025DE 00100801 ----- 17194 .ORG SVDP43AF, *HELD PAGE, DO NOT SUPRESS HEADER 17195 *NO SPH, NO IHD R0ON=1, RIT23=1, R24ON=0 17196 *B=SYS2 17197 MA(SYS2), RAM>BR, 17198 AR.0F>A, B(R0ON+R1T23), OR, 17199 Y>AR, 17200 JUMP(SVDP44); ----- ----- 5DE 00230C8A 093010C0 ----- 17201 .ORG SVDP43AT, *PAGE NOT HELD 17202 *ROLLING HEADER? 17203 *Y=ICP+TOD 17204 A(ICP+TOD), BR>B, AND, 17205 JZ(SVDP43BF,SVDP43BT); ----- ----- 5DF 000025E4 00480801 ----- 17206 .ORG SVDP43BT, *ROLLING HEADER, DO NOT SUPRESS HEADER 17207 *NO SPH, NO IHD R0ON=1, RIT23=1, R24ON=0 17208 *B=SYS2 17209 MA(SYS2), RAM>BR, 17210 AR.0F>A, B(R0ON+R1T23), OR, 17211 Y>AR, 17212 JUMP(SVDP44); ----- ----- 5E5 00230C8A 093010C0 ----- 17213 .ORG SVDP43BF, *PAGE NOT HELD AND HEADER NOT ROLLING 17214 *INCOMPLETE PAGE OR TOD? 17215 JZ(SVDP43CF,SVDP43CT); ----- ----- 5E4 000025E6 00000000 ----- 17216 .ORG SVDP43CF, *INCOMPLETE PAGE 17217 *NO SPH, NO IHD R0ON=1, RIT23=1, R24ON=0 17218 *B=SYS2 17219 MA(SYS2), RAM>BR, 17220 AR.0F>A, B(R0ON+R1T23), OR, 17221 Y>AR, 17222 JUMP(SVDP44); ----- ----- 5E6 00230C8A 093010C0 ----- 17223 *IHD=0, NRH=1, ICP=0, STOP=0: OK TO SUPRESS HEADER 17224 .ORG SVDP43CT, *R0ON=0, R1T23=1, R24ON=0 17225 *B=SYS2 17226 MA(SYS2), RAM>BR, 17227 AR.0F>A, B(R1T23), OR, 17228 Y>AR, 17229 JUMP(SVDP44); ----- ----- 5E7 00230C8A 092010C0 ----- 17230 *+++WORKING OUT VDP0 IN AR, DISPLAY ROW 24? 17231 * B=SYS2 17232 .ORG SVDP44, *Y=APIN 17233 *B=DHREG 17234 MA(DHREG), RAM>BR, 17235 A(APIN), BR>B, AND, 17236 JUMP(SVDP45); ----- ----- C8A 00010C8B 32010801 ----- 17237 .ORG SVDP45, *AUTO PROMPT GENERATION OFF? 17238 *Y=TOD+ICP 17239 A(TOD+ICP), BR>B, AND, 17240 JZ(SVDP45AF,SVDP45AT); ----- ----- C8B 000025EC 00480801 ----- 17241 *AUTO PROMPT OFF 17242 .ORG SVDP45AF, *APIN==1 17243 *R24ON=1 17244 MA(VDP0), 17245 AR>A, B(R24ON), OR, 17246 Y>RAM, Y>IO, 17247 JUMP(SVDP50T); ----- ----- 5EC 000005F7 00405110 ----- 17248 *AUTO PROMPT ON 17249 .ORG SVDP45AT, *TOD OR ICP? 17250 *Y=NRH 17251 *B=VPPRG2 17252 MA(VPPRG2), RAM>BR, 17253 A(NRH), BR>B, AND, 17254 JZ(SVDP46AF,SVDP46AT); ----- ----- 5ED 000125EE 62100801 ----- 17255 .ORG SVDP46AT, *NOT TOD OR ICP, ROLLING THE HEADER? 17256 *Y=SUBT 17257 A(SUBT), BR>B, AND, 17258 JZ(SVDP47F,SVDP47T); ----- ----- 5EF 000025F0 00800801 ----- 17259 .ORG SVDP46AF, *TOD OR ICP 17260 *R24ON=1 17261 MA(VDP0), 17262 AR>A, B(R24ON), OR, 17263 Y>RAM, Y>IO, 17264 JUMP(SVDP50T); ----- ----- 5EE 000005F7 00405110 ----- 17265 .ORG SVDP47T, *HEADER IS ROLLING 17266 *R24ON=1 17267 MA(VDP0), 17268 AR>A, B(R24ON), OR, 17269 Y>RAM, Y>IO, 17270 JUMP(SVDP50T); ----- ----- 5F1 000005F7 00405110 ----- 17271 .ORG SVDP47F, *SUBTITLE PAGE? 17272 *Y=NWSF, B=MREG0 17273 MA(MREG0), RAM>BR, 17274 A(NWSF), BR>B, AND, 17275 JZ(SVDP49BF,SVDP49BT); ----- ----- 5F0 000125F2 39400801 ----- 17276 .ORG SVDP49BF, *SUBT, R24ON=0 17277 *R24ON=0 17278 MA(VDP0), 17279 AR>A, B(0), OR, 17280 Y>RAM, Y>IO, 17281 JUMP(SVDP50T); ----- ----- 5F2 000005F7 00005110 ----- 17282 .ORG SVDP49BT, *NOT SUBT, NWSF? 17283 *Y=CNR24D 17284 A(CNR24D), BR>B, AND, 17285 JZ(SVDP49CF,SVDP49CT); ----- ----- 5F3 000025F4 00400801 ----- 17286 .ORG SVDP49CT, *NOT SUBT OR NWSF 17287 *R24ON=1 17288 MA(VDP0), 17289 AR>A, B(R24ON), OR, 17290 Y>RAM, Y>IO, 17291 JUMP(SVDP50T); ----- ----- 5F5 000005F7 00405110 ----- 17292 .ORG SVDP49CF, *NWSF, CNR24D? 17293 *R24ON=1 17294 MA(VDP0), 17295 AR>A, B(R24ON), OR, 17296 Y>RAM, Y>IO, 17297 JZ(SVDP49DF,SVDP50T); ----- ----- 5F4 000025F6 00405110 ----- 17298 .ORG SVDP49DF, *CNR24D AND NWSF 17299 *R24ON=0 17300 MA(VDP0), 17301 AR>A, B(0), OR, 17302 Y>RAM, Y>IO, 17303 JUMP(SVDP50T); ----- ----- 5F6 000005F7 00005110 ----- 17304 *CHECK IF R24ON, R1T23, R0ON ARE OVERIDDEN BY R24OSD=1 17305 .ORG SVDP50T, *B=SYS2 17306 MA(SYS2), RAM>BR, 17307 JUMP(SVDP51); ----- ----- 5F7 00010C8C 09000000 ----- 17308 .ORG SVDP51, *Y=R24OSD 17309 *A=VDP0 17310 MA(VDP0), RAM>AR, 17311 A(R24OSD), BR>B, AND, 17312 JUMP(SVDP52); ----- ----- C8C 00020C8D 00400801 ----- 17313 .ORG SVDP52, *R24OSD? 17314 *PR=CG POINTER 17315 *BR=USRLAN 17316 MA(USRLAN), RAM>BR, 17317 Y(-13), 17318 Y>PR, 17319 JZ(SVDP53F,SVDP53T); ----- ----- C8D 000125F8 ADF31000 ----- 17320 .ORG SVDP53F, *ROW 24 OSDS ENABLED 17321 *R24ON=1, R1T23=0, R0ON=0 17322 MA(VDP0), 17323 AR.0F>A, B(R24ON), OR, 17324 Y>RAM, Y>IO, 17325 JUMP(SVDP53T); ----- ----- 5F8 000005F9 004051C0 ----- 17326 *+++COMPLETED VDP0 UPDATE 17327 *+++VDP2 UPDATE 17328 .ORG SVDP53T, *Y=FLM 17329 RVDP, 17330 A(FLM), BR>B, AND, 17331 JUMP(SVDP54); ----- ----- 5F9 00000C8E 00808801 ----- 17332 .ORG SVDP54, *FLM? 17333 *AR=CGB 17334 TPD.F0>A, B(0), ADD, 17335 Y>AR, 17336 JZ(SVDP55F,SVDP55T); ----- ----- C8E 002225FA 000000B0 ----- 17337 .ORG SVDP55F, *FORCED LANG MODE 17338 *VDP2=USRLAN 17339 MA(VDP2), 17340 A(0), BR>B, OR, 17341 Y>RAM, 17342 * Y>IO, *<---- !TCJ! VDP2 write 17343 * JUMP(SVDP60); 17344 * 17345 JUMP(SVDP200); * TCJ April 94, 209 mods ----- ----- 5FA 00000C68 02001101 ----- 17346 * 17347 .ORG SVDP55T, *NOT FORCED LANG MODE 17348 *UPDATE WITH CBITS FROM CGB 17349 * TCJ August 94, 211 mods 17350 * combine LG and C bits in AR 17351 ARHI>A, BR.F0>B, OR, 17352 Y>AR, 17353 JUMP(SVDP56); ----- ----- 5FB 00220C8F 00001023 ----- 17354 * 17355 .ORG SVDP56, *Update VDP2 17356 *Removing SWITCH and ILANG bits from USRLAN 17357 MA(VDP2), 17358 AR>A, B(>BE), AND, 17359 Y>RAM, 17360 JUMP(SVDP200); ----- ----- C8F 00000C68 02BE0910 ----- 17361 * 17362 * TCJ April 94, 209 mods 17363 * Special processing for R24LAN removed 17364 * 17365 *ORG SVDP60, *B=SYS2 17366 * MA(SYS2), RAM>BR, 17367 * JUMP(SVDP60A); 17368 *ORG SVDP60A, *B=SYS1 17369 * *Y=APIN 17370 * MA(SYS1), RAM>BR, 17371 * A(APIN), BR>B, AND, 17372 * JUMP(SVDP61); 17373 *ORG SVDP61, *Y=PCM-1, AUTO PROMPTS INHIBITED? 17374 * *B=PEN 17375 * MA(PEN), RAM>BR, 17376 * A(-1), BRHI>B, ADD, 17377 * JZ(SVDP62F,SVDP62T); 17378 *AUTO PROMPTS INHIBITED 17379 *ORG SVDP62F, *APIN=1 17380 * *A=R24LAN 17381 * MA(R24LAN), RAM>AR, 17382 * JUMP(SVDP62A); 17383 *ORG SVDP62A, *VDP3=R24LAN 17384 * MA(VDP3), 17385 * AR>A, B(0), OR, Y>AR, 17386 * Y>IO, *<---- !TCJ! VDP3 write 17387 * JUMP(SVDP200); 17388 *ORG SVDP62, *Y=PEN-4 17389 * *TOP MODE? 17390 * *B=VDP2 17391 * MA(VDP2), RAM>BR, 17392 * A(-4), BRHI>B, ADD, 17393 * JZ(SVDP63F,SVDP63T); 17394 *ORG SVDP63F, *NOT TOP 17395 * *VDP3=VDP2 17396 * MA(VDP3), 17397 * A(0), BR>B, OR, Y>AR, 17398 * Y>IO, *<---- !TCJ! VDP3 write 17399 * JUMP(SVDP200); 17400 * 17401 *ORG SVDP63T, *TOP MODE 17402 * *SUB-PAGE MODE? 17403 * *A=AITLAN 17404 * MA(AITLAN), RAM>AR, 17405 * JN(SVDP64F,SVDP64T); 17406 *ORG SVDP64F, *TOP MENU NOT DISPLAYED 17407 * *VDP3=VDP2 17408 * MA(VDP3), 17409 * A(0), BR>B, OR, Y>AR, 17410 * Y>IO, *<---- !TCJ! VDP3 write 17411 * JUMP(SVDP200); 17412 *ORG SVDP64T, *TOP MENU DISPLAYED 17413 * *USE LANGUAGE FROM THE AIT TABLE 17414 * *VDP3 HI NIB= VDP2 HI NIB 17415 * *VDP3 LO NIB= AITLAN 17416 * MA(VDP3), 17417 * ARHI>A, BR.F0>B, OR, 17418 * Y>AR, 17419 * Y>IO, *<---- !TCJ! VDP3 write 17420 * JUMP(SVDP65); 17421 *ORG SVDP65, *A=VDP1 17422 * MA(VDP1), RAM>BR, 17423 * JUMP(SVDP66); 17424 *ORG SVDP66, *BR24=1 (CAN'T FIT BOX CHARS IN TOP MENU) 17425 * MA(VDP1), 17426 * A(BR24), BR>B, OR, 17427 * Y>RAM, Y>IO, 17428 * JUMP(SVDP200); 17429 * 17430 * TCJ Sep 94, 17431 * Translate Language for VDP2 17432 * 17433 .ORG SVDP200, * fetch current display language 17434 MA(VDP2), RAM>AR, 17435 JUMP(SVDP201); ----- ----- C68 00020C90 02000000 ----- 17436 * 17437 .ORG SVDP201, * Y = LGn 17438 ARHI>A, B(>03), AND, 17439 JUMP(SVDP202); ----- ----- C90 00000C91 00030820 ----- 17440 * 17441 .ORG SVDP202, * Y = Cn 17442 AR>>1>A, B(>07), AND, 17443 JY(SVDP203.0); ----- ----- C91 0000C590 000708E0 ----- 17444 * 17445 .ORG SVDP203.0, * LG == 0, Language group %00 17446 * Leave only SWITCH and ILANG bits in AR 17447 AR>A, B(>41), AND, 17448 Y>AR, 17449 JY(SVDP204.0); ----- ----- 590 0022C5A0 00410810 ----- 17450 * 17451 .ORG SVDP204.0, * LG == 0, C == 0, ENGLISH 17452 AR>A, B(>7E), OR, 17453 MA(VDP2), Y>IO, 17454 JUMP(SVDP205); ----- ----- 5A0 00000C92 027E5010 ----- 17455 * 17456 .ORG SVDP204.1, * LG == 0, C == 1, FRENCH 17457 AR>A, B(>48), OR, 17458 MA(VDP2), Y>IO, 17459 JUMP(SVDP205); ----- ----- 5A1 00000C92 02485010 ----- 17460 * 17461 .ORG SVDP204.2, * LG == 0, C == 2, SWEDISH 17462 AR>A, B(>49), OR, 17463 MA(VDP2), Y>IO, 17464 JUMP(SVDP205); ----- ----- 5A2 00000C92 02495010 ----- 17465 * 17466 .ORG SVDP204.3, * LG == 0, C == 3, CZECH / SLOVAKIAN 17467 AR>A, B(>62), OR, 17468 MA(VDP2), Y>IO, 17469 JUMP(SVDP205); ----- ----- 5A3 00000C92 02625010 ----- 17470 * 17471 .ORG SVDP204.4, * LG == 0, C == 4, GERMAN 17472 AR>A, B(>40), OR, 17473 MA(VDP2), Y>IO, 17474 JUMP(SVDP205); ----- ----- 5A4 00000C92 02405010 ----- 17475 * 17476 .ORG SVDP204.5, * LG == 0, C == 5, ENGLISH 17477 AR>A, B(>7E), OR, 17478 MA(VDP2), Y>IO, 17479 JUMP(SVDP205); ----- ----- 5A5 00000C92 027E5010 ----- 17480 * 17481 .ORG SVDP204.6, * LG == 0, C == 6, ITALIAN 17482 AR>A, B(>42), OR, 17483 MA(VDP2), Y>IO, 17484 JUMP(SVDP205); ----- ----- 5A6 00000C92 02425010 ----- 17485 * 17486 .ORG SVDP204.7, * LG == 0, C == 7, GREEK 17487 Y(>7F), * SET TWIST AND >1F LANGUAGE 17488 MA(VDP2), Y>IO, * STORE IN VDP 2 17489 JUMP(SVDP209); ----- ----- 5A7 00000C93 027F5000 ----- 17490 * 17491 .ORG SVDP209, 17492 Y(>7E), * SET DUAL AND >1F LANGUAGE 17493 MA(VDP3), Y>IO, * STORE IN VDP 3 17494 JUMP(SVDP212); ----- ----- C93 00000C94 037E5000 ----- 17495 * 17496 .ORG SVDP203.1, * LG == 1, Language group %01 17497 * Leave only SWITCH and ILANG bits in AR 17498 AR>A, B(>41), AND, 17499 Y>AR, 17500 JY(SVDP206.0); ----- ----- 591 0022C5B0 00410810 ----- 17501 * 17502 .ORG SVDP206.0, * LG == 1, C == 0, ENGLISH 17503 AR>A, B(>3E), OR, 17504 MA(VDP2), Y>IO, 17505 JUMP(SVDP205); ----- ----- 5B0 00000C92 023E5010 ----- 17506 * 17507 .ORG SVDP206.1, * LG == 1, C == 1, FRENCH 17508 AR>A, B(>08), OR, 17509 MA(VDP2), Y>IO, 17510 JUMP(SVDP205); ----- ----- 5B1 00000C92 02085010 ----- 17511 * 17512 .ORG SVDP206.2, * LG == 1, C == 2, SWEDISH 17513 AR>A, B(>12), OR, 17514 MA(VDP2), Y>IO, 17515 JUMP(SVDP205); ----- ----- 5B2 00000C92 02125010 ----- 17516 * 17517 .ORG SVDP206.3, * LG == 1, C == 3, CZECH / SLOVAKIAN 17518 AR>A, B(>22), OR, 17519 MA(VDP2), Y>IO, 17520 JUMP(SVDP205); ----- ----- 5B3 00000C92 02225010 ----- 17521 * 17522 .ORG SVDP206.4, * LG == 1, C == 4, GERMAN 17523 AR>A, B(>00), OR, 17524 MA(VDP2), Y>IO, 17525 JUMP(SVDP205); ----- ----- 5B4 00000C92 02005010 ----- 17526 * 17527 .ORG SVDP206.5, * LG == 1, C == 5, SERBO-CROAT 17528 AR>A, B(>24), OR, 17529 MA(VDP2), Y>IO, 17530 JUMP(SVDP205); ----- ----- 5B5 00000C92 02245010 ----- 17531 * 17532 .ORG SVDP206.6, * LG == 1, C == 6, ITALIAN 17533 AR>A, B(>02), OR, 17534 MA(VDP2), Y>IO, 17535 JUMP(SVDP205); ----- ----- 5B6 00000C92 02025010 ----- 17536 * 17537 .ORG SVDP206.7, * LG == 1, C == 7, RUMANIAN 17538 AR>A, B(>66), OR, 17539 MA(VDP2), Y>IO, 17540 JUMP(SVDP205); ----- ----- 5B7 00000C92 02665010 ----- 17541 * 17542 .ORG SVDP203.2, * LG == 2, Language group %10 17543 * Leave only SWITCH and ILANG bits in AR 17544 AR>A, B(>41), AND, 17545 Y>AR, 17546 JY(SVDP207.0); ----- ----- 592 0022C5C0 00410810 ----- 17547 * 17548 .ORG SVDP207.0, * LG == 2, C == 0, ENGLISH 17549 AR>A, B(>7E), OR, 17550 MA(VDP2), Y>IO, 17551 JUMP(SVDP205); ----- ----- 5C0 00000C92 027E5010 ----- 17552 * 17553 .ORG SVDP207.1, * LG == 2, C == 1, FRENCH 17554 AR>A, B(>48), OR, 17555 MA(VDP2), Y>IO, 17556 JUMP(SVDP205); ----- ----- 5C1 00000C92 02485010 ----- 17557 * 17558 .ORG SVDP207.2, * LG == 2, C == 2, SWEDISH 17559 AR>A, B(>49), OR, 17560 MA(VDP2), Y>IO, 17561 JUMP(SVDP205); ----- ----- 5C2 00000C92 02495010 ----- 17562 * 17563 .ORG SVDP207.3, * LG == 2, C == 3, TURKISH 17564 AR>A, B(>10), OR, 17565 MA(VDP2), Y>IO, 17566 JUMP(SVDP205); ----- ----- 5C3 00000C92 02105010 ----- 17567 * 17568 .ORG SVDP207.4, * LG == 2, C == 4, GERMAN 17569 AR>A, B(>40), OR, 17570 MA(VDP2), Y>IO, 17571 JUMP(SVDP205); ----- ----- 5C4 00000C92 02405010 ----- 17572 * 17573 .ORG SVDP207.5, * LG == 2, C == 5, ENGLISH 17574 AR>A, B(>7E), OR, 17575 MA(VDP2), Y>IO, 17576 JUMP(SVDP205); ----- ----- 5C5 00000C92 027E5010 ----- 17577 * 17578 .ORG SVDP207.6, * LG == 2, C == 6, ITALIAN 17579 AR>A, B(>41), OR, 17580 MA(VDP2), Y>IO, 17581 JUMP(SVDP205); ----- ----- 5C6 00000C92 02415010 ----- 17582 * 17583 .ORG SVDP207.7, * LG == 2, C == 7, GREEK 17584 Y(>7F), * SET TWIST AND >1F LANGUAGE 17585 MA(VDP2), Y>IO, * STORE IN VDP 2 17586 JUMP(SVDP209); ----- ----- 5C7 00000C93 027F5000 ----- 17587 * 17588 * 17589 .ORG SVDP203.3, * LG == 3, Language group %11 17590 * Leave only SWITCH and ILANG bits in AR 17591 AR>A, B(>41), AND, 17592 Y>AR, 17593 JY(SVDP204.0); ----- ----- 593 0022C5A0 00410810 ----- 17594 * 17595 *.ORG SVDP203.3, * LG == 3, Language group %11 17596 * * Leave only SWITCH and ILANG bits in AR 17597 * JUMP(SVDP203.0); 17598 ** 17599 *.ORG SVDP203.3, * LG == 3, Language group %11 17600 * * Leave only SWITCH and ILANG bits in AR 17601 * AR>A, B(>41), AND, 17602 * Y>AR, 17603 * JY(SVDP208.0); 17604 ** 17605 *.ORG SVDP208.0, * LG == 3, C == 0, ENGLISH 17606 * AR>A, B(>7E), OR, 17607 * MA(VDP2), Y>IO, 17608 * JUMP(SVDP209); 17609 ** 17610 *.ORG SVDP208.1, * LG == 3, C == 1, RUSSIAN 17611 * Y(>7F), * SET TWIST AND >1F LANGUAGE 17612 * MA(VDP2), Y>IO, * STORE IN VDP 2 17613 * JUMP(SVDP209); 17614 ** 17615 *.ORG SVDP209, 17616 * Y(>7E), * SET DUAL AND >1F LANGUAGE 17617 * MA(VDP3), Y>IO, * STORE IN VDP 3 17618 * JUMP(SVDP212); 17619 ** 17620 *.ORG SVDP208.2, * LG == 3, C == 2, ESTONIAN 17621 * AR>A, B(>62), OR, 17622 * MA(VDP2), Y>IO, 17623 * JUMP(SVDP209); 17624 ** 17625 *.ORG SVDP208.3, * LG == 3, C == 3, CZECH / SLOVAKIAN 17626 * AR>A, B(>52), OR, 17627 * MA(VDP2), Y>IO, 17628 * JUMP(SVDP209); 17629 ** 17630 *.ORG SVDP208.4, * LG == 3, C == 4, GERMAN 17631 * AR>A, B(>40), OR, 17632 * MA(VDP2), Y>IO, 17633 * JUMP(SVDP209); 17634 ** 17635 *.ORG SVDP208.5, * LG == 3, C == 5, UKRANIAN 17636 * Y(>7F), 17637 * MA(VDP2), Y>IO, 17638 * JUMP(SVDP208XX); 17639 ** 17640 *.ORG SVDP208XX, 17641 * Y(>66), 17642 * MA(VDP3), Y>IO, 17643 * JUMP(SVDP212); 17644 ** 17645 *.ORG SVDP208.6, * LG == 3, C == 6, LETTISH / LITHUANIAN 17646 * AR>A, B(>64), OR, 17647 * MA(VDP2), Y>IO, 17648 * JUMP(SVDP209); 17649 ** 17650 *.ORG SVDP208.7, * LG == 3, C == 7, ENGLISH 17651 * AR>A, B(>7E), OR, 17652 * MA(VDP2), Y>IO, 17653 * JUMP(SVDP209); 17654 * 17655 * Set up VDP3 value 17656 * 17657 .ORG SVDP205, 17658 A(0), B(>7E), 17659 OR, 17660 MA(VDP3), Y>IO, 17661 JUMP(SVDP212); ----- ----- C92 00000C94 037E5000 ----- 17662 *.ORG SVDP205, 17663 * MA(USRLAN), RAM>BR, * GET USER LANGUAGE DATA 17664 * Y(>40), Y>AR, 17665 * JUMP(SVDP210); 17666 ** 17667 *.ORG SVDP210, 17668 * A(FLM), BR>B, * TEST THE FORCE LANGUAGE MODE BIT 17669 * AND, 17670 * JUMP(SVDP211); 17671 ** 17672 *.ORG SVDP211, 17673 * MA(VDP3), RAM>BR, * get RAM version of VDP3 17674 * JZ(SVDP214F,SVDP214T); * jump to F if FLM bit set 17675 ** 17676 *.ORG SVDP214F, 17677 * A(>08), BR>B, * add 8 to RAM version of VDP3 and put in A reg 17678 * ADD, 17679 * Y>AR, 17680 * JUMP(SVDP214T); 17681 ** 17682 *.ORG SVDP214T, 17683 * AR>A, B(>64), * or >64 into RAM version of VDP3 (+8) and store in VDP 17684 * OR, 17685 * MA(VDP3), Y>IO, 17686 * JUMP(SVDP212); 17687 * 17688 * SET THE BIT IN VDPREG2 TO CALL THE 17689 * SET PLL REGISTERS ROUTINE. 17690 * 17691 .ORG SVDP212, *B=VPPRG2 17692 MA(VPPRG2), RAM>BR, 17693 JUMP(SVDP213); ----- ----- C94 00010C95 62000000 ----- 17694 * 17695 .ORG SVDP213, *CSPLL=1 17696 MA(VPPRG2), 17697 A(CSPLL), BR>B, OR, 17698 Y>RAM, 17699 JUMP(WPN0); ----- ----- C95 00000C96 62041101 ----- 17700 * 17701 *+++ WPN: WRITE PAGE NUMBER IN TOP LEFT HAND CORNER 17702 * 17703 * This routine generates the display in the top left hand eight 17704 * bytes of store 0. If a page number is required, this 17705 * routine calls PND to for the page number characters. All 17706 * other characters (eg green for rolling headers) are calculated 17707 * in this routine. 17708 * 17709 .ORG WPN0, *B=SCREEN 17710 *P=0, POINT TO FIRST LOC 17711 MA(SCREEN), RAM>BR, 17712 Y(0), 17713 Y>PR, 17714 JUMP(WPN1); ----- ----- C96 00010C97 E0001000 ----- 17715 .ORG WPN1, *Y=TDISP 17716 *A=STOR0 17717 MA(STOR0), RAM>AR, 17718 A(TDISP), BR>B, AND, 17719 JUMP(WPN2); ----- ----- C97 00020C98 20040801 ----- 17720 .ORG WPN2, *TELETEXT DISPLAY? 17721 *RWL=STOR0 17722 MA(RWL), 17723 ARHI>A, B(0), OR, 17724 Y>RAM, Y>IO, 17725 JZ(WPN3F,WPN3T); ----- ----- C98 000025FC 0B005120 ----- 17726 .ORG WPN3T, *NO TELETEXT DISPLAY, JUST NEED TO INHIBIT PAGE NO 17727 *BOX FOR CLOCK DISPLAYS 17728 Y(>20), 17729 Y>DR, 17730 JUMP(PND80Y); ----- ----- 5FD 00001070 00201000 ----- 17731 *TELETEXT DISPLAY 17732 *UPDATE COLS 0 AND 7 17733 .ORG WPN3F, *0TH COL='BOX' 17734 Y(>0B), 17735 Y>DR, 17736 JUMP(WPN10); ----- ----- 5FC 00001C99 000B1000 ----- 17737 .ORG WPN10, *P=7 17738 Y(7), 17739 Y>PR, 17740 JUMP(WPN11); ----- ----- C99 00000C9A 80071000 ----- 17741 .ORG WPN11, *7TH COL=' ' 17742 Y(>20), 17743 Y>DR, 17744 JUMP(WPN12); ----- ----- C9A 00001C9B 00201000 ----- 17745 *UPDATE COL 6 17746 .ORG WPN12, *P=6 17747 *B=DHREG 17748 MA(DHREG), RAM>BR, 17749 Y(6), 17750 Y>PR, 17751 JUMP(WPN12A); ----- ----- C9B 00010C9C B2061000 ----- 17752 .ORG WPN12A, *Y=NRH 17753 *A=VDPTXT 17754 MA(VDPTXT), RAM>AR, 17755 A(NRH), BR>B, AND, 17756 JUMP(WPN14); ----- ----- C9C 00020C9D 2B100801 ----- 17757 .ORG WPN14, *ROLLING HEADERS? 17758 *A=UPD+C8YET 17759 AR>A, B(UPD+C8YET), AND, 17760 Y>AR, 17761 JZ(WPN15F,WPN15T); ----- ----- C9D 002225FE 00300810 ----- 17762 *HEADER ROLLING 17763 .ORG WPN15T, *6TH COL=ALPHA GREEN 17764 Y(>02), 17765 Y>DR, 17766 JUMP(WPN17F); ----- ----- 5FF 00001600 00021000 ----- 17767 *HEADER NOT ROLLING 17768 .ORG WPN15F, *Y=UPD INVERTED +C8YET INVERTED 17769 AR>A, B(UPD+C8YET), XOR, 17770 JUMP(WPN16); ----- ----- 5FE 00000C9E 00301810 ----- 17771 .ORG WPN16, *UPD=1, C8YET=1? 17772 *6TH COL=' ' 17773 Y(>20), 17774 Y>DR, 17775 JZ(WPN17F,WPN17T); ----- ----- C9E 00003600 00201000 ----- 17776 .ORG WPN17T, *PAGE UPDATED IN UPDATE 17777 *Y=TOD 17778 A(TOD), BR>B, AND, 17779 JUMP(WPN19T); ----- ----- 601 00000603 00080801 ----- 17780 * 17781 .ORG WPN17F, *Y=UPD INVERTED +C8YET 17782 AR>A, B(UPD), XOR, 17783 JUMP(WPN18); ----- ----- 600 00000C9F 00201810 ----- 17784 .ORG WPN18, *Y=TOD 17785 *UPD=1, C8YET=0? 17786 A(TOD), BR>B, AND, 17787 JZ(WPN19F,WPN19T); ----- ----- C9F 00002602 00080801 ----- 17788 .ORG WPN19F, *A=DHREG 17789 MA(DHREG), RAM>AR, 17790 JUMP(WPN20F); ----- ----- 602 00020604 32000000 ----- 17791 * 17792 .ORG WPN19T, *PAGE NOT YET UPDATED IN UPDATE 17793 *TOD? 17794 *A=DHREG 17795 MA(DHREG), RAM>AR, 17796 JZ(WPN20F,WPN20T); ----- ----- 603 00022604 32000000 ----- 17797 .ORG WPN20T, *NO TIME OUT DISPLAY 17798 *6TH COL=END BOX 17799 *A=DHREG 17800 MA(DHREG), RAM>AR, 17801 Y(>0A), 17802 Y>DR, 17803 JUMP(WPN20F); ----- ----- 605 00021604 320A1000 ----- 17804 *UPDATE ENDIG 17805 * A=DHREG 17806 .ORG WPN20F, *Y=TOD+ICP 17807 *B=VDPTXT 17808 MA(VDPTXT), RAM>BR, 17809 AR>A, B(TOD+ICP), AND, 17810 JUMP(WPN21); ----- ----- 604 00010CA0 2B480810 ----- 17811 .ORG WPN21, *TOD+ICP? 17812 *Y=UPD 17813 *B=PEN 17814 MA(PEN), RAM>BR, 17815 A(UPD), BR>B, AND, 17816 JZ(WPN22F,WPN22T); ----- ----- CA0 00012606 1B200801 ----- 17817 .ORG WPN22F, *TOD+ICP 17818 *ENDIG=1 17819 MA(DHREG), 17820 AR>A, B(ENDIG), OR, 17821 Y>RAM, 17822 JUMP(WPN25T); ----- ----- 606 0000060D 32041110 ----- 17823 .ORG WPN22T, *Y=PEN-4, UPDATE MODE? 17824 *B=VDP0 17825 MA(VDP0), RAM>BR, 17826 A(-4), BRHI>B, ADD, 17827 JZ(WPN22AF,WPN22AT); ----- ----- 607 00012608 00FC000C ----- 17828 .ORG WPN22AF, *UPDATE MODE 17829 *ENDIG=1 17830 MA(DHREG), 17831 AR>A, B(ENDIG), OR, 17832 Y>RAM, 17833 JUMP(WPN25T); ----- ----- 608 0000060D 32041110 ----- 17834 .ORG WPN22AT, *Y=R24ON 17835 *SUB-PAGE MODE? 17836 A(R24ON), BR>B, AND, 17837 JN(WPN23F,WPN23T); ----- ----- 609 0000460A 00400801 ----- 17838 .ORG WPN23T, *MAIN PAGE MODE 17839 *ENDIG=0 17840 MA(DHREG), 17841 AR>A, B(>FF-ENDIG), AND, 17842 Y>RAM, 17843 JUMP(WPN25T); ----- ----- 60B 0000060D 32FB0910 ----- 17844 .ORG WPN23F, *SUB-PAGE MODE 17845 *ROW 24 ENABLED? 17846 *ELSE ENDIG=0 17847 MA(DHREG), 17848 AR>A, B(>FF-ENDIG), AND, 17849 Y>RAM, 17850 JZ(WPN25F,WPN25T); ----- ----- 60A 0000260C 32FB0910 ----- 17851 .ORG WPN25F, *ROW 24 ENABLED 17852 *ENDIG=1 17853 MA(DHREG), 17854 AR>A, B(ENDIG), OR, 17855 Y>RAM, 17856 JUMP(WPN25T); ----- ----- 60C 0000060D 32041110 ----- 17857 *UPDATE COLS 2,3,4,5 17858 .ORG WPN25T, *B=MREG0 17859 MA(MREG0), RAM>BR, 17860 JUMP(WPN26); ----- ----- 60D 00010CA1 39000000 ----- 17861 .ORG WPN26, *P=3 17862 *A=VDPTXT 17863 MA(VDPTXT), RAM>AR, 17864 Y(3), 17865 Y>PR, 17866 JUMP(WPN30); ----- ----- CA1 00020CA2 AB031000 ----- 17867 .ORG WPN30, *Y=DISERR 17868 A(DISERR), BR>B, AND, 17869 JUMP(WPN31); ----- ----- CA2 00000CA3 00080801 ----- 17870 .ORG WPN31, *Y=STOP 17871 *DISPLAYING ERROR COUNT? 17872 AR>A, B(STOP), AND, 17873 JZ(WPN32F,WPN32T); ----- ----- CA3 0000260E 00040810 ----- 17874 *DISPLAYING ERROR COUNT 17875 .ORG WPN32F, *A=ERRCNT 17876 MA(ERRCNT), RAM>AR, 17877 JUMP(WPN33); ----- ----- 60E 00020CA4 3A000000 ----- 17878 .ORG WPN33, *3RD COL= ERRCNT HI NIB 17879 ARHI>A, B(>30), OR, 17880 Y>DR, 17881 JUMP(WPN34); ----- ----- CA4 00001CA5 00301020 ----- 17882 .ORG WPN34, *P=4 17883 Y(4), 17884 Y>PR, 17885 JUMP(WPN35); ----- ----- CA5 00000CA6 80041000 ----- 17886 .ORG WPN35, *4TH COL= ERRCNT LO NIB 17887 *EXIT TO 'STOP' CODE 17888 AR.0F>A, B(>30), OR, 17889 Y>DR, 17890 JUMP(WPN110); ----- ----- CA6 00001CA7 003010C0 ----- 17891 *END OF ERROR COUNT 17892 .ORG WPN32T, *Y=STP 17893 *PAGE HELD? 17894 A(STP), BR>B, AND, 17895 JZ(WPN40F,WPN40T); ----- ----- 60F 00002610 00010801 ----- 17896 .ORG WPN40T, *PAGE NOT HELD 17897 *A=UPD+C8YET 17898 AR>A, B(UPD+C8YET), AND, 17899 Y>AR, 17900 JUMP(WPN50); ----- ----- 611 00220CA8 00300810 ----- 17901 .ORG WPN40F, *PAGE HELD 17902 *'STOP' DISPLAY ENABLED? 17903 * 17904 * TCJ May 94, 17905 * Disable 'STOP' option, only write the HOLD dymbol 17906 * 17907 * JZ(WPN41F,WPN41T); 17908 JUMP(WPN41T); ----- ----- 610 00000CA9 00000000 ----- 17909 * 17910 *WRITE 'STOP' 17911 *.ORG WPN41F, *PR=2 17912 * Y(2), 17913 * Y>PR, 17914 * JUMP(WPN72); 17915 *.ORG WPN72, *2ND COL='S' 17916 * Y(>53), 17917 * Y>DR, 17918 * JUMP(WPN73); 17919 *.ORG WPN73, *PR=3 17920 * Y(3), 17921 * Y>PR, 17922 * JUMP(WPN74); 17923 *.ORG WPN74, *3RD COL='T' 17924 * Y(>54), 17925 * Y>DR, 17926 * JUMP(WPN75); 17927 *.ORG WPN75, *PR=4 17928 * Y(4), 17929 * Y>PR, 17930 * JUMP(WPN76); 17931 *.ORG WPN76, *4TH COL='O' 17932 * Y(>4F), 17933 * Y>DR, 17934 * JUMP(WPN77); 17935 *.ORG WPN77, *PR=5 17936 * Y(5), 17937 * Y>PR, 17938 * JUMP(WPN78); 17939 *.ORG WPN78, *5TH COL='P' 17940 * Y(>50), 17941 * Y>DR, 17942 * JUMP(WPN100); 17943 *END OF 'STOP' 17944 *WRITE HOLD SYMBOL 17945 .ORG WPN41T, *3RD COL=LHS HOLD SYMBOL 17946 Y(>89), 17947 Y>DR, 17948 JUMP(WPN42); ----- ----- CA9 00001CAA 00891000 ----- 17949 .ORG WPN42, *PR=4 17950 Y(4), 17951 Y>PR, 17952 JUMP(WPN43); ----- ----- CAA 00000CAB 80041000 ----- 17953 .ORG WPN43, *4TH COL=RHS HOLD SYMBOL 17954 Y(>87), 17955 Y>DR, 17956 JUMP(WPN110); ----- ----- CAB 00001CA7 00871000 ----- 17957 *END OF HOLD SYMBOL 17958 * A=UPD+C8YET 17959 .ORG WPN50, *Y=C8YET+!UPD 17960 AR>A, B(UPD), XOR, 17961 JUMP(WPN50A); ----- ----- CA8 00000CAC 00201810 ----- 17962 .ORG WPN50A, *UPDATE BUT PAGE NOT UPDATED? 17963 *Y=!C8YET+!UPD 17964 *A=DHREG 17965 MA(DHREG), RAM>AR, 17966 AR>A, B(UPD+C8YET), XOR, 17967 JZ(WPN51F,WPN51T); ----- ----- CAC 00022612 32301810 ----- 17968 *WRITE UPDATE SYMBOL 17969 .ORG WPN51T, *3RD COL=LHS UPDATE SYMBOL 17970 *B=MREG1 17971 MA(MREG1), RAM>BR, 17972 Y(>89), 17973 Y>DR, 17974 JUMP(WPN52); ----- ----- 613 00011CAD 65891000 ----- 17975 .ORG WPN52, *Y=UPSYM 17976 A(UPSYM), BR>B, AND, 17977 JUMP(WPN52A); ----- ----- CAD 00000CAE 00200801 ----- 17978 .ORG WPN52A, *PR=4 17979 *UPDATE SYMBOL MODE? 17980 Y(4), 17981 Y>PR, 17982 JZ(WPN53F,WPN53T); ----- ----- CAE 00002614 80041000 ----- 17983 .ORG WPN53T, *4TH COL=RHS TEXT SYMBOL (GRUNDIG MODE) 17984 Y(>88), 17985 Y>DR, 17986 JUMP(WPN110); ----- ----- 615 00001CA7 00881000 ----- 17987 .ORG WPN53F, *4TH COL=RHS UPDATE SYMBOL (NOKIA MODE) 17988 Y(>FA), *TCJ April 94, 209 mods 17989 Y>DR, 17990 JUMP(WPN110); ----- ----- 614 00001CA7 00FA1000 ----- 17991 * 17992 * TCJ April 94, 209 mods 17993 * We no longer need to go into OSD mode 17994 * to display the OSD characters. 17995 * 17996 * 17997 *.ORG WPN53A, *SET OSD NATIONAL OPTION 17998 * MA(VDP2), 17999 * Y(>30), Y>RAM, * TODO: do I need to change this ? 18000 * JUMP(TCJWPN00); 18001 * 18002 *.ORG TCJWPN00, 18003 * MA(VDP2), 18004 * Y(>00), Y>IO, * TODO: do I need to change this ? 18005 * JUMP(WPN110); 18006 * 18007 *END OF UPDATE SYMBOL 18008 * A=DHREG 18009 * 18010 .ORG WPN51F, *UPDATE AND PAGE UPDATED? 18011 *A=NRH+ICP+TOD 18012 AR>A, B(NRH+ICP+TOD), AND, 18013 Y>AR, 18014 JZ(WPN60F,WPN60T); ----- ----- 612 00222616 00580810 ----- 18015 *WRITE UPDATED PAGE 18016 *ORG WPN60T, *SEE BELOW 18017 *UPDATE COL 1 18018 *WRITE PAGE NUMBER WITH BOXED HEADER 18019 .ORG WPN60T, *P=1 18020 Y(1), 18021 Y>PR, 18022 JUMP(WPN81F); ----- ----- 617 00000618 80011000 ----- 18023 *WRITE PAGE NUMBER WITHOUT A BOXED HEADER 18024 * A=NRH+ICP+TOD 18025 .ORG WPN60F, *Y=!NRH+ICP+TOD 18026 AR>A, B(NRH), XOR, 18027 JUMP(WPN80); ----- ----- 616 00000CAF 00101810 ----- 18028 .ORG WPN80, *ROLLING HEADER, TIMED OUT DISPLAY OR INCOMPLETE PAGE? 18029 *P=1 18030 Y(1), 18031 Y>PR, 18032 JZ(WPN81F,WPN81T); ----- ----- CAF 00002618 80011000 ----- 18033 * 18034 .ORG WPN81F, *1ST COL=BOX 18035 Y(>0B), 18036 Y>DR, 18037 JUMP(PND0); ----- ----- 618 00001CB0 000B1000 ----- 18038 .ORG WPN81T, *1ST COL=' ' 18039 Y(>20), 18040 Y>DR, 18041 JUMP(PND0); ----- ----- 619 00001CB0 00201000 ----- 18042 *BOX NON PAGE DISPLAY (EG HOLD SYMBOL) 18043 .ORG WPN100, *P=1 18044 Y(1), 18045 Y>PR, 18046 JUMP(WPN101); ----- ----- CB5 00000CB1 80011000 ----- 18047 .ORG WPN101, *1ST COL=BOX 18048 Y(>0B), 18049 Y>DR, 18050 JUMP(PND80Y); ----- ----- CB1 00001070 000B1000 ----- 18051 *WRITE SPACES TO COLS 2 AND 5 18052 .ORG WPN110, *P=2 18053 Y(2), 18054 Y>PR, 18055 JUMP(WPN111); ----- ----- CA7 00000CB2 80021000 ----- 18056 .ORG WPN111, *2ND COL=' ' 18057 Y(>20), 18058 Y>DR, 18059 JUMP(WPN112); ----- ----- CB2 00001CB3 00201000 ----- 18060 .ORG WPN112, *P=5 18061 Y(5), 18062 Y>PR, 18063 JUMP(WPN113); ----- ----- CB3 00000CB4 80051000 ----- 18064 .ORG WPN113, *2ND COL=' ' 18065 Y(>20), 18066 Y>DR, 18067 JUMP(WPN100); ----- ----- CB4 00001CB5 00201000 ----- 18068 * 18069 .ORG PND0, *POINT TO PAGE NUMBER MAGS 18070 Y(2), 18071 Y>PR, 18072 JUMP(PND1); ----- ----- CB0 00000CB6 80021000 ----- 18073 .ORG PND1, *CALL PND10, AND PND50T TO WRITE MAIN PAGE NUMBER 18074 *WITH PRE-FIX 18075 *RETURN=0, RETURN TO PND70 18076 MA(RETURN), 18077 Y(0), 18078 Y>RAM, 18079 JUMP(PND10); ----- ----- CB6 00000AA9 7C001100 ----- 18080 * 18081 *+++WRITE MAIN PAGE NUMBER WITH PRE-FIX OR SUB-PAGE NUMBER WITH '/' 18082 * (skip pre-fix if called by out-of-cycle display, ie if RETURN=3) 18083 * 18084 * input pars are:- 18085 * P, RWL address of page number prefix or '/' 18086 * RETURN: return pointer 18087 * 18088 *ENTRY POINT FOR MAIN PAGE NUMBER 18089 *ENTRY POINT FROM PAGE OUT OF CYCLE DISPLAY (CMPE54) 18090 .ORG PND10, *A=STORE=0 (INIT DIGIT LOOP COUNT) 18091 MA(STORE), 18092 Y(0), 18093 Y>AR, Y>RAM, 18094 JUMP(PND20); ----- ----- AA9 00220CB7 77001100 ----- 18095 *ENTRY POINT FOR SUB-PAGE NUMBER 18096 .ORG PND15, *A=STORE=4 18097 MA(STORE), 18098 Y(4), 18099 Y>AR, Y>RAM, 18100 JUMP(PND20); ----- ----- AAC 00220CB7 77041100 ----- 18101 *WRITE NEXT DIGIT 18102 * P= POINTER TO DIGIT 18103 .ORG PND20, *Y=STORE 18104 *BR=DPM 18105 MA(DPM), RAM>BR, 18106 AR>A, B(>F), AND, 18107 JUMP(PND22); ----- ----- CB7 00010CB8 680F0810 ----- 18108 .ORG PND22, *CASE STORE=? 18109 *STORE++ 18110 MA(STORE), 18111 AR>A, B(1), ADD, 18112 Y>RAM, 18113 JY(PND30Y); ----- ----- CB8 0000C410 77010110 ----- 18114 *WRITE MAIN PAGE NUMBER 18115 .ORG PND30Y, *CASE OLD STORE=0 18116 *WRITE MAG 18117 *AR=DPM, Y=DPM 18118 MA(DPM), RAM>AR, 18119 A(0), BR.F0>B, OR, 18120 JUMP(PND30A); ----- ----- 410 00020CB9 68001003 ----- 18121 .ORG PND30A, *DPM=0? 18122 JZ(PND40F,PND30BT); ----- ----- CB9 0000261A 00000000 ----- 18123 .ORG PND30BT, *DPM=0, DISPLAY '8' 18124 *AR=>80 18125 Y(>80), 18126 Y>AR, 18127 JUMP(PND40F); ----- ----- 61B 0022061A 00801000 ----- 18128 .ORG PND31, *CASE OLD STORE=1 18129 *WRITE TENS 18130 *AR=DPT 18131 MA(DPT), RAM>AR, 18132 JUMP(PND40F); ----- ----- 411 0002061A 69000000 ----- 18133 .ORG PND32, *CASE OLD STORE=2 18134 *WRITE UNITS 18135 *AR=DPU 18136 MA(DPU), RAM>AR, 18137 JUMP(PND40F); ----- ----- 412 0002061A 6A000000 ----- 18138 .ORG PND33, *CASE OLD STORE=3 18139 *COMPLETED DISPLAYING A MAIN-PAGE NUMBER 18140 *A=RETURN 18141 MA(RETURN), RAM>AR, 18142 JUMP(PND33A); ----- ----- 413 00020CBA 7C000000 ----- 18143 .ORG PND33A, *Y=RETURN-3 18144 AR>A, B(-3), ADD, 18145 JUMP(PND33B); ----- ----- CBA 00000CBB 00FD0010 ----- 18146 .ORG PND33B, *CALLED BY OUT-OF-CYCLE DISPLAY? 18147 *IF YES, RETURN TO CMPE55T (DON'T WANT PREFIX) 18148 JZ(PND33CF,CMPE55T); ----- ----- CBB 0000261C 00000000 ----- 18149 .ORG PND33CF, *NO, CALL PND50T TO FIND PREFIX 18150 JUMP(PND50T); ----- ----- 61C 00000A3C 00000000 ----- 18151 *WRITE SUB-PAGE NUMBER 18152 .ORG PND34, *CASE OLD STORE=4 18153 *WRITE '/' AND THEN SUB-PAGE THOUS 18154 *A=USPM 18155 MA(USPM), RAM>AR, 18156 Y(>2F), 18157 Y>DR, 18158 JUMP(PND40F); ----- ----- 414 0002161A 5B2F1000 ----- 18159 .ORG PND35, *CASE OLD STORE=5 18160 *WRITE SUB-PAGE HUNDREDS 18161 *A=USPC 18162 MA(USPC), RAM>AR, 18163 JUMP(PND40F); ----- ----- 415 0002061A 5A000000 ----- 18164 .ORG PND36, *CASE OLD STORE=6 18165 *WRITE SUB-PAGE TENS 18166 *A=USPX 18167 MA(USPX), RAM>AR, 18168 JUMP(PND40F); ----- ----- 416 0002061A 59000000 ----- 18169 .ORG PND37, *CASE OLD STORE=7 18170 *WRITE SUB-PAGE UNITS 18171 *A=USPI 18172 MA(USPI), RAM>AR, 18173 JUMP(PND40F); ----- ----- 417 0002061A 58000000 ----- 18174 .ORG PND38, *CASE OLD STORE=8 18175 *SUB-PAGE COMPLETED 18176 *POINT TO START POINT FOR DASHES 18177 *A=DHREG 18178 MA(DHREG), RAM>AR, 18179 Y(-53), 18180 Y>PR, 18181 JUMP(GAP340); ----- ----- 418 00020CBC B2CB1000 ----- 18182 *COMMON DIGIT WRITE CODE 18183 .ORG PND40F, *PUT DPx OR USPx IN A LOW NIB 18184 ARHI>A, B(0), OR, 18185 Y>AR, 18186 JUMP(PND40A); ----- ----- 61A 00220CBD 00001020 ----- 18187 .ORG PND40A, *Y=AR-10 18188 PR>BR, 18189 AR.0F>A, B(-10), ADD, 18190 JUMP(PND41); ----- ----- CBD 00410CBE 00F600C0 ----- 18191 .ORG PND41, *HEX PAGE NUMBER? 18192 *INCREMENT POINTER 18193 A(1), BR>B, ADD, 18194 Y>PR, 18195 JN(PND42F,PND42T); ----- ----- CBE 0000461E 80010001 ----- 18196 .ORG PND42T, *WRITE DECIMAL PAGE NUMBER 18197 *AR=STORE 18198 MA(STORE), RAM>AR, 18199 AR.0F>A, B(>30), ADD, 18200 Y>DR, 18201 JUMP(PND20); ----- ----- 61F 00021CB7 773000C0 ----- 18202 .ORG PND42F, *WRITE HEX PAGE NUMBER 18203 *FINISHED SUB-PAGE? 18204 *AR=STORE 18205 MA(STORE), RAM>AR, 18206 AR.0F>A, B(>37), ADD, 18207 Y>DR, 18208 JUMP(PND20); ----- ----- 61E 00021CB7 773700C0 ----- 18209 * 18210 *+++CALCULATE AND DISPLAY PREFIX LETTER 18211 * This routine works out the page prefix character according to 18212 * to the langugue bits 18213 * 18214 * input pars are:- 18215 * RETURN:- return pointer 18216 * return pars are:- 18217 * A: the page prefix letter 18218 * 18219 * TCJ April 94, 209 mods. 18220 * 18221 * JUMP(PND50A); 18222 *.ORG PND50A, *MASK FLM AND SERIAL FLAG IN VDP2 COPY IN AR 18223 * AR>A, B(%00111110), AND, 18224 * Y>AR, 18225 * JUMP(PND51); 18226 *.ORG PND51, *Y=CBITS XOR GERMAN 18227 * AR.0F>A, B(>08), XOR, 18228 * JUMP(PND52); 18229 *.ORG PND52, *Y=CBITS XOR CZECH/TURKISH 18230 * *GERMAN? 18231 * *BR=MREG1 18232 * MA(MREG1), RAM>BR, 18233 * AR.0F>A, B(>06), XOR, 18234 * JZ(PND53F,PND53T); 18235 *.ORG PND53T, *GERMAN, PREFIX IS 'S' 18236 * *AR='S' 18237 * Y(>53), 18238 * Y>AR, 18239 * JUMP(PND56F); 18240 *.ORG PND53F, *Y=CBITS XOR SWE/FIN/HUNG 18241 * *CZECH/TURKISH? 18242 * AR.0F>A, B(>04), XOR, 18243 * JZ(PND54F,PND54T); 18244 *.ORG PND54T, *CZECH/TURKISH, PREFIX IS 'S' 18245 * *AR='S' 18246 * Y(>53), 18247 * Y>AR, 18248 * JUMP(PND56F); 18249 *.ORG PND54F, *Y=VDP2 XOR POLISH 18250 * *SWE/FIN/HUNG? 18251 * AR>A, B(>10), XOR, 18252 * JZ(PND55F,PND55T); 18253 *.ORG PND55T, *SWE/FIN/HUNG, PREFIX IS 'S' 18254 * *AR='S' 18255 * Y(>53), 18256 * Y>AR, 18257 * JUMP(PND56F); 18258 *.ORG PND55F, *Y=VDP2 XOR SERBO-CROAT 18259 * *POLISH? 18260 * AR>A, B(>1A), XOR, 18261 * JZ(PND55AF,PND55AT); 18262 *.ORG PND55AT, *POLISH, PREFIX IS 'S' 18263 * *AR='S' 18264 * Y(>53), 18265 * Y>AR, 18266 * JUMP(PND56F); 18267 *.ORG PND55AF, *SERBO-CROAT? 18268 * *ELSE PREFIX IS 'P' 18269 * Y(>50), 18270 * Y>AR, 18271 * JZ(PND56F,PND56T); 18272 *.ORG PND56T, *SERBO-CROAT, PREFIX IS 'S' 18273 * *AR='S' 18274 * Y(>53), 18275 * Y>AR, 18276 * JUMP(PND56F); 18277 * 18278 * TCJ August 94, 211 Mods 18279 * Prefix generation changed for the 211 18280 * 18281 .ORG PND50T, *AR=VDP2 18282 MA(VDP2), RAM>AR, 18283 JUMP(PND51A); ----- ----- A3C 00020CBF 02000000 ----- 18284 * 18285 .ORG PND51A, 18286 AR>A, B(ILANG), 18287 AND, 18288 JUMP(PND51B); ----- ----- CBF 00000CC0 00010810 ----- 18289 * 18290 .ORG PND51B, 18291 ARHI>A, B(>03), AND, 18292 JZ(PND52F,PND52T); ----- ----- CC0 00002624 00030820 ----- 18293 * 18294 .ORG PND52F, 18295 Y(>53), Y>AR, 18296 JUMP(PND56F); ----- ----- 624 00220CC1 00531000 ----- 18297 * 18298 .ORG PND52T, 18299 AR>>1>A, B(>07), AND, 18300 JY(PND53.0); ----- ----- 625 0000C100 000708E0 ----- 18301 * 18302 .ORG PND53.0, * Language group %00 18303 JY(PND54A.0); ----- ----- 100 0000C110 00000000 ----- 18304 * 18305 .ORG PND54A.0, * LG == 0, C == 0, ENGLISH 18306 Y(>50), Y>AR, 18307 JUMP(PND56F); ----- ----- 110 00220CC1 00501000 ----- 18308 * 18309 .ORG PND54A.1, * LG == 0, C == 1, FRENCH 18310 Y(>50), Y>AR, 18311 JUMP(PND56F); ----- ----- 111 00220CC1 00501000 ----- 18312 * 18313 .ORG PND54A.2, * LG == 0, C == 2, SWEDISH 18314 Y(>53), Y>AR, 18315 JUMP(PND56F); ----- ----- 112 00220CC1 00531000 ----- 18316 * 18317 .ORG PND54A.3, * LG == 0, C == 3, CZECH / SLOVAKIAN 18318 Y(>53), Y>AR, 18319 JUMP(PND56F); ----- ----- 113 00220CC1 00531000 ----- 18320 * 18321 .ORG PND54A.4, * LG == 0, C == 4, GERMAN 18322 Y(>53), Y>AR, 18323 JUMP(PND56F); ----- ----- 114 00220CC1 00531000 ----- 18324 * 18325 .ORG PND54A.5, * LG == 0, C == 5, ENGLISH 18326 Y(>50), Y>AR, 18327 JUMP(PND56F); ----- ----- 115 00220CC1 00501000 ----- 18328 * 18329 .ORG PND54A.6, * LG == 0, C == 6, ITALIAN 18330 Y(>50), Y>AR, 18331 JUMP(PND56F); ----- ----- 116 00220CC1 00501000 ----- 18332 * 18333 .ORG PND54A.7, * LG == 0, C == 7, GREEK 18334 Y(>53), Y>AR, 18335 JUMP(PND56F); ----- ----- 117 00220CC1 00531000 ----- 18336 * 18337 .ORG PND53.1, * Language group %01 18338 JY(PND54B.0); ----- ----- 101 0000C120 00000000 ----- 18339 * 18340 .ORG PND54B.0, * LG == 1, C == 0, ENGLISH 18341 Y(>50), Y>AR, 18342 JUMP(PND56F); ----- ----- 120 00220CC1 00501000 ----- 18343 * 18344 .ORG PND54B.1, * LG == 1, C == 1, FRENCH 18345 Y(>50), Y>AR, 18346 JUMP(PND56F); ----- ----- 121 00220CC1 00501000 ----- 18347 * 18348 .ORG PND54B.2, * LG == 1, C == 2, SWEDISH 18349 Y(>53), Y>AR, 18350 JUMP(PND56F); ----- ----- 122 00220CC1 00531000 ----- 18351 * 18352 .ORG PND54B.3, * LG == 1, C == 3, CZECH / SLOVAKIAN 18353 Y(>53), Y>AR, 18354 JUMP(PND56F); ----- ----- 123 00220CC1 00531000 ----- 18355 * 18356 .ORG PND54B.4, * LG == 1, C == 4, GERMAN 18357 Y(>53), Y>AR, 18358 JUMP(PND56F); ----- ----- 124 00220CC1 00531000 ----- 18359 * 18360 .ORG PND54B.5, * LG == 1, C == 5, SERBO-CROAT 18361 Y(>53), Y>AR, 18362 JUMP(PND56F); ----- ----- 125 00220CC1 00531000 ----- 18363 * 18364 .ORG PND54B.6, * LG == 1, C == 6, ITALIAN 18365 Y(>50), Y>AR, 18366 JUMP(PND56F); ----- ----- 126 00220CC1 00501000 ----- 18367 * 18368 .ORG PND54B.7, * LG == 1, C == 7, RUMANIAN 18369 Y(>50), Y>AR, 18370 JUMP(PND56F); ----- ----- 127 00220CC1 00501000 ----- 18371 * 18372 .ORG PND53.2, * Language group %10 18373 JY(PND54C.0); ----- ----- 102 0000C130 00000000 ----- 18374 * 18375 .ORG PND54C.0, * LG == 2, C == 0, ENGLISH 18376 Y(>50), Y>AR, 18377 JUMP(PND56F); ----- ----- 130 00220CC1 00501000 ----- 18378 * 18379 .ORG PND54C.1, * LG == 2, C == 1, FRENCH 18380 Y(>53), Y>AR, 18381 JUMP(PND56F); ----- ----- 131 00220CC1 00531000 ----- 18382 * 18383 .ORG PND54C.2, * LG == 2, C == 2, SWEDISH 18384 Y(>53), Y>AR, 18385 JUMP(PND56F); ----- ----- 132 00220CC1 00531000 ----- 18386 * 18387 .ORG PND54C.3, * LG == 2, C == 3, TURKISH 18388 Y(>53), Y>AR, 18389 JUMP(PND56F); ----- ----- 133 00220CC1 00531000 ----- 18390 * 18391 .ORG PND54C.4, * LG == 2, C == 4, GERMAN 18392 Y(>53), Y>AR, 18393 JUMP(PND56F); ----- ----- 134 00220CC1 00531000 ----- 18394 * 18395 .ORG PND54C.5, * LG == 2, C == 5, ENGLISH 18396 Y(>50), Y>AR, 18397 JUMP(PND56F); ----- ----- 135 00220CC1 00501000 ----- 18398 * 18399 .ORG PND54C.6, * LG == 2, C == 6, ITALIAN 18400 Y(>50), Y>AR, 18401 JUMP(PND56F); ----- ----- 136 00220CC1 00501000 ----- 18402 * 18403 .ORG PND54C.7, * LG == 2, C == 7, GREEK 18404 Y(>53), Y>AR, 18405 JUMP(PND56F); ----- ----- 137 00220CC1 00531000 ----- 18406 * 18407 .ORG PND53.3, * Language group %11 18408 JY(PND54D.0); ----- ----- 103 0000C140 00000000 ----- 18409 * 18410 .ORG PND54D.0, * LG == 3, C == 0, ENGLISH 18411 Y(>50), Y>AR, 18412 JUMP(PND56F); ----- ----- 140 00220CC1 00501000 ----- 18413 * 18414 .ORG PND54D.1, * LG == 3, C == 1, FRENCH 18415 Y(>53), Y>AR, 18416 JUMP(PND56F); ----- ----- 141 00220CC1 00531000 ----- 18417 * 18418 .ORG PND54D.2, * LG == 3, C == 2, SWEDISH 18419 Y(>53), Y>AR, 18420 JUMP(PND56F); ----- ----- 142 00220CC1 00531000 ----- 18421 * 18422 .ORG PND54D.3, * LG == 3, C == 3, CZECH / SLOVAKIAN 18423 Y(>53), Y>AR, 18424 JUMP(PND56F); ----- ----- 143 00220CC1 00531000 ----- 18425 * 18426 .ORG PND54D.4, * LG == 3, C == 4, GERMAN 18427 Y(>53), Y>AR, 18428 JUMP(PND56F); ----- ----- 144 00220CC1 00531000 ----- 18429 * 18430 .ORG PND54D.5, * LG == 3, C == 5, ENGLISH 18431 Y(>50), Y>AR, 18432 JUMP(PND56F); ----- ----- 145 00220CC1 00501000 ----- 18433 * 18434 .ORG PND54D.6, * LG == 3, C == 6, ITALIAN 18435 Y(>50), Y>AR, 18436 JUMP(PND56F); ----- ----- 146 00220CC1 00501000 ----- 18437 * 18438 .ORG PND54D.7, * LG == 3, C == 7, GREEK 18439 Y(>53), Y>AR, 18440 JUMP(PND56F); ----- ----- 147 00220CC1 00531000 ----- 18441 * 18442 *AR=PREFIX CHARACTER, BR=MREG1 18443 .ORG PND56F, *Y=FPPP, B=RETURN 18444 MA(RETURN), RAM>BR, 18445 A(FPPP), BR>B, AND, 18446 JUMP(PND61); ----- ----- CC1 00010CC2 7C080801 ----- 18447 .ORG PND61, *Y=RETURN 18448 *PAGE PRE-FIX FORCED TO 'P' ? 18449 A(3), BR>B, AND, 18450 JZ(PND61AF,PND61AT); ----- ----- CC2 00002626 00030801 ----- 18451 .ORG PND61AF, *SET A TO 'P' CASE RETURN=? 18452 Y(>50), 18453 Y>AR, 18454 JY(PND62Y); ----- ----- 626 0022C050 00501000 ----- 18455 .ORG PND61AT, *CASE RETURN=? 18456 JY(PND62Y); ----- ----- 627 0000C050 00000000 ----- 18457 * 18458 .ORG PND62Y, *POINT TO PREFIX LETTER 18459 Y(2), 18460 Y>PR, 18461 JUMP(PND63); ----- ----- 050 00000CC3 80021000 ----- 18462 .ORG PND63, *WRITE PAGE PREFIX CHARACTER 18463 *A=DHREG 18464 MA(DHREG), RAM>AR, 18465 AR>A, B(0), OR, 18466 Y>DR, 18467 JUMP(PND70); ----- ----- CC3 00021CC4 32001010 ----- 18468 *WRITE DASHES 18469 * A=DHREG 18470 .ORG PND70, *INVERT POOCD 18471 AR>A, B(POOCD), XOR, 18472 Y>AR, 18473 JUMP(PND70A); ----- ----- CC4 00220CC5 00201810 ----- 18474 .ORG PND70A, *Y=!POOCD+NRH 18475 *A=PEN 18476 MA(PEN), RAM>AR, 18477 AR>A, B(POOCD+NRH), AND, 18478 JUMP(PND70B); ----- ----- CC5 00020CC6 1B300810 ----- 18479 .ORG PND70B, *IS THERE A OOC DISPLAY? 18480 *Y=PEN-4 18481 ARHI>A, B(-4), ADD, 18482 JZ(PND71F,PND71T); ----- ----- CC6 00002628 00FC0020 ----- 18483 .ORG PND71F, *SUB-PAGE MODE? 18484 *MASK OFF TWO LSBS OF PEN TO GIVE NUMBER OF DASHES 18485 ARHI>A, B(3), AND, 18486 Y>AR, 18487 JN(PND71AF,PND71AT); ----- ----- 628 0022462A 00030820 ----- 18488 .ORG PND71T, *OOC DISPLAY, NEED THREE DASHES 18489 *A=3 18490 Y(3), 18491 Y>AR, 18492 JUMP(PND71AT); ----- ----- 629 0022062B 00031000 ----- 18493 .ORG PND71AF, *SUB-PAGE MODE, NO DASHES 18494 Y(0), 18495 Y>AR, 18496 JUMP(PND71AT); ----- ----- 62A 0022062B 00001000 ----- 18497 * A=NUMBER OF DASHES, RETURN=0 18498 .ORG PND71AT, *PR=6, POINT TO LOCATION AFTER LAST DASH 18499 *CALL PND72 TO WRITE DASHES 18500 *RETURN=0, RETURN TO PND80Y 18501 Y(6), 18502 Y>PR, 18503 JUMP(PND72); ----- ----- 62B 00000AAE 80061000 ----- 18504 * 18505 *+++WRITE DASHES ROUTINE 18506 * 18507 * input pars are:- 18508 * P: location after last dash 18509 * A: number of dashes 18510 * RETURN: return pointer 18511 * 18512 .ORG PND72, *DEC DASH COUNT 18513 *BR=PR 18514 *AR=AR-1 18515 PR>BR, 18516 AR>A, B(-1), ADD, 18517 Y>AR, 18518 JUMP(PND73); ----- ----- AAE 00630CC7 00FF0010 ----- 18519 .ORG PND73, *POINT TO NEXT DASH, MORE DASHES? 18520 *PR=BR-1 18521 *BR=RETURN 18522 MA(RETURN), RAM>BR, 18523 A(-1), BR>B, ADD, 18524 Y>PR, 18525 JN(PND74F,PND74T); ----- ----- CC7 0001462C FCFF0001 ----- 18526 .ORG PND74F, *WRITE A DASH 18527 Y(>2D), 18528 Y>DR, 18529 JUMP(PND72); ----- ----- 62C 00001AAE 002D1000 ----- 18530 * 18531 .ORG PND74T, *Y=RETURN 18532 A(1), BR>B, AND, 18533 JUMP(PND76); ----- ----- 62D 00000CC8 00010801 ----- 18534 .ORG PND76, *CASE RETURN 18535 JY(PND80Y); ----- ----- CC8 0000C070 00000000 ----- 18536 * 18537 .ORG PND80Y, *COMMON EXIT FROM PND 18538 JUMP(VPP600T); ----- ----- 070 0000033D 00000000 ----- 18539 * 18540 *+++SET PLL REGISTERS 18541 * 18542 * This routine updates PLLRG1-3 according to UPLL, whether the 18543 * decoder is in picture, mix/box or text (as indicated by VDP1) 18544 * and whether the quality algorithm is indicating a good or bad 18545 * signal. The new PLLRG1 is worked out in A, PLLRG1 is updated 18546 * at the end of the routine 18547 * 18548 * B=UPLL 18549 .ORG SPLL0, *PUT NEW R24T, HPOS, UEL, SIX24, ILCE IN A 18550 *CLEAR MUTE, INSYNC, LOCK 18551 *B=VDP1 18552 MA(VDP1), RAM>BR, 18553 A(R24T+HPOS+UEL+SIX24+ILCE), BR>B, AND, 18554 Y>AR, 18555 JUMP(SPLL1); ----- ----- 352 00230CC9 016D0801 ----- 18556 .ORG SPLL1, *Y=TEXT 18557 A(TEXT), BR>B, AND, 18558 JUMP(SPLL2); ----- ----- CC9 00000CCA 00010801 ----- 18559 .ORG SPLL2, *Y=MIX+BOX 18560 *TEXT=0? 18561 A(MIX+BOX), BR>B, AND, 18562 JZ(SPLL3F,SPLL3T); ----- ----- CCA 0000262E 00060801 ----- 18563 .ORG SPLL3F, *TEXT=1, MIX OR BOX? 18564 JZ(SPLL4F,SPLL4T); ----- ----- 62E 00002634 00000000 ----- 18565 .ORG SPLL3T, *PICTURE MODE 18566 JUMP(SPLL4F); ----- ----- 62F 00000634 00000000 ----- 18567 .ORG SPLL4T, *TEXT MODE 18568 *INSYNC=1 18569 *B=STSWD0 18570 MA(STSWD0), RAM>BR, 18571 AR>A, B(INSYNC), OR, 18572 Y>AR, 18573 JUMP(SPLL10); ----- ----- 635 00230CCB 64101010 ----- 18574 .ORG SPLL4F, *NOT TEXT MODE 18575 *SET INTERLACE MODE 18576 AR>A, B(ILCE), OR, 18577 Y>AR, 18578 JUMP(SPLL5); ----- ----- 634 00220CCC 00011010 ----- 18579 .ORG SPLL5, *SIX24=0 18580 *B=STSWD0 18581 MA(STSWD0), RAM>BR, 18582 AR>A, B(>FF-SIX24), AND, 18583 Y>AR, 18584 JUMP(SPLL10); ----- ----- CCC 00230CCB 64FB0810 ----- 18585 * 18586 .ORG SPLL10, *Y=BADFLG 18587 A(BADFLG), BR>B, AND, 18588 JUMP(SPLL11); ----- ----- CCB 00000CCD 00100801 ----- 18589 .ORG SPLL11, *QUALITY? 18590 *B=VDP1 18591 MA(VDP1), RAM>BR, 18592 JZ(SPLL20F,SPLL20T); ----- ----- CCD 00012636 01000000 ----- 18593 *BAD QUALITY 18594 .ORG SPLL20F, *Y=BOX+MIX 18595 *B=UPLL 18596 MA(UPLL), RAM>BR, 18597 A(BOX+MIX), BR>B, AND, 18598 JUMP(SPLL21); ----- ----- 636 00010CCE 6F060801 ----- 18599 .ORG SPLL21, *Y=ISYNC 18600 *IN BOX OR MIX MODE? 18601 A(ISYNC), BR>B, AND, 18602 JZ(SPLL22F,SPLL22T); ----- ----- CCE 00002638 00020801 ----- 18603 .ORG SPLL22F, *IN BOX OR MIX 18604 *ISYNC? 18605 JZ(SPLL22AF,SPLL22AT); ----- ----- 638 0000263A 00000000 ----- 18606 .ORG SPLL22AF, *BOX/MIX, BAD AND ISYNC 18607 *INSYNC=1 18608 AR>A, B(INSYNC), OR, 18609 Y>AR, 18610 JUMP(SPLL22T); ----- ----- 63A 00220639 00101010 ----- 18611 .ORG SPLL22AT, *NOT BOX/MIX, BAD AND ISYNC 18612 JUMP(SPLL22T); ----- ----- 63B 00000639 00000000 ----- 18613 * 18614 .ORG SPLL22T, *B=MREG1 18615 MA(MREG1), RAM>BR, 18616 JUMP(SPLL22A); ----- ----- 639 00010CCF 65000000 ----- 18617 .ORG SPLL22A, *Y=IFRUN 18618 A(IFRUN), BR>B, AND, 18619 JUMP(SPLL22B); ----- ----- CCF 00000CD0 00800801 ----- 18620 .ORG SPLL22B, *Y=SIX24 18621 *INHIBIT FREE-RUN? 18622 AR>A, B(SIX24), AND, 18623 JZ(SPLL22CF,SPLL22CT); ----- ----- CD0 0000263C 00040810 ----- 18624 .ORG SPLL22CF, *SIX24? 18625 *MUTE=1 18626 *JUMP TO GOOD CODE TO SET LOCK AND UPDATE PLL COEFFS 18627 *B=PLLRG2 18628 MA(PLLRG2), RAM>BR, 18629 AR>A, B(MUTE), OR, 18630 Y>AR, 18631 JZ(SPLL31F,SPLL31T); ----- ----- 63C 0023263E 0D801010 ----- 18632 *GO TO FREE RUN 18633 .ORG SPLL22CT, *MUTE=1 18634 AR>A, B(MUTE), OR, 18635 Y>AR, 18636 JUMP(SPLL23); ----- ----- 63D 00220CD1 00801010 ----- 18637 .ORG SPLL23, *SET FINE COEFFS FOR FREE-RUN 18638 MA(PLLRG2), 18639 Y(>2D), 18640 Y>IO, 18641 JUMP(SPLL24); ----- ----- CD1 00000CD2 0D2D5000 ----- 18642 .ORG SPLL24, *SET COURSE COEFFS FOR FREE-RUN 18643 MA(PLLRG3), 18644 Y(>2D), 18645 Y>IO, 18646 JUMP(SPLL40); ----- ----- CD2 00000CD3 0E2D5000 ----- 18647 *GOOD QUALITY 18648 .ORG SPLL20T, *Y=SIX24 18649 AR>A, B(SIX24), AND, 18650 JUMP(SPLL30); ----- ----- 637 00000CD4 00040810 ----- 18651 .ORG SPLL30, *MUTE=0 18652 *IN SIX24 MODE? 18653 *B=PLLRG2 18654 MA(PLLRG2), RAM>BR, 18655 AR>A, B(>FF-MUTE), AND, 18656 Y>AR, 18657 JZ(SPLL31F,SPLL31T); ----- ----- CD4 0023263E 0D7F0810 ----- 18658 *ENTRY FROM BAD CODE IF FREE-RUN INHIBITED AND SIX24=0 18659 .ORG SPLL31T, *NOT SIX24 MODE, TRY TO LOCK 18660 AR>A, B(LOCK), OR, 18661 Y>AR, 18662 JUMP(SPLL31F); ----- ----- 63F 0022063E 00021010 ----- 18663 *ENTRY FROM BAD CODE IF FREE-RUN INHIBITED AND SIX24=1 18664 .ORG SPLL31F, *LOAD FINE COEFFS 18665 MA(PLLRG2), 18666 A(0), BR>B, OR, 18667 Y>IO, 18668 JUMP(SPLL32); ----- ----- 63E 00000CD5 0D005001 ----- 18669 .ORG SPLL32, *B=PLLRG3 18670 MA(PLLRG3), RAM>BR, 18671 JUMP(SPLL33); ----- ----- CD5 00010CD6 0E000000 ----- 18672 .ORG SPLL33, *LOAD COURSE COEFFS 18673 MA(PLLRG3), 18674 A(0), BR>B, OR, 18675 Y>IO, 18676 JUMP(SPLL40); ----- ----- CD6 00000CD3 0E005001 ----- 18677 * 18678 .ORG SPLL40, *B=UPLL 18679 MA(UPLL), RAM>BR, 18680 JUMP(SPLL50); ----- ----- CD3 00010CD7 6F000000 ----- 18681 .ORG SPLL50, *Y=FSYNC 18682 A(FSYNC), BR>B, AND, 18683 JUMP(SPLL51); ----- ----- CD7 00000CD8 00100801 ----- 18684 .ORG SPLL51, *Y=ISYNC, FSYNC? 18685 A(ISYNC), BR>B, AND, 18686 JZ(SPLL52F,SPLL52T); ----- ----- CD8 00002640 00020801 ----- 18687 .ORG SPLL52F, *FSYNC, ISYNC? 18688 JZ(SPLL53F,SPLL53T); ----- ----- 640 00002642 00000000 ----- 18689 .ORG SPLL53F, *FSYNC=1, ISYNC=1 18690 *INSYNC=1 18691 AR>A, B(INSYNC), OR, 18692 Y>AR, 18693 JUMP(SPLL52T); ----- ----- 642 00220641 00101010 ----- 18694 .ORG SPLL53T, *FSYNC=1, ISYNC=0 18695 *INSYNC=0 18696 AR>A, B(>FF-INSYNC), AND, 18697 Y>AR, 18698 JUMP(SPLL52T); ----- ----- 643 00220641 00EF0810 ----- 18699 * WORKING OUT NEW PLLRG1 IN A, B=UPLL 18700 .ORG SPLL52T, *Y=INSYNC 18701 AR>A, B(INSYNC), AND, 18702 JUMP(SPLL54); ----- ----- 641 00000CD9 00100810 ----- 18703 .ORG SPLL54, *Y=MUTEM, INSYNC? 18704 *B=STSWD0 18705 MA(STSWD0), RAM>BR, 18706 A(MUTEM), BR>B, AND, 18707 JZ(SPLL55F,SPLL55T); ----- ----- CD9 00012644 64800801 ----- 18708 *INSYNC=0 18709 .ORG SPLL55T, *EXTERNAL SYNC, POFF=0 18710 *MUTEM? 18711 MA(STSWD0), 18712 A(>FF-POFF), BR>B, AND, 18713 Y>RAM, 18714 JZ(SPLL56F,SPLL56T); ----- ----- 645 00002646 64BF0901 ----- 18715 .ORG SPLL56F, *MUTEM=1 18716 JUMP(SPLL60); ----- ----- 646 00000CDA 00000000 ----- 18717 .ORG SPLL56T, *MUTEM=0, ONLY SET MUTE IF INTERNAL SYNC 18718 *MUTE=0 18719 AR>A, B(>FF-MUTE), AND, 18720 Y>AR, 18721 JUMP(SPLL60); ----- ----- 647 00220CDA 007F0810 ----- 18722 *INSYNC=1 18723 .ORG SPLL55F, *INTERNAL SYNC, POFF=1 18724 MA(STSWD0), 18725 A(POFF), BR>B, OR, 18726 Y>RAM, 18727 JUMP(SPLL60); ----- ----- 644 00000CDA 64401101 ----- 18728 * 18729 * TCJ June 93 18730 * Option in MODE2 added to invert MUTE signal 18731 * 18732 .ORG SPLL60, *R24B=!R24T 18733 MA(MREG2), RAM>AR, 18734 AR>A, B(R24T), XOR, 18735 Y>PR, 18736 JUMP(TCJSPLL61); ----- ----- CDA 00020CDB EE401810 ----- 18737 * 18738 .ORG TCJSPLL61, *BR=new PLLRG1 value 18739 *AR=MREG2 & XMUTE 18740 AR>A, B(XMUTE), AND, 18741 Y>AR, PR>BR, 18742 JUMP(TCJSPLL62); ----- ----- CDB 00630CDC 00800810 ----- 18743 * 18744 .ORG TCJSPLL62, *UPDATE PLLRG1 18745 MA(PLLRG1), 18746 AR>A, BR>B, XOR, 18747 Y>IO, Y>RAM, 18748 JUMP(VPP703F); ----- ----- CDC 00000353 0C005911 ----- 18749 * 18750 ***WAIT: WAIT FOR BYTES 18751 * AR= number of bytes, RETURN= pointer to return address 18752 .ORG WAIT0F, *BYTE READY? 18753 MA(RETURN), RAM>BR, 18754 JBYTE(WAIT1F,WAIT1T); ----- ----- 64E 0001864C 7C000000 ----- 18755 .ORG WAIT1F, *LINE READY? 18756 JLINE(WAIT0F,WAIT0T); ----- ----- 64C 0000664E 00000000 ----- 18757 .ORG WAIT0T, *LINE READY, ERROR 18758 CBRDY, 18759 JUMP(PL0); ----- ----- 64F 00000777 00002000 ----- 18760 .ORG WAIT1T, *AR=AR-1 2ND 18761 CBRDY, 18762 AR>A, B(-1), ADD, 18763 Y>AR, 18764 JUMP(WAIT2); ----- ----- 64D 00220CDD 00FF2010 ----- 18765 .ORG WAIT2, *Y=RETURN, LAST BYTE? 3RD 18766 A(0), BR>B, OR, 18767 JZ(WAIT3F,WAIT3T); ----- ----- CDD 00002650 00001001 ----- 18768 .ORG WAIT3F, *ANOTHER BYTE 18769 JBYTE(WAIT1F,WAIT1T); ----- ----- 650 0000864C 00000000 ----- 18770 .ORG WAIT3T, *LAST BYTE, CASE RETURN 4TH 18771 *Y=HAM 18772 A(0), HAM>B, OR, 18773 JY(CGB5Y); ----- ----- 651 0008C030 00001007 ----- 18774 * 18775 *+++POINT TO TELETEXT PAGE MEMORY 18776 * This routine updates the RWL and PR according to page memory 18777 * address stored in ROWPTR and COLPTR and increments the address. 18778 * 18779 * input pars are:- 18780 * B: ROWPTR (row and latch) 18781 * COLPTR: column pointer 18782 * return pars are:- 18783 * TPD: page data pointed to by ROWPTR and 18784 * COLPTR 18785 * ROWPTR,COLPTR: new pointer after increment 18786 * A: old row 18787 * B: old col 18788 * local variables used are:- 18789 * TEST, RET2 18790 * 18791 .ORG POINT0F, *AR=ROW 18792 *TEST=OLD ROW 18793 MA(TEST), 18794 A(%00011111), BR>B, AND, 18795 Y>AR, Y>RAM, 18796 JUMP(POINT1); ----- ----- AF3 00220CDE 701F0901 ----- 18797 .ORG POINT1, *PR=ROW*40 18798 *A=COLPTR 18799 MA(COLPTR), RAM>AR, 18800 AR<<3>A, AR<<5>B, ADD, 18801 Y>PR, 18802 JUMP(POINT2); ----- ----- CDE 00020CDF B1000059 ----- 18803 .ORG POINT2, *BR=PR 18804 *RET2=OLD COLPTR 18805 PR>BR, 18806 MA(RET2), 18807 AR>A, B(0), OR, 18808 Y>RAM, 18809 JUMP(POINT3); ----- ----- CDF 00410CE0 7B001110 ----- 18810 .ORG POINT3, *PR=AR+BR 18811 *AR=ROWPTR 18812 MA(ROWPTR), RAM>AR, 18813 AR>A, BR>B, ADD, 18814 Y>PR, 18815 JUMP(POINT4); ----- ----- CE0 00020CE1 B0000011 ----- 18816 .ORG POINT4, *AR=LCH*2 18817 *BR=COLPTR 18818 MA(COLPTR), RAM>BR, 18819 ARHI>A, B(0), ADD, 18820 Y>AR, 18821 JUMP(POINT5); ----- ----- CE1 00230CE2 31000020 ----- 18822 .ORG POINT5, *RWL=LCH 18823 MA(RWL), 18824 AR>>1>A, B(7), AND, 18825 Y>RAM, Y>IO, 18826 JUMP(POINT6); ----- ----- CE2 00000CE3 0B0749E0 ----- 18827 .ORG POINT6, *Y=COLPTR-39 18828 *AR=ROWPTR 18829 MA(ROWPTR), RAM>AR, 18830 A(-39), BR>B, ADD, 18831 JUMP(POINT7); ----- ----- CE3 00020CE4 30D90001 ----- 18832 .ORG POINT7, *COLPTR=0 18833 MA(COLPTR), 18834 A(0), B(0), AND, 18835 Y>RAM, 18836 JZ(POINT8F,POINT8T); ----- ----- CE4 00002652 31000900 ----- 18837 .ORG POINT8F, *INC COLPTR 18838 MA(COLPTR), 18839 A(1), BR>B, ADD, 18840 Y>RAM, 18841 JUMP(POINT9); ----- ----- 652 00000CE5 31010101 ----- 18842 .ORG POINT8T, *INC ROW 18843 MA(ROWPTR), 18844 AR>A, B(1), ADD, 18845 Y>RAM, 18846 JUMP(POINT9); ----- ----- 653 00000CE5 30010110 ----- 18847 .ORG POINT9, *AR=RETURN 18848 MA(RETURN), RAM>AR, 18849 JUMP(POINT10); ----- ----- CE5 00020CE6 7C000000 ----- 18850 .ORG POINT10, *Y=RETURN 18851 *B=OLD COL 18852 MA(RET2), RAM>BR, 18853 AR>A, B(1), AND, 18854 JUMP(POINT11); ----- ----- CE6 00010CE7 7B010810 ----- 18855 .ORG POINT11, *CASE RETURN=? 18856 *RVDP IS FOR RC60A 18857 *A=OLD ROW 18858 RVDP, 18859 MA(TEST), RAM>AR, 18860 JY(RC40Y); ----- ----- CE7 0002C0C0 70008000 ----- 18861 * 18862 *+++CLEAR SCREEN ROUTINES 18863 * RET4=RETURN POINTER 18864 *+++CLEAR ROWS 1-24 AND PAGE RELATED DATA IN RWL 18865 .ORG CSCNA, *P=-8 18866 Y(-8), 18867 Y>PR, 18868 JUMP(CSCNA1); ----- ----- C39 00000CE8 80F81000 ----- 18869 *ENTRY FROM CSCNC 18870 .ORG CSCNA1, *A=0 18871 Y(0), 18872 Y>AR, 18873 JUMP(CSCN3F); ----- ----- CE8 00220654 00001000 ----- 18874 *+++CLEAR ROW24 OF RWL 18875 .ORG CSCNB, *P=-25 18876 Y(-25), 18877 Y>PR, 18878 JUMP(CSCNB1); ----- ----- C18 00000CE9 80E71000 ----- 18879 .ORG CSCNB1, *A=-64 18880 Y(-64), 18881 Y>AR, 18882 JUMP(CSCN3F); ----- ----- CE9 00220654 00C01000 ----- 18883 *+++CLEAR ROWS 1-23 OF RWL 18884 .ORG CSCNC, *P=-65 18885 Y(-65), 18886 Y>PR, 18887 JUMP(CSCNA1); ----- ----- D0C 00000CE8 80BF1000 ----- 18888 *+++CLEAR PAGE RELATED DATA IN RWL 18889 .ORG CSCND, *P=-8 18890 Y(-8), 18891 Y>PR, 18892 JUMP(CSCND1); ----- ----- D0D 00000CEA 80F81000 ----- 18893 .ORG CSCND1, *A=-24 18894 Y(-24), 18895 Y>AR, 18896 JUMP(CSCN3F); ----- ----- CEA 00220654 00E81000 ----- 18897 *+++CLEAR MEM FROM PR TO AR INCLUSIVE IN RWL 18898 .ORG CSCN3F, *PR>BR, DR=>20, 18899 PR>BR, 18900 A(>20), B(>20), OR, 18901 Y>DR, 18902 JUMP(CSCN1); ----- ----- 654 00411CEB 00201000 ----- 18903 .ORG CSCN1, *Y=BR-AR 18904 NAR>A, BR>B, ADD, O>CIN, 18905 JUMP(CSCN2); ----- ----- CEB 00000CEC 00000441 ----- 18906 .ORG CSCN2, *LAST BYTE? 18907 *DEC P 18908 *BR=RET4 18909 MA(RET4), RAM>BR, 18910 A(-1), BR>B, ADD, 18911 Y>PR, 18912 JZ(CSCN3F,CSCN3T); ----- ----- CEC 00012654 F9FF0001 ----- 18913 *+++CLEARED LAST BYTE 18914 .ORG CSCN3T, *Y=RET4 18915 *B=SYS2 FOR ROW10 18916 MA(SYS2), RAM>BR, 18917 A(7), BR>B, AND, 18918 JUMP(CSCN4); ----- ----- 655 00010CED 09070801 ----- 18919 .ORG CSCN4, * 18920 *AR=STOR1 (FOR INPCM41) 18921 MA(STOR1), RAM>AR, 18922 JY(SMENM7Y); ----- ----- CED 0002C0D0 21000000 ----- 18923 * 18924 *+++MASK ROUTINE 18925 * 18926 * AR=THISRW=current row, RETURN is return pointer 18927 * This routine takes the current row and updates PR to point 18928 * to the clear row byte and places a mask for the bit for this 18929 * row in AR. It also places the row marker byte in TPD, B and RET2. 18930 * 18931 * This routine is also called by PDC triplet post-processing to 18932 * find the bit which should be set to indicate a particular DC 18933 * has been received. 18934 * 18935 * STORE is used as a temp store 18936 * 18937 *LOAD PR WITH POINTER TO CLEAR ROW MARKER BYTE 18938 *LOAD STORE WITH NUMBER FROM 0-7 INDICATING MARKER BIT 18939 .ORG MASK0, *Y=THISRW-17 18940 AR>A, B(-17), ADD, 18941 JUMP(MASK5); ----- ----- 77B 00000CEE 00EF0010 ----- 18942 .ORG MASK5, *THISRW<17? 18943 *Y=THISRW-9 18944 AR>A, B(-9), ADD, 18945 JN(MASK6F,MASK6T); ----- ----- CEE 00004656 00F70010 ----- 18946 .ORG MASK6T, *THISRW<17 18947 *THISRW<9? 18948 *SPAREBY08 18949 *PR=-8 18950 Y(-8), 18951 Y>PR, 18952 JN(MASK7F,MASK7T); ----- ----- 657 00004658 80F81000 ----- 18953 *ROWS 17 TO 24 18954 .ORG MASK6F, *THISRW>=17 18955 *SPAREBY10 18956 *PR=-10 18957 Y(-10), 18958 Y>PR, 18959 JUMP(MASK8); ----- ----- 656 00000CEF 80F61000 ----- 18960 .ORG MASK8, *STORE=THISRW-17 18961 MA(STORE), 18962 AR>A, B(-17), ADD, 18963 Y>RAM, Y>AR, 18964 JUMP(MASK10); ----- ----- CEF 00220CF0 77EF0110 ----- 18965 *ROWS 9 TO 16 18966 .ORG MASK7F, *PR=-9 18967 *SPAREBY09 18968 Y(-9), 18969 Y>PR, 18970 JUMP(MASK9); ----- ----- 658 00000CF1 80F71000 ----- 18971 .ORG MASK9, *STORE=THISRW-9 18972 MA(STORE), 18973 AR>A, B(-9), ADD, 18974 Y>RAM, Y>AR, 18975 JUMP(MASK10); ----- ----- CF1 00220CF0 77F70110 ----- 18976 *ROWS 1 TO 8 18977 * PR=-8 18978 .ORG MASK7T, *STORE=THISRW-1 18979 MA(STORE), 18980 AR>A, B(-1), ADD, 18981 Y>RAM, Y>AR, 18982 JUMP(MASK10); ----- ----- 659 00220CF0 77FF0110 ----- 18983 *CONVERT STORE INTO MASK FOR ROW MARKER BYTE 18984 .ORG MASK10, *STORE=7-STORE 18985 RVDP, 18986 MA(STORE), 18987 NAR>A, B(>07), ADD, O>CIN, 18988 Y>RAM, 18989 JUMP(MASK11); ----- ----- CF0 00000CF2 77078540 ----- 18990 .ORG MASK11, *AR=>80, MASK BIT START POINT (AVOID SIGN EXTEND) 18991 *BR=STORE 18992 MA(STORE), RAM>BR, 18993 A(>40), B(>40), ADD, 18994 Y>AR, 18995 JUMP(MASK12); ----- ----- CF2 00230CF3 77400000 ----- 18996 * 18997 .ORG MASK12, *STORE=STORE-1 18998 MA(STORE), 18999 A(-1), BR>B, ADD, 19000 Y>RAM, 19001 JUMP(MASK13); ----- ----- CF3 00000CF4 77FF0101 ----- 19002 .ORG MASK13, *STORE<0? 19003 *Y=MARKER BYTE AND MASK 19004 *USE RET2 AS TEMP STORE FOR MARKER BYTE 19005 MA(RET2), 19006 TPD>A, B(0), ADD, 19007 Y>RAM, 19008 JN(MASK14F,MASK14T); ----- ----- CF4 0000465A 7B000190 ----- 19009 .ORG MASK14F, *SHIFT MASK BIT TO THE RIGHT 19010 *BR=STORE 19011 MA(STORE), RAM>BR, 19012 AR>>1>A, B(0), ADD, 19013 Y>AR, 19014 JUMP(MASK12); ----- ----- 65A 00230CF3 770000E0 ----- 19015 *EXIT FROM MASK ROUTINE 19016 .ORG MASK14T, *BR=RETURN 19017 MA(RETURN), RAM>BR, 19018 JUMP(MASK14A); ----- ----- 65B 00010CF5 7C000000 ----- 19019 .ORG MASK14A, *Y=RETURN 19020 A(3), BR>B, AND, 19021 JUMP(MASK14B); ----- ----- CF5 00000CF6 00030801 ----- 19022 .ORG MASK14B, *BR=MARKER BYTE 19023 MA(RET2), RAM>BR, 19024 JY(VPP215Y); ----- ----- CF6 0001C0E0 7B000000 ----- 19025 * 19026 *+++CLOSE DOWN TELETEXT 19027 * 19028 * This routine closes any open mags and clears VBICAP and CAP 19029 * in all the latch flags. This is necessary when switching off 19030 * teletext due to a bad signal. 19031 * 19032 * input pars are:- 19033 * RETURN: return pointer 19034 * 19035 .ORG CDTXT0, *INIT LOOP 19036 Y(7), 19037 Y>AR, 19038 JUMP(CDTXT10F); ----- ----- 95D 0022065C 00071000 ----- 19039 *LOOP START 19040 .ORG CDTXT10F, *P=MFx POINTER 19041 AR>A, B(MF0), ADD, 19042 Y>PR, 19043 JUMP(CDTXT11); ----- ----- 65C 00000CF7 80580010 ----- 19044 .ORG CDTXT11, *B=MFx 19045 PR>MA, RAM>BR, 19046 JUMP(CDTXT12); ----- ----- CF7 00110CF8 00000000 ----- 19047 .ORG CDTXT12, *CLOSE IT (MLP=0, MO=0) 19048 PR>MA, 19049 A(0), BR.F0>B, OR, 19050 Y>RAM, 19051 JUMP(CDTXT13); ----- ----- CF8 00100CF9 00001103 ----- 19052 .ORG CDTXT13, *P=LAFx POINTER 19053 AR>A, B(LAF0), ADD, 19054 Y>PR, 19055 JUMP(CDTXT14); ----- ----- CF9 00000CFA 80400010 ----- 19056 .ORG CDTXT14, *B=LAFx 19057 *DEC LOOP 19058 PR>MA, RAM>BR, 19059 AR>A, B(-1), ADD, 19060 Y>AR, 19061 JUMP(CDTXT15); ----- ----- CFA 00330CFB 00FF0010 ----- 19062 .ORG CDTXT15, *CLEAR VBICAP, CAP AND OPN 19063 *LOOP END? 19064 PR>MA, 19065 A(>FF-VBICAP-CAP-OPN), BR>B, AND, 19066 Y>RAM, 19067 JN(CDTXT10F,CDTXT10T); ----- ----- CFB 0010465C 002F0901 ----- 19068 *LOOP END 19069 .ORG CDTXT10T, *A=RETURN 19070 MA(RETURN), RAM>AR, 19071 JUMP(CDTXT20); ----- ----- 65D 00020CFC 7C000000 ----- 19072 .ORG CDTXT20, *Y=RETURN 19073 AR>A, B(1), AND, 19074 JUMP(CDTXT21); ----- ----- CFC 00000CFD 00010810 ----- 19075 .ORG CDTXT21, *RETURN=? 19076 JZ(VPP665F,STXT10T); ----- ----- CFD 0000265E 00000000 ----- 19077 ************************************************************************ 19078 * section 6: initialisation * 19079 ************************************************************************ 19080 .ORG HRST0, *H/W RESET ENTRY POINT 19081 *CLEAR HFLGS 19082 RSTRXTX, 19083 MA(HFLGS), 19084 A(0), B(0), ADD, 19085 Y>RAM, 19086 JUMP(SRST0); ----- ----- 000 00000B0F 7F000300 ----- 19087 *+++ENTRY FROM SRST 19088 .ORG SRST0, *CLEAR REST OF SCRATCH RAM 19089 *PR=>7F 19090 CBRDY, 19091 A(>7F), B(>7F), OR, 19092 Y>PR, 19093 JUMP(SRST1); ----- ----- B0F 00000CFE 807F3000 ----- 19094 .ORG SRST1, *BR=>7F 19095 PR>BR, 19096 JUMP(SRST3F); ----- ----- CFE 00410660 00000000 ----- 19097 * 19098 .ORG SRST3F, *PR=BR-1 19099 A(-1), BR>B, ADD, 19100 Y>PR, 19101 JUMP(SRST2); ----- ----- 660 00000CFF 80FF0001 ----- 19102 .ORG SRST2, *CLEAR LOC 19103 *PR==0? 19104 PR>MA, PR>BR, 19105 A(0), B(0), AND, 19106 Y>RAM, Y>IO, 19107 JZ(SRST3F,SRST3T); ----- ----- CFF 00512660 00004900 ----- 19108 *+++CLEAR PAGE MEMORY 19109 .ORG SRST3T, *INIT PAGE LOOP 19110 Y(8), 19111 Y>AR, 19112 JUMP(SRST7T); ----- ----- 661 00220665 00081000 ----- 19113 * 19114 .ORG SRST7T, *AR=AR-1 19115 *DEC LOOP VARIABLE AND SET READ/WRITE LATCH 19116 MA(RWL), 19117 AR>A, B(-1), ADD, 19118 Y>AR, Y>IO, 19119 JUMP(SRST4); ----- ----- 665 00220D00 0BFF4010 ----- 19120 .ORG SRST4, *PR=0 19121 *AR<0? (LAST PAGE?) 19122 Y(0), 19123 Y>PR, 19124 JN(SRST5F,SRST5T); ----- ----- D00 00004662 80001000 ----- 19125 .ORG SRST5F, *BR=0 19126 *CLEAR PAGE LOC 19127 PR>BR, 19128 Y(>20), 19129 Y>DR, 19130 JUMP(SRST7F); ----- ----- 662 00411664 00201000 ----- 19131 *CLEAR A PAGE 19132 .ORG SRST7F, *DEC SCREEN POINTER 19133 A(-1), BR>B, ADD, 19134 Y>PR, 19135 JUMP(SRST6); ----- ----- 664 00000D01 80FF0001 ----- 19136 .ORG SRST6, *COMPLETED THE PAGE? 19137 *CLEAR PAGE LOC 19138 *BR=PR 19139 PR>BR, 19140 Y(>20), 19141 Y>DR, 19142 JZ(SRST7F,SRST7T); ----- ----- D01 00413664 00201000 ----- 19143 *+++INIT STORE TABLE 19144 .ORG SRST5T, *AR=7 19145 *Y MUST NOT BE -VE FOR SRST14 19146 Y(7), 19147 Y>AR, 19148 JUMP(SRST14); ----- ----- 663 00220D02 00071000 ----- 19149 .ORG SRST14, *PR=AR+STOR0 19150 *BR=EXPREG 19151 MA(EXPREG), RAM>BR, 19152 AR>A, B(STOR0), ADD, 19153 Y>PR, 19154 JN(SRST15F,SRST15T); ----- ----- D02 00014666 E3200010 ----- 19155 .ORG SRST15F, *BR=STORx 19156 PR>MA, RAM>BR, 19157 JUMP(SRST16); ----- ----- 666 00110D03 00000000 ----- 19158 .ORG SRST16, *INIT STORx 19159 PR>MA, 19160 AR<<4>A, BR.0F>B, ADD, 19161 Y>RAM, 19162 JUMP(SRST17); ----- ----- D03 00100D04 00000132 ----- 19163 .ORG SRST17, *DEC AR 19164 AR>A, B(-1), ADD, 19165 Y>AR, 19166 JUMP(SRST14); ----- ----- D04 00220D02 00FF0010 ----- 19167 *+++NON-ZERO INITIALISATIONS 19168 .ORG SRST15T, *SET CLOCK TO YELLOW ON BLUE 19169 MA(VDP4), 19170 Y(>43), 19171 Y>RAM, Y>IO, 19172 JUMP(SRST20); ----- ----- 667 00000D05 04435100 ----- 19173 .ORG SRST20, *SET HYSTERISIS END STOP TO 3 19174 MA(HYSREG), 19175 Y(>30), 19176 Y>RAM, 19177 JUMP(SRST21); ----- ----- D05 00000D06 67301100 ----- 19178 *SET DEFAULT PLL COEFFS TO VALUES IN VAS'S MSG01378767 13/8/92 19179 .ORG SRST21, *SET FINE COEFFS TO 00 19180 MA(PLLRG2), 19181 Y(>00), 19182 Y>RAM, 19183 JUMP(SRST22); ----- ----- D06 00000D07 0D001100 ----- 19184 .ORG SRST22, *SET COARSE COEFFS TO 24 19185 MA(PLLRG3), 19186 Y(>24), 19187 Y>RAM, 19188 JUMP(SRST23); ----- ----- D07 00000D08 0E241100 ----- 19189 * 19190 * TCJ September 94, 19191 * 211 intialisation. 19192 * 19193 .ORG SRST23, * Set inital LANG2 to RUSSIAN 19194 Y(>32), 19195 MA(VDP3), Y>RAM, 19196 JUMP(SRST24); ----- ----- D08 00000D09 03321100 ----- 19197 * 19198 .ORG SRST24, * Set initial LANG to goup 3 19199 Y(>30), 19200 MA(USRLAN), Y>RAM, 19201 JUMP(CHNG3); ----- ----- D09 000000D4 2D301100 ----- 19202 * 19203 *+++CHANGE CHANNEL INITIALISATION 19204 * 19205 *ENTRY POINT TO CLEAR DISPLAY PAGE 19206 .ORG CHNG0, *B=SYS2 19207 MA(SYS2), RAM>BR, 19208 JUMP(CHNG1); ----- ----- B10 00010D0A 09000000 ----- 19209 .ORG CHNG1, *A=STOR0 19210 *Y=APIN 19211 MA(STOR0), RAM>AR, 19212 A(APIN), BR>B, AND, 19213 JUMP(CHNG1A); ----- ----- D0A 00020D0B 20010801 ----- 19214 .ORG CHNG1A, *RWL= DISPLAY PAGE LATCH 19215 *AUTO MENUS DISABLED? 19216 MA(RWL), 19217 ARHI>A, B(0), OR, 19218 Y>RAM, Y>IO, 19219 JZ(CHNG2F,CHNG2T); ----- ----- D0B 00002668 0B005120 ----- 19220 *CLEAR ROWS 1-24 AND PAGE RELATED DATA 19221 .ORG CHNG2T, *CALL CSCNA 19222 *RET4=4, RETURN TO CHNG3 19223 MA(RET4), 19224 Y(4), 19225 Y>RAM, 19226 JUMP(CSCNA); ----- ----- 669 00000C39 79041100 ----- 19227 *AUTO MENUS DISABLED, DO NOT CLEAR ROW 24 19228 .ORG CHNG2F, *CLEAR ROWS 1-23 19229 *CALL CSCNC 19230 *RET4=6, RETURN TO CHNG2A 19231 MA(RET4), 19232 Y(6), 19233 Y>RAM, 19234 JUMP(CSCNC); ----- ----- 668 00000D0C 79061100 ----- 19235 .ORG CHNG2A, *CLEAR PAGE RELATED DATA 19236 *CALL CSCND 19237 *RET4=7, RETURN TO CHNG2B 19238 MA(RET4), 19239 Y(7), 19240 Y>RAM, 19241 JUMP(CSCND); ----- ----- 0D6 00000D0D 79071100 ----- 19242 .ORG CHNG2B, 19243 JUMP(CHNG3); ----- ----- 0D7 000000D4 00000000 ----- 19244 *CLEAR NON-DISPLAY TELETEXT PAGES AND INITIALISE LATCH FLAGS 19245 .ORG CHNG3, *INIT LOOP VARIABLE 19246 MA(LOCAL), 19247 Y(8), 19248 Y>RAM, 19249 JUMP(CHNG4); ----- ----- 0D4 000000D5 72081100 ----- 19250 * 19251 .ORG CHNG4, *A=LOOP 19252 MA(LOCAL), RAM>AR, 19253 JUMP(CHNG5); ----- ----- 0D5 00020D0E 72000000 ----- 19254 .ORG CHNG5, *DEC LOOP 19255 MA(LOCAL), 19256 AR>A, B(-1), ADD, 19257 Y>RAM, Y>AR, 19258 JUMP(CHNG6); ----- ----- D0E 00220D0F 72FF0110 ----- 19259 .ORG CHNG6, *MORE LATCHES? 19260 *B=STORE0 19261 *P=INDEX TO LATCH FLAGS 19262 MA(STOR0), RAM>BR, 19263 AR>A, B(LAF0), ADD, 19264 Y>PR, 19265 JN(CHNG7F,CHNG7T); ----- ----- D0F 0001466A A0400010 ----- 19266 .ORG CHNG7F, *COMPARE THIS LATCH WITH DISPLAY LATCH 19267 *B=LAFx 19268 PR>MA, RAM>BR, 19269 AR>A, BRHI>B, XOR, 19270 JUMP(CHNG8); ----- ----- 66A 00110D10 0000181C ----- 19271 .ORG CHNG8, *DISPLAY LATCH? 19272 *Y=MENU PAGE FLAG 19273 A(MPG), BR>B, AND, 19274 JZ(CHNG9F,CHNG9T); ----- ----- D10 0000266C 00040801 ----- 19275 .ORG CHNG9T, *DISPLAY LATCH 19276 *CLEAR LAFx 19277 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 19278 PR>MA, 19279 Y(0), 19280 Y>RAM, 19281 JUMP(CHNG4); ----- ----- 66D 001000D5 00001100 ----- 19282 .ORG CHNG9F, *MENU PAGE? 19283 *RET4=5 19284 MA(RET4), 19285 Y(5), 19286 Y>RAM, 19287 JZ(CHNG10F,CHNG10T); ----- ----- 66C 0000266E 79051100 ----- 19288 .ORG CHNG10F, *MENU PAGE, DO NOT CLEAR 19289 JUMP(CHNG4); ----- ----- 66E 000000D5 00000000 ----- 19290 .ORG CHNG10T, *TELETEXT PAGE, CLEAR IT 19291 *RWL=THIS LATCH 19292 MA(RWL), 19293 AR>A, B(0), OR, 19294 Y>RAM, Y>IO, 19295 JUMP(CHNG11); ----- ----- 66F 00000D11 0B005110 ----- 19296 .ORG CHNG11, *CLEAR LAFx 19297 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 19298 *CALL CSCNA 19299 *RET4=5, RETURN TO CHNG4 19300 PR>MA, 19301 Y(0), 19302 Y>RAM, 19303 JUMP(CSCNA); ----- ----- D11 00100C39 00001100 ----- 19304 * 19305 .ORG CHNG7T, *INITIALISE TOP FLAGS 19306 *TOPRG1=0 19307 *(BTTERR=BTTCAP=BTTP=BTTUP=BTT UPDATE CODE=0) 19308 MA(TOPRG1), 19309 Y(0), 19310 Y>RAM, 19311 JUMP(CHNG12); ----- ----- 66B 00000D12 37001100 ----- 19312 .ORG CHNG12, *POINT TO LATCH CONTAINING FORMAT 1 PACKET COUNT 19313 MA(RWL), 19314 Y(0), 19315 Y>RAM, Y>IO, 19316 JUMP(CHNG12A); ----- ----- D12 00000D13 0B005100 ----- 19317 .ORG CHNG12A, *A=HYSREG 19318 *POINT TO FORMAT 1 PACKET COUNT 19319 MA(HYSREG), RAM>AR, 19320 Y(-7), 19321 Y>PR, 19322 JUMP(CHNG13); ----- ----- D13 00020D14 E7F91000 ----- 19323 .ORG CHNG13, *INIT HYSTERISIS COUNT 19324 MA(HYSREG), 19325 AR.F0>A, B(0), OR, 19326 Y>RAM, 19327 JUMP(CHNG14); ----- ----- D14 00000D15 670011D0 ----- 19328 .ORG CHNG14, *A=STSWD0 19329 MA(STSWD0), RAM>AR, 19330 JUMP(CHNG15); ----- ----- D15 00020D16 64000000 ----- 19331 .ORG CHNG15, *BADFLG=1 19332 MA(STSWD0), 19333 AR>A, B(BADFLG), OR, 19334 Y>AR, 19335 JUMP(CHNG16); ----- ----- D16 00220D17 64101010 ----- 19336 .ORG CHNG16, *TFLG=0, FFLG=0 19337 MA(STSWD0), 19338 AR>A, B(>FF-TFLG-FFLG), AND, 19339 Y>RAM, 19340 JUMP(CHNG18); ----- ----- D17 00000D18 645F0910 ----- 19341 .ORG CHNG18, *INITIALISE ERROR COUNT 19342 *INITIALISE FORMAT 1 PACKET COUNT 19343 MA(ERRCNT), 19344 Y(0), 19345 Y>RAM, Y>DR, 19346 JUMP(CHNG19); ----- ----- D18 00001D19 3A001100 ----- 19347 .ORG CHNG19, *INITIALISE INVENTORY COUNT 19348 MA(INVCNT), 19349 Y(0), 19350 Y>RAM, 19351 JUMP(CHNG20); ----- ----- D19 00000D1A 38001100 ----- 19352 .ORG CHNG20, *A=VDPTXT 19353 MA(VDPTXT), RAM>AR, 19354 JUMP(CHNG21); ----- ----- D1A 00020D1B 2B000000 ----- 19355 .ORG CHNG21, *CLEAR UPD, C8YET, URVL, UEXT, UEXB 19356 MA(VDPTXT), 19357 AR>A, B(>FF-UPD-C8YET-URVL-UEXT-UEXB), AND, 19358 Y>RAM, 19359 JUMP(CHNG21A); ----- ----- D1B 00000D1C 2BC40910 ----- 19360 * 19361 .ORG CHNG21A, *Fetch ststus byte containing TVPS flag 19362 MA(SYS2), RAM>AR, 19363 JUMP(CHNG21B); ----- ----- D1C 00020D1D 09000000 ----- 19364 * 19365 .ORG CHNG21B, *Clear the TVPS flag 19366 MA(SYS2), 19367 AR>A, B(>FF-TVPS), AND, 19368 Y>RAM, 19369 JUMP(CHNG22); ----- ----- D1D 00000D1E 09EF0910 ----- 19370 * 19371 *NULLIFY FAVOURITE PAGES 19372 .ORG CHNG22, *RWL=LATCH 5 19373 MA(RWL), 19374 Y(5), 19375 Y>RAM, Y>IO, 19376 JUMP(CHNG23); ----- ----- D1E 00000D1F 0B055100 ----- 19377 .ORG CHNG23, *INIT LATCH COUNT 19378 Y(2), 19379 Y>AR, 19380 JUMP(CHNG24F); ----- ----- D1F 00220672 00021000 ----- 19381 *LATCH LOOP START 19382 .ORG CHNG24F, *POINT TO FIRST FAVOURITE PAGE DIGIT IN LATCH 19383 Y(-7), 19384 Y>PR, 19385 JUMP(CHNG25F); ----- ----- 672 00000670 80F91000 ----- 19386 *BYTE LOOP START 19387 .ORG CHNG25F, *SET MSB TO NULLIFY DIGIT 19388 *B=POINTER 19389 PR>BR, 19390 Y(>80), 19391 Y>DR, 19392 JUMP(CHNG26); ----- ----- 670 00411D20 00801000 ----- 19393 .ORG CHNG26, *Y=POINTER+2 19394 A(2), BR>B, ADD, 19395 JUMP(CHNG27); ----- ----- D20 00000D21 00020001 ----- 19396 .ORG CHNG27, *POINTER++, LAST BYTE? 19397 A(1), BR>B, ADD, 19398 Y>PR, 19399 JZ(CHNG25F,CHNG25T); ----- ----- D21 00002670 80010001 ----- 19400 *END OF BYTE LOOP 19401 .ORG CHNG25T, *LATCH COUNT-- 19402 AR>A, B(-1), ADD, 19403 Y>AR, 19404 JUMP(CHNG28); ----- ----- 671 00220D22 00FF0010 ----- 19405 .ORG CHNG28, *RWL=LATCH 6 19406 *LAST LATCH? 19407 MA(RWL), 19408 Y(6), 19409 Y>RAM, Y>IO, 19410 JZ(CHNG24F,CHNG24T); ----- ----- D22 00002672 0B065100 ----- 19411 *END OF LATCH LOOP 19412 .ORG CHNG24T, *A=SYS1 19413 MA(SYS1), RAM>AR, 19414 JUMP(CHNG48); ----- ----- 673 00020D23 08000000 ----- 19415 .ORG CHNG48, *ALWAYS START OFF IN NORMAL 19416 *PCM=0, FIND=1 19417 MA(SYS1), 19418 AR.0F>A, B(FIND), OR, 19419 Y>RAM, 19420 JUMP(CHNG49); ----- ----- D23 00000D24 080811C0 ----- 19421 .ORG CHNG49, *CALL INPCM TO INIT PAGE CAPTURE MODE 19422 *RETURN=0, RETURN TO CHNG50Y 19423 MA(RETURN), 19424 Y(0), 19425 Y>RAM, 19426 JUMP(INPCM0); ----- ----- D24 000008B7 7C001100 ----- 19427 .ORG CHNG50Y, *BR=EXPREG 19428 MA(EXPREG), RAM>BR, 19429 JUMP(CHNG51); ----- ----- 620 00010D25 63000000 ----- 19430 .ORG CHNG51, *Y=USM 19431 A(USM), BR>B, AND, 19432 JUMP(CHNG52); ----- ----- D25 00000D26 00020801 ----- 19433 .ORG CHNG52, *USER STATUS MODE? 19434 JZ(CHNG55F,CHNG55T); ----- ----- D26 00002674 00000000 ----- 19435 .ORG CHNG55F, *CPRF=1 (CLEAR ROW 24 BEFORE COPYING STATUS) 19436 *SINP=1 (SEARCH FOR PACKET 8/30 INIT PAGE) 19437 MA(EXPREG), 19438 A(CPRF+SINP), BR>B, OR, 19439 Y>AR, 19440 JUMP(CHNG56); ----- ----- 674 00220D27 63141001 ----- 19441 .ORG CHNG55T, *SINP=1 (SEARCH FOR PACKET 8/30 INIT PAGE) 19442 MA(EXPREG), 19443 A(SINP), BR>B, OR, 19444 Y>AR, *TCJ Flof initail page 19445 * JUMP(CHNG59); 19446 JUMP(CHNG56); ----- ----- 675 00220D27 63101001 ----- 19447 * 19448 * TCJ June 93 19449 * To correct use of old 8/30 status on channel change bug. 19450 * clear SRTC to force wait for new 8/30. Old version only 19451 * cleared this flag if USM was set. 19452 * 19453 .ORG CHNG56, *SRTC=0 (WAIT FOR NEW STATUS) 19454 MA(EXPREG), 19455 AR>A, B(>FF-SRTC), AND, 19456 Y>RAM, 19457 JUMP(CHNG59); ----- ----- D27 00000D28 63FE0910 ----- 19458 * 19459 .ORG CHNG59, *INIT SUB-PAGE REGISTERS 19460 *(CMPE ONLY DOES THIS IF SUB-PAGE MODE SET) 19461 *A=1, RETURN TO CHNG59A, 19462 Y(1), 19463 Y>AR, 19464 JUMP(INSPRG0); ----- ----- D28 00220876 00011000 ----- 19465 * B=LSTINS 19466 .ORG CHNG59A, *Y=LSTINS XOR >06 19467 A(>06), BR>B, XOR, 19468 JUMP(CHNG59B); ----- ----- 6B1 00000D29 00061801 ----- 19469 .ORG CHNG59B, *CHNGE3? 19470 *Y=LSTINS XOR >07 19471 A(>07), BR>B, XOR, 19472 JZ(CHNG60F,CHNG60T); ----- ----- D29 00002676 00071801 ----- 19473 .ORG CHNG60T, *CHNGE3, DO NOT INIT TO PAGE 100 19474 *COUNT=>7 (INHIBIT SINP CLEAR, CLEAR BROWSE AND HOLD) 19475 MA(COUNT), 19476 Y(7), 19477 Y>RAM, 19478 JUMP(CMPE1); ----- ----- 677 00000B83 78071100 ----- 19479 .ORG CHNG60F, *CHNGE4? 19480 *COUNT=>7 (INHIBIT SINP CLEAR, CLEAR BROWSE AND HOLD) 19481 MA(COUNT), 19482 Y(7), 19483 Y>RAM, 19484 JZ(CHNG60AF,CHNG60AT); ----- ----- 676 0000267C 78071100 ----- 19485 .ORG CHNG60AT, *CHNGE4, DO NOT INIT TO PAGE 100 19486 JUMP(CMPE1); ----- ----- 67D 00000B83 00000000 ----- 19487 *+++INIT TO DISPLAY AND PREVIOUS PAGE TO 100 19488 *ENTRY POINT FROM INDEX KEY ROUTINE (IKR13F) 19489 .ORG CHNG60AF, *DPM=>11 19490 MA(DPM), 19491 Y(>11), 19492 Y>RAM, 19493 JUMP(CHNG61); ----- ----- 67C 00000D2A 68111100 ----- 19494 .ORG CHNG61, *DPT=0 19495 MA(DPT), 19496 Y(0), 19497 Y>RAM, 19498 JUMP(CHNG62); ----- ----- D2A 00000D2B 69001100 ----- 19499 .ORG CHNG62, *DPU=0 19500 MA(DPU), 19501 Y(0), 19502 Y>RAM, 19503 JUMP(CMPE1); ----- ----- D2B 00000B83 6A001100 ----- 19504 * 19505 *+++INPCM: INITIALISE PAGE CAPTURE MODE 19506 * This routine assumes that sub-page mode is not set or will 19507 * be cleared. 19508 * 19509 * RETURN=RETURN POINTER 19510 .ORG INPCM0, *B=SYS2 19511 MA(SYS2), RAM>BR, 19512 JUMP(INPCM0A); ----- ----- 8B7 00010D2C 09000000 ----- 19513 .ORG INPCM0A, *S6T1=0 19514 MA(SYS2), 19515 A(>FF-S6T1), BR>B, AND, 19516 Y>RAM, 19517 JUMP(INPCM1); ----- ----- D2C 00000D2D 09DF0901 ----- 19518 *LOOP TO CLEAR APPROPRIATE LATCH FLAGS 19519 .ORG INPCM1, *INIT LOOP VARIABLE 19520 *LOCAL=8 19521 MA(LOCAL), 19522 Y(8), 19523 Y>RAM, 19524 JUMP(INPCM2T); ----- ----- D2D 00000D2E 72081100 ----- 19525 *LOOP START 19526 .ORG INPCM2T, *A=LOOP 19527 MA(LOCAL), RAM>AR, 19528 JUMP(INPCM3); ----- ----- D2E 00020D2F 72000000 ----- 19529 .ORG INPCM3, *LOOP-- 19530 MA(LOCAL), 19531 AR>A, B(-1), ADD, 19532 Y>RAM, Y>AR, 19533 JUMP(INPCM10); ----- ----- D2F 00220D30 72FF0110 ----- 19534 .ORG INPCM10, *P=INDEX TO LAFx 19535 *FINISHED? 19536 *B=STOR0 19537 MA(STOR0), RAM>BR, 19538 AR>A, B(LAF0), ADD, 19539 Y>PR, 19540 JN(INPCM11F,INPCM11T); ----- ----- D30 0001467E A0400010 ----- 19541 .ORG INPCM11T, *YES, EXIT 19542 *B=SYS1 19543 MA(SYS1), RAM>BR, 19544 JUMP(INPCM15); ----- ----- 67F 00010D31 08000000 ----- 19545 .ORG INPCM11F, *COMPARE LATCH WITH LATCH FOR DISPLAY PAGE 19546 AR>A, BRHI>B, XOR, 19547 JUMP(INPCM11A); ----- ----- 67E 00000D32 0000181C ----- 19548 .ORG INPCM11A, *B=LAFx 19549 *IS THIS THE DISPLAY PAGE? 19550 PR>MA, RAM>BR, 19551 JZ(INPCM12F,INPCM12T); ----- ----- D32 00112680 00000000 ----- 19552 *THIS IS THE DISPLAY LATCH, DO NOT INITIALISE IT 19553 .ORG INPCM12T, * 19554 JUMP(INPCM2T); ----- ----- 681 00000D2E 00000000 ----- 19555 *NOT THE DISPLAY LATCH 19556 .ORG INPCM12F, *Y=AITL 19557 *B=STOR1 19558 MA(STOR1), RAM>BR, 19559 A(AITL), BR>B, AND, 19560 JUMP(INPCM13); ----- ----- 680 00010D33 21010801 ----- 19561 .ORG INPCM13, *Y= THIS LATCH XOR LATCH FOR STORE 1, AITL? 19562 *A=LAFx 19563 PR>MA, RAM>AR, 19564 AR>A, BRHI>B, XOR, 19565 JZ(INPCM14F,INPCM14T); ----- ----- D33 00122682 0000181C ----- 19566 .ORG INPCM14F, *AIT TOP TABLE 19567 *CLEAR LAFx 19568 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 19569 PR>MA, 19570 Y(0), 19571 Y>RAM, 19572 JUMP(INPCM2T); ----- ----- 682 00100D2E 00001100 ----- 19573 .ORG INPCM14T, *IS THIS STORE 1 LATCH? 19574 *Y=BTTL, B=SYS1 19575 MA(SYS1), RAM>BR, 19576 AR>A, B(BTTL), AND, 19577 JZ(INPCM14AF,INPCM14AT); ----- ----- 683 00012684 08020810 ----- 19578 .ORG INPCM14AF, *NO, EXIT 19579 JUMP(INPCM2T); ----- ----- 684 00000D2E 00000000 ----- 19580 .ORG INPCM14AT, *STORE 1 LATCH, BTTL? 19581 *Y=PCM-2 19582 *A=STOR1 19583 MA(STOR1), RAM>AR, 19584 A(-2), BRHI>B, ADD, 19585 JZ(INPCM14BF,INPCM14BT); ----- ----- 685 00022686 21FE000C ----- 19586 .ORG INPCM14BF, *BTT, GOING TO FLOF MODE? 19587 *RET4=2 19588 MA(RET4), 19589 Y(2), 19590 Y>RAM, 19591 JZ(INPCM14CF,INPCM14CT); ----- ----- 686 00002688 79021100 ----- 19592 .ORG INPCM14CF, *LATCH IS A BTT, 19593 *NEW MODE IS NOT FLOF SO LEAVE IT 19594 JUMP(INPCM2T); ----- ----- 688 00000D2E 00000000 ----- 19595 .ORG INPCM14CT, *LATCH IS A BTT 19596 *NEW MODE IS FLOF SO CLEAR IT 19597 *CLEAR LAFx 19598 *CAP=VBICAP=CLR=OPN=MPG=BTTL=AITL=0 19599 PR>MA, 19600 Y(0), 19601 Y>RAM, 19602 JUMP(INPCM14DT); ----- ----- 689 0010068B 00001100 ----- 19603 .ORG INPCM14BT, *NOT A BTT, FLOF MODE? 19604 *RET4=2 19605 MA(RET4), 19606 Y(2), 19607 Y>RAM, 19608 JZ(INPCM14DF,INPCM14DT); ----- ----- 687 0000268A 79021100 ----- 19609 .ORG INPCM14DT, *LATCH NOT A BTT 19610 *NEW MODE IS FLOF SO LEAVE IT 19611 JUMP(INPCM2T); ----- ----- 68B 00000D2E 00000000 ----- 19612 *CLEAR STORE 1 19613 .ORG INPCM14DF, *LATCH NOT A BTT 19614 *NEW MODE IS NOT FLOF SO CLEAR IT 19615 *RWL= LATCH FOR STORE 1 19616 *CALL CSCNA TO CLEAR BTT 19617 *RET4=2, RETURN TO INPCM14E 19618 MA(RWL), 19619 ARHI>A, B(0), OR, 19620 Y>RAM, Y>IO, 19621 JUMP(CSCNA); ----- ----- 68A 00000C39 0B005120 ----- 19622 .ORG INPCM14E, *CLEAR INVENTORY COUNT 19623 MA(INVCNT), 19624 Y(0), 19625 Y>RAM, 19626 JUMP(INPCM2T); ----- ----- 0D2 00000D2E 38001100 ----- 19627 *INIT LATCH FLAGS ACCORDING TO PAGE CAPTURE MODE 19628 * BR=SYS1 19629 .ORG INPCM15, *Y=PCM 19630 *A=LTK 19631 MA(LTK), RAM>AR, 19632 A(3), BRHI>B, AND, 19633 JUMP(INPCM20); ----- ----- D31 00020D34 1103080C ----- 19634 .ORG INPCM20, *CASE PAGE CAPTURE MODE 19635 *B=STOR3 19636 MA(STOR3), RAM>BR, 19637 JY(INPCM30Y); ----- ----- D34 0001C630 23000000 ----- 19638 *ENTRY POINT FROM TOP AND FAVP INIT 19639 .ORG INPCM30Y, *NORMAL MODE 19640 *AR=STOR1 19641 MA(STOR1), RAM>AR, 19642 JUMP(INPCM40); ----- ----- 630 00020D35 21000000 ----- 19643 .ORG INPCM31, *TOP MODE 19644 *INIT LAST TOP KEY (LTK=0) 19645 *GO TO NORMAL CODE 19646 *OTHER TOP INIT IS DONE IN BTTP AND BTTUP CODE 19647 MA(LTK), 19648 AR.0F>A, B(0), OR, 19649 Y>RAM, 19650 JUMP(INPCM30Y); ----- ----- 631 00000630 110011C0 ----- 19651 .ORG INPCM32, *FLOF MODE 19652 *CLEAR TOP FLAGS 19653 * 19654 * Do not set CGAP and CPRF like other modes because this will 19655 * erase row 24 when initialising FLOF after displaying a legal 19656 * FLOF page which has been captured in background memory. 19657 * 19658 MA(TOPRG1), 19659 Y(0), 19660 Y>RAM, 19661 JUMP(INPCM70); ----- ----- 632 00000D36 37001100 ----- 19662 .ORG INPCM33, *FAVP MODE, DO THE SAME AS NORMAL 19663 JUMP(INPCM30Y); ----- ----- 633 00000630 00000000 ----- 19664 *INITIALISE NORMAL MODE AND TOP MODE 19665 * AR=STOR1 19666 .ORG INPCM40, *P=INDEX TO LAFx 19667 ARHI>A, B(LAF0), ADD, 19668 Y>PR, 19669 JUMP(INPCM41); ----- ----- D35 00000D37 80400020 ----- 19670 .ORG INPCM41, *B=LAFx 19671 PR>MA, RAM>BR, 19672 JUMP(INPCM42); ----- ----- D37 00110D38 00000000 ----- 19673 .ORG INPCM42, *BTTL=1 19674 PR>MA, 19675 A(BTTL), BR>B, OR, 19676 Y>RAM, 19677 JUMP(INPCM43); ----- ----- D38 00100D39 00021101 ----- 19678 .ORG INPCM43, *P=INDEX TO LATCH MAGS 19679 ARHI>A, B(M0), ADD, 19680 Y>PR, 19681 JUMP(INPCM44); ----- ----- D39 00000D3A 80100020 ----- 19682 .ORG INPCM44, *B=Mx 19683 PR>MA, RAM>BR, 19684 JUMP(INPCM45); ----- ----- D3A 00110D3B 00000000 ----- 19685 .ORG INPCM45, *SET LATCH TO NULL VALUE 19686 PR>MA, 19687 A(>0F), BR.F0>B, OR, 19688 Y>RAM, Y>IO, 19689 JUMP(INPCM60); ----- ----- D3B 00100D3C 000F5103 ----- 19690 .ORG INPCM60, *B=EXPREG 19691 MA(EXPREG), RAM>BR, 19692 JUMP(INPCM61); ----- ----- D3C 00010D3D 63000000 ----- 19693 .ORG INPCM61, *GENERATE A PROMPT (CLEAR ROW FIRST) 19694 *CGAP=1, CPRF=1 19695 MA(EXPREG), 19696 A(CGAP+CPRF), BR>B, OR, 19697 Y>RAM, 19698 JUMP(INPCM70); ----- ----- D3D 00000D36 630C1101 ----- 19699 *COMMON CODE FOR ALL PAGE CAPTURE MODES 19700 *CLEAR SUB-PAGE REGISTERS TO CLEAR AIT SET UPS 19701 .ORG INPCM70, *CALL INSPRG0 19702 *A=3, RETURN TO INPCM80 19703 Y(3), 19704 Y>AR, 19705 JUMP(INSPRG0); ----- ----- D36 00220876 00031000 ----- 19706 *EXIT 19707 .ORG INPCM80, *A=RETURN 19708 MA(RETURN), RAM>AR, 19709 JUMP(INPCM81); ----- ----- 6B3 00020D3E 7C000000 ----- 19710 .ORG INPCM81, *Y=RETURN 19711 *B=VPPRG1 19712 MA(VPPRG1), RAM>BR, 19713 AR>A, B(3), AND, 19714 JUMP(INPCM82); ----- ----- D3E 00010D3F 61030810 ----- 19715 .ORG INPCM82, *CASE RETURN=? 19716 *SORT BACK GROUND LATCHES 19717 MA(VPPRG1), 19718 A(SBL), BR>B, OR, 19719 Y>RAM, 19720 * 19721 * All INPCM calls should end up at CMPE0/1 to clear sub-page 19722 * mode unless the call can only occur when main page mode is set 19723 * (eg TPP calls). 19724 * 19725 JY(CHNG50Y); ----- ----- D3F 0000C620 61801101 ----- 19726 * 19727 *INSPRG: INITIALISE SUB-PAGE REGISTERS 19728 * A=RETURN POINTER 19729 .ORG INSPRG0, *LFPCL0=NULL 19730 MA(SPREG0), 19731 Y(>F0), 19732 Y>RAM, 19733 JUMP(INSPRG1); ----- ----- 876 00000D40 54F01100 ----- 19734 .ORG INSPRG1, *LFPCL1=NULL 19735 MA(SPREG1), 19736 Y(>F0), 19737 Y>RAM, 19738 JUMP(INSPRG2); ----- ----- D40 00000D41 55F01100 ----- 19739 .ORG INSPRG2, *LFPCL2=NULL 19740 MA(SPREG2), 19741 Y(>F0), 19742 Y>RAM, 19743 JUMP(INSPRG3); ----- ----- D41 00000D42 56F01100 ----- 19744 .ORG INSPRG3, *LFSP0=NULL 19745 *(ALSO SP0I=0) 19746 MA(LFSP0), 19747 * MA(SP0I), 19748 Y(>0F), 19749 Y>RAM, 19750 JUMP(INSPRG4); ----- ----- D42 00000D43 480F1100 ----- 19751 .ORG INSPRG4, *LFSP1=NULL 19752 *(ALSO SP0X=0) 19753 MA(LFSP1), 19754 * MA(SP0X), 19755 Y(>0F), 19756 Y>RAM, 19757 JUMP(INSPRG5); ----- ----- D43 00000D44 490F1100 ----- 19758 .ORG INSPRG5, *Y=RETURN POINTER 19759 *BR=LSTINS 19760 MA(LSTINS), RAM>BR, 19761 AR>A, B(3), AND, 19762 JUMP(INSPRG6); ----- ----- D44 00010D45 2E030810 ----- 19763 .ORG INSPRG6, *LFSP2=NULL 19764 *(ALSO SP0C=0) 19765 MA(LFSP2), 19766 * MA(SP0C), 19767 Y(>0F), 19768 Y>RAM, 19769 JY(TPP50Y); ----- ----- D45 0000C6B0 4A0F1100 ----- 19770 .END 19771 ÿ