MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 1 No. of Lines : 5765 No. of Symbols: 754 (2000 max) Clash count : 138 Symbol Memory : 27204 Bytes X-Ref Memory : 0 Bytes Free Memory : 483200 Bytes Far Jumps : 0 Command line : maincpy FILE TAG PATHNAME 1 maincpy.ASM 2 a GLOBAL.990 3 b DATAS.990 4 c INIT.990 5 d MAIN.990 6 e KEY1.990 7 f KEY2.990 8 g WTMCOD.990 9 h SENDSPAG.990 10 i CLOCK.990 11 j XFERMC.990 12 k SETUP2.990 13 l GENCAR.990 14 m ENCODE.990 15 n SETSRL.990 16 o SETVPS.990 17 p UPDATE.990 18 q VDPUTILS.990 19 r XOPS.990 20 s SETUP1.990 21 t SETUP3.990 22 u LOAD.990 23 v MSGS.990 24 w TCJ.990 25 x MAINCHS2.990 26 y P26PAGES.990 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 2 1 TITL 'TMS9995, ALU EMULATOR DRIVER FOR UNITEXT' 2 * IDT 'ITEXD' 3 OPTION BUNLST,TUNLST 4 * OPTION XREF 5 OPTION DUNLST 6 * AUTHOR: COLIN HINSON 7 * 8 DXOP SETA,0 9 DXOP MSG,1 10 DXOP WHXN,2 11 DXOP WHXB,3 12 DXOP WHXW,4 13 DXOP W3XR,5 14 DXOP WBIT,6 NOT USED 15 DXOP MSGR,7 16 DXOP W10B,8 17 DXOP W3HN,9 18 DXOP W2HN,10 19 DXOP BYTW,11 20 DXOP NIBW,12 21 DXOP READ,13 22 DXOP WRIT,14 23 * 24 * 25 0001 MAXINT EQU 1 26 0000 INCDTA EQU 0 DATA FILE INCLUDED = 1 27 0000 TEST EQU 0 28 0001 CLKTIM EQU 1 IF 1, THEN CLOCK COUNT = TIME, NOT AC 29 * 30 * EQUATES FOR DATA MODULE 31 * 32 COPY GLOBAL.990 1a * 2a * RAM ALLOCATION FOR ASIC EVM BOARD 3a * 4a * AUTHOR: COLIN HINSON 5a * 6a * EVM OUTPUT SELECTION ON ALU/MUX GATE ARRAY. 7a * 8a * 0 PCL MSB 9a * 1 PCL LSB 10a * 2 BR MSB 11a * 3 BR LSB 12a * 4 AR MSB 13a * 5 AR LSB 14a * 6 Y MSB 15a * 7 Y LSB 16a * 8 PQ MSB 17a * 9 PQ LSB 18a * 10 BA MSB 19a * 11 BA LSB 20a * 12 AA MSB 21a * 13 AA LSB 22a * 14 AM MSB 23a * 15 AM LSB 24a * 16 BM MSB 25a * 17 BM LSB MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 3 26a * 18 - 31 NOT USED 27a * 8 BIT 28a * 32 CTL 29a * 33 SRA 30a * 34 DR 31a * 35 TPD 32a * 36 RCS 33a * 37 RCD 34a * 38 SFE 35a * 39 TFE 36a * 40 SPARE 37a * 41 RAMO 38a * 39a * 40a * EVM OUTPUT SELECTION ON MICRO-CODE LATCH GATE ARRAY. 41a * 42a * 64 UCODE MSB 43a * 65 -1 44a * 66 -2 45a * 67 -3 46a * 68 -4 47a * 69 -5 48a * 60 -6 49a * 71 UCODE LSB 50a * 51a * 52a * 53a * 54a * 55a * MEMORY MAP FOR TMS9995: 56a * 57a * 0 TO >1A00 = EMULATOR MACHINE CODE 58a * 1A00 = CHAR. GENERATOR 0 59a * 1EA1 = CHAR. GENERATOR 3 60a * 1EC9 TO >3FFF = EMULATOR TELETEXT PAGE DATA 61a * >4000 TO >9FFF = MICROCODE OBJECT 62a * >4000 TO >BFFF = 32K OF STATIC RAM (AVAILABLE >A000 T 63a * >A000 TO >A0FF = STORE AREA FOR REMOTE CONTRL INPUTS 64a * >A100 TO >DFFF = TRANSLATED SERIAL PAGE DATA FOR TRAN 65a * >E000 TO >E1FF = MICROCODE RAM (PAGED BY CRU BITS) 66a * >F000 TO >F0FF = TMS9995 INTERNAL RAM. 67a * >F400 TO >F43F = DATA READS FROM BREADBOARD. 68a * >F440 TO >F447 = MICROCODE LATCH READS 69a * >F448 TO >F47F = DATA READS FROM BREADBOARD. 70a * >F500 TO >F57F = SCRATCH PAD RAM (READ ONLY) 71a * >F618 = ALU CLOCK (READ OR WRITE GENERATES C 72a * >F800 TO >F8FF = VDP REGISTER ACCESS 73a * >F900 TO >F9FF = VDP DATA READ ACCESS 74a * >FA00 TO >FAFF = VDP DATA WRITE ACCESS 75a * >FD00 TO >FDFF = VDP DATA READ (IGNORING READY) 76a * 77a * MEMORY MAP FOR CRU DEVICES 78a * 79a * 80a * >100 TO >1FF = TMS9902 (PORT 1) 81a * >1000 TO >100F = LS259 NUMBER 1 82a * >1010 TO >101F = LS259 NUMBER 2 83a * >1020 TO >102F = LS259 NUMBER 3 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 4 84a * 85a * CRU EQUATES 86a * 87a 0100 PORT1 EQU >100 RS232 PORT 88a * 89a * LS259 NUMBER 1 OUTPUTS (BASE >1000) 90a * 91a 1000 KBDCRU EQU >1000 KEYSCAN BITS 0-4 92a * EQU 5 SPARE 93a 0006 RESET EQU 6 EVM RESET OUTPUT (0=RESET) 94a * EQU 7 SPARE 95a * 96a * LS259 NUMBER 2 OUTPUTS (BASE >1010) 97a * 98a 0008 EMTST1 EQU 8 EMULATOR TEST1 CONTROL(1=TE 99a 0009 RCEN EQU 9 REMOTE CONTROL ENABLE (0=LO 100a 000A FCSW EQU 10 FRAMING CODE SEARCH WINDOW 101a 000B CLKCTL EQU 11 CLOCK CONTROL (0=EVM CLOCK) 102a FFF4 LPULSE EQU -12 LINE PULSE(OFFSET FROM CLKC 103a 000D EVMVBI EQU 13 VBI 104a *ICLK EQU 14 I2C CLOCK 105a *IDATA EQU 15 I2C DATA 106a 000E TDATA EQU 14 107a 000F QDATA EQU 15 108a * 109a * LS259 NUMBER 3 OUTPUTS (BASE >1020) 110a * 111a 0010 ROMEN EQU 16 T/T UCODE ROM ENABLE (1=ENA 112a 0011 CPUACC EQU 17 ENABLE CPU ACCESS TO UCODE 113a 1024 MAPCRU EQU >1000+36 CRU BASE FOR MAPPING 114a 0012 MAP0 EQU 18 UCODE RAM MAP CONTROL 0 115a 0013 MAP1 EQU 19 UCODE RAM MAP CONTROL 1 116a 0014 MAP2 EQU 20 UCODE RAM MAP CONTROL 2 117a * EQU 21 SPARE 118a * EQU 22 SPARE 119a * EQU 23 SPARE 120a * 121a 1030 CLKCRU EQU >1030 BITS 24 - 31 122a * 123a * OFFSETS FROM CLOCK CRU 124a * 125a * DIRECT CRU CLOCK OUTPUTS FROM LS138 DECODER 126a * 127a 0028 ETCLK EQU 40 128a 0030 CCLK1 EQU 48 129a 0038 EMULD EQU 56 REMOTE CONTROL LOAD PULSE 130a * 131a * MEMORY MAPPED DEVICE EQUATES. 132a * 133a 000D VRAM EQU R13 134a * 135a * EQUATES FOR MEMORY MAPPED DEVICES 136a * 137a E000 MCRAM EQU >E000 MICROCODE RAM 138a 0200 PAGLEN EQU >200 UCODE RAM PAGE SIZE (FOR CP 139a * 140a F800 VDPREG EQU >F800 VDP REGISTER ADDRESS 141a F900 VDPRD EQU >F900 VDP DATA READ ADDRESS MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 5 142a FA00 VDPWD EQU >FA00 VDP DATA WRITE ADDRESS 143a FD00 NRDYRD EQU >FD00 VDP DATA READ ADDRESS, NO R 144a * 145aF400 AORG >F400 146a * 147a * 148aF400 PCL BSS 2 PAGE CAPTURE LATCH O/P 149aF402 BR BSS 2 B REGISTER O/P 150aF404 AR BSS 2 A REGISTER O/P 151aF406 YBUS BSS 2 ALU Y BUS O/P 152aF408 PR BSS 2 P REGISTER O/P 153aF40A DLO BSS 2 D LATCH O/P 154aF40C BSS 1 TOP BYTE IS EMPTY 155aF40D APA BSS 1 ALU PAGE ADDRESS (3 LS BITS 156aF40E AM BSS 2 A MULTIPLEXER O/P 157aF410 BM BSS 2 B MULTIPLEXER O/P 158aF412 TPD BSS 2 TELETEXT PAGE DATA (ALU REA 159a * SPARE UP TO >F41F 160aF420 AORG >F420 (8 BIT) 161aF420 CHR BSS 1 CHARACTER LATCH O/P 162aF421 ACC BSS 1 ACCENT LATCH O/P 163aF422 SRADR BSS 1 SCRATCH PAD RAM ADDRESS 164aF423 BSS 1 165aF424 RCS BSS 1 REMOTE CONTROL STATUS 166aF425 RCD BSS 1 REMOTE CONTROL DATA 167aF426 SFE BSS 1 SPANISH FRONT END 168aF427 TFE BSS 1 UK FRONT END 169aF428 CTL BSS 1 CHARACTER TRANSLATION O/P 170aF429 SRD BSS 1 SCRATCH RAM O/P 171a * 172a * MICRO CODE LATCH OUTPUT EQUATES 173a * 174aF440 AORG >F440 175aF440 UCBYT0 BSS 1 176aF441 UCBYT1 BSS 1 177aF442 ROMADR BSS 1 MS BYTE OF ROM ADDRESS 178aF443 BSS 1 LS BYTE OF ROM ADDRESS 179aF444 RAMA BSS 1 RAM ADDRESS BYTE 180aF445 CONST BSS 1 CONSTANT BYTE 181aF446 UCBYT6 BSS 1 182aF447 UCBYT7 BSS 1 183a * 184a * LOAD, BRDY, LRDY AND JUMP 185a * 186aF448 AORG >F448 187aF448 JUMP BSS 8 JUMP LOGIC STATUS 188a * 189a * SPARE AREA SELECT 190a * 191aF458 AORG >F458 192a * 193a * REMOTE CONTROL LATCH (WRITE ONLY) 194a * 195aF460 AORG >F460 196aF460 RCOUT BSS 8 197a * 198a * VDP REGISTERS 199a * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 6 200aF470 AORG >F470 201aF470 VDPRGS BSS 16 202a F470 VPA EQU VDPRGS 203a * 204aF500 AORG >F500 205aF500 SPRAM BSS 128 206a * 207aF618 AORG >F618 208a * 209aF618 CPULSE BSS 1 ALU CLOCK 210a * 211a * EQUATES FOR THE 32K STATIC, MAPPED @>6000 ->BFFF 212a * 213a4000 AORG >4000 214a4000 MCSTOR BSS >7000 MICROCODE DATA FOR DOWNLOAD 215a 0007 LASTMP EQU 7 LAST MICROCODE RAM MAP USED 216a * 217a * RAM ACTUALLY STARTS AT >4000, BUT THE MICRO CODE 218a * IS LOADED INTO THIS AREA, SO THE BOTTOM IS MOVED 219a * TO >A000 TO ALLOW ROOM FOR THE MICRO-CODE 220a * 221aB000 AORG >B000 222a B000 STATIC EQU $ 223aB000 CMDPTR BSS 2 POINTER INTO COMMAND STORE 224aB002 CMDSTR BSS >100-2 EXTERNAL COMMAND STORE 225a B100 CMDEND EQU $ 226a B100 SLTEXT EQU $ 227a * 228a * Internal TMS9995 Ram definfitions 229a * 230aF000 AORG >F000 231aF000 WSP BSS 32 Work space 232a F001 R0LSB EQU WSP+1 LS BYTE OF R0 233a F005 R2LSB EQU WSP+R2+R2+1 LS BYTE OF R2 234a F00B R5LSB EQU WSP+R5+R5+1 LS BYTE OF R5 235a F011 R8LSB EQU WSP+R8+R8+1 LS BYTE OF R8 236a F010 XOPWKS EQU $-16 237aF020 BSS 16 238aF030 SERWKS BSS 32 WORKSPACE FOR SERIAL OPERAT 239aF050 CLKWSP BSS 32 WORKSPACE FOR CLOCK OPERATI 240a F064 CLKR10 EQU CLKWSP+R10+R10 FLAG REGISTER IN CLOCK WORK 241a F05A SETAWS EQU CLKWSP+10 'SETADR' WORKSPACE 242aF070 BSS 10 243aF07A LINEND BSS 2 END OF LINE FLAG 244aF07C DGKBRA BSS 2 DIGIT KEY BRANCH ADR. STORE 245aF07E SPECBR BSS 2 SPECIAL KEY SEQ. BRANCH STO 246aF080 INTBRA BSS 2 TIMER INTERRUPT BRANCH ADR 247aF082 SLWCNT BSS 2 DELAY COUNTER FOR SLOW RUN 248aF084 DSPNTR BSS 2 CURRENT DISPLAY POINTER 249aF086 OLDADR BSS 2 UCode address for trace 250aF088 OLDAD2 BSS 2 251aF08A OLDAD3 BSS 2 252aF08C OLDAD4 BSS 2 253aF08E BPADR BSS 2 BreakPoint address 1 254aF090 BPADR2 BSS 2 BreakPoint address 2 255aF092 BPLP1 BSS 2 BreakPoint LOOP 1 256aF094 BPLP2 BSS 2 BreakPoint LOOP 2 257aF096 FLAG1 BSS 2 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 7 258aF098 FLAG2 BSS 2 259aF09A ADR1 BSS 2 260aF09C ADR2 BSS 2 261aF09E CLKCT1 BSS 2 CLOCK COUNTER MS WORD 262aF0A0 CLKCT2 BSS 2 CLOCK COUNTER LS WORD 263aF0A2 P26ER1 BSS 2 264aF0A4 P26ER2 BSS 2 265aF0A6 P26ER3 BSS 2 266a *ICDATA BSS 2 267a *IDDATA BSS 2 268aF0A8 TQDATA BSS 2 269aF0AA LINCNT BSS 2 TELETEXT LINE COUNTER 270aF0AC MODIDT BSS 10 IDT STORE + 2 NULS 271a F0B6 SAVSTT EQU $ **** DATA SAVE AREA **** 272aF0B6 ARSAV BSS 2 A REGISTER 273aF0B8 BRSAV BSS 2 B REGISTER 274aF0BA PRSAV BSS 2 P REGISTER 275aF0BC AMSAV BSS 2 A MUX O/P 276aF0BE BMSAV BSS 2 B MUX O/P 277aF0C0 DRSAV BSS 2 D LATCH O/P 278aF0C2 PCLSAV BSS 2 PAGE CAPTURE LATCHES 279aF0C4 TPDSAV BSS 2 TELETEXT PAGE DATA 280aF0C6 RCDSAV BSS 1 REMOTE CONTROL DATA 281aF0C7 RCSSAV BSS 1 REMOTE CONTROL STATUS 282aF0C8 TFESAV BSS 1 UK TEXT FRONT END 283aF0C9 SFESAV BSS 1 SPANISH TEXT FRONT END 284aF0CA ACCSAV BSS 1 ACCENT LATCH SAVE 285aF0CB CHRSAV BSS 1 CHARACTER LATCH 286aF0CC CTLSAV BSS 1 CHR. TRANSLATION LOGIC 287aF0CD SRASAV BSS 1 SCRATCH RAM ADDRESS 288aF0CE SRDSAV BSS 1 SCRATCH RAM DATA 289aF0CF APASAV BSS 1 ALU PAGE SELECT SAVE 290aF0D0 VPASAV BSS 1 VDP PAGE SELECT SAVE 291aF0D1 CLK1SV BSS 1 292aF0D2 RDYSAV BSS 1 293aF0D3 VDPSAV BSS 8 VDP REGISTER SAVES 294a F0DB SAVEND EQU $ 295aF0DB KEYFLG BSS 1 DEBOUNCE COUNTER 296aF0DC KEYPRO BSS 1 KEY BEING PROCESSED 297aF0DD RCEMU BSS 1 REMOTE CONTROL DATA STORE F 298aF0DE RMCOLR BSS 1 REMOTE KEYBOARD I/P COLOU 299aF0DF BSS 1 bodge to fix the even comma 300a * EVEN The even command currently doesn't 301aF0E0 STACK BSS 10 302a ********************************************************* 303a * 304a * VDP ram allocation 305a * 306a ********************************************************* 307a0000 AORG 0 308a * 309a * VDP DISPLAY RAM EQUATES 310a * 311a 0050 ROW EQU 80 312a 0002 CHAR EQU 2 313a * 314a FFFE BAGC0 EQU $-2 Char gen 0 - alhpanumerics 315a0000 BSS >500 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 8 316a 04FE BAGC1 EQU $-2 Char gen 1 - not used 317a 04FE BAGC2 EQU $-2 Char gen 2 - not used 318a 04FE BAGC3 EQU $-2 Char gen 3 - Graphics 319a0500 BSS >500 320a 09FF BAPA EQU $-1 321a0A00 DSPLAY BSS 25*80 Display area 322a 0F00 SPRPAG EQU 16*ROW+DSPLAY 323a11D0 BSS 25*80 SCRATCH RAM DISPLAY PAGE 324a19A0 DSPLY3 BSS 25*80 DISPLAY AREA (REM. CONT) 325a2170 QERYPG BSS 25*80 PAGE WITH 'PAGE NO?' ON IT 326a2940 QERYP2 BSS 25*80 PAGE WITH 'CLEAR PAGE NO' 327a3110 TTXPG8 BSS 25*80 TELETEXT PAGE 8 (MISSING BI 328a 38E0 DSPEND EQU $ END OF AREA TO BE CLEARED 329a38E0 TTXPG0 BSS 25*80 TELETEXT PAGE 0 330a40B0 TTXPG1 BSS 25*80 TELETEXT PAGE 1 331a4880 TTXPG2 BSS 25*80 TELETEXT PAGE 2 332a5050 TTXPG3 BSS 25*80 TELETEXT PAGE 3 333a5820 TTXPG4 BSS 25*80 TELETEXT PAGE 4 334a5FF0 TTXPG5 BSS 25*80 TELETEXT PAGE 5 335a67C0 TTXPG6 BSS 25*80 TELETEXT PAGE 6 336a6F90 TTXPG7 BSS 25*80 TELETEXT PAGE 7 337a 775F BAMT EQU $-1 Start of buffer area 338a 775F BAMP EQU $-1 339a 7760 BAMTF EQU $ End of buffer 340a * MICRO-CODE DISPLAY EQUATES 341a 1040 UCLIN1 EQU 20*ROW+DSPLAY MICRO CODE TEXT D 342a 10E0 UCLIN2 EQU 22*ROW+DSPLAY MICRO CODE TEXT D 343a 1158 PNUCAD EQU ROW+40+UCLIN2 MICRO CODE ADR DI 344a 1160 PNOLDA EQU 23*ROW+48+DSPLAY LAST ADDR. DISPLAY POSITI 345a 0FF0 PNRX EQU 19*ROW+DSPLAY RX DATA DISPLAY R 346a * 347a * OTHER DISPLAY EQUATES 348a * 349a 0A64 PNLOAD EQU DSPLAY+ROW+20 LOAD MESSAGE POSI 350a 0A50 PNINPS EQU DSPLAY+ROW INPUTS MSG POSITI 351a 0AB6 PNTFE EQU PNINPS+ROW+22 UK TEXT 352a 0ABE PNSFE EQU PNINPS+ROW+30 SPANISH TEXT 353a 0AC8 PNRCD EQU PNINPS+ROW+40 REMOTE CONTROL DA 354a 0AD0 PNRCS EQU PNINPS+ROW+48 REMOTE CONTROL ST 355a 0A92 PNCLK EQU ROW+66+DSPLAY CLOCK MESSAGE POS 356a 0ADE PNCKCT EQU PNCLK+ROW-4 CLOCK COUNTER POS 357a * 358a 0AA6 I2CCPN EQU 2*ROW+6+DSPLAY 359a 0AAC I2CDPN EQU 2*ROW+12+DSPLAY 360a 0A26 PNI2C EQU -2*ROW+PNRCD-CHAR I2C POSITION 361a 0A26 PNSIF EQU PNI2C SIF POSITION 362a * 363a 0B90 PNINTS EQU 5*ROW+DSPLAY INTERNALS POSITIO 364a 0BE2 PNPLL EQU PNINTS+ROW+2 PLL/FLAG POSITION 365a 0BFA PNACC EQU PNINTS+ROW+26 ACCENT POSITION 366a 0C02 PNCHR EQU PNINTS+ROW+34 CHAR. POSITION 367a 0C0A PNCTL EQU PNINTS+ROW+42 CTL POSITION 368a 0C14 PNPCL EQU PNINTS+ROW+52 PCL POSITION 369a 0C1E PNSRA EQU PNINTS+ROW+62 SCRATCH RAM ADDRE 370a 0C2A PNSRD EQU PNINTS+ROW+74 SCRATCH RAM DATA 371a * 372a 0C80 PNREGS EQU 8*ROW+DSPLAY 'REGISTERS' HEADE 373a 0CC4 PNJUMP EQU 8*ROW+68+DSPLAY MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 9 374a 0CE6 PNAR EQU PNREGS+ROW+22 A REGISTER DATA 375a 0CEE PNBR EQU PNREGS+ROW+30 B REGISTER DATA 376a 0CF6 PNDR EQU PNREGS+ROW+38 D REGISTER DATA 377a 0D02 PNPR EQU PNREGS+ROW+50 P REGISTER DATA 378a 0D0A PNTPD EQU PNREGS+ROW+58 TPD READ REGISTER 379a * 380a 0D70 PNMUXS EQU 11*ROW+DSPLAY MUX MESSAGE POSIT 381a 0DD6 PNAM EQU PNMUXS+ROW+22 A MUX 382a 0DDE PNBM EQU PNMUXS+ROW+30 B MUX 383a * 384a 0DEA PNYBUS EQU 12*ROW+42+DSPLAY 385a * 386a 0E00 PNPSA EQU 12*ROW+64+DSPLAY 387a 0E0A PNPSV EQU PNPSA+10 388a * 389a 0E82 PNVDPR EQU 14*ROW+34+DSPLAY 390a 0FD4 PNVBI EQU 18*ROW+52+DSPLAY VBI POSITION 391a 0F90 PNLBE EQU 17*ROW+64+DSPLAY L/B/E 392a 0F9A PNLINC EQU 17*ROW+74+DSPLAY TELETEXT LINE COU 393a * 394a * BREAKPOINT EQUATES. 395a * 396a 397a 0E60 PNBPH EQU 14*ROW+DSPLAY BREAK POINT HEADE 398a 0EB0 PNBP12 EQU PNBPH+ROW BREAK POINTS 1 & 399a 0F00 PNBPA EQU PNBP12+ROW BREAK POINT ADDRE 400a *PNBP1 EQU PNBPA+16 BP 1 ADR. 401a *PNBP2 EQU PNBPA+26 BP 2 ADR. 402a *PNBPL EQU PNBPA+ROW BREAK POINT LOOP 403a *PNBPL1 EQU PNBPL+16 BP 1 LOOP 404a *PNBPL2 EQU PNBPL+26 BP 2 LOOP 405a *PNBPS EQU PNBPL+ROW BREAK POINT STAT 406a *PNBPS1 EQU PNBPS+14 STATUS FOR BP1 407a *PNBPS2 EQU PNBPS+24 STATUS FOR BP2 408a 0F08 PNBP1 EQU PNBPA+8 BP 1 ADR. 409a 0F10 PNBP2 EQU PNBPA+16 BP 2 ADR. 410a 0F1A PNGOTO EQU PNBPA+26 GOTO ADDRESS. 411a 0F50 PNBPL EQU PNBPA+ROW BREAK POINT LOOP M 412a 0F58 PNBPL1 EQU PNBPL+8 BP 1 LOOP 413a 0F60 PNBPL2 EQU PNBPL+16 BP 2 LOOP 414a 0FA0 PNBPS EQU PNBPL+ROW BREAK POINT STATUS 415a 0FA8 PNBPS1 EQU PNBPS+8 STATUS FOR BP1 416a 0FB0 PNBPS2 EQU PNBPS+16 STATUS FOR BP2 417a * 418a 0F78 PNRMIP EQU 17*ROW+40+DSPLAY REMOTE CONTROL KE 419a 0AA2 PNROM EQU 2*ROW+2+DSPLAY ROM MESSAGE POSIT 420a 1180 PNXTRA EQU 24*ROW+DSPLAY EXTRA PAGE RAM PO 421a 0DC0 PNDERR EQU 12*ROW+DSPLAY DATA ERROR MESSAG MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 10 33 PAGE 34 * 35 0000 AORG 0 36 0000 F000 00C0 DATA WSP,START Reset vector 37 * 38 0040 AORG >40 XOP VECTORS 39 0040 F05A 17CC DATA SETAWS,SETADR SET VDP ADDRESS - XOP 0 40 0044 F010 17F0 DATA XOPWKS,PUTEXT PUT TEXT ON SCREEN - XOP 1 41 0048 F010 1834 DATA XOPWKS,WRTHXN WRITE HEX NIBBLE 42 004C F010 186C DATA XOPWKS,WRTHXB WRITE HEX BYTE 43 0050 F010 1880 DATA XOPWKS,WRTHXW WRITE HEX WORD 44 0054 F010 1848 DATA XOPWKS,WRT3RG WRITE 3 HEX NIBBLES, ATR IN 45 0058 F010 180C DATA XOPWKS,WRTBIT WRITE REGISTER BITS TO SCRE 46 005C F010 17E2 DATA XOPWKS,MSGENT AS MSG, BUT ASSUMES ATTRIB 47 0060 F010 185C DATA XOPWKS,W10BXP WRITE 3 HEX NIBBLES (10 BIT 48 0064 F010 1840 DATA XOPWKS,W3HNXP WRITE 3 HEX NIBBLES (11 BIT 49 0068 F010 1876 DATA XOPWKS,W2HNXP WRITE 2 HEX NIBBLES (ADR IN 50 006C F010 1878 DATA XOPWKS,BYTWRT WRITE 2 HEX NIBBLES, ADR AL 51 0070 F010 1836 DATA XOPWKS,NIBBLW WRITE 1 HEX NIBBLE, ADR ALR 52 0074 F010 18B2 DATA XOPWKS,RENTRY READ A BYTE FROM THE 9902 53 0078 F010 18C4 DATA XOPWKS,WENTRY WRITE A BYTE TO THE 9902 54 * 55 0080 AORG >80 56 COPY DATAS.990 1b * 2b * DATA STATEMENTS ETC FOR EMULATOR ROUTINES 3b * 4b * AUTHOR: COLIN HINSON 5b * 6b * 7b * BAUD RATE TABLE FOR 9902 @ 3MHZ USING TMS 9995. 8b * 9b0080 001A BD1920 DATA >1A 19,200 BAUD 10b0082 0034 BD9600 DATA >34 9600 BAUD 11b * DATA >68 4800 BAUD 12b * DATA >D0 2400 BAUD 13b * DATA >1A0 1200 BAUD 14b * DATA >341 600 BAUD 15b * DATA >4D0 300 BAUD 16b * DATA >638 110 BAUD 17b * 18b * Constants 19b * 20b0084 EVEN 21b 000A QTYCLK EQU 10 22b0084 000A TEN DATA 10 23b0086 0800 SLWTIM DATA >800 24b 002B SBTQTY EQU 43 QTY OF TX'D BYTES FOR SERIA 25b * 26b0088 0000 WD0000 DATA 0 USED TO FORCE Z-MID ON XDS 27b008A 0001 WD0001 DATA >0001 28b008C 0002 WD0002 DATA >0002 29b008E 0003 WD0003 DATA >0003 30b0090 0004 WD0004 DATA >0004 31b0092 0008 WD0008 DATA >0008 32b0094 000C WD000C DATA >000C 33b0096 0010 WD0010 DATA >0010 34b0098 0020 WD0020 DATA >0020 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 11 35b009A 0040 WD0040 DATA >0040 36b009C 0080 WD0080 DATA >0080 37b009E 0100 WD0100 DATA >0100 38b00A0 0200 WD0200 DATA >0200 39b00A2 0400 WD0400 DATA >0400 40b00A4 0800 WD0800 DATA >0800 41b00A6 0C00 WD0C00 DATA >0C00 42b00A8 1000 WD1000 DATA >1000 43b00AA 1400 WD1400 DATA >1400 44b00AC 2000 WD2000 DATA >2000 45b00AE 4000 WD4000 DATA >4000 46b00B0 8000 WD8000 DATA >8000 47b 009E LINRDY EQU WD0100 48b 00A0 BYTRDY EQU WD0200 49b 00A2 EXTRDY EQU WD0400 50b 00A4 JMPBIT EQU WD0800 51b * 52b 008A BYTE00 EQU WD0001 53b 009E BYTE01 EQU WD0100 54b 00A0 BYTE02 EQU WD0200 55b 00A8 BYTE10 EQU WD1000 56b 00AC BYTE20 EQU WD2000 57b 1800 CHGEN3 EQU >1800 58b00B2 02 BYTESP BYTE >02 59b00B3 01 NULL00 BYTE >01 60b 0003 DOT EQU >03 61b 00B0 BYTE80 EQU WD8000 62b00B4 83 BYTE83 BYTE >83 63b00B5 E0 BYTEE0 BYTE >E0 64b00B6 F8 BYTEF8 BYTE >F8 65b00B7 FE BYTEFE BYTE >FE 66b00B8 FF BYTEFF BYTE >FF 67b * 68b 00A8 DREG EQU WD1000 DREG BIT IN UCBYT2 69b 00B0 RVDP EQU WD8000 RVDP BIT IN UCBYT6 70b 00AE VDPC EQU WD4000 VDPC BIT IN UCBYT6 71b 4000 VBIBIT EQU >4000 VBI BIT IN RCS 72b 8000 OOLBIT EQU >8000 OUT OF LOCK BIT IN RCS 73b 00A0 EXTBIT EQU WD0200 74b 0094 FEBITS EQU WD000C 75b 009E WEBIT EQU WD0100 76b * 77b 00E0 WHITE EQU >E0 78b 00C0 CYAN EQU >C0 79b 0020 RED EQU >20 80b 0040 GREEN EQU >40 81b 0060 YELLOW EQU >60 82b 0080 BLUE EQU >80 83b 00A0 MAGNTA EQU >A0 84b A400 MGNTA4 EQU >A400 85b * 86b00B9 4C TEXTL BYTE 'L' 87b00BA 42 TEXTB BYTE 'B' 88b00BB 45 TEXTE BYTE 'E' 89b00BC 4A TEXTJ BYTE 'J' 90b00BD 2D HYPHEN BYTE '-' 91b00BE 1B ESCAPE BYTE >1B 92b * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 12 93b00BF 18 DCML24 BYTE 24 USED FOR VDPREG 24 CHECK 94b * 95b * CONTROL FLAGS IN R14 (MAIN WORKSPACE) 96b * 97b 008A ENTBP1 EQU WD0001 IN PROCESS OF ENTERING BP1 98b 008C HITBP1 EQU WD0002 HIT BP 1 99b 0090 ENTBP2 EQU WD0004 IN PROCESS OF ENTERING BP2 100b 0092 HITBP2 EQU WD0008 HIT BP 2 101b 0096 BPSET EQU WD0010 102b * 103b 009A ENTLP1 EQU WD0040 ENTERING LOOP 1 104b 009C ENTLP2 EQU WD0080 ENTERING LOOP 2 105b 009E CLRHIT EQU WD0100 FLAG TO CAUSE HIT TO BE CLE 106b 00A0 LOOPEK EQU WD0200 ENTERING A BP LOOP VALUE 107b 00A2 MIMFLG EQU WD0400 MIMIC ON DISPLAY 108b 00A4 TEXTON EQU WD0800 LOCALLY GENERATED TELETEXT 109b 00A8 EXTLRC EQU WD1000 EXTERNAL REMOTE CONTROL SEL 110b 00AC ROMON EQU WD2000 ROM/RAM MODE = ROM 111b 00AE PMODE EQU WD4000 MODE = DIGITS = PAGE NUMBER 112b 00B0 LINSET EQU WD8000 LINE READY WAS SET LAST TIM 113b * 114b 00B0 VBIFLG EQU WD8000 EVM VBI STATE FLAG 115b * 116b * R15 IS USED AS THE BRANCH INDEX REGISTER IN 'MAIN' 117b * EQUATES FOR THE VARIOUS OPTIONS ARE GIVEN BELOW: 118b * 119b 0002 RUN EQU 2 120b 0004 FAST EQU 4 121b 0006 SLOW EQU 6 122b 0008 STEP EQU 8 123b * 124b * CONTROL FLAGS IN R10 OF CLOCK WORKSPACE 125b * 126b 008A SENDP EQU WD0001 SEND THE PAGE FLAG 127b * 128b * CONTROL FLAGS IN R10 OF SERIAL WORKSPACE 129b * 130b 008A EOLFLG EQU WD0001 GO TO END OF LINE 131b 008C KEYVBI EQU WD0002 VBI KEY HAS BEEN PRESSED. 132b * 133b * FLAGS FOR TOGGLE FUNCTIONS 134b * 135b 008A KEYT EQU WD0001 136b 008C KEYQ EQU WD0002 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 13 57 PAGE 58 * 59 COPY INIT.990 1c ********************************************************* 2c * 3c * INIT - Main initialization 4c * 5c * Called by: None 6c * 7c * Calls: INIT 8c * GENCAR 9c * DISPN 10c * MEMIDT 11c * INROW 12c * CHKPGN 13c * CLRDIS 14c * 15c * AUTHOR: COLIN HINSON 16c ********************************************************* 17c * 18c * Clear the internal 9995 ram 19c * 20c00C0 02A0 START STWP R0 Point to first ram location 21c00C2 05C0 INCT R0 22c00C4 04F0 CRLOOP CLR *R0+ Clear a word 23c00C6 0280 F0FA CI R0,>F0FA End of internal ram ? 24c00CA 1AFC JL CRLOOP No - loop 25c * 26c * CLEAR THE STATIC RAM (32K) 27c * 28c00CC 0200 B000 LI R0,STATIC POINT TO FIRST LOCATION 29c00D0 0201 E000 LI R1,MCRAM POINT TO LAST LOCATION 30c00D4 04F0 CLRSTC CLR *R0+ 31c00D6 8040 C R0,R1 CHECK FOR END 32c00D8 1AFD JL CLRSTC LOOP TILL DONE 33c * 34c * SET UP REGISTER POINTERS 35c * 36c00DA 020A F0E0 LI R10,STACK Initalise the stack pointer 37c00DE 020D FA00 LI R13,>FA00 POINT TO VRAM WRITE 38c00E2 C80D F020 MOV R13,@XOPWKS+R8+R8 SET UP XOP VRAM POINTER 39c * 40c * Init VDP 41c * 42c00E6 D020 FD00 MOVB @NRDYRD,R0 DO READ WITH NO READY STATU 43c00EA 06A0 1674 BL @INITCM INIT THE REGISTERS 44c00EE D020 FD00 MOVB @NRDYRD,R0 DO READ WITH NO READY STATU 45c00F2 D020 F900 MOVB @VDPRD,R0 DO RANDOM VRAM READ 46c00F6 06A0 1674 BL @INITCM RE-INIT THE CM REGISTERS 47c00FA 06A0 1690 BL @IBASE INIT THE POINTERS 48c * 49c * Init VDP ram 50c * 51c00FE 0200 0A00 LI R0,DSPLAY Point to start of VDP ram 52c0102 2C00 XOP R0,0 Program VDP pointer 53c0104 04C0 CLR R0 54c0106 0201 2EE0 LI R1,DSPEND-DSPLAY NUMBER OF BYTES TO CLEAR 55c010A D740 IVRLP MOVB R0,*VRAM CLEAR A BYTE MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 14 56c010C 0601 DEC R1 57c010E 16FD JNE IVRLP 58c * 59c * Download the character generators 60c * 61c0110 06A0 0E54 BL @GENCAR Download main character set 62c0114 04C6 CLR R6 63c0116 04C7 CLR R7 64c * 65c0118 06A0 160A BL @CLRALL CLEAR THE WHOLE SCREEN 66c * 67c * INITIALIZE THE TMS9902 FOR 9600 BAUD, 8 BITS, NO PARITY 68c * AND 2 STOP BITS. 69c * FOR FURTHER INFORMATION SEE THE 'TMS9902 DATA SHEET 70c * 71c011C 020C 0100 LI R12,PORT1 9902 ADDRESS 72c0120 1D1F SBO 31 RESET TMS9902 UART 73c0122 3220 00B4 LDCR @BYTE83,8 SET CONTROL REG. 74c0126 1E0D SBZ 13 DON'T SET UP INTERVAL TIMER 75c0128 3320 0080 LDCR @BD1920,12 BAUD RATE=19200 76c012C 1E14 SBZ 20 DISABLE OTHER INTERRUPTS 77c012E 1E15 SBZ 21 78c * 79c * ENTRY TO HERE FROM UCODE RESET KEY 80c * 81c0130 020C 1000 UCRSET LI R12,KBDCRU 82c0134 04C1 CLR R1 83c0136 3001 LDCR R1,0 CLEAR 2 259S 84c * SBO ICLK SET UP I2C CONTROLS 85c * SBO IDATA 86c * MOV @WD0001,@IDDATA 87c * MOV @WD0001,@ICDATA 88c0138 022C 0020 AI R12,>20 POINT TO 3RD LS259 89c013C 3201 LDCR R1,8 AND CLEAR IT AS WELL 90c * 91c * SET UP CLOCK WORKSPACE 92c * 93c013E 02E0 F050 LWPI CLKWSP 94c0142 0205 0FF0 LI R5,PNRX POINT TO T/TEXT DATA POSN 95c0146 0206 20F8 LI R6,DSTART+2 POINT TO START OF TX DATA 96c014A 0207 002A LI R7,42 CHARS PER ROW 97c014E 0208 0001 LI R8,1 SET TO FORCE 'LINRDY' 98c0152 0209 20F6 LI R9,DSTART Load address of data 99c0156 020C 000A LI R12,QTYCLK SET UP CLOCK COUNT 100c * 101c * SET UP SERIAL WORKSPACE 102c * 103c015A 02E0 F030 LWPI SERWKS 104c015E 0205 002B LI R5,SBTQTY SET UP BYTES PER LINE 105c0162 0208 B100 LI R8,SLTEXT START OF TEST DATA 106c0166 020C 1030 LI R12,CLKCRU 107c016A 02E0 F000 LWPI WSP 108c * 109c016E 06A0 18D4 BL @SETUP1 SET UP THE BLOCK DIAGRAM 110c0172 06A0 1542 BL @WBPADR WRITE THE BREAKPOINT DATAS 111c0176 06A0 0CA8 BL @XFERMC TRANSFER THE MICROCODE 112c017A 06A0 0DA0 BL @SETUP2 SET UP THE MICROCODE STORE 113c * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 15 114c * Set digit key branch to remote command input 115c * 116c017E 0200 033A LI R0,SETRC Load address 117c0182 C800 F07C MOV R0,@DGKBRA Save branch address 118c * 119c * SET UP POINTER FOR DISPLAY TOGGLE 120c * 121c0186 0200 0A00 LI R0,DSPLAY 122c018A C800 F084 MOV R0,@DSPNTR 123c * 124c018E E3A0 00A4 SOC @TEXTON,R14 SET TEXT CONTROL FLAG 125c0192 E3A0 00A2 SOC @MIMFLG,R14 SET DISPLAY TO MIMIC 126c * 127c0196 06A0 0F72 BL @SETSRL SET UP SERIAL DATA 128c * 129c019A 06A0 1976 BL @SETUP3 SET UP RAM DISPLAY PAGES 130c * 131c019E 06A0 0628 BL @TXCOLR SET UP CRU AND COLOURS 132c * 133c * CLEAR ALL TELETEXT PAGES TO DOTS 134c * 135c01A2 04C3 CLR R3 START AT PAGE 0 136c01A4 06A0 161E TCLRLP BL @CLRTPG CLEAR THE PAGE 137c01A8 0583 INC R3 COUNT THE PAGE 138c01AA 0283 0008 CI R3,8 CHECK FOR LAST PAGE DONE 139c01AE 1AFA JL TCLRLP LOOP TILL ALL DONE 140c * 141c01B0 020C 1000 LI R12,KBDCRU 142c01B4 1E06 SBZ RESET APPLY THE RESET 143c01B6 0201 0006 LI R1,6 144c01BA D020 F618 CPLOOP MOVB @CPULSE,R0 145c01BE 0601 DEC R1 146c01C0 16FC JNE CPLOOP 147c01C2 1D06 SBO RESET REMOVE THE RESET 148c * SET VBI TO A ONE 149c01C4 E3A0 00B0 SOC @VBIFLG,R14 SET THE FLAG 150c01C8 020C 1000 LI R12,KBDCRU POINT TO BASE ADDRESS 151c01CC 1D0D SBO EVMVBI SET VBI HIGH 152c01CE E820 008A SOC @SENDP,@CLKWSP+R10+R10 SEND TEXT F064 153c * 154c01D4 D820 008A MOVB @BYTE00,@RCOUT CLEAR THE REMOTE CONTROL F460 155c * 156c01DA 0200 19A0 LI R0,DSPLY3 157c01DE C800 B000 MOV R0,@CMDPTR 158c * 159c01E2 0200 2000 LI R0,RED*256 160c01E6 D800 F0DE MOVB R0,@RMCOLR SET UP REMOTE I/P COLOUR 161c * 162c * INIT THE SAVE AREA TO >A7 (UNLIKELY NUMBER ON INIT) 163c * 164c01EA 0200 F0B6 LI R0,SAVSTT 165c01EE 0201 A7A7 LI R1,>A7A7 166c01F2 DC01 SAVCLR MOVB R1,*R0+ 167c01F4 0280 F0DB CI R0,SAVEND 168c01F8 1AFC JL SAVCLR 169c * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 16 170c01FA 0460 01FE B @MAIN 60 COPY MAIN.990 1d ********************************************************* 2d * 3d * MAIN - READ ALL THE DATA AVAILABLE, THEN RUN SYSTEM 4d * 5d * AUTHOR: COLIN HINSON 6d ********************************************************* 7d01FE 020C 1000 MAIN LI R12,KBDCRU POINT TO MUX/KEYBOARD 8d0202 1E11 SBZ CPUACC SWITCH TO ALU MODE 9d0204 06A0 1256 BL @UPDATE 10d * 11d0208 06A0 1712 GETKLP BL @WRTRDY WRITE THE READY BITS 12d020C 06A0 031A BL @KEY 13d * 14d0210 C06F 021C GTKL10 MOV @SERTBL(R15),R1 GET THE ADDRESS 15d0214 0451 B *R1 16d * 17d0216 06A0 1256 XUPDAT BL @UPDATE UPDATE THE SCREEN 18d021A 10F6 JMP GETKLP AND LOOP BACK 19d * 20d021C 0216 0228 SERTBL DATA XUPDAT,XRUN,XFAST,XSLOW,XSTEP,XFAST 21d * 22d * RUN 23d * 24d0228 0420 0B76 XRUN BLWP @GENCLK SEND A CLOCK PULSE 25d022C 06A0 02B2 BL @DOBPTS SORT OUT THE BREAKPOINTS 26d0230 06A0 025E BL @SAVREM SAVE REMOTE CONTROL 27d * 28d0234 C060 F442 MOV @ROMADR,R1 GET THE ADDRESS 29d0238 2E41 XOP R1,9 WRITE THE UCODE MS 30d023A 1158 DATA PNUCAD 31d023C 4000 DATA GREEN*256 32d023E 10E4 JMP GETKLP AND LOOP BACK 33d * 34d * SLOW 35d * 36d0240 0620 F082 XSLOW DEC @SLWCNT UPDATE COUNTER 37d0244 16E1 JNE GETKLP LOOP BACK IF NOT ZERO 38d0246 C820 0086 MOV @SLWTIM,@SLWCNT RESET THE COUNTER F082 39d * 40d * FAST 41d * 42d024C 0420 0B76 XFAST BLWP @GENCLK SEND A CLOCK PULSE 43d0250 06A0 02B2 BL @DOBPTS SORT OUT THE BREAKPOINTS 44d0254 06A0 1256 BL @UPDATE UPDATE THE SCREEN 45d0258 06A0 025E BL @SAVREM SAVE REMOTE CONTROL 46d025C 10D5 JMP GETKLP AND LOOP BACK 47d * 48d * SAVE ANY NEW REMOTE CONTROL 49d * 50d025E C020 F446 SAVREM MOV @UCBYT6,R0 51d0262 2020 00A0 COC @EXTBIT,R0 IS EXT BIT SET? 52d0266 1613 JNE CKEXIT NO, EXIT 53d0268 C020 F440 MOV @UCBYT0,R0 54d026C 2420 0094 CZC @FEBITS,R0 IS THIS AN XACK? 55d0270 160E JNE CKEXIT NO, EXIT MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 17 56d0272 C020 B000 MOV @CMDPTR,R0 GET ADR. TO WRITE TO 57d0276 8800 0C90 C R0,@D3END AT END OF DISPLAY? 58d027A 1202 JLE SAVR10 IF NOT THERE, SKIP 59d027C 0200 19A0 LI R0,DSPLY3 POINT TO START AGAIN 60d0280 2EA0 F425 SAVR10 XOP @RCD,10 WRITE THE REMOTE DATA TO VD 61d0284 E000 BYTE WHITE,0 IN WHITE 62d0286 0220 0006 AI R0,6 UPDATE BY 3 BYTES 63d028A C800 B000 MOV R0,@CMDPTR AND STORE IT 64d * 65d028E 045B CKEXIT RT 66d ********************************************************* 67d * 68d * SINGLE STEP THE ALU 69d * 70d ********************************************************* 71d0290 04CF XSTEP CLR R15 STOP ANY EXECUTION 72d0292 0420 0B76 BLWP @GENCLK SEND A CLOCK PULSE 73d0296 06A0 02B2 BL @DOBPTS SORT OUT THE BREAKPOINTS 74d029A 06A0 1256 XSTP10 BL @UPDATE UPDATE THE SCREEN 75d029E 10B4 JMP GETKLP AND LOOP BACK FOR A KEY 76d ********************************************************* 77d * 78d * ALU SERIAL MODE - STEP TO END OF LINE 79d * 80d ********************************************************* 81d * 82d * STEP TO END OF LINE 83d * 84d02A0 0420 0B76 SRUN10 BLWP @GENCLK SEND A SERIAL BYTE 85d02A4 D020 F07A MOVB @LINEND,R0 GET FLAG 86d02A8 13FB JEQ SRUN10 IF ZERO, NOT END OF LINE 87d02AA 04E0 F07A CLR @LINEND CLEAR THE FLAG 88d02AE 0460 0208 B @GETKLP AND DO KEY SCAN 89d ********************************************************* 90d * 91d * SUBROUTINE TO DEAL WITH THE BREAKPOINTS 92d * 93d ********************************************************* 94d02B2 23A0 0096 DOBPTS COC @BPSET,R14 IS THE BREAKPOINT SET? 95d02B6 1628 JNE DOBPXT NO, EXIT 96d * 97d * DEAL WITH BREAKPOINTS 98d * 99d02B8 C020 F086 MOV @OLDADR,R0 GET THE ADDRESS 100d02BC 1325 JEQ DOBPXT IF ZERO, IGNORE IT 101d02BE 8800 F08E C R0,@BPADR HAVE WE REACHED BP 1? 102d02C2 1606 JNE DOBP10 NO, TRY BP 2 103d02C4 E3A0 008C SOC @HITBP1,R14 104d02C8 0620 F092 DEC @BPLP1 COUNT THE LOOP 105d02CC 160C JNE DOBPX2 106d02CE 1008 JMP DOBP15 107d * 108d02D0 8800 F090 DOBP10 C R0,@BPADR2 HAVE WE REACHED BP2? 109d02D4 1619 JNE DOBPXT NO, EXIT 110d02D6 E3A0 0092 SOC @HITBP2,R14 111d02DA 0620 F094 DEC @BPLP2 COUNT THE LOOP 112d02DE 1603 JNE DOBPX2 IF NOT ZERO, SKIP 113d * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 18 114d * HALT THE SYSTEM ON A BREAKPOINT 115d * 116d02E0 04CF DOBP15 CLR R15 CLEAR THE BRANCH INDEX 117d02E2 43A0 0096 SZC @BPSET,R14 CLEAR THE B.PT FLAG 118d02E6 CE8B DOBPX2 MOV R11,*R10+ SAVE RETURN ADR 119d02E8 06A0 1542 BL @WBPADR WRITE THE ADDRESSES ETC 120d02EC 43A0 008C SZC @HITBP1,R14 CLEAR THE HIT FLAGS 121d02F0 43A0 0092 SZC @HITBP2,R14 122d02F4 0200 030A LI R0,ABTHIT LOAD ADR. OF HIT CLEAR ROUT 123d02F8 C800 F07C MOV R0,@DGKBRA 124d02FC 0200 030A LI R0,ABTHIT POINT TO ABORT ROUTINE 125d0300 C800 F07E MOV R0,@SPECBR 126d0304 064A DECT R10 127d0306 C2DA MOV *R10,R11 128d0308 045B DOBPXT RT 129d * 130d * ROUTINE TO RE-WRITE DISPLAY AFTER A HIT. 131d * 132d030A 06A0 1542 ABTHIT BL @WBPADR Display the address 133d030E 04E0 F07C CLR @DGKBRA CLEAR THE DIGIT ADDRESS 134d0312 04E0 F07E CLR @SPECBR CLEAR THE CONTROL KEY ADDRE 135d0316 0460 032C B @KEY100 AND EXECUTE THE KEY 61 COPY KEY1.990 1e ********************************************************* 2e * 3e * KEY - Keyboard scanning routine 4e * 5e * AUTHOR: COLIN HINSON 6e ********************************************************* 7e * 8e * Start of KEYboard routines 9e * 10e031A CE8B KEY MOV R11,*R10+ Save return address 11e031C 06A0 0EDC BL @ENCODE See if key pressed 12e0320 0281 0010 CI R1,>10 Digit key ? 13e0324 1A07 JL KDIGIT Yes - jump 14e * 15e0326 C020 F07E MOV @SPECBR,R0 GET SPECIAL KEY BR. ADR. 16e032A 1603 JNE BRANR0 NOT ZERO, SPECIAL SEQUENCE 17e032C 0A11 KEY100 SLA R1,1 18e032E C021 066A MOV @KEYTAB->20(R1),R0 Offset into table 19e0332 0450 BRANR0 B *R0 Go process key 20e * 21e * THE BRANCH TABLE FOR THE KEYS IS IN FILE 'KEY2' 22e * 23e ********************************************************* 24e * 25e * DIGIT KEY HAS BEEN PRESSED 26e * 27e * IF A DIGIT IS PRESSED WHEN NOT IN BPT MODE, IT IS 28e * ASSUMED TO BE AN INPUT NIBBLE FOR THE REMOTE CONTROL 29e * 30e ********************************************************* 31e0334 C020 F07C KDIGIT MOV @DGKBRA,R0 32e0338 16FC JNE BRANR0 33e * 34e * Remote command input 35e * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 19 36e033A 06C1 SETRC SWPB R1 Data to MSByte 37e033C 2060 00A6 COC @WD0C00,R1 COMMAND = DOWNLOAD? 38e0340 1604 JNE SETRC1 NO, SKIP 39e0342 0200 A000 LI R0,MAGNTA*256 40e0346 D800 F0DE MOVB R0,@RMCOLR SET UP NEW COLOUR 41e * 42e034A 04C0 SETRC1 CLR R0 43e034C D020 F0DE MOVB @RMCOLR,R0 GET THE CURRENT COLOUR 44e0350 0280 2000 CI R0,RED*256 ARE WE IN COMMAND MODE? 45e0354 1304 JEQ STRC30 YES, JUMP 46e0356 2C81 XOP R1,2 WRITE THE NEW INPUT 47e0358 0F78 DATA PNRMIP 48e035A A000 DATA MAGNTA*256 49e035C 1003 JMP SETRC3 50e * 51e035E 2C81 STRC30 XOP R1,2 WRITE THE NEW INPUT 52e0360 0F78 DATA PNRMIP 53e0362 2000 DATA RED*256 54e * 55e0364 D760 F0DE SETRC3 MOVB @RMCOLR,*VRAM SET UP NEXT ATTRIBUTE 56e0368 D760 00BD MOVB @HYPHEN,*VRAM SET UP A DASH 57e * 58e036C 0A41 SLA R1,4 TO MS NIBBLE 59e036E D801 F0DD MOVB R1,@RCEMU SAVE 60e0372 0200 0384 LI R0,SETRC2 Load address of digit handl 61e0376 C800 F07C MOV R0,@DGKBRA 62e037A 0200 05A4 LI R0,KEYABT POINT TO ABORT ROUTINE 63e037E C800 F07E MOV R0,@SPECBR 64e0382 1022 JMP STRC20 65e * 66e * DEAL WITH SECOND REMOTE INPUT NIBBLE 67e * 68e0384 06C1 SETRC2 SWPB R1 Data to MSByte 69e0386 F801 F0DD SOCB R1,@RCEMU 70e038A 9820 00BE CB @ESCAPE,@RCEMU IS THIS AN ESCAPE? F0DD 71e0390 1604 JNE SETRC4 NO, SKIP 72e0392 0200 2000 LI R0,RED*256 SET UP MAGENTA 73e0396 D800 F0DE MOVB R0,@RMCOLR YES, SET UP COMMAND COLOUR 74e039A 04E0 F07C SETRC4 CLR @DGKBRA 75e039E 04E0 F07E CLR @SPECBR 76e03A2 D820 F0DD MOVB @RCEMU,@RCOUT SEND DATA TO ALU F460 77e03A8 1D38 SBO EMULD SEND A LOAD PULSE 78e * 79e * WRITE INPUT TO SCREEN IN COLOUR AS REQUIRED 80e * 81e03AA 04C0 CLR R0 82e03AC D020 F0DE MOVB @RMCOLR,R0 GET THE CURRENT COLOUR 83e03B0 0280 A000 CI R0,MAGNTA*256 ARE WE IN COMMAND MODE? 84e03B4 1605 JNE STRC40 NO, JUMP 85e03B6 2CE0 F0DD XOP @RCEMU,3 WRITE THE NEW INPUT 86e03BA 0F78 DATA PNRMIP 87e03BC A000 DATA MAGNTA*256 88e03BE 1004 JMP STRC20 89e * 90e03C0 2CE0 F0DD STRC40 XOP @RCEMU,3 WRITE THE NEW INPUT 91e03C4 0F78 DATA PNRMIP MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 20 92e03C6 2000 DATA RED*256 93e * 94e03C8 2CE0 F425 STRC20 XOP @RCD,3 95e03CC 0AC8 DATA PNRCD 96e03CE 6000 DATA YELLOW*256 97e * 98e03D0 064A KEXIT1 DECT R10 99e03D2 C2DA MOV *R10,R11 Restore return address 100e03D4 045B RT 101e ********************************************************* 102e * 103e * TOGGLE THE DIGIT KEY MODE FROM REMOTE NIBBLE TO BYTE 104e * 105e ********************************************************* 106e03D6 2BA0 00AE MODEKY XOR @PMODE,R14 TOGGLE THE MODE 107e03DA 23A0 00AE COC @PMODE,R14 IS THE FLAG NOW SET? 108e03DE 1609 JNE MODK10 NO 109e03E0 0200 0400 LI R0,SETPAG POINT TO ROUTINE 110e03E4 C800 F07C MOV R0,@DGKBRA LOAD INTO VECTOR 111e03E8 2CE0 F0DD XOP @RCEMU,3 WRITE THE NEW INPUT 112e03EC 0F78 DATA PNRMIP 113e03EE 6400 DATA YELLOW+4*256 114e03F0 10EF JMP KEXIT1 AND EXIT 115e * 116e03F2 04E0 F07C MODK10 CLR @DGKBRA CLEAR THE VECTOR DATA 117e03F6 2CE0 F0DD XOP @RCEMU,3 WRITE THE NEW INPUT 118e03FA 0F78 DATA PNRMIP 119e03FC 2000 DATA RED*256 120e03FE 10E8 JMP KEXIT1 AND EXIT 121e ********************************************************* 122e * 123e * SET UP THE REQUIRED PAGE BYTE FROM THE DIGIT KEY 124e * 125e ********************************************************* 126e0400 D821 0418 SETPAG MOVB @PAGNUM(R1),@RCEMU GET THE BYTE CONVERSION F0DD 127e0406 D820 F0DD MOVB @RCEMU,@RCOUT SEND DATA TO ALU F460 128e040C 1D38 SBO EMULD SEND A LOAD PULSE 129e040E 2CE0 F0DD XOP @RCEMU,3 WRITE THE NEW INPUT 130e0412 0F78 DATA PNRMIP 131e0414 6400 DATA YELLOW+4*256 132e0416 10DC JMP KEXIT1 133e * 134e0418 2021 2223 PAGNUM BYTE >20,>21,>22,>23,>24,>25,>26,>27 135e0420 2829 3839 BYTE >28,>29,>38,>39,>3A,>3B,>3C,>17 136e ********************************************************* 137e * 138e * SINGLE STEP THE ALU 139e * 140e ********************************************************* 141e0428 020F 0008 STEPKY LI R15,STEP LOAD STEP INDEX 142e042C 10D1 JMP KEXIT1 143e ********************************************************* 144e * 145e * SET THE FLAG FOR SLOW STEP AND SCREEN UPDATE 146e * 147e ********************************************************* MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 21 148e042E 23E0 0444 SLOWKY COC @KSLOW,R15 149e0432 1602 JNE SLWK10 150e0434 04CF CLR R15 151e0436 10CC JMP KEXIT1 152e * 153e0438 020F 0006 SLWK10 LI R15,SLOW 154e043C C820 0086 MOV @SLWTIM,@SLWCNT SET UP THE DELAY COUNTER F082 155e0442 10C6 JMP KEXIT1 156e * 157e0444 0006 KSLOW DATA SLOW 158e ********************************************************* 159e * 160e * SET THE FLAG FOR FAST STEP AND SCREEN UPDATE 161e * 162e ********************************************************* 163e0446 23E0 0456 FASTKY COC @KFAST,R15 164e044A 1602 JNE FSTK10 165e044C 04CF CLR R15 166e044E 10C0 JMP KEXIT1 167e * 168e0450 020F 0004 FSTK10 LI R15,FAST 169e0454 10BD JMP KEXIT1 170e * 171e0456 0004 KFAST DATA FAST 172e ********************************************************* 173e * 174e * TOGGLE THE FLAG FOR RUN, WITH NO SCREEN UPDATE 175e * 176e ********************************************************* 177e0458 028F 0002 RUNKEY CI R15,RUN IN RUN MODE? 178e045C 1604 JNE RUNK10 NO, ENABLE IT 179e045E 04CF CLR R15 STOP THE RUN 180e0460 06A0 1256 BL @UPDATE UPDATE THE SCREEN 181e0464 10B5 JMP KEXIT1 182e * 183e0466 020F 0002 RUNK10 LI R15,RUN 184e046A 10B2 JMP KEXIT1 185e ********************************************************* 186e * 187e * SET THE CURRENT BREAKPOINTS 188e * 189e ********************************************************* 190e046C E3A0 0096 SETBP SOC @BPSET,R14 SET THE BREAKPOINT FLAG 191e0470 C020 F08E MOV @BPADR,R0 GET BP 1 ADR. 192e0474 1305 JEQ SET2BP IF ZERO, IGNORE LOOP 193e0476 C020 F092 MOV @BPLP1,R0 GET THE LOOP COUNT 194e047A 1602 JNE SET2BP IF NOT ZERO, SKIP 195e047C 05A0 F092 INC @BPLP1 SET UP A COUNT OF ONE 196e * 197e0480 C020 F090 SET2BP MOV @BPADR2,R0 GET BP 2 ADR. 198e0484 1305 JEQ SETXIT IF ZERO, IGNORE LOOP 199e0486 C020 F094 MOV @BPLP2,R0 GET THE LOOP COUNT 200e048A 1602 JNE SETXIT IF NOT ZERO, SKIP 201e048C 05A0 F094 INC @BPLP2 SET UP A COUNT OF ONE 202e * 203e0490 06A0 1542 SETXIT BL @WBPADR DISPLAY THE DATAs 204e0494 109D JMP KEXIT1 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 22 205e ********************************************************* 206e * 207e * SET THE CURRENT BREAKPOINT AND RUN 208e * 209e ********************************************************* 210e0496 020F 0002 SETRUN LI R15,RUN SET UP TO RUN 211e049A 10E8 JMP SETBP AND GO SET BPs 212e ********************************************************* 213e * 214e * ENTER A (UP TO) 3 DIGIT NUMBER FOR THE BP OR LOOP 215e * 216e * REGISTERS: R0 WORK REGISTER 217e * R1 WORK REGISTER 218e * R2 BP/LP 1 BIT IN R14 219e * R3 BP/LP 2 BIT IN R14 220e * R4 ADDRESS OF DIGIT STORE FOR BP/LP1 221e * R5 ADDRESS OF DIGIT STORE FOR BP/LP1 222e * 223e ********************************************************* 224e049C C0A0 009A ENTLP MOV @ENTLP1,R2 225e04A0 C0E0 009C MOV @ENTLP2,R3 226e04A4 0204 F092 LI R4,BPLP1 227e04A8 0205 F094 LI R5,BPLP2 228e04AC E3A0 00A0 SOC @LOOPEK,R14 SET LOOP ENTRY FLAG 229e04B0 100A JMP ENTBLP 230e * 231e04B2 C0A0 008A ENTBP MOV @ENTBP1,R2 232e04B6 C0E0 0090 MOV @ENTBP2,R3 233e04BA 0204 F08E LI R4,BPADR 234e04BE 0205 F090 LI R5,BPADR2 235e04C2 43A0 00A0 SZC @LOOPEK,R14 CLEAR LOOP ENTRY FLAG 236e * 237e04C6 C802 F096 ENTBLP MOV R2,@FLAG1 SAVE FOR DIGIT ENTRY 238e04CA C803 F098 MOV R3,@FLAG2 239e04CE C804 F09A MOV R4,@ADR1 240e04D2 C805 F09C MOV R5,@ADR2 241e * 242e04D6 2383 COC R3,R14 ARE WE ENTERING BP2? 243e04D8 1305 JEQ NOBP YES, ABORT ALL ENTRIES 244e04DA 2382 COC R2,R14 ARE WE ENTERING BP 1? 245e04DC 1605 JNE BP1ENT NO, MUST NEED TO DO THAT 246e * 247e * MUST NEED TO ENTER BP 2 248e * 249e04DE E383 SOC R3,R14 SET ENTER FLAG FOR BP2 250e04E0 4382 SZC R2,R14 CLEAR THE BP1 ENTRY FLAG 251e04E2 1004 JMP SETB10 252e * 253e * ABORT ALL ENTRIES 254e * 255e04E4 4383 NOBP SZC R3,R14 CLEAR THE FLAG 256e04E6 101B JMP BDGTXT AND GO DISPLAY THE RESULTS 257e * 258e * MUST NEED TO ENTER BP 1 259e * 260e04E8 E382 BP1ENT SOC R2,R14 SET ENTER FLAG FOR BP1 261e04EA 4383 SZC R3,R14 CLEAR THE BP2 ENTRY FLAG 262e04EC 0200 0502 SETB10 LI R0,BPDGT1 Load address of digit handl MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 23 263e04F0 C800 F07C MOV R0,@DGKBRA 264e04F4 0200 0580 LI R0,BPABT POINT TO ABORT ROUTINE 265e04F8 C800 F07E MOV R0,@SPECBR 266e04FC 06A0 1542 BL @WBPADR Display the address 267e0500 1062 JMP KEXIT2 268e * 269e * HANDLER FOR FIRST DIGIT 270e * 271e0502 0200 0524 BPDGT1 LI R0,BPDGT2 Load address of next handle 272e0506 C800 F07C MOV R0,@DGKBRA POINT TO NEXT ROUTINE 273e050A 23A0 F098 COC @FLAG2,R14 BP2 ENTRY? 274e050E 1604 JNE BDGT10 NO, SKIP 275e0510 C160 F09C MOV @ADR2,R5 GET ADDRESS 276e0514 C541 MOV R1,*R5 SAVE FOR BP2 277e0516 1003 JMP BDGTXT 278e * 279e0518 C120 F09A BDGT10 MOV @ADR1,R4 GET THE ADR. 280e051C C501 MOV R1,*R4 SAVE THE DIGIT 281e051E 06A0 1542 BDGTXT BL @WBPADR GO DISPLAY THE BPs 282e0522 1051 JMP KEXIT2 283e * 284e * SECOND DIGIT ENTRY 285e * 286e0524 0200 054E BPDGT2 LI R0,BPDGT3 Load address of next handle 287e0528 C800 F07C MOV R0,@DGKBRA POINT TO NEXT ROUTINE 288e052C 23A0 F098 COC @FLAG2,R14 BP2 ENTRY? 289e0530 1607 JNE BDGT30 NO, SKIP 290e0532 C160 F09C MOV @ADR2,R5 291e0536 C015 MOV *R5,R0 GET CURRENT ADDRESS 292e0538 0A40 SLA R0,4 ALIGN 293e053A E040 SOC R0,R1 ADD TO NEW DIGIT 294e053C C541 MOV R1,*R5 SAVE THE 2 DIGITS 295e053E 10EF JMP BDGTXT 296e * 297e0540 C120 F09A BDGT30 MOV @ADR1,R4 SET UP ADR 298e0544 C014 MOV *R4,R0 GET CURRENT ADDRESS 299e0546 0A40 SLA R0,4 ALIGN 300e0548 E040 SOC R0,R1 ADD TO NEW DIGIT 301e054A C501 MOV R1,*R4 SAVE THE 2 DIGITS 302e054C 10E8 JMP BDGTXT 303e * 304e * THIRD DIGIT ENTRY 305e * 306e054E 23A0 F098 BPDGT3 COC @FLAG2,R14 BP2 ENTRY? 307e0552 1607 JNE BDGT40 NO, SKIP 308e0554 C160 F09C MOV @ADR2,R5 309e0558 C015 MOV *R5,R0 GET CURRENT ADDRESS 310e055A 0A40 SLA R0,4 ALIGN 311e055C E040 SOC R0,R1 ADD TO NEW DIGIT 312e055E C541 MOV R1,*R5 SAVE THE 3 DIGITS 313e0560 1006 JMP BDGT50 314e * 315e0562 C120 F09A BDGT40 MOV @ADR1,R4 316e0566 C014 MOV *R4,R0 GET CURRENT ADDRESS 317e0568 0A40 SLA R0,4 ALIGN 318e056A E040 SOC R0,R1 ADD TO NEW DIGIT 319e056C C501 MOV R1,*R4 SAVE THE 3 DIGITS 320e056E 04E0 F07C BDGT50 CLR @DGKBRA ALLOW NORMAL DIGIT KEYS MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 24 321e0572 04E0 F07E CLR @SPECBR CLEAR THE CONTROL KEY ADDRE 322e0576 43A0 F096 SZC @FLAG1,R14 CLEAR FLAG 323e057A 43A0 F098 SZC @FLAG2,R14 CLEAR FLAG 324e057E 10CF JMP BDGTXT AND EXIT 325e * 326e0580 27A0 00A0 BPABT CZC @LOOPEK,R14 BREAKPOINT ENTRY? 327e0584 1604 JNE LPABT NO, LOOP ENTRY, JUMP 328e0586 0281 0011 CI R1,>0011 IS IT THE ENTER KEY? 329e058A 1393 JEQ ENTBP YES, GO DO IT 330e058C 1005 JMP BPABT5 331e * 332e058E 0281 0019 LPABT CI R1,>0019 IS IT THE LOOP ENTRY KEY? 333e0592 1602 JNE BPABT5 NO, ABORT 334e0594 0460 049C B @ENTLP YES, GO DO IT 335e * 336e0598 43A0 F096 BPABT5 SZC @FLAG1,R14 CLEAR FLAG 337e059C 43A0 F098 SZC @FLAG2,R14 CLEAR FLAG 338e05A0 06A0 1542 BL @WBPADR Display the address 339e05A4 04E0 F07C KEYABT CLR @DGKBRA CLEAR THE DIGIT ADDRESS 340e05A8 04E0 F07E CLR @SPECBR CLEAR THE CONTROL KEY ADDRE 341e05AC 0460 032C B @KEY100 AND EXECUTE THE KEY 342e ********************************************************* 343e * 344e * SEND PAGE DATA TO TELETEXT LATCH 345e * 346e ********************************************************* 347e05B0 C020 F064 SNDPKY MOV @CLKR10,R0 GET THE FLAGS 348e05B4 2820 008A XOR @SENDP,R0 INVERT IT 349e05B8 C800 F064 MOV R0,@CLKR10 SAVE IT 350e05BC 2020 008A COC @SENDP,R0 FLAG NOW SET? 351e05C0 1602 JNE KEXIT2 NO, SKIP 352e05C2 0420 0AEE BLWP @SSTART START THE SERIAL DATA 353e05C6 0460 03D0 KEXIT2 B @KEXIT1 AND EXIT 354e ********************************************************* 355e * 356e * RESET THE SYSTEM 357e * 358e ********************************************************* 359e05CA 0420 0000 RSETKY BLWP @0 360e ********************************************************* 361e * 362e * TOGGLE THE LOCAL TX TELETEXT FLAG 363e * 364e ********************************************************* 365e05CE 2BA0 00A4 TXTXKY XOR @TEXTON,R14 TOGGLE THE FLAG 366e05D2 23A0 00A4 COC @TEXTON,R14 ARE WE IN LOCAL MODE? 367e05D6 1306 JEQ TXTXK5 YES, OK 368e05D8 8820 0C92 C @SPRDTA,@DSPNTR SPR PAGE ON DISPLAY? F084 369e05DE 1602 JNE TXTXK5 NO, SKIP 370e05E0 06A0 079A BL @DISMIM YES, DISPLAY THE MIMIC 371e05E4 06A0 0628 TXTXK5 BL @TXCOLR 372e05E8 104E JMP KEXIT3 373e ********************************************************* 374e * 375e * TOGGLE THE LOCAL / EXTERNAL REMOTE CONTROL FLAG 376e * 377e ********************************************************* MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 25 378e05EA 020C 1000 TXRCKY LI R12,KBDCRU POINT TO CONTROL BITS 379e05EE 2BA0 00A8 XOR @EXTLRC,R14 TOGGLE THE FLAG 380e05F2 23A0 00A8 COC @EXTLRC,R14 IS R/C IN I2C MODE? 381e05F6 1602 JNE TXRC10 NO, SKIP 382e05F8 1D09 SBO RCEN SET CONTROL TO I2C 383e05FA 1001 JMP TXRC20 384e * 385e05FC 1E09 TXRC10 SBZ RCEN SET CONTROL TO EMULATOR 386e * 387e * WRITE SIF TO SCREEN IN RED OR GREEN 388e * IF REMOTE CONTROL IN LOCAL, WRITE 'SIF' IN RED 389e * 390e05FE 27A0 00A8 TXRC20 CZC @EXTLRC,R14 IS REMOTE CONTROL IN LOCAL? 391e0602 1309 JEQ TXRC30 YES, WRITE IN RED 392e * 393e0604 2C60 1B44 XOP @I2CMSG,1 394e0608 0A26 DATA PNSIF 395e060A 4400 DATA GREEN+4*256 IN GREEN 396e * 397e060C 2C60 1B63 XOP @RCMSG,1 ' RCD RCS ' 398e0610 0A76 DATA PNRCD-ROW-CHAR 399e0612 4400 DATA GREEN+4*256 400e0614 1038 JMP KEXIT3 401e * 402e0616 2C60 1B44 TXRC30 XOP @I2CMSG,1 WRITE THE MESSAGE 403e061A 0A26 DATA PNSIF 404e061C 2400 DATA RED+4*256 IN RED 405e * 406e061E 2C60 1B63 XOP @RCMSG,1 ' RCD RCS ' 407e0622 0A76 DATA PNRCD-ROW-CHAR 408e0624 2400 DATA RED+4*256 409e0626 102F JMP KEXIT3 410e ********************************************************* 411e * 412e * SET UP 'TELETEXT' COLOUR AND CRU BITS CONCERNED 413e * 414e ********************************************************* 415e0628 020C 1000 TXCOLR LI R12,KBDCRU POINT TO CONTROL BITS 416e062C 23A0 00A4 COC @TEXTON,R14 ARE WE IN LOCAL MODE? 417e0630 1612 JNE TXMSGE NO, SEND MESSAGE IN GREEN 418e * 419e * WRITE COLOUR & MESSAGE TO SCREEN FOR LOCAL TEXT 420e * 421e0632 1E0B SBZ CLKCTL CONNECT CPU TO CLOCK INPUTS 422e * 423e0634 2C60 1C7D XOP @CLKMSG,1 424e0638 0A92 DATA PNCLK 425e063A 2400 DATA RED+4*256 426e * 427e063C 2C60 1B6D XOP @VBIMSG,1 428e0640 0F80 DATA PNVBI-ROW-4 429e0642 2400 DATA RED+4*256 430e * 431e0644 2C60 1B59 XOP @TXTMSG,1 432e0648 0A64 DATA PNTFE-ROW-CHAR 433e064A 2400 DATA RED+4*256 434e * 435e064C 2C60 1BBF XOP @INTRN1,1 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 26 436e0650 0B94 DATA PNINTS+4 437e0652 2400 DATA RED+4*256 IN RED 438e0654 045B RT 439e * 440e * WRITE COLOUR & MESSAGE TO SCREEN FOR LIVE TEXT 441e * 442e0656 2C60 1C7D TXMSGE XOP @CLKMSG,1 443e065A 0A92 DATA PNCLK 444e065C 4400 DATA GREEN+4*256 445e * 446e065E 2C60 1B6D XOP @VBIMSG,1 447e0662 0F80 DATA PNVBI-ROW-4 448e0664 4400 DATA GREEN+4*256 449e * 450e0666 2C60 1B59 XOP @TXTMSG,1 451e066A 0A64 DATA PNTFE-ROW-CHAR 452e066C 4400 DATA GREEN+4*256 453e * 454e066E 2C60 1B96 XOP @INTERN,1 'INTERNAL' 455e0672 0B90 DATA PNINTS 456e0674 4400 DATA GREEN+4*256 IN GREEN 457e * 458e0676 1D0B SBO CLKCTL CONNECT CLOCK INPUTS TO TEX 459e0678 045B RT 460e067A 1005 JMP KEXIT3 461e * 462e ********************************************************* 463e * 464e * GO TO END OF LINE ON LOCAL TELETEXT TRANSMISSION 465e * 466e ********************************************************* 467e067C 020F 000A EOLKY LI R15,10 SET UP INDEX 468e0680 E820 008A SOC @EOLFLG,@SERWKS+R10+R10 SET THE FLAG F044 469e0686 0460 03D0 KEXIT3 B @KEXIT1 62 COPY KEY2.990 1f ********************************************************* 2f * 3f * THIS FILE CONTAINS THE KEY BRANCH TABLE PLUS ANY 4f * KEYS WHICH DIFFER FROM EVM1 5f * 6f ********************************************************* 7f * 8f * Jump table for key routines (TABLE STARTS AT >10 KEY) 9f * 10f068A 0428 KEYTAB DATA STEPKY >10 SINGLE STEP THE ALU CLOCK 11f068C 04B2 DATA ENTBP >11 ENTER BREAKPOINT ADDRESS 12f068E 05B0 DATA SNDPKY >12 SEND THE TELETEXT PAGE 13f0690 042E DATA SLOWKY >13 UPDATE SCREEN, WITH DELAY 14f0692 0446 DATA FASTKY >14 UPDATE SCREEN, NO DELAY 15f0694 0458 DATA RUNKEY >15 RUN 16f0696 0496 DATA SETRUN >16 SET BKPT AND RUN 17f0698 046C DATA SETBP >17 SET BREAKPOINT 18f069A 05CA DATA RSETKY >18 RESET KEY 19f069C 049C DATA ENTLP >19 ENTER BREAKPOINT LOOP 20f069E 05CE DATA TXTXKY >1A TELETEXT LOCAL TX ON/OFF 21f06A0 05EA DATA TXRCKY >1B REMOTE LOCAL TX ON/OFF 22f06A2 0850 DATA VBIKEY >1C VBI TOGGLE KEY MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 27 23f06A4 067C DATA EOLKY >1D GO TO END OF LINE 24f * DATA CLR3KY >1E CLEAR DISPLAY 3 25f06A6 1A14 DATA LOADER >1E TAGGED LOADER 26f06A8 07F0 DATA RSUCKY >1F RESET MICRO CODE 27f06AA 079C DATA DS1KEY >20 SET DISPLAY TO MIMIC 28f06AC 06BC DATA TTXKEY >21 TELETEXT PAGE SELECT KEY 29f06AE 0794 DATA DS3KEY >22 SET DISPLAY TO REMOTE INPUT 30f06B0 0818 DATA ROMKEY >23 ROMS ON/OFF 31f * DATA CLRPKY >23 CLEAR TELETEXT PAGE TO DOTS 32f06B2 08B2 DATA TKEY >24 TOGGLE 'T' 33f06B4 0888 DATA GOTOKY >25 GOTO (>1DF) 34f06B6 03D6 DATA MODEKY >26 TOGGLE DIGIT MODE 35f06B8 08CC DATA QKEY >27 TOGGLE 'Q' 36f * 37f * TCJ Nov 92 38f * Special emulator commands, from RS232 only 39f * 40f06BA 1D42 DATA RDNOW >28 Read current microcode addr 41f * 42f ********************************************************* 43f * 44f * DISPLAY THE QUERY PAGE, AND DO TELETEXT PAGE SELECT 45f * 46f ********************************************************* 47f06BC 0200 06E2 TTXKEY LI R0,TTXK20 POINT TO DIGIT ROUTINE 48f06C0 C800 F07C MOV R0,@DGKBRA SAVE FOR BRANCH IN DIGIT IN 49f06C4 0200 05A4 LI R0,KEYABT POINT TO ABORT ROUTINE 50f06C8 C800 F07E MOV R0,@SPECBR AND SEND FUNCTIONS KEYS THE 51f06CC 2CA0 F40D XOP @APA,2 52f06D0 24F0 DATA 11*ROW+16+QERYPG 53f06D2 E000 DATA WHITE*256 54f06D4 2CA0 F470 XOP @VPA,2 55f06D8 2540 DATA 12*ROW+16+QERYPG 56f06DA E000 DATA WHITE*256 57f06DC 0200 2170 LI R0,QERYPG 58f06E0 1069 JMP SWAPDS 59f * 60f * DEAL WITH PAGE SELECTION INPUT DIGIT 61f * 62f06E2 04E0 F07C TTXK20 CLR @DGKBRA SET TO NORMAL DIGIT KEY FUN 63f06E6 0281 0008 CI R1,8 VALID PAGE SELECT? 64f06EA 1B6E JH KEXIT5 NO, ABORT 65f06EC 0A11 SLA R1,1 WORD ALIGN 66f06EE C021 06F4 MOV @PAGTBL(R1),R0 GET PAGE BASE ADR. FROM TAB 67f06F2 1060 JMP SWAPDS AND GO DO DISPLAY 68f * 69f06F4 38E0 40B0 PAGTBL DATA TTXPG0,TTXPG1,TTXPG2,TTXPG3 70f06FC 5820 5FF0 DATA TTXPG4,TTXPG5,TTXPG6,TTXPG7,TTXPG8,SPRPAG 71f ********************************************************* 72f * 73f * SET UP DATA FOR SCRATCH PAD RAM 74f * 75f ********************************************************* 76f0708 2ED3 INSTNB XOP *R3,11 77f070A CE8B DISSPR MOV R11,*R10+ 78f *SPRKEY LI R0,9*ROW+16+SPRPAG 79f070C 0200 11D6 SPRKEY LI R0,9*ROW+6+SPRPAG crh MODIFIED FOR NEW RAM B 80f0710 0201 0010 LI R1,16 16 LINES TO WRITE MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 28 81f0714 0203 F500 LI R3,SPRAM POINT TO THE RAM 82f * 83f * NEEDS VARIABLE COLOUR DATA, SO USE WORKSPACE EXECUTION 84f * 85f0718 C120 0708 MOV @INSTNB,R4 LOAD R4 WITH BYTEW *R3 86f071C 0205 4000 LI R5,GREEN*256 87f0720 0206 045B LI R6,>045B RETURN INSTRUCTION 88f0724 2C00 TTXK30 XOP R0,0 89f0726 0207 000C LI R7,12 90f072A 04C2 CLR R2 crh OF 12 BYTES EACH 91f072C 0281 000C CI R1,12 12 BYTES PER ROW 92f0730 1209 JLE TTXK40 93f0732 0281 000E CI R1,14 8 BYTES PER ROW 94f0736 1B03 JH TTXK32 95f0738 0207 000A LI R7,10 ELSE 10 BYTES PER ROW 96f073C 1003 JMP TTXK40 97f073E 0207 0008 TTXK32 LI R7,8 98f0742 1000 JMP TTXK40 99f0744 06A0 F008 TTXK40 BL @WSP+8 WRITE A BYTE VIA WSP REGS 100f0748 0583 TTXK35 INC R3 NEXT BYTE 101f074A 0282 000B CI R2,11 crh LAST BYTE? 102f074E 130A JEQ TTXK50 crh YES, NO SPACE AFTER IT 103f0750 D742 MOVB R2,*VRAM THEN A SPACE 104f0752 D742 MOVB R2,*VRAM 105f0754 0282 0003 CI R2,3 DONE 4 BYTES? 106f0758 1303 JEQ TTXK45 crh YES, EXTRA SPACE 107f075A 0282 0007 CI R2,7 crh DONE 8 BYTES? 108f075E 1602 JNE TTXK50 crh NO, SKIP 109f0760 D742 TTXK45 MOVB R2,*VRAM WRITE AN EXTRA SPACE 110f0762 D742 MOVB R2,*VRAM 111f0764 0582 TTXK50 INC R2 112f0766 81C2 C R2,R7 113f0768 1AED JL TTXK40 114f076A 0220 0050 AI R0,ROW NEXT DISPLAY ROW 115f076E 0281 000D CI R1,13 116f0772 1309 JEQ TTXK56 117f0774 0281 0009 TTXK52 CI R1,9 118f0778 1603 JNE TTXK54 119f077A 0205 4000 LI R5,GREEN*256 120f077E 1005 JMP TTXK70 121f0780 0281 0005 TTXK54 CI R1,5 122f0784 1602 JNE TTXK70 123f0786 0205 E000 TTXK56 LI R5,WHITE*256 124f078A 0601 TTXK70 DEC R1 REACHED END? 125f078C 16CB JNE TTXK30 NO, LOOP 126f078E 0200 0F00 LI R0,SPRPAG POINT TO DISPLAY PAGE 127f0792 1010 JMP SWAPDS GO DO DISPLAY 128f ********************************************************* 129f * 130f * CHANGE THE DISPLAY TO MIMIC OR REMOTE CONTROL 131f * 132f ********************************************************* 133f0794 0200 19A0 DS3KEY LI R0,DSPLY3 LOAD 3RD DISPLAY ADR. 134f0798 100D JMP SWAPDS 135f * 136f079A CE8B DISMIM MOV R11,*R10+ 137f * 138f079C 2BA0 00A2 DS1KEY XOR @MIMFLG,R14 TOGGLE THE DISPLAY FLAG MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 29 139f07A0 23A0 00A2 COC @MIMFLG,R14 IS IT NOW SET? 140f07A4 1305 JEQ DS1KY5 YES, SKIP 141f07A6 23A0 00A4 COC @TEXTON,R14 IN INTERNAL CLOCK MODE? 142f07AA 13B0 JEQ SPRKEY YES, GO DO SCRATCH RAM DISP 143f07AC E3A0 00A2 SOC @MIMFLG,R14 NO, SET THE MIMIC FLAG 144f07B0 0200 0A00 DS1KY5 LI R0,DSPLAY 145f07B4 C800 F084 SWAPDS MOV R0,@DSPNTR SAVE THE DISPLAY POINTER 146f07B8 0600 DEC R0 147f07BA 2C00 XOP R0,0 SET UP THE ADDRESS 148f07BC D820 0085 MOVB @TEN+1,@VDPREG SEND '10' TO VDPREG F800 149f07C2 D820 0085 MOVB @TEN+1,@VDPREG TRANSFER THE DATA TO THE RE F800 150f07C8 0460 03D0 KEXIT5 B @KEXIT1 151f ********************************************************* 152f * 153f * CLEAR THE USER REQUESTED PAGE TO '.'s 154f * 155f ********************************************************* 156f07CC 0200 07DA CLRPKY LI R0,CLRP20 POINT TO DIGIT ROUTINE 157f07D0 C800 F07C MOV R0,@DGKBRA SAVE FOR BRANCH IN DIGIT IN 158f07D4 0200 2940 LI R0,QERYP2 POINT TO QUERY PAGE 159f07D8 10ED JMP SWAPDS AND GO DISPLAY THE QUERY PA 160f * 161f * DEAL WITH PAGE SELECTION INPUT DIGIT 162f * 163f07DA 04E0 F07C CLRP20 CLR @DGKBRA SET TO NORMAL DIGIT KEY FUN 164f07DE 0281 0007 CI R1,7 VALID PAGE SELECT? 165f07E2 1B04 JH KEXIT4 NO, ABORT 166f07E4 C0C1 MOV R1,R3 ROUTINE USES R3 167f07E6 06A0 161E BL @CLRTPG CLEAR THE PAGE IN R3 168f * 169f07EA 10D8 JMP DS1KEY THEN GO DISPLAY THE MIMIC 170f ********************************************************* 171f * 172f * CLEAR THE REMOTE CONTROL DISPLAY TO BLANKS 173f * 174f ********************************************************* 175f * CLR3KY LI R0,DSPLY3 POINT TO SECOND DISPLAY A 176f * MOV R0,@CMDPTR RESET WRITE POINTER 177f * XOP R0,0 SET UP POINTER 178f * CLR R0 CLEAR TO '00' 179f * LI R2,25*40 180f *CLR3LP MOVB R0,*VRAM 181f * MOVB R0,*VRAM 182f * DEC R2 183f * JNE CLR3LP 184f07EC 0460 03D0 KEXIT4 B @KEXIT1 185f ********************************************************* 186f * 187f * CONTROL THE I2C BITS (CLOCK AND DATA) 188f * 189f ********************************************************* 190f *CLR3KY LI R0,I2CDIG POINT TO ROUTINE FOR DIGIT 191f * MOV R0,@DGKBRA SAVE FOR BRANCH 192f * LI R0,KEYABT POINT TO ABORT KEY ROUTINE 193f * MOV R0,@SPECBR SAVE FOR BRANCH 194f * MOV @IDDATA,R2 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 30 195f * MOV @ICDATA,R0 196f * JMP I2CC30 AND WRITE DATA, THEN EXIT 197f * 198f *I2CDIG MOV @IDDATA,R2 GET CURRENT STATE 199f * MOV @ICDATA,R0 GET CURRENT STATE 200f * CI R1,>C CLOCK TOGGLE? 201f * JEQ I2CC10 YES, JUMP 202f * CI R1,>D DATA TOGGLE? 203f * JNE KEXIT4 NO, EXIT 204f * DATA TOGGLE 205f * XOR @WD0001,R2 INVERT THE BIT 206f * MOV R2,@IDDATA SAVE 207f * JNE I2CD10 208f * SBZ IDATA SET THE BIT TO ZERO 209f * JMP I2CC30 AND CONTINUE 210f *I2CD10 SBO IDATA SET THE BIT TO ONE 211f * JMP I2CC30 212f * CLOCK TOGGLE 213f *I2CC10 XOR @WD0001,R0 INVERT THE BIT 214f * MOV R0,@ICDATA SAVE 215f * JNE I2CC20 216f * SBZ ICLK SET THE BIT TO ZERO 217f * JMP I2CC30 AND CONTINUE 218f *I2CC20 SBO ICLK SET THE BIT TO ONE 219f *I2CC30 SETA @IDATAP SET UP THE VDP ADR 220f * MOVB @BYTEE0,*VRAM ATR 221f * CLR R3 222f * SRL R2,1 TEST THE BIT 223f * JNC $+4 224f * SETO R3 225f * MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 226f * SETA @ICLKP SET UP THE VDP ADR 227f * MOVB @BYTEE0,*VRAM ATR 228f * CLR R3 229f * SRL R0,1 TEST THE BIT 230f * JNC $+4 231f * SETO R3 232f * MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 233f * JMP KEXIT4 234f * 235f *IDATAP DATA I2CDPN+ROW 236f *ICLKP DATA I2CCPN+ROW 237f ********************************************************* 238f * 239f * RESET THE MICRO CODE 240f * 241f ********************************************************* 242f07F0 04E0 F086 RSUCKY CLR @OLDADR RESET TO ADDRESS ZERO 243f07F4 04CF CLR R15 244f07F6 020A F0E0 LI R10,STACK RESET THE STACK POINTER 245f07FA 04E0 F09E CLR @CLKCT1 CLEAR THE CLOCK COUNTERS 246f07FE 04E0 F0A0 CLR @CLKCT2 247f * CLEAR THE DISPLAY ROW 248f0802 0205 0FF0 LI R5,PNRX RESET POINTER TO START OF D 249f0806 2C05 XOP R5,0 SET UP VDP POINTER 250f0808 0201 0050 LI R1,80 80 BYTES TO CLEAR 251f080C D801 FA00 RSUC10 MOVB R1,@VDPWD WRITE A BYTE 252f0810 0601 DEC R1 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 31 253f0812 16FC JNE RSUC10 254f * 255f0814 0460 0130 B @UCRSET 256f ********************************************************* 257f * 258f * TOGGLE THE ROM/RAM MODE OF OPERATION 259f * 260f ********************************************************* 261f0818 2BA0 00AC ROMKEY XOR @ROMON,R14 INVERT THE FLAG 262f081C 020C 1000 LI R12,KBDCRU POINT TO CRU BASE 263f0820 23A0 00AC COC @ROMON,R14 IS IT NOW SET? 264f0824 1606 JNE ROMK10 NO, SKIP 265f0826 1D10 SBO ROMEN ENABLE THE ROMS 266f0828 2C60 083E XOP @ROMSON,1 'ROMS ON ' 267f082C 0AA2 DATA PNROM 268f082E E000 DATA WHITE*256 269f0830 10DD JMP KEXIT4 270f ** 271f0832 1E10 ROMK10 SBZ ROMEN DISABLE THE ROMS 272f0834 2C60 0847 XOP @ROMSOF,1 'ROMS OFF' 273f0838 0AA2 DATA PNROM 274f083A E000 DATA WHITE*256 275f083C 10D7 JMP KEXIT4 276f ** 277f083E 524F 4D53 ROMSON TEXT 'ROMS ON ' 278f0846 00 BYTE 0 279f0847 52 4F4D ROMSOF TEXT 'ROMS OFF' 280f084F 00 BYTE 0 281f ********************************************************* 282f * 283f * TOGGLE THE VBI FLAG AND FIX THE SCREEN 284f * 285f ********************************************************* 286f0850 C020 F044 VBIKEY MOV @SERWKS+R10+R10,R0 GET THE FLAGS 287f0854 2820 008C XOR @KEYVBI,R0 TOGGLE THE FLAG 288f0858 2020 008C COC @KEYVBI,R0 IS THE FLAG NOW SET? 289f085C 1610 JNE VBIXIT NO, EXIT 290f * 291f085E C060 F064 MOV @CLKWSP+R10+R10,R1 GET THE SEND T/TXT FLAG 292f0862 2060 008A COC @SENDP,R1 ARE WE SENDING TELETEXT? 293f0866 130B JEQ VBIXIT YES, FLAGS ARE OK 294f * 295f0868 4020 008C SZC @KEYVBI,R0 CLEAR THE FLAG 296f086C E820 008A SOC @SENDP,@CLKWSP+R10+R10 SET THE SEND T/TXT FL F064 297f0872 020C 1000 LI R12,KBDCRU POINT TO BASE ADDRESS 298f0876 1D0D SBO EVMVBI SET VBI HIGH 299f0878 06A0 1256 BL @UPDATE 300f087C 10B7 JMP KEXIT4 301f * 302f087E C800 F044 VBIXIT MOV R0,@SERWKS+R10+R10 STORE THE FLAG 303f0882 10B4 JMP KEXIT4 304f * 305f0884 3100 VBIMS1 BYTE '1',0 306f * 307f0886 3000 VBIMS0 BYTE '0',0 308f * 309f ********************************************************* MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 32 310f * 311f * GOTO ADDRESS OF BKPT 1 312f * 313f ********************************************************* 314f0888 D060 F618 GOTOKY MOVB @CPULSE,R1 SEND A PULSE 315f088C 05A0 F0A0 INC @CLKCT2 COUNT THE PULSE 316f0890 C060 F442 MOV @ROMADR,R1 GET THE ADDRESS 317f0894 0241 0FFF ANDI R1,>0FFF LEAVE ONLY ADDRESS BITS 318f0898 8801 F08E C R1,@BPADR REACHED IT? 319f089C 16F5 JNE GOTOKY 320f089E C801 F086 MOV R1,@OLDADR SAVE ADR FOR UPDATE 321f08A2 D060 F618 MOVB @CPULSE,R1 SEND ANOTHER CLOCK PULSE 322f08A6 E3A0 008C SOC @HITBP1,R14 323f08AA 06A0 02E0 BL @DOBP15 324f08AE 0460 03D0 KEXITB B @KEXIT1 325f ********************************************************* 326f * 327f * TOGGLE THE T FLAG AND FIX THE SCREEN 328f * 329f ********************************************************* 330f08B2 C020 F0A8 TKEY MOV @TQDATA,R0 GET THE FLAGS 331f08B6 2820 008A XOR @KEYT,R0 TOGGLE THE FLAG 332f08BA 2020 008A COC @KEYT,R0 IS THE FLAG NOW SET? 333f08BE 1602 JNE TKEY10 NO, EXIT 334f08C0 1D0E SBO TDATA SET THE BIT 335f08C2 1001 JMP TQEXIT 336f * 337f08C4 1E0E TKEY10 SBZ TDATA CLEAR THE BIT 338f * 339f08C6 C800 F0A8 TQEXIT MOV R0,@TQDATA STORE THE FLAG 340f08CA 10F1 JMP KEXITB 341f ********************************************************* 342f * 343f * TOGGLE THE Q FLAG AND FIX THE SCREEN 344f * 345f ********************************************************* 346f08CC C020 F0A8 QKEY MOV @TQDATA,R0 GET THE FLAGS 347f08D0 2820 008C XOR @KEYQ,R0 TOGGLE THE FLAG 348f08D4 2020 008C COC @KEYQ,R0 IS THE FLAG NOW SET? 349f08D8 1602 JNE QKEY10 NO, EXIT 350f08DA 1D0F SBO QDATA SET THE BIT 351f08DC 10F4 JMP TQEXIT 352f * 353f08DE 1E0F QKEY10 SBZ QDATA CLEAR THE BIT 354f08E0 10F2 JMP TQEXIT 63 COPY WTMCOD.990 1g ********************************************************* 2g * 3g * WTMCOD - WRITE THE MICROCODE DATA TO SCREEN 4g * 5g * ---WRITTEN IN LINE FOR SPEED--- 6g * 7g * AUTHOR: COLIN HINSON 8g ********************************************************* 9g08E2 0200 1092 WTMCOD LI R0,UCLIN1+CHAR+ROW 10g08E6 2C00 XOP R0,0 11g08E8 0200 0AD6 LI R0,ATABL1 12g08EC 04C2 CLR R2 FOR SPACES MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 33 13g * 14g * CMS BIT 54 15g * 16g08EE D060 F441 MOVB @UCBYT1,R1 GET DATA 17g08F2 D770 MOVB *R0+,*VRAM ATR 18g08F4 04C3 CLR R3 19g08F6 0A21 SLA R1,2 TEST THE BIT 20g08F8 1701 JNC $+2 21g08FA 0703 SETO R3 22g08FC D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 23g * 24g0900 D742 MOVB R2,*VRAM 25g0902 D742 MOVB R2,*VRAM 26g * 27g * EMS BIT 53 28g * 29g0904 D742 MOVB R2,*VRAM 30g0906 D742 MOVB R2,*VRAM 31g * 32g0908 D770 MOVB *R0+,*VRAM ATR 33g090A 04C3 CLR R3 34g090C 0A11 SLA R1,1 TEST THE BIT 35g090E 1701 JNC $+2 36g0910 0703 SETO R3 37g0912 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 38g * 39g0916 D742 MOVB R2,*VRAM 40g0918 D742 MOVB R2,*VRAM 41g * 42g * PRMA BIT 52 43g * 44g091A D742 MOVB R2,*VRAM 45g091C D742 MOVB R2,*VRAM 46g * 47g091E D770 MOVB *R0+,*VRAM ATR 48g0920 04C3 CLR R3 49g0922 0A11 SLA R1,1 TEST THE BIT 50g0924 1701 JNC $+2 51g0926 0703 SETO R3 52g0928 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 53g * 54g092C D742 MOVB R2,*VRAM 55g092E D742 MOVB R2,*VRAM 56g * 57g0930 D742 MOVB R2,*VRAM 58g0932 D742 MOVB R2,*VRAM 59g * 60g * FE BITS 51 AND 50 61g * 62g0934 D750 MOVB *R0,*VRAM ATR 63g0936 04C3 CLR R3 64g0938 04C3 CLR R3 65g093A 0A11 SLA R1,1 TEST THE BIT 66g093C 1701 JNC $+2 67g093E 0703 SETO R3 68g0940 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 69g * 70g0944 D770 MOVB *R0+,*VRAM ATR MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 34 71g0946 04C3 CLR R3 72g0948 0A11 SLA R1,1 TEST THE BIT 73g094A 1701 JNC $+2 74g094C 0703 SETO R3 75g094E D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 76g * 77g0952 D742 MOVB R2,*VRAM 78g0954 D742 MOVB R2,*VRAM 79g * 80g * ACLOCK BIT 49 81g * 82g0956 D770 MOVB *R0+,*VRAM ATR 83g0958 04C3 CLR R3 84g095A 0A11 SLA R1,1 TEST THE BIT 85g095C 1701 JNC $+2 86g095E 0703 SETO R3 87g0960 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 88g * 89g0964 D742 MOVB R2,*VRAM 90g0966 D742 MOVB R2,*VRAM 91g * 92g * BCLOCK BIT 48 93g * 94g0968 D770 MOVB *R0+,*VRAM ATR 95g096A 04C3 CLR R3 96g096C 0A11 SLA R1,1 TEST THE BIT 97g096E 1701 JNC $+2 98g0970 0703 SETO R3 99g0972 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 100g * 101g0976 D742 MOVB R2,*VRAM 102g0978 D742 MOVB R2,*VRAM 103g * 104g * JMP (3 BITS) BITS 47,46, AND 45 105g * 106g097A D060 F442 MOVB @ROMADR,R1 GET NEXT BYTE 107g * 108g097E D750 MOVB *R0,*VRAM ATR 109g0980 04C3 CLR R3 110g0982 0A11 SLA R1,1 TEST THE BIT 111g0984 1701 JNC $+2 112g0986 0703 SETO R3 113g0988 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 114g * 115g098C D750 MOVB *R0,*VRAM ATR 116g098E 04C3 CLR R3 117g0990 0A11 SLA R1,1 TEST THE BIT 118g0992 1701 JNC $+2 119g0994 0703 SETO R3 120g0996 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 121g * 122g099A D770 MOVB *R0+,*VRAM ATR 123g099C 04C3 CLR R3 124g099E 0A11 SLA R1,1 TEST THE BIT 125g09A0 1701 JNC $+2 126g09A2 0703 SETO R3 127g09A4 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 128g * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 35 129g * DCLOCK BIT 44 130g * 131g09A8 D742 MOVB R2,*VRAM 132g09AA D742 MOVB R2,*VRAM 133g * 134g09AC D770 MOVB *R0+,*VRAM ATR 135g09AE 04C3 CLR R3 136g09B0 0A11 SLA R1,1 TEST THE BIT 137g09B2 1701 JNC $+2 138g09B4 0703 SETO R3 139g09B6 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 140g * 141g * PCLOCK BIT 31 142g * 143g09BA D060 F444 MOVB @RAMA,R1 144g * 145g09BE D742 MOVB R2,*VRAM 146g09C0 D742 MOVB R2,*VRAM 147g * 148g09C2 D770 MOVB *R0+,*VRAM ATR 149g09C4 04C3 CLR R3 150g09C6 2060 00B0 COC @WD8000,R1 TEST THE BIT 151g09CA 1601 JNE $+2 152g09CC 0703 SETO R3 153g09CE 0241 7F00 ANDI R1,>7F00 REMOVE ALL BUT RAM ADR. 154g09D2 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 155g * 156g * SCRATCH RAM ADDRESS BITS 30-24 AND 55 crh 157g * 158g09D6 D0E0 F447 MOVB @UCBYT7,R3 crh 159g09DA 0243 8000 ANDI R3,>8000 crh 160g09DE F043 SOCB R3,R1 crh OR IN THE NEW BIT 161g09E0 D742 MOVB R2,*VRAM 162g09E2 D742 MOVB R2,*VRAM 163g * 164g09E4 2EC1 XOP R1,11 165g09E6 A000 DATA MAGNTA*256 166g * 167g09E8 D742 MOVB R2,*VRAM 168g09EA D742 MOVB R2,*VRAM 169g * 170g * CONSTANT 171g * 172g09EC D060 F445 MOVB @CONST,R1 173g * 174g09F0 D742 MOVB R2,*VRAM 175g09F2 D742 MOVB R2,*VRAM 176g * 177g09F4 2EC1 XOP R1,11 178g09F6 2000 DATA RED*256 179g * 180g09F8 D742 MOVB R2,*VRAM 181g09FA D742 MOVB R2,*VRAM 182g * 183g * RVDP BIT 15 184g * 185g09FC D060 F446 MOVB @UCBYT6,R1 186g * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 36 187g0A00 D742 MOVB R2,*VRAM 188g0A02 D742 MOVB R2,*VRAM 189g0A04 D742 MOVB R2,*VRAM 190g0A06 D742 MOVB R2,*VRAM 191g * 192g0A08 D770 MOVB *R0+,*VRAM ATR 193g0A0A 04C3 CLR R3 194g0A0C 0A11 SLA R1,1 TEST THE BIT 195g0A0E 1701 JNC $+2 196g0A10 0703 SETO R3 197g0A12 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 198g * 199g0A16 D742 MOVB R2,*VRAM 200g0A18 D742 MOVB R2,*VRAM 201g * 202g * VDPC BIT 14 203g * 204g0A1A D742 MOVB R2,*VRAM 205g0A1C D742 MOVB R2,*VRAM 206g0A1E D742 MOVB R2,*VRAM 207g0A20 D742 MOVB R2,*VRAM 208g * 209g0A22 D770 MOVB *R0+,*VRAM ATR 210g0A24 04C3 CLR R3 211g0A26 0A11 SLA R1,1 TEST THE BIT 212g0A28 1701 JNC $+2 213g0A2A 0703 SETO R3 214g0A2C D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 215g * 216g * NEXT ROW OF DATA 217g * 218g0A30 0203 1130 LI R3,UCLIN2+ROW 219g0A34 2C03 XOP R3,0 220g * 221g * CBR BIT 13 222g * 223g0A36 D742 MOVB R2,*VRAM 224g0A38 D742 MOVB R2,*VRAM 225g * 226g0A3A D770 MOVB *R0+,*VRAM ATR 227g0A3C 04C3 CLR R3 228g0A3E 0A11 SLA R1,1 TEST THE BIT 229g0A40 1701 JNC $+2 230g0A42 0703 SETO R3 231g0A44 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 232g * 233g0A48 D742 MOVB R2,*VRAM 234g0A4A D742 MOVB R2,*VRAM 235g * 236g * S BITS 12 AND 11 237g * 238g0A4C D742 MOVB R2,*VRAM 239g0A4E D742 MOVB R2,*VRAM 240g * 241g0A50 D750 MOVB *R0,*VRAM ATR 242g0A52 04C3 CLR R3 243g0A54 0A11 SLA R1,1 TEST THE BIT 244g0A56 1701 JNC $+2 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 37 245g0A58 0703 SETO R3 246g0A5A D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 247g * 248g0A5E D770 MOVB *R0+,*VRAM ATR 249g0A60 04C3 CLR R3 250g0A62 0A11 SLA R1,1 TEST THE BIT 251g0A64 1701 JNC $+2 252g0A66 0703 SETO R3 253g0A68 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 254g * 255g * CIN BIT 10 256g * 257g0A6C D742 MOVB R2,*VRAM 258g0A6E D742 MOVB R2,*VRAM 259g * 260g0A70 D770 MOVB *R0+,*VRAM ATR 261g0A72 04C3 CLR R3 262g0A74 0A11 SLA R1,1 TEST THE BIT 263g0A76 1701 JNC $+2 264g0A78 0703 SETO R3 265g0A7A D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 266g * 267g0A7E D742 MOVB R2,*VRAM 268g0A80 D742 MOVB R2,*VRAM 269g * 270g * EXT BIT 9 271g * 272g0A82 D742 MOVB R2,*VRAM 273g0A84 D742 MOVB R2,*VRAM 274g * 275g0A86 D770 MOVB *R0+,*VRAM ATR 276g0A88 04C3 CLR R3 277g0A8A 0A11 SLA R1,1 TEST THE BIT 278g0A8C 1701 JNC $+2 279g0A8E 0703 SETO R3 280g0A90 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 281g * 282g0A94 D742 MOVB R2,*VRAM 283g0A96 D742 MOVB R2,*VRAM 284g * 285g * WE BIT 8 286g * 287g0A98 D770 MOVB *R0+,*VRAM ATR 288g0A9A 04C3 CLR R3 289g0A9C 0A11 SLA R1,1 TEST THE BIT 290g0A9E 1701 JNC $+2 291g0AA0 0703 SETO R3 292g0AA2 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 293g * 294g0AA6 D742 MOVB R2,*VRAM 295g0AA8 D742 MOVB R2,*VRAM 296g * 297g * AMS BITS 7-4 298g * 299g0AAA D742 MOVB R2,*VRAM 300g0AAC D742 MOVB R2,*VRAM 301g * 302g0AAE D060 F447 MOVB @UCBYT7,R1 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 38 303g0AB2 0941 SRL R1,4 ALIGN FOR XOP 304g0AB4 2F01 XOP R1,12 305g0AB6 6000 DATA YELLOW*256 306g * 307g0AB8 D742 MOVB R2,*VRAM 308g0ABA D742 MOVB R2,*VRAM 309g * 310g * BMS BITS 3-0 311g * 312g0ABC D742 MOVB R2,*VRAM 313g0ABE D742 MOVB R2,*VRAM 314g * 315g0AC0 D060 F447 MOVB @UCBYT7,R1 316g0AC4 2F01 XOP R1,12 317g0AC6 A000 DATA MAGNTA*256 318g * 319g0AC8 D742 MOVB R2,*VRAM 320g0ACA D742 MOVB R2,*VRAM 321g * 322g * ADR 323g * 324g0ACC 2E60 F442 XOP @ROMADR,9 3 NIBBLES OF ADDRESS 325g0AD0 1158 DATA PNUCAD 326g0AD2 C000 DATA CYAN*256 IN CYAN 327g * 328g0AD4 045B RT 329g * 330g0AD6 E0C0 60A0 ATABL1 BYTE WHITE,CYAN,YELLOW,MAGNTA,RED,GREEN,WHITE 331g0ADD C0 6040 BYTE CYAN,YELLOW,GREEN,WHITE (RAMA & CONST COLOUR 332g * END OF LINE 1 333g0AE1 A0 2040 BYTE MAGNTA,RED,GREEN,WHITE 334g0AE5 C0 60 BYTE CYAN,YELLOW 335g * 336g 0AE8 BITDTA EQU $+1 337g0AE7 31 30 BYTE '1','0' 338g0AE9 00 EVEN 64 COPY SENDSPAG.990 1h ********************************************************* 2h * 3h * SEND FRAME SYNC, LINE PULSES ETC FOR SERIAL MODE 4h * 5h * WORKSPACE= SERWKS. CALL = BLWP 6h * 7h * R0 WORK REGISTER 8h * R1 SPARE 9h * R2 TEMP. STORE FOR R8 10h * R3 END OF ROW NULL BYTE COUNTER 11h * R4 POINTER TO END OF RAM DATA 12h * R5 BYTE COUNTER 13h * R6 SPARE 14h * R7 SPARE 15h * R8 POINTS TO THE NEXT SERIAL BYTE FOR TRANSMISSION 16h * R9 WORK REGISTER (COUNTER) 17h * R10 FLAG REGISTER 18h * R11 SPARE 19h * R12 = CLKCRU 20h * 21h * AUTHOR: COLIN HINSON MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 39 22h ********************************************************* 23h 0011 LCOUNT EQU 17 24h * 25h0AEA F030 0AF2 SERBYT DATA SERWKS,SERBYX 26h0AEE F030 0B64 SSTART DATA SERWKS,SSTRTX 27h * 28h * HAMMING CODES: 00 =>15 04 =>64 08 =>D0 0C =>A1 29h * 01 =>02 05 =>73 09 =>C7 0D =>B6 30h * 02 =>49 06 =>38 0A =>8C 0E =>FD 31h * 03 =>5E 07 =>2F 0B =>9B 0F =>EA 32h * 33h ********************************************************* 34h * 35h * SEND SERIAL DATA IN 'FAST' MODE 36h * 37h ********************************************************* 38h0AF2 3238 SERBYX LDCR *R8+,8 SEND A DATA BYTE 39h0AF4 0605 DEC R5 COUNT THE BYTE 40h0AF6 1508 JGT SSPXIT IF POSITIVE, NOT AT LINE EN 41h * 42h * RESET THE LINE 43h * 44h0AF8 1103 JLT RSET05 SKIP IF NOT FIRST ZERO BYTE 45h0AFA C088 MOV R8,R2 SAVE THE POINTER 46h0AFC 0203 000C LI R3,12 11 BYTES TO SEND 47h0B00 0603 RSET05 DEC R3 COUNT IT 48h0B02 1303 JEQ RSET07 IF ZERO, END OF LINE 49h0B04 0208 008A LI R8,BYTE00 POINT TO ZERO BYTE 50h0B08 0380 SSPXIT RTWP 51h * 52h0B0A C202 RSET07 MOV R2,R8 RESET TO PROPER TEXT OUTPUT 53h0B0C 22A0 008A COC @EOLFLG,R10 END OF LINE FLAG SET? 54h0B10 1605 JNE RSTL10 NO, SKIP 55h0B12 04E0 F01E CLR @WSP+R15+R15 STOP EXECUTION 56h0B16 42A0 008A SZC @EOLFLG,R10 CLEAR THE FLAG 57h0B1A 100D JMP RSTL50 58h * 59h * STOP TELETEXT IF VBI KEY HAS BEEN PRESSED 60h * 61h0B1C 22A0 008C RSTL10 COC @KEYVBI,R10 HAS VBI KEY BEEN PRESSED? 62h0B20 160A JNE RSTL50 NO, SKIP 63h0B22 42A0 008C SZC @KEYVBI,R10 YES, CLEAR THE FLAG 64h0B26 4820 008A SZC @SENDP,@CLKWSP+R10+R10 STOP THE PAGE BEING S F064 65h0B2C 020C 1000 LI R12,KBDCRU POINT TO BASE ADDRESS 66h0B30 1E0D SBZ EVMVBI SET VBI LOW 67h0B32 020C 1030 LI R12,CLKCRU RESET CRU BASE 68h * 69h0B36 0720 F07A RSTL50 SETO @LINEND PASS INFO TO 'RUN' 70h0B3A 0205 002B LI R5,SBTQTY RESET THE BYTE COUNT 71h0B3E 8108 C R8,R4 AT END OF RAM DATA? 72h0B40 1A04 JL RSTL60 NO, SKIP 73h0B42 0208 B100 LI R8,SLTEXT RESET POINTER 74h0B46 0720 F0AA SETO @LINCNT CLEAR THE LINE COUNTER 75h0B4A 1EF4 RSTL60 SBZ LPULSE LINE PUSE LOW 76h0B4C 30A0 008A LDCR @BYTE00,2 SEND A COUPLE OF CLOCKS 77h0B50 1DF4 SBO LPULSE LINE PULSE HIGH 78h0B52 3220 00B0 LDCR @BYTE80,8 SEND LS BIT OF FRAMING CODE MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 40 79h0B56 05A0 F0AA INC @LINCNT UPDATE THE LINE COUNTER 80h0B5A 2CE0 F0AB XOP @LINCNT+1,3 WRITE THE TEXT/EXT DATA 81h0B5E 0F9A DATA PNLINC 82h0B60 E000 DATA WHITE*256 83h0B62 0380 RTWP 84h ********************************************************* 85h * 86h * SET UP TO START SENDING TELETEXT DATA IN SERIAL MODE. 87h * 88h ********************************************************* 89h0B64 1EF4 SSTRTX SBZ LPULSE LINE PUSE LOW 90h0B66 30A0 008A LDCR @BYTE00,2 SEND A COUPLE OF CLOCKS 91h0B6A 1DF4 SBO LPULSE LINE PULSE HIGH 92h0B6C 3220 00B0 LDCR @BYTE80,8 SEND LS BIT OF FRAMING CODE 93h0B70 04E0 F060 CLR @CLKWSP+R8+R8 ENSURE CORRECT PATH THROUGH 94h0B74 0380 RTWP 65 COPY CLOCK.990 1i ********************************************************* 2i * 3i * GENERATE THE ALU CLOCK, AND SEND ASSOCIATED DATA 4i * 5i * TELETEXT DATA IS SENT ONCE EVERY 'QTYCLK' CLOCK CYCLE 6i * 7i * REGISTER USAGE FOR 'CLKWSP': 8i * 9i * R0 = WORK REGISTER 10i * R1 = WORK REGISTER 11i * R2 = WORK REGISTER 12i * R3 = END OF ROW NULL BYTE COUNTER 13i * R4 = SPARE 14i * R5 = MIMIC ROW DISPLAY POINTER 15i * R6,R7,R8,R9 16i * R10 = FLAG REGISTER 17i * R11 = USED BY BL 18i * R12 = CLOCK PULSE COUNTER FOR TELETEXT BYTE TX. 19i * R13,14,15 RETURN WSP,PC,ST 20i * 21i * AUTHOR: COLIN HINSON 22i ********************************************************* 23i0B76 F050 0B7A GENCLK DATA CLKWSP,SNDCLK 24i * 25i0B7A C820 F08A SNDCLK MOV @OLDAD3,@OLDAD4 SAVE OLD OLD ADDRESS F08C 26i0B80 C820 F088 MOV @OLDAD2,@OLDAD3 SAVE OLD OLD ADDRESS F08A 27i0B86 C820 F086 MOV @OLDADR,@OLDAD2 SAVE OLD ADDRESS F088 28i0B8C C060 F442 MOV @ROMADR,R1 GET THE ADDRESS 29i0B90 D001 MOVB R1,R0 GET THE CURRENT DREG DATA 30i0B92 C1E0 F446 MOV @UCBYT6,R7 SAVE CURRENT WE DATA 31i0B96 0241 0FFF ANDI R1,>0FFF LEAVE ONLY ADDRESS BITS 32i0B9A C801 F086 MOV R1,@OLDADR SAVE FOR BKPTS ETC 33i * 34i0B9E D060 F618 MOVB @CPULSE,R1 SEND A PULSE 35i0BA2 05A0 F0A0 INC @CLKCT2 COUNT THE PULSE 36i0BA6 1602 JNE DREGCH IF ZERO, 37i0BA8 05A0 F09E INC @CLKCT1 CARRY INTO MS WORD 38i * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 41 39i * CHECK FOR CHARACTER BEING WRITTEN TO DISPLAY 40i * 41i0BAC 2020 00A8 DREGCH COC @DREG,R0 WAS DREG A 1 BEFORE THE CLO 42i0BB0 1658 JNE UPDSPR NO, SKIP 43i * 44i * RX'D A CHARACTER, PUT IT ON MAIN DISPLAY 45i * THE ADDRESS FOR THE CHAR ON THE PAGE IS IN PLATCH 46i * 47i0BB2 C060 F408 RXDISP MOV @PR,R1 GET P REGR ADDRESS DATA 48i0BB6 A041 A R1,R1 MPY BY 2 49i0BB8 04C3 CLR R3 FLAG 50i0BBA 0281 07D0 CI R1,1000*2 IN PAGE DISPLAY AREA? 51i0BBE 1A04 JL RXDP00 YES, SKIP 52i0BC0 0703 SETO R3 53i0BC2 0221 09B0 AI R1,-2*1000+PNXTRA ADD THE DISPLAY ROW OFFSET 54i0BC6 1007 JMP RXDP10 55i * 56i0BC8 C1A0 F40C RXDP00 MOV @APA-1,R6 GET CURRENT PAGE SELECT DAT 57i0BCC 0246 0007 ANDI R6,>0007 REMOVE SURPLUS BITS 58i0BD0 A186 A R6,R6 WORD ALIGN 59i0BD2 A066 06F4 A @PAGTBL(R6),R1 ADD PAGE BASE ADR. TO CHAR 60i0BD6 2C01 RXDP10 XOP R1,0 SET UP VDP ADDRESS 61i0BD8 C0A0 F40A MOV @DLO,R2 GET THE WRITTEN DATA 62i0BDC C182 MOV R2,R6 COPY FOR COLOUR CALCULATION 63i0BDE 0976 SRL R6,7 ALIGN 2 MSBITS TO LS BITS 64i0BE0 D026 0CA4 MOVB @TABLE3(R6),R0 GET THE APPROPRIATE COLOUR 65i0BE4 06C2 SWPB R2 66i0BE6 0242 7F00 ANDI R2,>7F00 REMOVE MS BIT 67i0BEA 1603 JNE RXDI20 IF NOT NULL, SKIP 68i * 69i * SEND 0/0 TO SCREEN 70i * 71i0BEC D0A0 00B3 RXDI00 MOVB @NULL00,R2 SET UP (NUL = 0/0) 72i0BF0 1010 JMP RXDI30 SET UP ATT, AND DO THE WRIT 73i * 74i * CHECK FOR >20 75i * 76i0BF2 9802 00AC RXDI20 CB R2,@BYTE20 IS IT A SPACE? 77i0BF6 160F JNE RXWTCH NO, SKIP 78i0BF8 D0A0 00B2 MOVB @BYTESP,R2 SET UP 'SP' FOR MAIN DISPLA 79i0BFC C0C3 MOV R3,R3 WRITING EXTRA RAM DISPLAY? 80i0BFE 1609 JNE RXDI30 YES, GO WRITE 'SP' 81i * 82i0C00 D820 008A MOVB @BYTE00,@VDPWD WRITE THE ATTRIBUTE FA00 83i0C06 D820 008A MOVB @BYTE00,@VDPWD WRITE THE CHARACTER FA00 84i0C0C 0260 1800 ORI R0,CHGEN3 SET UP CHAR GEN 3 85i0C10 1016 JMP RXDI40 86i * 87i0C12 0260 1800 RXDI30 ORI R0,CHGEN3 SET UP CHAR GEN 3 88i * 89i0C16 D800 FA00 RXWTCH MOVB R0,@VDPWD WRITE THE ATTRIBUTE 90i0C1A D802 FA00 MOVB R2,@VDPWD WRITE THE CHARACTER 91i0C1E C0C3 MOV R3,R3 WRITING EXTRA BYTES? 92i0C20 130E JEQ RXDI40 NO, SKIP 93i * 94i * WRITE TO THE PAGE CONTAINING THE LAST 24 BYTES MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 42 95i * 96i0C22 0221 1F90 AI R1,TTXPG8-PNXTRA REMOVE THE OFFSET, ADD BASE 97i0C26 C1A0 F40C MOV @APA-1,R6 GET CURRENT PAGE SELECT DAT 98i0C2A 0246 0007 ANDI R6,>0007 REMOVE SURPLUS BITS 99i0C2E A186 A R6,R6 WORD ALIGN 100i0C30 A066 0C94 A @ROWTBL(R6),R1 ADD THE ROW OFFSET 101i0C34 2C01 XOP R1,0 SET UP THE VDP ADDR 102i0C36 D800 FA00 MOVB R0,@VDPWD WRITE THE ATTRIBUTE 103i0C3A D802 FA00 MOVB R2,@VDPWD WRITE THE CHARACTER 104i * 105i * NOW UPDATE THE 'RECEIVED ROW' ON THE MIMIC 106i * 107i0C3E 0285 1040 RXDI40 CI R5,PNRX+80 AT END OF DISPLAY? 108i0C42 1A09 JL DISC10 109i * CLEAR THE DISPLAY ROW 110i0C44 0205 0FF0 LI R5,PNRX RESET POINTER TO START OF D 111i0C48 2C05 XOP R5,0 SET UP VDP POINTER 112i0C4A 0201 0050 LI R1,80 80 BYTES TO CLEAR 113i0C4E D801 FA00 CLDR10 MOVB R1,@VDPWD WRITE A BYTE 114i0C52 0601 DEC R1 115i0C54 16FC JNE CLDR10 116i0C56 2C05 DISC10 XOP R5,0 SET VDP ADDRESS 117i0C58 05C5 INCT R5 UPDATE FOR NEXT BYTE 118i0C5A D800 FA00 MOVB R0,@VDPWD WRITE THE ATTRIBUTE 119i0C5E D802 FA00 MOVB R2,@VDPWD WRITE THE CHARACTER 120i * 121i * UPDATE SCRATCH RAM DISPLAY IF REQUIRED 122i * 123i0C62 21E0 009E UPDSPR COC @WEBIT,R7 WAS WE A 1 BEFORE CLOCK? 124i0C66 160A JNE GNCK10 NO, SKIP 125i0C68 8820 0C92 C @SPRDTA,@DSPNTR SPR PAGE ON DISPLAY? F084 126i0C6E 1606 JNE GNCK10 NO, SKIP 127i0C70 02E0 F000 LWPI WSP 128i0C74 06A0 070A BL @DISSPR YES, DISPLAY THE RAM DATA 129i0C78 02E0 F050 LWPI CLKWSP 130i * 131i0C7C 060C GNCK10 DEC R12 COUNT THE CLOCK 132i0C7E 1607 JNE CKRTWP 133i0C80 22A0 008A COC @SENDP,R10 ARE WE SENDING A PAGE? 134i0C84 1602 JNE CLKXT2 NO, EXIT 135i0C86 0420 0AEA BLWP @SERBYT SEND A BYTE TO SERIAL BOARD 136i * 137i0C8A 020C 000A CLKXT2 LI R12,QTYCLK RESET THE COUNT 138i0C8E 0380 CKRTWP RTWP 139i * 140i0C90 219A D3END DATA DSPLY3+>800-6 END OF DISPLAY 3 141i0C92 0F00 SPRDTA DATA SPRPAG 142i * 143i0C94 0050 0140 ROWTBL DATA ROW*1,ROW*4,ROW*7,ROW*10 144i0C9C 0410 0500 DATA ROW*13,ROW*16,ROW*19,ROW*22 145i * 146i * TABLE OF COLOURS FOR BITS 8 AND 9 IN WRITTEN DATA 147i * 148i0CA4 E020 C040 TABLE3 BYTE WHITE,RED,CYAN,GREEN 66 COPY XFERMC.990 1j ********************************************************* 2j * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 43 3j * XFERMC - TRANSFER THE MICROCODE DATA TO RAM 4j * 5j * AUTHOR: COLIN HINSON 6j ********************************************************* 7j0CA8 020C 1000 XFERMC LI R12,KBDCRU 8j0CAC 1D11 SBO CPUACC SWITCH MUX TO 9995 ACCESS 9j0CAE 020C 1024 LI R12,MAPCRU POINT TO MAP BITS 10j0CB2 04C3 CLR R3 COUNTER FOR MAP BITS 11j * 12j * CLEAR THE RAM, THEN CLOCK THE LATCHES TO ENSURE ZERO LA 13j * 14j0CB4 30C3 XFERM5 LDCR R3,3 SET UP THE RELEVANT MAP 15j0CB6 0201 E000 LI R1,MCRAM POINT TO RAM 16j0CBA 0202 F000 LI R2,>1000+MCRAM POINT TO END OF UCODE RAM 17j0CBE 04F1 XFRM10 CLR *R1+ CLEAR 2 BYTES 18j0CC0 8081 C R1,R2 CHECK FOR END 19j0CC2 1AFD JL XFRM10 20j0CC4 0223 0100 AI R3,>0100 NEXT MAP 21j0CC8 0283 0800 CI R3,>0800 CHECK FOR LAST MAP 22j0CCC 1AF3 JL XFERM5 23j0CCE 020C 1000 LI R12,KBDCRU RESET BASE ADDRESS 24j0CD2 1D10 SBO ROMEN MAKE SURE RAMS TURNED OFF 25j0CD4 1E11 SBZ CPUACC SWITCH MUX TO ALU ACCESS 26j0CD6 1D06 SBO RESET REMOVE RESET - OR NO CLOCKS 27j0CD8 1E10 SBZ ROMEN TURN RAMS BACK ON 28j * 29j0CDA 0201 0014 LI R1,20 30j0CDE D020 F618 XFRM20 MOVB @CPULSE,R0 SEND A CLOCK TO LATCH ADR 31j0CE2 0601 DEC R1 32j0CE4 16FC JNE XFRM20 33j * 34j0CE6 1D10 SBO ROMEN MAKE SURE RAMS TURNED OFF 35j0CE8 1E06 SBZ RESET APPLY RESET AGAIN 36j0CEA 1D11 SBO CPUACC SWITCH MUX TO 9995 ACCESS 37j0CEC 1E10 SBZ ROMEN TURN RAMS BACK ON 38j0CEE 04C3 CLR R3 39j0CF0 0201 4000 LI R1,MCSTOR POINT TO DATA FOR DOWNLOAD 40j0CF4 020C 1024 XFRM25 LI R12,MAPCRU POINT TO MAP BITS 41j0CF8 30C3 LDCR R3,3 SET UP THE MAP 42j0CFA 04C2 CLR R2 CLEAR INDEX POINTER 43j0CFC D8B1 E000 XFRM30 MOVB *R1+,@MCRAM(R2) 44j0D00 D8B1 E200 MOVB *R1+,@MCRAM+>200(R2) 45j0D04 D8B1 E400 MOVB *R1+,@MCRAM+>400(R2) 46j0D08 D8B1 E600 MOVB *R1+,@MCRAM+>600(R2) 47j0D0C D8B1 E800 MOVB *R1+,@MCRAM+>800(R2) 48j0D10 D8B1 EA00 MOVB *R1+,@MCRAM+>A00(R2) 49j0D14 D8B1 EC00 MOVB *R1+,@MCRAM+>C00(R2) 50j0D18 D8B1 EE00 MOVB *R1+,@MCRAM+>E00(R2) 51j0D1C 0582 INC R2 52j0D1E 0282 0200 CI R2,PAGLEN CHECK FOR END 53j0D22 1AEC JL XFRM30 LOOP TILL DONE 54j0D24 0223 0100 AI R3,>0100 NEXT MAP 55j0D28 0283 0700 CI R3,LASTMP*>100 CHECK FOR LAST MAP 56j0D2C 1AE3 JL XFRM25 57j0D2E 020C 1000 LI R12,KBDCRU RESET BASE ADDRESS 58j0D32 1D10 SBO ROMEN MAKE SURE RAMS TURNED OFF 59j0D34 1E11 SBZ CPUACC SWITCH MUX TO ALU ACCESS 60j0D36 1E10 SBZ ROMEN TURN RAMS BACK ON MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 44 61j * RT AND RETURN TO CALLER 62j * 63j * CHECK THAT THE DOWNLOADED CODE IS SAME AS STORED CODE 64j * 65j0D38 020C 1000 LI R12,KBDCRU 66j0D3C 1D11 SBO CPUACC SWITCH MUX TO 9995 ACCESS 67j0D3E 020C 1024 LI R12,MAPCRU POINT TO MAP BITS 68j0D42 04C3 CLR R3 COUNTER FOR MAP BITS 69j0D44 0201 4000 LI R1,MCSTOR POINT TO DATA FOR DOWNLOAD 70j0D48 020C 1024 XFRM40 LI R12,MAPCRU POINT TO MAP BITS 71j0D4C 30C3 LDCR R3,3 SET UP THE MAP 72j0D4E 04C2 CLR R2 CLEAR INDEX POINTER 73j0D50 98B1 E000 XFRM50 CB *R1+,@MCRAM(R2) 74j0D54 1624 JNE MCRONG 75j0D56 98B1 E200 CB *R1+,@MCRAM+>200(R2) 76j0D5A 1621 JNE MCRONG 77j0D5C 98B1 E400 CB *R1+,@MCRAM+>400(R2) 78j0D60 161E JNE MCRONG 79j0D62 98B1 E600 CB *R1+,@MCRAM+>600(R2) 80j0D66 161B JNE MCRONG 81j0D68 98B1 E800 CB *R1+,@MCRAM+>800(R2) 82j0D6C 1618 JNE MCRONG 83j0D6E 98B1 EA00 CB *R1+,@MCRAM+>A00(R2) 84j0D72 1615 JNE MCRONG 85j0D74 98B1 EC00 CB *R1+,@MCRAM+>C00(R2) 86j0D78 1612 JNE MCRONG 87j0D7A 98B1 EE00 CB *R1+,@MCRAM+>E00(R2) 88j0D7E 160F JNE MCRONG 89j0D80 0582 INC R2 90j0D82 0282 0200 CI R2,PAGLEN CHECK FOR END 91j0D86 1AE4 JL XFRM50 LOOP TILL DONE 92j0D88 0223 0100 AI R3,>0100 NEXT MAP 93j0D8C 0283 0700 CI R3,LASTMP*>100 CHECK FOR LAST MAP 94j0D90 1ADB JL XFRM40 95j0D92 020C 1000 LI R12,KBDCRU RESET BASE ADDRESS 96j0D96 1D10 SBO ROMEN MAKE SURE RAMS TURNED OFF 97j0D98 1E11 SBZ CPUACC SWITCH MUX TO ALU ACCESS 98j0D9A 1E10 SBZ ROMEN TURN RAMS BACK ON 99j0D9C 045B RT AND RETURN TO CALLER 100j * 101j *MCRONG JMP $ 102j0D9E 045B MCRONG RT 67 COPY SETUP2.990 1k ********************************************************* 2k * 3k * SETUP2 SETS UP THE MICROCODE STORE TEXT 4k * 5k * AUTHOR: COLIN HINSON 6k ********************************************************* 7k * 8k * SET UP THE FIRST LINE OF TEXT 9k * 10k0DA0 C30B SETUP2 MOV R11,R12 SAVE RETURN 11k0DA2 0200 1040 LI R0,UCLIN1 FIRST LINE OF UC STORE 12k0DA6 2C00 XOP R0,0 13k0DA8 0201 0DD0 LI R1,UCTBL1 POINT TO TABLE 14k0DAC 06A0 0DBC BL @UCTEXT 15k * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 45 16k * SET UP SECOND LINE OF TEXT 17k * 18k0DB0 0200 10E0 LI R0,UCLIN2 SECOND LINE OF UC STORE 19k0DB4 2C00 XOP R0,0 20k0DB6 06A0 0DBC BL @UCTEXT 21k * 22k0DBA 045C B *R12 RETURN TO CALLER 23k * 24k * WRITE A LINE OF TEXT FROM THE APPROPRIATE TABLE 25k * 26k0DBC D0F1 UCTEXT MOVB *R1+,R3 GET THE QUANTITY 27k0DBE 1307 JEQ UCTE30 28k0DC0 0983 SRL R3,8 TO LSB 29k0DC2 D0B1 MOVB *R1+,R2 GET THE ATTRIBUTE 30k0DC4 D742 UCTE20 MOVB R2,*VRAM ATTRIBUTE TO VDP 31k0DC6 D771 MOVB *R1+,*VRAM TEXT TO VDP 32k0DC8 0603 DEC R3 COUNT IT 33k0DCA 16FC JNE UCTE20 LOOP TILL ZERO 34k0DCC 10F7 JMP UCTEXT NEXT TEXT BLOCK 35k0DCE 045B UCTE30 RT 36k * 37k * 38k * 39k0DD0 03E4 UCTBL1 BYTE 3,WHITE+4 40k0DD2 434D 53 TEXT 'CMS' 41k * 42k0DD5 03 C4 BYTE 3,CYAN+4 43k0DD7 45 4D53 TEXT 'EMS' 44k * 45k0DDA 0464 BYTE 4,YELLOW+4 46k0DDC 5052 4D41 TEXT 'PRMA' 47k * 48k0DE0 03A4 BYTE 3,MAGNTA+4 49k0DE2 4645 TEXT 'FE' 50k0DE4 00 BYTE 0 51k * 52k0DE5 02 24 BYTE 2,RED+4 53k0DE7 41 4C TEXT 'AL' 54k * 55k0DE9 02 44 BYTE 2,GREEN+4 56k0DEB 42 4C TEXT 'BL' 57k * 58k0DED 03 E4 BYTE 3,WHITE+4 59k0DEF 4A 4D50 TEXT 'JMP' 60k * 61k0DF2 02C4 BYTE 2,CYAN+4 62k0DF4 444C TEXT 'DL' 63k * 64k0DF6 0264 BYTE 2,YELLOW+4 65k0DF8 504C TEXT 'PL' 66k * 67k0DFA 04A4 BYTE 4,MAGNTA+4 68k0DFC 5241 4D41 TEXT 'RAMA' 69k * 70k0E00 0424 BYTE 4,RED+4 71k0E02 434F 4E53 TEXT 'CONS' 72k * 73k0E06 0444 BYTE 4,GREEN+4 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 46 74k0E08 5256 4450 TEXT 'RVDP' 75k * 76k0E0C 04E4 BYTE 4,WHITE+4 77k0E0E 5644 5043 TEXT 'VDPC' 78k * 79k0E12 00 BYTE 0 END OF LIST 80k * 81k * TABLE FOR SECOND LINE OF TEXT 82k * 83k0E13 03 A4 BYTE 3,MAGNTA+4 84k0E15 43 4252 TEXT 'CBR' 85k * 86k0E18 0324 BYTE 3,RED+4 87k0E1A 0053 00 BYTE 0,'S',0 88k * 89k0E1D 03 44 BYTE 3,GREEN+4 90k0E1F 43 494E TEXT 'CIN' 91k * 92k0E22 03E4 BYTE 3,WHITE+4 93k0E24 4558 54 TEXT 'EXT' 94k * 95k0E27 02 C4 BYTE 2,CYAN+4 96k0E29 57 45 TEXT 'WE' 97k * 98k0E2B 03 64 BYTE 3,YELLOW+4 99k0E2D 41 4D53 TEXT 'AMS' 100k * 101k0E30 03A4 BYTE 3,MAGNTA+4 102k0E32 424D 53 TEXT 'BMS' 103k * 104k * ADDRESS INFO 105k * 106k0E35 03 24 BYTE 3,RED+4 107k0E37 4E 5854 TEXT 'NXT' 108k * 109k0E3A 0100 BYTE 1,0 110k0E3C 00 BYTE 0 111k * 112k0E3D 03 44 BYTE 3,GREEN+4 113k0E3F 4E 4F57 TEXT 'NOW' 114k * 115k0E42 0100 BYTE 1,0 116k0E44 00 BYTE 0 117k * 118k0E45 0C C4 BYTE 12,CYAN+4 119k0E47 00 00 BYTE 0,0 120k0E49 50 5245 TEXT 'PREVIOUS' 121k0E51 00 00 BYTE 0,0 122k * 123k0E53 00 BYTE 0 END OF LINE 68 COPY GENCAR.990 1l ********************************************************* 2l * GENCAR 3l ********************************************************* 4l * 5l * Down load normal character set 6l * 7l0E54 0205 0000 GENCAR LI R5,BAGC0+2 Point to start of char gen MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 47 8l0E58 0701 SETO R1 FOR >FF TEST 9l0E5A 2C05 XOP R5,0 Set VDP pointer 10l0E5C 0205 1D52 LI R5,GEN0 Start of character table 11l0E60 04C4 CLR R4 12l * 13l0E62 0285 20CE GENC10 CI R5,GEN3 CHECK FOR END 14l0E66 1414 JHE GENC60 15l0E68 D035 MOVB *R5+,R0 GET BYTE FROM TABLE 16l0E6A 1102 JLT GENC13 IF NEGATIVE, CHECK FOR >FF 17l0E6C D740 GENC11 MOVB R0,*VRAM SEND BYTE TO VDP 18l0E6E 10F9 JMP GENC10 19l * 20l0E70 04C4 GENC13 CLR R4 21l0E72 9040 CB R0,R1 FOUND >FF? 22l0E74 1606 JNE GENC20 NO, TRY FOR >FE 23l0E76 D0B5 MOVB *R5+,R2 GET THE ZERO COUNT 24l0E78 0982 SRL R2,8 ALIGN TO LSB, 0 TO MSB 25l0E7A D744 GENC15 MOVB R4,*VRAM ZERO TO VDP 26l0E7C 0602 DEC R2 COUNT IT 27l0E7E 16FD JNE GENC15 LOOP TILL DONE 28l0E80 10F0 JMP GENC10 29l * 30l0E82 9800 00B7 GENC20 CB R0,@BYTEFE FOUND >FE? 31l0E86 16F2 JNE GENC11 NO, MUST BE DATA 32l0E88 D0B5 MOVB *R5+,R2 GET THE COUNT 33l0E8A 0982 SRL R2,8 34l0E8C D135 MOVB *R5+,R4 GET THE DATA 35l0E8E 10F5 JMP GENC15 AND GO DO THE LOAD 36l * 37l * DOWNLOAD CHARACTER GEN. 3 (ONLY 4 CHARS) 38l * 39l0E90 0200 0500 GENC60 LI R0,BAGC3+2 Point to start of char gen 40l0E94 2C00 XOP R0,0 Set VDP pointer 41l * 42l0E96 0201 000A LI R1,10 10 LINES TO LOAD 43l0E9A 0200 0004 GENC70 LI R0,4 ONLY 4 CHARACTERS 44l0E9E D775 GENC80 MOVB *R5+,*VRAM GET BYTE FROM TABLE 45l0EA0 0600 DEC R0 46l0EA2 16FD JNE GENC80 47l0EA4 0200 007C LI R0,124 124 CLEAR BYTES 48l0EA8 D740 GENC90 MOVB R0,*VRAM 49l0EAA 0600 DEC R0 50l0EAC 16FD JNE GENC90 51l0EAE 0601 DEC R1 52l0EB0 16F4 JNE GENC70 53l0EB2 045B RT 69 COPY ENCODE.990 1m ********************************************************* 2m * 3m * ENCODE - Keyboard scanner 4m * 5m * Preconditions: 6m * 7m * Postconditions: KEY IS IN R1 LSB IF PRESSED 8m * 9m * Called by: KEY 10m * 11m * Calls: None MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 48 12m * 13m * Local variables: 14m * 15m * Global variables: 16m * 17m * Comments: It should be noted that if a key has 18m * not been pressed then this routine 19m * will return directly to the routine 20m * which called KEY 21m * 22m * AUTHOR: COLIN HINSON 23m ********************************************************* 24m * 25m * Keyboard codes look up table 26m * 27m0EB4 1117 191F CLAVTB BYTE >11,>17,>19,>1F,>0A,>20,>1A,>12 28m0EBC 0001 0407 BYTE >00,>01,>04,>07,>0B,>21,>1B,>25 29m0EC4 2602 0508 BYTE >26,>02,>05,>08,>0C,>22,>1E,>18 LAST KEY US 30m0ECC 2703 0609 BYTE >27,>03,>06,>09,>0D,>23,>1D,>16 31m0ED4 1013 140F BYTE >10,>13,>14,>0F,>0E,>24,>1C,>15 32m * 33m * The keyboard layout 34m * 35m * ENTBP SETBP ENTLP RSTMC A DSP1 TXTXT SNDP 36m * 0 1 4 7 B DSP2 TXRC GOTO 37m * ---- 2 5 8 C DSP3 LOAD RESET 38m * STEP 3 6 9 D CLRD2 EOL SET & RUN 39m * STEP SLOW FAST F E SPRAM VBI RUN 40m * 41m * TCJ Nov 92 42m * Check the RS232 for a possible character. If 43m * one has been received then use it as the key 44m * code. 45m * 46m0EDC 020C 0100 ENCODE LI R12,PORT1 Check RS232, 47m0EE0 1F15 TB 21 Byte received ? 48m0EE2 1605 JNE ENKEYB No - Try the keybord 49m * 50m * Read in RS232 byte as key code 51m * 52m0EE4 3601 STCR R1,8 Read in the Byte 53m0EE6 0981 SRL R1,8 Move it to the LSB 54m0EE8 1E12 SBZ 18 55m0EEA 1D12 SBO 18 56m0EEC 045B RT 57m * 58m * Normal keybord processing 59m * 60m0EEE 04C0 ENKEYB CLR R0 61m0EF0 020C 1000 LI R12,KBDCRU POINT TO 259 62m0EF4 3140 LDCR R0,5 SET ALL 6 O/PS TO ZERO 63m0EF6 3600 STCR R0,8 READ INPUTS 64m0EF8 0280 FF00 CI R0,>FF00 KEY DOWN? 65m0EFC 160E JNE KEYDWN YES, JUMP 66m0EFE 9820 008A CB @BYTE00,@KEYFLG DEBOUNCING A KEY? F0DB 67m0F04 1307 JEQ KBDRTN NO, ABORT 68m0F06 B820 00B8 AB @BYTEFF,@KEYFLG DECREMENT DELAY COUNT MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 49 F0DB 69m0F0C 1603 JNE KBDRTN JUMP IF NOT FULLY DE-BOUNCE 70m0F0E D820 008A MOVB @BYTE00,@KEYPRO ALLOW KEY TO BE PRESSED F0DC 71m0F14 064A KBDRTN DECT R10 72m0F16 C2DA MOV *R10,R11 73m0F18 045B B *R11 74m * 75m0F1A 9820 F0DC KEYDWN CB @KEYPRO,@BYTE00 KEY ALREADY PROCESSED? 008A 76m0F20 16F9 JNE KBDRTN YES, ABORT 77m0F22 B820 009E AB @BYTE01,@KEYFLG INCREMENT DELAY COUNT F0DB 78m0F28 9820 F0DB CB @KEYFLG,@BYTE10 DEBOUNCE TIME REACHED? 00A8 79m0F2E 1AF2 JL KBDRTN NO, ABORT 80m0F30 D820 00B8 MOVB @BYTEFF,@KEYPRO SET KEY PROCESSED FLAG F0DC 81m * 82m * READ IN THE KEY VALUE 83m * 84m0F36 0201 FEFF LI R1,>FEFF SET UP MASK 85m0F3A 04C0 CLR R0 86m0F3C 3141 NXROW LDCR R1,5 OUTPUT ONE COLUMN 87m0F3E 3600 STCR R0,8 READ INPUTS 88m0F40 0280 FF00 CI R0,>FF00 TEST FOR ACTIVE KEY 89m0F44 1605 JNE KOLONN FOUND, JUMP 90m0F46 0A11 SLA R1,1 ROTATE THE COLUMN MASK 91m0F48 0281 BF00 CI R1,>BF00 IF MORE COLS, LOOP 92m0F4C 14F7 JHE NXROW 93m0F4E 10E2 JMP KBDRTN NO KEY, ABORT 94m * 95m * R1 NOW CONTAINS THE OUTPUT COLUMN, R0 THE INPUT ROW 96m * KEY PRESSED IS 8 TIMES BIT POSITION IN R1, PLUS 97m * BIT POSITION IN R0 98m * 99m0F50 0981 KOLONN SRL R1,8 MOVE TO LSB 100m0F52 0980 SRL R0,8 MOVE TO LSB 101m0F54 0202 FFF8 LI R2,-8 INIT TO -8 102m0F58 0222 0008 NFND1 AI R2,8 103m0F5C 0911 SRL R1,1 TEST LS BIT 104m0F5E 18FC JOC NFND1 LOOP TILL ZERO FALLS OUT 105m0F60 0602 DEC R2 COMPENSATE FOR FOLLOWING IN 106m0F62 0582 NFND2 INC R2 107m0F64 0910 SRL R0,1 TEST LSBIT 108m0F66 18FD JOC NFND2 109m0F68 D062 0EB4 MOVB @CLAVTB(R2),R1 GET ASCII OF KEY FROM TABLE 110m0F6C 11D3 JLT KBDRTN IF NOT, ABORT 111m0F6E 0981 SRL R1,8 MOVE TO LSB 112m0F70 045B RT 113m 70 COPY SETSRL.990 1n ********************************************************* 2n * 3n * SET UP THE SERIAL DATA IN RAM, GENERATED FROM THE 4n * PARALLEL DATA PAGE. 5n * 6n * WORKSPACE = WSP (MAIN) MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 50 7n * 8n * AUTHOR: COLIN HINSON 9n ********************************************************* 10n0F72 CE8B SETSRL MOV R11,*R10+ 11n0F74 0201 B100 LI R1,SLTEXT POINT TO START OF RAM 12n0F78 0202 20F6 LI R2,DSTART POINT TO START OF SERIAL DA 13n0F7C 04C6 CLR R6 CLR PACKET 26 FLAG 14n * 15n * CHECK FOR END OF DATA OR RAM 16n * 17n0F7E 0282 3FD6 SETS05 CI R2,>4000-42 AT END OF DATA? 18n0F82 142A JHE SETSRT YES, EXIT 19n0F84 0281 DFD5 CI R1,MCRAM-43 AT END OF RAM? 20n0F88 1B27 JH SETSRT YES, EXIT 21n0F8A 0203 002A LI R3,42 SET UP BYTES PER LINE 22n * 23n * COMPUTE THE QTY OF HAMMING BYTES, AND SEND TO RAM 24n * 25n0F8E 0200 0027 LI R0,>0027 SET UP FRAMING CODE 26n0F92 D132 MOVB *R2+,R4 GET NUMBER OF HAMMING BYTES 27n0F94 1105 JLT SETS20 IF HAMMING SKIP 28n0F96 06A0 160A BL @CLRALL 29n0F9A 0204 1B19 LI R4,DTAER2 POINT TO >8X MESSAGE 30n0F9E 103B JMP STAY ELSE DO ERROR ROUTINE 31n * 32n0FA0 0984 SETS20 SRL R4,8 TO LSB 33n0FA2 0244 007F ANDI R4,>7F REMOVE THE INDICATOR 34n0FA6 60C4 S R4,R3 COMPUTE THE ASCII BYTES 35n0FA8 111C JLT CHKP26 IF NEGATIVE, TRY FOR PACKET 36n0FAA 06A0 102C BL @CNVHAM DO HAMMING CONVERSION 37n * 38n * SEND THE ASCII BYTES TO RAM 39n * 40n0FAE C0C3 MOV R3,R3 ANY BYTES LEFT? 41n0FB0 130D JEQ ASCR20 NO, SORT OUT LAST BYTE 42n * 43n0FB2 D032 ASCRAM MOVB *R2+,R0 GET A BYTE 44n0FB4 11F5 JLT SETS20 IF HAMMING INDICATOR, JUMP 45n0FB6 1C02 JOP ASCR10 IF ODD PARITY, OK 46n0FB8 0260 8000 ORI R0,>8000 SET THE PARITY BIT 47n0FBC 0910 ASCR10 SRL R0,1 REMOVE LS BIT 48n0FBE DC60 F001 MOVB @R0LSB,*R1+ DATA TO RAM 49n0FC2 0970 SRL R0,7 ALIGN MISSING BIT TO LSBIT 50n0FC4 0603 DEC R3 COUNT THE BYTE 51n0FC6 15F5 JGT ASCRAM IF POSITIVE, LOOP 52n0FC8 1301 JEQ ASCR20 IF ZERO, DO LAST 7 BITS 53n0FCA 10D9 JMP SETS05 IF NEGATIVE, NEXT ROW 54n * 55n0FCC D120 F001 ASCR20 MOVB @R0LSB,R4 TEST PARITY BIT 56n0FD0 1CF5 JOP ASCR10 57n0FD2 0260 0080 ORI R0,>0080 SET THE PARITY BIT 58n0FD6 10F2 JMP ASCR10 59n * 60n0FD8 C801 F038 SETSRT MOV R1,@SERWKS+R4+R4 61n0FDC 064A DECT R10 62n0FDE C2DA MOV *R10,R11 63n0FE0 045B RT 64n * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 51 65n0FE2 0284 007E CHKP26 CI R4,>7E PACKET 26? 66n0FE6 160D JNE CHKVPS NO, CHECK FOR END OF DATA 67n0FE8 D832 F0A6 MOVB *R2+,@P26ER3 MSB ERRORS 68n0FEC D832 F0A4 MOVB *R2+,@P26ER2 MIDDLE BYTE ERRORS 69n0FF0 D832 F0A2 MOVB *R2+,@P26ER1 LSB ERRORS 70n0FF4 0204 0003 LI R4,3 3 HAMMING BYTES TO DO 71n0FF8 06A0 102C BL @CNVHAM DO HAMMING CONVERSION 72n0FFC 06A0 107C BL @CNVPSP DO PACKET 26 CONVERSION. 73n1000 10BE JMP SETS05 AND LOOP FOR NEXT PACKET 74n * 75n1002 0284 007D CHKVPS CI R4,>7D VPS LINE? 76n1006 1602 JNE CHKEOD NO, CHECK FOR EOD 77n1008 0460 117E B @SETVPS GO SET UP VPS LINE. 78n * 79n100C 0284 007F CHKEOD CI R4,>7F END OF DATA FLAG? 80n1010 13E3 JEQ SETSRT YES 81n1012 0204 1B2B LI R4,DTAER3 POINT TO MESSAGE 82n * 83n1016 2C60 1AFE STAY XOP @DTAERR,1 OUTPUT ERROR MESSAGE 84n101A 0DC0 DATA PNDERR 85n101C E000 DATA WHITE*256 86n * 87n101E 2C54 XOP *R4,1 88n1020 0E18 DATA PNDERR+ROW+8 89n1022 E000 DATA WHITE*256 90n * 91n1024 0602 DEC R2 POINT TO ERROR BYTE 92n1026 2D02 XOP R2,4 93n1028 E000 DATA WHITE*256 94n * 95n102A 10FF JMP $-2 %%%%%%%%%WAS JMP $%%%%%%%%% 96n ********************************************************* 97n * 98n * SEND A HAMMING BYTE (POINTED TO BY R2) TO THE RAM 99n * IN HAMMING ENCODED FORM. 100n * 101n * THE ROW AND MAGAZINE BYTES HAVE TO BE FIXED FIRST. 102n * 103n ********************************************************* 104n102C D172 CNVHAM MOVB *R2+,R5 GET THE MAG. NO 105n102E 0985 SRL R5,8 TO LSB 106n1030 04C8 CLR R8 FOR BYTE MOVES 107n1032 D832 F011 MOVB *R2+,@R8LSB GET THE ROW NO. 108n1036 0918 SRL R8,1 TEST THE LSB 109n1038 1702 JNC CNVH10 110n103A 0265 0008 ORI R5,>0008 SET THE HAMMING MSBIT 111n103E D025 1064 CNVH10 MOVB @HAMTAB(R5),R0 GET THE CONVERSION 112n1042 0910 SRL R0,1 REMOVE LS BIT 113n1044 DC60 F001 MOVB @R0LSB,*R1+ DATA TO RAM 114n1048 0970 SRL R0,7 ALIGN MISSING BIT TO LSBIT 115n104A 0604 DEC R4 COUNT THE HAMMING BYTE 116n104C 1002 JMP CNVH30 117n * 118n104E D832 F011 CNVH20 MOVB *R2+,@R8LSB GET A BYTE 119n1052 D028 1064 CNVH30 MOVB @HAMTAB(R8),R0 GET THE CONVERSION 120n1056 0910 SRL R0,1 REMOVE LS BIT 121n1058 DC60 F001 MOVB @R0LSB,*R1+ DATA TO RAM 122n105C 0970 SRL R0,7 ALIGN MISSING BIT TO LSBIT MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 52 123n105E 0604 DEC R4 COUNT THE BYTE 124n1060 16F6 JNE CNVH20 125n1062 045B RT 126n ********************************************************* 127n * 128n * HAMMING CONVERSION TABLE (NUMBER TO HAMMING) 129n * 130n ********************************************************* 131n1064 1502 495E HAMTAB BYTE >15,>02,>49,>5E,>64,>73,>38,>2F 132n106C D0C7 8C9B BYTE >D0,>C7,>8C,>9B,>A1,>B6,>FD,>EA 133n1074 0111 2233 BYTE >01,>11,>22,>33,>44,>55,>66,>77 134n ********************************************************* 135n * 136n * SUBROUTINE: PACKET 26, 24 BIT HAMMING GENERATION 137n * 138n * R0 = DATA HOLDER (FOR BIT SHIFT ETC) 139n * R1 = POINTER TO RAM TO BE DOWNLOADED 140n * R2 = POINTER TO PAGE DATA IN ROM 141n * R3 = LOOP COUNTER 142n * R4 = ADDRESS HOLDER 143n * R5 = ADDRESS/MODE HOLDER 144n * R6 = DATA HOLDER 145n * 146n ********************************************************* 147n107C 0203 000D CNVPSP LI R3,13 13 GROUPS TO DO 148n * 149n * GET THE ADDRESS, AND ALIGN IT IN R4 150n * 151n1080 D132 CNVPLP MOVB *R2+,R4 GET THE ADDRESS 152n1082 0944 SRL R4,4 ALIGN THE 2 MS BITS 153n1084 C144 MOV R4,R5 154n1086 0244 0300 ANDI R4,>0300 REMOVE SURPLUS BITS 155n108A 0915 SRL R5,1 ALIGN THE NEXT 3 BITS 156n108C C185 MOV R5,R6 157n108E 0245 0070 ANDI R5,>0070 REMOVE SURPLUS BITS 158n1092 0916 SRL R6,1 ALIGN THE LS BIT 159n1094 0246 0004 ANDI R6,>0004 REMOVE SURPLUS BITS 160n1098 E146 SOC R6,R5 COMBINE THE BITS 161n109A E105 SOC R5,R4 AND AGAIN 162n * 163n * THE ADDRESS BITS ARE NOW ALIGNED IN R4 164n * NOW WE NEED TO GET THE MODE BITS AND ALIGN THOSE 165n * CORRECTLY, THEN SET THEM IN R4, THEN GET THE MSB 166n * OF R4 BACK TO R5 (MODE/ADDRESS) 167n * 168n109C D172 MOVB *R2+,R5 GET THE MODE BITS 169n109E 0A25 SLA R5,2 ALIGN CORRECTLY 170n10A0 0245 7C00 ANDI R5,>7C00 REMOVE SURPLUS BITS 171n10A4 E105 SOC R5,R4 AND SET UP IN R4 172n10A6 D144 MOVB R4,R5 GET THE MIDDLE BYTE 173n10A8 0A84 SLA R4,8 ALIGN TO MSB 174n * 175n * WE NOW NEED THE DATA IN R6 (MS BYTE). THIS WILL 176n * GIVE US ALL 24 BITS - IN R4, R5, R6. 177n * 178n10AA 04C6 CLR R6 179n10AC D1B2 MOVB *R2+,R6 GET THE DATA BYTE 180n * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 53 181n * GENERATE P1 182n * 183n10AE C1C4 MOV R4,R7 184n10B0 C205 MOV R5,R8 185n10B2 C246 MOV R6,R9 186n10B4 0247 5500 ANDI R7,>5500 LEAVE ONLY ODD BITS 187n10B8 0248 5500 ANDI R8,>5500 188n10BC 0249 5500 ANDI R9,>5500 189n10C0 2A47 XOR R7,R9 190n10C2 2A48 XOR R8,R9 191n10C4 D249 MOVB R9,R9 SET UP THE PARITY STATUS BI 192n10C6 1C02 JOP CNP200 IF ALREAD ODD, SKIP 193n10C8 0264 0100 ORI R4,>0100 SET P1 BIT 194n * 195n * GENERATE P2 196n * 197n10CC C1C4 CNP200 MOV R4,R7 198n10CE C205 MOV R5,R8 199n10D0 C246 MOV R6,R9 200n10D2 0247 6600 ANDI R7,>6600 LEAVE ONLY ODD BITS 201n10D6 0248 6600 ANDI R8,>6600 202n10DA 0249 6600 ANDI R9,>6600 203n10DE 2A47 XOR R7,R9 204n10E0 2A48 XOR R8,R9 205n10E2 D249 MOVB R9,R9 SET UP THE PARITY STATUS BI 206n10E4 1C02 JOP CNP210 IF ALREAD ODD, SKIP 207n10E6 0264 0200 ORI R4,>0200 SET P2 BIT 208n * 209n * GENERATE P3 210n * 211n10EA C1C4 CNP210 MOV R4,R7 212n10EC C205 MOV R5,R8 213n10EE C246 MOV R6,R9 214n10F0 0247 7800 ANDI R7,>7800 LEAVE ONLY ODD BITS 215n10F4 0248 7800 ANDI R8,>7800 216n10F8 0249 7800 ANDI R9,>7800 217n10FC 2A47 XOR R7,R9 218n10FE 2A48 XOR R8,R9 219n1100 D249 MOVB R9,R9 SET UP THE PARITY STATUS BI 220n1102 1C02 JOP CNP220 IF ALREAD ODD, SKIP 221n1104 0264 0800 ORI R4,>0800 SET P3 BIT 222n * 223n * GENERATE P4 224n * 225n1108 C1C4 CNP220 MOV R4,R7 226n110A C205 MOV R5,R8 227n110C 0247 8000 ANDI R7,>8000 LEAVE ONLY ODD BITS 228n1110 0248 7F00 ANDI R8,>7F00 229n1114 2A07 XOR R7,R8 230n1116 D208 MOVB R8,R8 SET UP THE PARITY STATUS BI 231n1118 1C02 JOP CNP230 IF ALREAD ODD, SKIP 232n111A 0264 8000 ORI R4,>8000 SET P4 BIT 233n * 234n * GENERATE P5 235n * 236n111E C1C5 CNP230 MOV R5,R7 237n1120 C206 MOV R6,R8 238n1122 0247 8000 ANDI R7,>8000 LEAVE ONLY ODD BITS MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 54 239n1126 0248 7F00 ANDI R8,>7F00 240n112A 2A07 XOR R7,R8 241n112C D208 MOVB R8,R8 SET UP THE PARITY STATUS BI 242n112E 1C02 JOP CNP240 IF ALREAD ODD, SKIP 243n1130 0265 8000 ORI R5,>8000 SET P5 BIT 244n * 245n * GENERATE P6 246n * 247n1134 04C7 CNP240 CLR R7 248n1136 29C4 XOR R4,R7 249n1138 29C5 XOR R5,R7 250n113A 29C6 XOR R6,R7 251n113C D1C7 MOVB R7,R7 SET UP THE PARITY STATUS BI 252n113E 1C02 JOP CNP250 IF ALREAD ODD, SKIP 253n1140 0266 8000 ORI R6,>8000 SET P6 BIT 254n * 255n * THE PARITY BITS ARE NOW SET UP AS REQUIRED. THE DATA 256n * NOW HAS TO BE PUT INTO RAM (BIT SHIFTED) 257n * 258n1144 2920 F0A2 CNP250 XOR @P26ER1,R4 SET ERRORS AS REQUIRED 259n1148 2960 F0A4 XOR @P26ER2,R5 260n114C 29A0 F0A6 XOR @P26ER3,R6 261n1150 D004 MOVB R4,R0 GET FIRST BYTE 262n1152 0910 SRL R0,1 REMOVE LS BIT 263n1154 DC60 F001 MOVB @R0LSB,*R1+ DATA TO RAM 264n1158 0970 SRL R0,7 ALIGN MISSING BIT TO LSBIT 265n115A D005 MOVB R5,R0 GET FIRST BYTE 266n115C 0910 SRL R0,1 REMOVE LS BIT 267n115E DC60 F001 MOVB @R0LSB,*R1+ DATA TO RAM 268n1162 0970 SRL R0,7 ALIGN MISSING BIT TO LSBIT 269n1164 D006 MOVB R6,R0 GET FIRST BYTE 270n1166 0910 SRL R0,1 REMOVE LS BIT 271n1168 DC60 F001 MOVB @R0LSB,*R1+ DATA TO RAM 272n116C 0970 SRL R0,7 ALIGN MISSING BIT TO LSBIT 273n116E 0603 DEC R3 COUNT THE GROUP 274n1170 1302 JEQ CNP260 IF ZERO, EXIT 275n1172 0460 1080 B @CNVPLP ELSE LOOP FOR NEXT GROUP 276n * 277n * FINSH OFF 278n * 279n1176 0910 CNP260 SRL R0,1 REMOVE LS BIT 280n1178 DC60 F001 MOVB @R0LSB,*R1+ DATA TO RAM 281n117C 045B RT AND RETURN TO CALLER 71 COPY SETVPS.990 1o ********************************************************* 2o * 3o * SET UP THE SERIAL VPS DATA IN RAM, GENERATED FROM TH 4o * PARALLEL DATA GIVEN IN 'VPSLINES' 5o * 6o * WORKSPACE = WSP (MAIN) 7o * 8o * AUTHOR: COLIN HINSON 9o ********************************************************* 10o * 11o117E 0203 0002 SETVPS LI R3,2 2 FRAMING CODE BYTES 12o * 13o * SET UP TWO BYTES OF FRAMING CODE. 14o * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 55 15o1182 D032 VPSFCL MOVB *R2+,R0 GET 1ST BYTE OF FRAMING COD 16o1184 0910 SRL R0,1 LOSE LS BIT 17o1186 DC60 F001 MOVB @R0LSB,*R1+ INVALID DATA TO RAM 18o118A 0970 SRL R0,7 ALIGN MISSING BIT TO LSBIT 19o118C 0603 DEC R3 COUNT THE BYTE 20o118E 16F9 JNE VPSFCL LOOP FOR BOTH BYTES OF F.C. 21o * 22o * START ON THE VPS BI-PHASE STUFF, FIRST 2 BYTES NOT USED 23o * 24o * THE DATA IS TRANSMITTED BY AN 'LDCR' INSTRUCTION WHICH 25o * LSB OF THE BYTE FIRST. AS THE VPS DATA IS TRANSMITTE 26o * THIS MEANS THAT THE DATA HAS TO BE REVERSED IN THE BY 27o * BI-PHASE TRANSLATION HAS TO BE DONE, BOTH OPERATIONS 28o * THE SAME TIME. 29o * 30o1190 D132 VPS20 MOVB *R2+,R4 GET THE NEXT BYTE 31o1192 06A0 1226 BL @BIPHAS CONVERT TO BI-PHASE AND STO 32o1196 D132 MOVB *R2+,R4 GET THE NEXT BYTE 33o1198 06A0 1226 BL @BIPHAS CONVERT TO BI-PHASE AND STO 34o * 35o * GENERATE BYTE 5. 4 MSBITS ARE PCS DATA, 4 LS BITS ARE 36o * 37o119C D132 MOVB *R2+,R4 GET THE PCS DATA 38o119E 0A44 SLA R4,4 ALIGN TO MS BIT 39o11A0 D172 MOVB *R2+,R5 GET COUNTRY BYTE 40o11A2 0945 SRL R5,4 ALIGN TO LSB OF MS BYTE 41o11A4 F105 SOCB R5,R4 ADD DATA TO R4 42o11A6 06A0 1226 BL @BIPHAS CONVERT TO BI-PHASE AND STO 43o * 44o * BYTES 6 TO 10 ARE NOT RELEVANT TO PDC 45o * 46o11AA 0203 0005 LI R3,5 5 BYTES TO SEND 47o11AE 0582 INC R2 SKIP THE NETWORK BYTE 48o11B0 D132 VPS30 MOVB *R2+,R4 GET THE NEXT BYTE 49o11B2 06A0 1226 BL @BIPHAS CONVERT TO BI-PHASE AND STO 50o11B6 0603 DEC R3 51o11B8 16FB JNE VPS30 52o * 53o * BYTE 11: 2 MSBITS PART OF NETWORK 54o * NEXT 5 BITS: DAY BINARY 55o * LS BIT: PART OF MONTH BINARY. 56o * 57o11BA D122 FFFA MOVB @-6(R2),R4 GET THE 2 NETWORK BITS 58o11BE 0244 C000 ANDI R4,>C000 REMOVE SURPLUS DATA 59o11C2 D172 MOVB *R2+,R5 GET DAY DATA 60o11C4 0A15 SLA R5,1 ALIGN CORRECTLY 61o11C6 0245 3E00 ANDI R5,>3E00 REMOVE ANY SURPLUS 62o11CA F105 SOCB R5,R4 ADD DATA TO NETWORK BITS 63o11CC D172 MOVB *R2+,R5 GET MONTH DATA 64o11CE 0935 SRL R5,3 ALIGN MS BIT TO LS BIT OF M 65o11D0 F105 SOCB R5,R4 ADD TO OTHER DATA BITS 66o11D2 06A0 1226 BL @BIPHAS CONVERT AND STORE 67o * 68o * BYTE 12. 3 BITS OF MONTH AND 5 BITS OF HOUR 69o * 70o11D6 0A85 SLA R5,8 ALIGN PREVIOUS DATA TO MS B 71o11D8 0245 E000 ANDI R5,>E000 REMOVE SURPLUS 72o11DC D132 MOVB *R2+,R4 GET HOUR DATA MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 56 73o11DE F105 SOCB R5,R4 ADD MONTH DATA 74o11E0 06A0 1226 BL @BIPHAS CONVERT AND STORE 75o * 76o * BYTE 13: 6 BITS OF MINUTE AND 2 BITS OF COUNTRY 77o * 78o11E4 D132 MOVB *R2+,R4 GET MINUTES 79o11E6 0A24 SLA R4,2 ALIGN TO MS BIT 80o11E8 D162 FFF5 MOVB @-11(R2),R5 GET COUNTRY (COMPLETE BYTE) 81o11EC 0925 SRL R5,2 ALIGN 82o11EE 0245 0300 ANDI R5,>300 REMOVE SURPLUS BITS 83o11F2 F105 SOCB R5,R4 ADD TO MINUTES DATA 84o11F4 06A0 1226 BL @BIPHAS CONVERT AND STORE 85o * 86o * BYTE 14 : REMAINING 2 BITS OF COUNTRY, 6 BITS OF NETWOR 87o * 88o11F8 D122 FFF6 MOVB @-10(R2),R4 GET NETWORK DATA 89o11FC 0244 3F00 ANDI R4,>3F00 REMOVE 2 MS BITS 90o1200 0A85 SLA R5,8 ALIGN COUNTRY DATA TO MS BI 91o1202 0245 C000 ANDI R5,>C000 REMOVE SURPLUS 92o1206 F105 SOCB R5,R4 ADD TO OTHER DATA 93o1208 06A0 1226 BL @BIPHAS CONVERT AND STORE 94o * 95o * BYTE 15 : PROGRAMME TYPE 96o * 97o120C D132 MOVB *R2+,R4 GET THE DATA 98o120E 06A0 1226 BL @BIPHAS CONVERT AND STORE 99o1212 04C4 CLR R4 100o1214 06A0 1226 BL @BIPHAS 101o * 102o * SEND 15 MORE BYTES TO FILL THE LINE UP 103o * 104o1218 0203 000D LI R3,13 105o121C DC40 VPS50 MOVB R0,*R1+ 106o121E 0603 DEC R3 107o1220 16FD JNE VPS50 108o1222 0460 0F7E B @SETS05 109o * 110o * CONVERT BYTE IN MSB OF R4 TO BI-PHASE IN R5, THEN STOR 111o * FOR SEND ROUTINE. 112o * 113o1226 0206 0008 BIPHAS LI R6,8 8 BITS TO DO 114o122A 0925 BIPH10 SRL R5,2 MAKE SPACE FOR 2 BITS 115o122C 0A14 SLA R4,1 116o122E 1703 JNC BIPH20 IF BIT IS 0, SKIP 117o1230 0265 4000 ORI R5,>4000 SET A 1 118o1234 1002 JMP BIPH30 119o1236 0265 8000 BIPH20 ORI R5,>8000 SET A 0 120o123A 0606 BIPH30 DEC R6 COUNT THE BIT 121o123C 16F6 JNE BIPH10 LOOP FOR 8 BITS 122o * 123o * STORE THE GENERATED DATA 124o * 125o123E D020 F00B MOVB @R5LSB,R0 GET 1ST BYTE OF BIPHASE DAT 126o1242 0910 SRL R0,1 LOSE LS BIT 127o1244 DC60 F001 MOVB @R0LSB,*R1+ DATA TO RAM 128o1248 0970 SRL R0,7 ALIGN MISSING BIT TO LSBIT 129o124A D005 MOVB R5,R0 GET 2ND BYTE OF BIPHASE DAT 130o124C 0910 SRL R0,1 LOSE LS BIT MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 57 131o124E DC60 F001 MOVB @R0LSB,*R1+ DATA TO RAM 132o1252 0970 SRL R0,7 ALIGN MISSING BIT TO LSBIT 133o1254 045B RT AND RETURN TO CALLER 134o * 72 COPY UPDATE.990 1p ********************************************************* 2p * 3p * UPDATE THE SCREEN AS REQUIRED 4p * 5p ********************************************************* 6p1256 CE8B UPDATE MOV R11,*R10+ 7p1258 06A0 16F0 BL @WTOADR WRITE THE OLD UCODE ADDRESS 8p * 9p * REGISTER DATAS 10p * 11p * A REG OUTPUT 12p * 13p125C 8820 F0B6 C @ARSAV,@AR SAME AS LAST TIME? F404 14p1262 1307 JEQ UPDT10 15p1264 C820 F404 MOV @AR,@ARSAV F0B6 16p126A 2E20 F404 XOP @AR,8 WRITE THE TEXT/EXT DATA 17p126E 0CE6 DATA PNAR 18p1270 6000 DATA YELLOW*256 IN YELLOW 19p * 20p * B REG OUTPUT 21p * 22p1272 8820 F0B8 UPDT10 C @BRSAV,@BR SAME AS LAST TIME? F402 23p1278 1307 JEQ UPDT20 24p127A C820 F402 MOV @BR,@BRSAV F0B8 25p1280 2E20 F402 XOP @BR,8 WRITE THE TEXT/EXT DATA 26p1284 0CEE DATA PNBR 27p1286 6000 DATA YELLOW*256 IN YELLOW 28p * 29p * D REG OUTPUT 30p * 31p1288 8820 F0C0 UPDT20 C @DRSAV,@DLO SAME AS LAST TIME? F40A 32p128E 1305 JEQ UPDT30 33p1290 C820 F40A MOV @DLO,@DRSAV F0C0 34p1296 06A0 16AE BL @DLTCHO DISPLAY THE D LATCH OUTPUTS 35p * 36p * P REG OUTPUT 37p * 38p129A 8820 F0BA UPDT30 C @PRSAV,@PR SAME AS LAST TIME? F408 39p12A0 1307 JEQ UPDT40 40p12A2 C820 F408 MOV @PR,@PRSAV F0BA 41p12A8 2E20 F408 XOP @PR,8 WRITE THE TEXT/EXT DATA 42p12AC 0D02 DATA PNPR 43p12AE 6000 DATA YELLOW*256 IN YELLOW 44p * 45p * TPD READ LATCH OUTPUT MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 58 46p * 47p12B0 8820 F0C4 UPDT40 C @TPDSAV,@TPD SAME AS LAST TIME? F412 48p12B6 1307 JEQ UPDT50 49p12B8 C820 F412 MOV @TPD,@TPDSAV F0C4 50p12BE 2E20 F412 XOP @TPD,8 WRITE THE VDP O/P DATA 51p12C2 0D0A DATA PNTPD 52p12C4 6000 DATA YELLOW*256 IN YELLOW 53p * 54p * A MUX OUTPUT 55p * 56p12C6 8820 F0BC UPDT50 C @AMSAV,@AM SAME AS LAST TIME? F40E 57p12CC 1307 JEQ UPDT60 58p12CE C820 F40E MOV @AM,@AMSAV F0BC 59p12D4 2E20 F40E XOP @AM,8 WRITE THE TEXT/EXT DATA 60p12D8 0DD6 DATA PNAM 61p12DA 6000 DATA YELLOW*256 IN YELLOW 62p * 63p * B MUX OUTPUT 64p * 65p12DC 8820 F0BE UPDT60 C @BMSAV,@BM SAME AS LAST TIME? F410 66p12E2 1307 JEQ UPDT65 67p12E4 C820 F410 MOV @BM,@BMSAV F0BE 68p12EA 2E20 F410 XOP @BM,8 WRITE THE TEXT/EXT DATA 69p12EE 0DDE DATA PNBM 70p12F0 6000 DATA YELLOW*256 IN YELLOW 71p * 72p * ACCENT LATCH OUTPUT 73p * 74p12F2 9820 F0CA UPDT65 CB @ACCSAV,@ACC SAME AS LAST TIME? F421 75p12F8 1307 JEQ UPDT66 76p12FA D820 F421 MOVB @ACC,@ACCSAV F0CA 77p1300 2CE0 F421 XOP @ACC,3 WRITE THE TEXT/EXT DATA 78p1304 0BFA DATA PNACC 79p1306 6000 DATA YELLOW*256 IN YELLOW 80p * 81p * CHARACTER LATCH OUTPUT 82p * 83p1308 9820 F0CB UPDT66 CB @CHRSAV,@CHR SAME AS LAST TIME? F420 84p130E 1307 JEQ UPDT67 85p1310 D820 F420 MOVB @CHR,@CHRSAV F0CB 86p1316 2CE0 F420 XOP @CHR,3 WRITE THE TEXT/EXT DATA 87p131A 0C02 DATA PNCHR 88p131C 6000 DATA YELLOW*256 IN YELLOW 89p * 90p * CHARACTER TRANSLATION LOGIC OUTPUT 91p * 92p131E 9820 F0CC UPDT67 CB @CTLSAV,@CTL SAME AS LAST TIME? F428 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 59 93p1324 1307 JEQ UPDT70 94p1326 D820 F428 MOVB @CTL,@CTLSAV F0CC 95p132C 2CE0 F428 XOP @CTL,3 WRITE THE TEXT/EXT DATA 96p1330 0C0A DATA PNCTL 97p1332 6000 DATA YELLOW*256 IN YELLOW 98p * 99p * PAGE CAPTURE LATCH OUTPUTS 100p * 101p1334 8820 F0C2 UPDT70 C @PCLSAV,@PCL SAME AS LAST TIME? F400 102p133A 133D JEQ UPDT90 103p133C C060 F400 MOV @PCL,R1 GET THE DATA 104p1340 C001 MOV R1,R0 105p1342 C800 F0C2 MOV R0,@PCLSAV 106p1346 0240 001F ANDI R0,>1F crh LEAVE ONLY PCL DATA 107p134A 06C0 SWPB R0 108p134C 2CC0 XOP R0,3 WRITE THE TEXT/EXT 109p134E 0C14 DATA PNPCL 110p1350 6000 DATA YELLOW*256 IN YELLOW 111p * SPLL0 112p1352 0200 0BE2 LI R0,PNPLL 113p1356 2C00 XOP R0,0 114p1358 0200 6000 LI R0,YELLOW*256 115p135C D740 MOVB R0,*VRAM ATR 116p135E 04C3 CLR R3 117p * SRL R1,5 TEST THE BIT 118p1360 0961 SRL R1,6 crh TEST THE BIT 119p1362 1701 JNC $+2 %%%%%%%%%%%%%%%%%%% 120p1364 0703 SETO R3 121p1366 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 122p136A D741 MOVB R1,*VRAM 123p136C D741 MOVB R1,*VRAM 124p * SPLL1 125p136E D740 MOVB R0,*VRAM ATR 126p1370 04C3 CLR R3 127p1372 0911 SRL R1,1 TEST THE BIT 128p1374 1701 JNC $+2 %%%%%%%%%%%%%%% 129p1376 0703 SETO R3 130p1378 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 131p137C D741 MOVB R1,*VRAM 132p137E D741 MOVB R1,*VRAM 133p * SPLL2 134p1380 D740 MOVB R0,*VRAM ATR 135p1382 04C3 CLR R3 136p1384 0911 SRL R1,1 TEST THE BIT 137p1386 1701 JNC $+2 %%%%%%%%%%%%%%%%%%% 138p1388 0703 SETO R3 139p138A D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 140p138E D741 MOVB R1,*VRAM 141p1390 D741 MOVB R1,*VRAM 142p1392 D741 MOVB R1,*VRAM 143p1394 D741 MOVB R1,*VRAM 144p * GPIN0 145p1396 D740 MOVB R0,*VRAM ATR 146p1398 04C3 CLR R3 147p139A 0921 SRL R1,2 TEST THE BIT 148p139C 1701 JNC $+2 %%%%%%%%%%%%%%%%%%%%%%% MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 60 149p139E 0703 SETO R3 150p13A0 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 151p13A4 D741 MOVB R1,*VRAM 152p13A6 D741 MOVB R1,*VRAM 153p * GPIN1 154p13A8 D740 MOVB R0,*VRAM ATR 155p13AA 04C3 CLR R3 156p13AC 0911 SRL R1,1 TEST THE BIT 157p13AE 1701 JNC $+2 %%%%%%%%%%%%%%%%%%%% 158p13B0 0703 SETO R3 159p13B2 D763 0AE8 MOVB @BITDTA(R3),*VRAM CHAR TO SCREEN 160p * 161p * SCRATCH PAD RAM ADDRESS 162p * 163p13B6 D060 F422 UPDT90 MOVB @SRADR,R1 GET SCRATCH RAM ADDRESS 164p * ANDI R1,>7F00 crh REMOVE SUPLUS BIT 165p13BA 9060 F0CD CB @SRASAV,R1 SAME AS LAST TIME? 166p13BE 1305 JEQ UPDA10 167p13C0 D801 F0CD MOVB R1,@SRASAV SAVE NEW DATA 168p13C4 2CC1 XOP R1,3 WRITE THE RAM ADR. 169p13C6 0C1E DATA PNSRA 170p13C8 6000 DATA YELLOW*256 IN YELLOW 171p * 172p * SCRATCH PAD RAM OUTPUT 173p * 174p13CA D060 F429 UPDA10 MOVB @SRD,R1 175p13CE 9801 F0CE CB R1,@SRDSAV 176p13D2 1305 JEQ UPDA20 177p13D4 D801 F0CE MOVB R1,@SRDSAV 178p13D8 2CC1 XOP R1,3 WRITE THE RAM DATA 179p13DA 0C2A DATA PNSRD 180p13DC 6000 DATA YELLOW*256 IN YELLOW 181p * 182p * Y BUS DATA 183p * 184p13DE 2E20 F406 UPDA20 XOP @YBUS,8 WRITE THE ALU O/P'S 185p13E2 0DEA DATA PNYBUS 186p13E4 6000 DATA YELLOW*256 187p * 188p * ALU AND VDP PAGE SELECT 189p * 190p13E6 D060 F40D MOVB @APA,R1 GET PAGE LATCH DATA 191p13EA 9060 F0CF CB @APASAV,R1 SAME AS LAST TIME? 192p13EE 1305 JEQ UPDA30 193p13F0 D801 F0CF MOVB R1,@APASAV SAVE NEW DATA 194p13F4 2C81 XOP R1,2 WRITE THE ALU SELEC 195p13F6 0E00 DATA PNPSA 196p13F8 6000 DATA YELLOW*256 IN YELLOW 197p * 198p13FA D060 F470 UPDA30 MOVB @VPA,R1 GET PAGE LATCH DATA 199p13FE 9060 F0D0 CB @VPASAV,R1 SAME AS LAST TIME? 200p1402 1305 JEQ UPD100 201p1404 D801 F0D0 MOVB R1,@VPASAV SAVE NEW DATA 202p1408 2C81 XOP R1,2 WRITE THE VDP SELEC 203p140A 0E0A DATA PNPSV 204p140C 6000 DATA YELLOW*256 IN YELLOW 205p * 206p * CLOCK COUNTER MSB MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 61 207p * 208p140E 8820 F09E UPD100 C @CLKCT1,@CLK1SV F0D1 209p1414 1307 JEQ UPD110 210p1416 0200 0ADE LI R0,PNCKCT DO THE CLOCK COUNT DISPLAY 211p141A 2C00 XOP R0,0 212p141C 2D20 F09E XOP @CLKCT1,4 213p1420 E000 DATA WHITE*256 214p1422 1003 JMP UPD120 215p * 216p * CLOCK COUNTER LSB 217p * 218p1424 0200 0AE6 UPD110 LI R0,PNCKCT+8 POINT TO LSB DISPLAY 219p1428 2C00 XOP R0,0 220p142A 2D20 F0A0 UPD120 XOP @CLKCT2,4 221p142E E000 DATA WHITE*256 222p * 223p * READY BITS AND VBI ARE WRITTEN IN 'MAIN' LOOP 224p * 225p1430 06A0 08E2 UPD180 BL @WTMCOD DISPLAY THE MICRO CODE 226p * 227p * TELETEXT (QBUS) OUTPUT 228p * 229p1434 9820 F0C8 CB @TFESAV,@TFE SAME AS LAST TIME? F427 230p143A 1307 JEQ UPD130 231p143C D820 F427 MOVB @TFE,@TFESAV F0C8 232p1442 2CE0 F427 XOP @TFE,3 WRITE THE T/TEXT (QBUS) DAT 233p1446 0AB6 DATA PNTFE 234p1448 6000 DATA YELLOW*256 235p * 236p * SPANISH (SFE) OUTPUT 237p * 238p144A 9820 F0C9 UPD130 CB @SFESAV,@SFE SAME AS LAST TIME? F426 239p1450 1307 JEQ UPD140 240p1452 D820 F426 MOVB @SFE,@SFESAV F0C9 241p1458 2CE0 F426 XOP @SFE,3 WRITE THE T/TEXT (QBUS) DAT 242p145C 0ABE DATA PNSFE 243p145E 6000 DATA YELLOW*256 244p * 245p * EXTERNAL INPUT 246p * 247p1460 9820 F0C6 UPD140 CB @RCDSAV,@RCD SAME AS LAST TIME? F425 248p1466 1307 JEQ UPD142 249p1468 D820 F425 MOVB @RCD,@RCDSAV F0C6 250p146E 2CE0 F425 XOP @RCD,3 WRITE THE REMOTE CONTROL DA 251p1472 0AC8 DATA PNRCD 252p1474 6000 DATA YELLOW*256 253p * 254p * EXTERNAL STATUS 255p * 256p1476 9820 F0C7 UPD142 CB @RCSSAV,@RCS SAME AS LAST TIME? F424 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 62 257p147C 1307 JEQ UPD150 258p147E D820 F424 MOVB @RCS,@RCSSAV F0C7 259p1484 2CE0 F424 XOP @RCS,3 WRITE THE REMOTE CONTROL DA 260p1488 0AD0 DATA PNRCS 261p148A 6000 DATA YELLOW*256 262p * 263p * VDP REGISTER 0 264p * 265p148C 9820 F470 UPD150 CB @VDPRGS,@VDPSAV SAME AS LAST TIME? F0D3 266p1492 1307 JEQ UPD151 267p1494 D820 F470 MOVB @VDPRGS,@VDPSAV F0D3 268p149A 2CE0 F470 XOP @VDPRGS,3 WRITE THE REGISTER DATA 269p149E 0ED2 DATA PNVDPR+ROW 270p14A0 6000 DATA YELLOW*256 271p * 272p * VDP REGISTER 1 273p * 274p14A2 9820 F471 UPD151 CB @VDPRGS+1,@VDPSAV+1 SAME AS LAST TIME? F0D4 275p14A8 1307 JEQ UPD152 276p14AA D820 F471 MOVB @VDPRGS+1,@VDPSAV+1 F0D4 277p14B0 2CE0 F471 XOP @VDPRGS+1,3 WRITE THE REGISTER DATA 278p14B4 0ED8 DATA PNVDPR+ROW+6 279p14B6 6000 DATA YELLOW*256 280p * 281p * VDP REGISTER 2 282p * 283p14B8 9820 F472 UPD152 CB @VDPRGS+2,@VDPSAV+2 SAME AS LAST TIME? F0D5 284p14BE 1307 JEQ UPD153 285p14C0 D820 F472 MOVB @VDPRGS+2,@VDPSAV+2 F0D5 286p14C6 2CE0 F472 XOP @VDPRGS+2,3 WRITE THE REGISTER DATA 287p14CA 0EDE DATA PNVDPR+ROW+12 288p14CC 6000 DATA YELLOW*256 289p * 290p * VDP REGISTER 3 291p * 292p14CE 9820 F473 UPD153 CB @VDPRGS+3,@VDPSAV+3 SAME AS LAST TIME? F0D6 293p14D4 1307 JEQ UPD154 294p14D6 D820 F473 MOVB @VDPRGS+3,@VDPSAV+3 F0D6 295p14DC 2CE0 F473 XOP @VDPRGS+3,3 WRITE THE REGISTER DATA 296p14E0 0EE4 DATA PNVDPR+ROW+18 297p14E2 6000 DATA YELLOW*256 298p * 299p * VDP REGISTER 4 300p * 301p14E4 9820 F474 UPD154 CB @VDPRGS+4,@VDPSAV+4 SAME AS LAST TIME? F0D7 302p14EA 1307 JEQ UPD155 303p14EC D820 F474 MOVB @VDPRGS+4,@VDPSAV+4 F0D7 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 63 304p14F2 2CE0 F474 XOP @VDPRGS+4,3 WRITE THE REGISTER DATA 305p14F6 0EEA DATA PNVDPR+ROW+24 306p14F8 6000 DATA YELLOW*256 307p * 308p * VDP REGISTER 5 309p * 310p14FA 9820 F475 UPD155 CB @VDPRGS+5,@VDPSAV+5 SAME AS LAST TIME? F0D8 311p1500 1307 JEQ UPD156 312p1502 D820 F475 MOVB @VDPRGS+5,@VDPSAV+5 F0D8 313p1508 2CE0 F475 XOP @VDPRGS+5,3 WRITE THE REGISTER DATA 314p150C 0EF0 DATA PNVDPR+ROW+30 315p150E 6000 DATA YELLOW*256 316p * 317p * VDP REGISTER 6 318p * 319p1510 9820 F476 UPD156 CB @VDPRGS+6,@VDPSAV+6 SAME AS LAST TIME? F0D9 320p1516 1307 JEQ UPD157 321p1518 D820 F476 MOVB @VDPRGS+6,@VDPSAV+6 F0D9 322p151E 2CE0 F476 XOP @VDPRGS+6,3 WRITE THE REGISTER DATA 323p1522 0EF6 DATA PNVDPR+ROW+36 324p1524 6000 DATA YELLOW*256 325p * 326p * VDP REGISTER 7 327p * 328p1526 9820 F477 UPD157 CB @VDPRGS+7,@VDPSAV+7 SAME AS LAST TIME? F0DA 329p152C 1307 JEQ UPD190 330p152E D820 F477 MOVB @VDPRGS+7,@VDPSAV+7 F0DA 331p1534 2CE0 F477 XOP @VDPRGS+7,3 WRITE THE REGISTER DATA 332p1538 0EFC DATA PNVDPR+ROW+42 333p153A 6000 DATA YELLOW*256 334p * 335p153C 064A UPD190 DECT R10 336p153E C2DA MOV *R10,R11 337p1540 045B RT 73 COPY VDPUTILS.990 1q ********************************************************* 2q * 3q * WBPADR - Write Break point address to screen 4q * 5q * THERE ARE 5 FLAGS AND THE ZERO STATE OF THE BREAKPOINT 6q * ADDRESSES TO FIGURE OUT WHAT WE ARE DISPLAYING: 7q * 8q * BPSET 9q * ENTBP1 IN PROCESS OF ENTERING BP1 10q * ENTBP2 IN PROCESS OF ENTERING BP2 11q * HITBP1 HIT BP 1 12q * HITBP2 HIT BP 2 13q * CLRHIT FLAG TO CAUSE HIT TO BE CLEARED 14q * 15q * R6= 0=OFF, 1=HIT, 2=ENTER, 3=SET, 4=EVENT 16q * 17q ********************************************************* MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 64 18q1542 C020 F08E WBPADR MOV @BPADR,R0 GET THE BP1 ADR 19q1546 C0E0 F092 MOV @BPLP1,R3 GET BP1 LOOP COUNT 20q154A C220 008C MOV @HITBP1,R8 21q154E C260 008A MOV @ENTBP1,R9 22q1552 04C4 CLR R4 CLEAR LOOP FLAG 23q * 24q * START OF LOOP 25q * 26q1554 04C6 WBPALP CLR R6 INDEX REGISTER 27q1556 C000 MOV R0,R0 28q1558 1310 JEQ WBP100 ZERO= ENTERING OR NOT SET 29q155A 0586 INC R6 1=HIT 30q155C 2388 COC R8,R14 HIT BP 1? 31q155E 1605 JNE WBP110 NO, SKIP 32q1560 C0C3 MOV R3,R3 GET THE LOOP COUNT 33q1562 130F JEQ GT1MSG IF ZERO, IT'S A HIT 34q1564 0206 0004 LI R6,4 4= EVENT 35q1568 100C JMP GT1MSG 36q * 37q156A 0586 WBP110 INC R6 2=ENTER 38q156C 2389 COC R9,R14 ARE WE ENTERING BP1? 39q156E 1309 JEQ GT1MSG NO, SKIP 40q1570 0586 INC R6 3=SET 41q1572 23A0 0096 COC @BPSET,R14 BPs SET? 42q1576 1305 JEQ GT1MSG YES, SKIP TO SET 43q1578 1003 JMP WB1OFF ELSE IT'S OFF 44q * 45q157A 05C6 WBP100 INCT R6 2=ENTER 46q157C 2389 COC R9,R14 ENTERING A BP? 47q157E 1301 JEQ GT1MSG YES, R6 IS CORRECT 48q * 49q1580 04C6 WB1OFF CLR R6 0=OFF 50q * 51q * GET THE MESSAGE AND THE REST OF THE DATA 52q * 53q1582 04C2 GT1MSG CLR R2 54q1584 D0A6 15F0 MOVB @R6TBL1(R6),R2 GET COLOUR FOR ADDRESS 55q1588 A186 A R6,R6 WORD ALIGN 56q158A C1E6 15F6 MOV @R6TBL2(R6),R7 GET STATUS COLOUR ETC 57q158E C1A6 1600 MOV @R6TBL3(R6),R6 GET MESSAGE ADDRESS 58q1592 C104 MOV R4,R4 FIRST TIME ROUND LOOP? 59q1594 160F JNE W2BPD NO, GO WRITE THE REST OF TH 60q1596 0704 SETO R4 SET THE LOOP FLAG 61q * 62q * HAVING SET UP THE REGISTERS, WRITE THE DATA FOR BP 1 63q * 64q1598 2D60 F08E XOP @BPADR,5 WRITE BP1 ADR 65q159C 0F08 DATA PNBP1 66q159E 0002 DATA R2 67q * 68q15A0 2DD6 XOP *R6,7 WRITE BP1 STATUS 69q15A2 0FA8 DATA PNBPS1 70q15A4 0007 DATA R7 71q * 72q15A6 C020 F090 MOV @BPADR2,R0 GET THE BP1 ADR 73q15AA C0E0 F094 MOV @BPLP2,R3 GET BP2 LOOP COUNT 74q15AE 0A28 SLA R8,2 RE-ALIGN THE HIT BIT 75q15B0 0A29 SLA R9,2 RE-ALIGN THE ENTER BIT MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 65 76q15B2 10D0 JMP WBPALP AND GO ROUND THE LOOP AGAIN 77q * 78q * WRITE THE 2ND BREAKPOINT DATA 79q * 80q15B4 2D60 F090 W2BPD XOP @BPADR2,5 WRITE BP2 ADR 81q15B8 0F10 DATA PNBP2 82q15BA 0002 DATA R2 83q * 84q15BC 2DD6 XOP *R6,7 WRITE BP2 STATUS 85q15BE 0FB0 DATA PNBPS2 86q15C0 0007 DATA R7 87q * 88q * 89q * WRITE THE LOOP NUMBERS 90q * 91q15C2 0204 6000 LI R4,YELLOW*256 DEFAULT TO YELLOW 92q15C6 C144 MOV R4,R5 COPY FOR LOOP 2 93q15C8 23A0 009A COC @ENTLP1,R14 ARE WE ENTERING LP 1? 94q15CC 1306 JEQ WBPLP1 YES 95q15CE 23A0 009C COC @ENTLP2,R14 ENTERING LP 2? 96q15D2 1605 JNE WCOLOR NO, SKIP 97q * 98q * ENT LP 2 - WRITE IN GREEN FLASHING 99q * 100q15D4 0205 4080 LI R5,GREEN*256+>80 101q15D8 1002 JMP WCOLOR crh BUG FIX. 102q * 103q * ENT LP 1 - WRITE IN GREEN FLASHING 104q * 105q15DA 0204 4080 WBPLP1 LI R4,GREEN*256+>80 106q * 107q15DE 2D60 F092 WCOLOR XOP @BPLP1,5 WRITE LP1 ADR 108q15E2 0F58 DATA PNBPL1 109q15E4 0004 DATA R4 110q * 111q15E6 2D60 F094 XOP @BPLP2,5 WRITE LP2 ADR 112q15EA 0F60 DATA PNBPL2 113q15EC 0005 DATA R5 114q * 115q15EE 045B RT 116q * 117q15F0 6020 40C0 R6TBL1 BYTE YELLOW,RED,GREEN,CYAN,MAGNTA 118q * OFF HIT ENTER SET EVENT 119q15F5 00 EVEN 120q * 121q15F6 6400 2480 R6TBL2 DATA YELLOW+4*256,RED+4*256+>80,GREEN+4*256+>80 122q15FC C400 A480 DATA CYAN+4*256,MAGNTA+4*256+>80 123q * 124q1600 1C6E 1C73 R6TBL3 DATA OFFMSG,HITMSG,ENTMSG,SETMSG,EVTMSG 125q ********************************************************* 126q * 127q * CLRALL - Clears the screen display area 128q * 129q * Preconditions: 130q * 131q * Postconditions: 132q * 133q * Called by: MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 66 134q * 135q * Calls: SETADR, 136q * 137q * Local variables: R0,R1 138q * 139q * Global variables: 140q * 141q * Comments: Also clears the double height 142q * flags 143q * 144q * AUTHOR: COLIN HINSON 145q ********************************************************* 146q160A 0201 07D0 CLRALL LI R1,25*80 COMPLETE SCREEN 147q160E 0200 0A00 LI R0,DSPLAY START OF HEADER 148q1612 2C00 XOP R0,0 SET UP VDP POINTER 149q1614 04C0 CLR R0 Null byte 150q1616 D740 CDLP MOVB R0,*VRAM Write a byte 151q1618 0601 DEC R1 152q161A 16FD JNE CDLP 153q161C 045B RT 154q ********************************************************* 155q * 156q * CLEAR A TELETEXT PAGE TO DOTS - PAGE No. IN R3 157q * 158q ********************************************************* 159q161E 0A13 CLRTPG SLA R3,1 ALIGN 160q1620 C023 06F4 MOV @PAGTBL(R3),R0 GET BASE ADDRESS 161q1624 0200 38E0 LI R0,TTXPG0 POINT TO FIRST PAGE 162q1628 2C00 XOP R0,0 SET UP POINTER 163q162A 0200 F800 LI R0,WHITE*256+CHGEN3 SET UP WHITE 164q162E 0201 0300 LI R1,DOT*256 SET UP DOTS 165q1632 0202 1F40 LI R2,25*40*8 SET UP NO. OF CHARACTERS 166q1636 D740 CLRT10 MOVB R0,*VRAM 167q1638 D741 MOVB R1,*VRAM 168q163A 0602 DEC R2 169q163C 16FC JNE CLRT10 170q * 171q * SET LAST 24 BYTE DISPLAY TO DOTS 172q * 173q163E 0200 3110 LI R0,TTXPG8 POINT TO PAGE 8 174q1642 A023 0C94 A @ROWTBL(R3),R0 ADD ROW OFFSET 175q1646 2C00 XOP R0,0 SET UP POINTER 176q1648 0200 F800 LI R0,WHITE*256+CHGEN3 SET UP WHITE 177q164C 0201 0300 LI R1,DOT*256 SET UP DOTS 178q1650 0202 0018 LI R2,24 179q1654 D740 CLRT20 MOVB R0,*VRAM 180q1656 D741 MOVB R1,*VRAM 181q1658 0602 DEC R2 182q165A 16FC JNE CLRT20 183q165C 0913 SRL R3,1 RETURN R3 AS PASSED 184q165E 045B RT 185q ********************************************************* 186q * 187q * INITVD - Initalises the VDP registers 188q * 189q ********************************************************* 190q * 191q1660 00 INTCM1 BYTE >00 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 67 192q1661 E0 BYTE >E0 193q1662 48 BYTE >48 194q1663 00 BYTE >00 195q * 196q1664 775F BASDAT DATA BAMT Start of buffer area 197q1666 775F DATA BAMP CPU buffer pointer 198q1668 09FF DATA BAPA Start of display area 199q * DATA TTXPG8-1 TEMP FOR DEBUG 200q166A FFFE DATA BAGC0 Character generator 0 201q166C 04FE DATA BAGC1 Character generator 1 202q166E 04FE DATA BAGC2 Character generator 2 203q1670 04FE DATA BAGC3 Character generator 3 204q1672 7760 DATA BAMTF End of buffer pointer 205q * 206q1674 0201 0007 INITCM LI R1,7 1st register to be programm 207q1678 06C1 NXVDP SWPB R1 Reg value to MSByte 208q167A D801 F800 MOVB R1,@VDPREG Point to reg 209q167E 06C1 SWPB R1 Restore reg value 210q1680 D821 165C MOVB @INTCM1-4(R1),@VDPREG F800 211q1686 0601 DEC R1 212q1688 0281 0004 CI R1,4 213q168C 14F5 JHE NXVDP 214q168E 045B RT 215q * 216q1690 0201 0010 IBASE LI R1,14+2 Offset into data table 217q1694 0202 0F00 LI R2,15*256 Reg number 218q1698 2C21 1662 NXBAS XOP @BASDAT-2(R1),0 SEND REGISTER VALUE TO VD 219q169C D802 F800 MOVB R2,@VDPREG Transfer the data to the re 220q16A0 D802 F800 MOVB R2,@VDPREG 221q16A4 0222 FF00 AI R2,-1*256 Point to next reg 222q16A8 0641 DECT R1 Point to next reg value 223q16AA 15F6 JGT NXBAS Loop if more registers 224q16AC 045B RT 225q ********************************************************* 226q * 227q * DLTCHO - WRITE THE DLATCH OUTPUTS TO THE SCREEN 228q * 229q ********************************************************* 230q16AE C0A0 F40A DLTCHO MOV @DLO,R2 GET THE LATCH OUTPUT 231q16B2 2E02 XOP R2,8 WRITE 10 BITS 232q16B4 0CF6 DATA PNDR 233q16B6 6000 DATA YELLOW*256 234q16B8 0200 603D LI R0,YELLOW*256+'=' 235q16BC D740 MOVB R0,*VRAM 236q16BE 06C0 SWPB R0 237q16C0 D740 MOVB R0,*VRAM WRITE '=' 238q16C2 0200 6000 LI R0,YELLOW*256 239q16C6 C042 MOV R2,R1 COPY FOR COLOUR CALCULATION 240q16C8 0971 SRL R1,7 ALIGN 2 MSBITS TO LS BITS 241q16CA D021 0CA4 MOVB @TABLE3(R1),R0 GET THE APPROPRIATE COLOUR 242q16CE 06C2 SWPB R2 243q16D0 0242 7F00 ANDI R2,>7F00 REMOVE MS BIT 244q16D4 1603 JNE DLTC20 IF NOT NULL, SKIP 245q * 246q * SEND 0/0 TO SCREEN 247q * 248q16D6 D0A0 00B3 DLTC00 MOVB @NULL00,R2 SET UP NUL = 0/0 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 68 249q16DA 1005 JMP DLTC30 SET UP ATT, AND DO THE WRIT 250q * 251q * CHECK FOR >20 252q * 253q16DC 9802 00AC DLTC20 CB R2,@BYTE20 IS IT A SPACE? 254q16E0 1604 JNE DLTC40 NO, SKIP 255q16E2 D0A0 00B2 MOVB @BYTESP,R2 SET UP 'SP' 256q16E6 0260 1800 DLTC30 ORI R0,CHGEN3 SET UP CHAR GEN 3 257q * 258q16EA D740 DLTC40 MOVB R0,*VRAM WRITE THE ATTRIBUTE 259q16EC D742 MOVB R2,*VRAM WRITE THE CHARACTER 260q16EE 045B RT 261q ********************************************************* 262q * 263q * WTOADR - WRITE CURRENT ROM ADDRESS TO THE SCREEN 264q * 265q ********************************************************* 266q16F0 2E60 F086 WTOADR XOP @OLDADR,9 267q16F4 1160 DATA PNOLDA 268q16F6 6000 DATA YELLOW*256 269q16F8 2E60 F088 XOP @OLDAD2,9 270q16FC 116A DATA PNOLDA+10 271q16FE 2000 DATA RED*256 272q1700 2E60 F08A XOP @OLDAD3,9 273q1704 1172 DATA PNOLDA+18 274q1706 2000 DATA RED*256 275q1708 2E60 F08C XOP @OLDAD4,9 276q170C 117A DATA PNOLDA+26 277q170E 2000 DATA RED*256 278q1710 045B RT 279q ********************************************************* 280q * 281q * WRITE THE READY AND JUMP BITS TO THE SCREEN 282q * 283q ********************************************************* 284q1712 D0A0 F448 WRTRDY MOVB @JUMP,R2 GET THE LINE AND BYTE BITS 285q1716 9802 F0D2 CB R2,@RDYSAV 286q171A 1357 JEQ RDYXIT 287q171C D802 F0D2 MOVB R2,@RDYSAV 288q * 289q * IF THE LINE READY BIT IS SET, CLEAR THE EMU DISPLAY ROW 290q * (IF IT IS NOT ALREADY CLEARED). 291q * 292q1720 20A0 009E WTREDY COC @LINRDY,R2 TEST THE LINE READY BIT 293q1724 1603 JNE WTRE05 IF NOT SET, SKIP 294q1726 E3A0 00B0 SOC @LINSET,R14 SAVE THE INFORMATION 295q172A 1015 JMP WRTR20 296q * 297q172C 23A0 00B0 WTRE05 COC @LINSET,R14 WAS IT SET LAST TIME? 298q1730 1612 JNE WRTR20 NO, SKIP THE CLEAR ROW BIT 299q1732 43A0 00B0 SZC @LINSET,R14 CLEAR THE FLAG 300q1736 C060 F05A MOV @CLKWSP+R5+R5,R1 GET CURRENT VDP LINE POINTE 301q173A 0281 0FF0 CI R1,PNRX ROW CLEARED? 302q173E 120B JLE WRTR20 YES, SKIP 303q * CLEAR THE DISPLAY ROW 304q1740 0201 0FF0 LI R1,PNRX RESET POINTER TO START OF D 305q1744 C801 F05A MOV R1,@CLKWSP+R5+R5 RESET THE CLOCK WORKSPACE V 306q1748 2C01 XOP R1,0 SET UP VDP POINTER MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 69 307q174A 0203 0050 LI R3,80 84 BYTES TO CLEAR 308q174E D803 FA00 WRTR10 MOVB R3,@VDPWD WRITE A BYTE 309q1752 0603 DEC R3 310q1754 16FC JNE WRTR10 311q * 312q * DISPLAY THE L, B & E BITS 313q * 314q1756 0201 0F90 WRTR20 LI R1,PNLBE 315q175A 2C01 XOP R1,0 316q175C 04C3 CLR R3 317q175E 20A0 009E COC @LINRDY,R2 TEST THE BIT 318q1762 1601 JNE $+2 %%%%%%%%%%%%%%%%%% 319q1764 0703 SETO R3 320q1766 D763 1D28 MOVB @ATRDTA(R3),*VRAM ATR TO SCREEN 321q176A D760 00B9 MOVB @TEXTL,*VRAM CHAR TO SCREEN 322q * 323q176E 04C3 CLR R3 324q1770 20A0 00A0 COC @BYTRDY,R2 TEST THE BIT 325q1774 1601 JNE $+2 %%%%%%%%%%%%%%%%% 326q1776 0703 SETO R3 327q1778 D763 1D28 MOVB @ATRDTA(R3),*VRAM ATR TO SCREEN 328q177C D760 00BA MOVB @TEXTB,*VRAM CHAR TO SCREEN 329q * 330q1780 04C3 CLR R3 331q1782 20A0 00A2 COC @EXTRDY,R2 TEST THE BIT 332q1786 1601 JNE $+2 %%%%%%%%%%%%%%%% 333q1788 0703 SETO R3 334q178A D763 1D28 MOVB @ATRDTA(R3),*VRAM ATR TO SCREEN 335q178E D760 00BB MOVB @TEXTE,*VRAM CHAR TO SCREEN 336q * 337q * WRITE THE NIBBLE FOR THE FOUR JUMP BITS 338q * 339q1792 0942 SRL R2,4 ALIGN TO RHS OF BYTE 340q1794 2C82 XOP R2,2 WRITE THE ALU SELEC 341q1796 0D1A DATA PNJUMP+ROW+6 342q1798 6000 DATA YELLOW*256 IN YELLOW 343q * 344q179A D020 F424 MOVB @RCS,R0 GET VBI BIT 345q179E 0240 4000 ANDI R0,VBIBIT LEAVE ONLY VBI BIT 346q17A2 130F JEQ UPD128 347q17A4 C020 F044 MOV @SERWKS+R10+R10,R0 GET FLAGS 348q17A8 2020 008C COC @KEYVBI,R0 VBI KEY BEEN PRESSED? 349q17AC 1605 JNE UPD125 350q * VBI=1, KEY PRESSED. 351q17AE 2C60 0884 XOP @VBIMS1,1 352q17B2 0FD4 DATA PNVBI 353q17B4 6400 DATA YELLOW+4*256 354q17B6 1009 JMP RDYXIT 355q * VBI=1 356q17B8 2C60 0884 UPD125 XOP @VBIMS1,1 357q17BC 0FD4 DATA PNVBI 358q17BE 6000 DATA YELLOW*256 359q17C0 1004 JMP RDYXIT 360q * VBI=0 361q17C2 2C60 0886 UPD128 XOP @VBIMS0,1 362q17C6 0FD4 DATA PNVBI 363q17C8 6000 DATA YELLOW*256 364q * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 70 365q17CA 045B RDYXIT RT 74 COPY XOPS.990 1r ********************************************************* 2r * 3r * SETA= SET UP THE VDP ADDRESS FOR READ/WRITE 4r * 5r ********************************************************* 6r17CC D820 00A0 SETADR MOVB @BYTE02,@VDPREG Point to ROW F800 7r17D2 D83B F800 MOVB *XR11+,@VDPREG Program ROW register 8r17D6 D820 009E MOVB @BYTE01,@VDPREG Point to COL F800 9r17DC D83B F800 MOVB *XR11+,@VDPREG Program COL register(R0 LSB 10r17E0 0380 XOPXIT RTWP 11r ********************************************************* 12r * 13r * REGISTER EQUATES FOR THE XOP WORKSPACE 14r * 15r ********************************************************* 16r 0008 XR8 EQU 8 17r 0009 XR9 EQU 9 18r 000A XR10 EQU 10 19r 000B XR11 EQU 11 20r 000C XR12 EQU 12 21r 000D XR13 EQU 13 22r 000E XR14 EQU 14 23r 000F XR15 EQU 15 24r ********************************************************* 25r * 26r * TEXT - PUT THE TEXT POINTED TO BY THE XOP OPERAND ON 27r * THE SCREEN AT THE POSITION GIVEN BY THE FIRST DATA 28r * STATEMENT, WITH THE ATTRIBUTES GIVEN BY THE 2ND DATA. 29r * 30r * NOTE : XR8 POINTS TO VRAM WRITE 31r ********************************************************* 32r17E2 2C3E MSGENT XOP *XR14+,0 SET UP VDP POINTER 33r17E4 C27E MOV *XR14+,XR9 GET REG NO. 34r17E6 A249 A XR9,XR9 CALCULATE WSP OFFSET 35r17E8 A24D A XR13,XR9 POINT TO REGISTER 36r17EA D339 MOVB *XR9+,XR12 GET ATTRIBUTE 37r17EC D299 MOVB *XR9,XR10 GET FLASH (IF ANY) 38r17EE 1003 JMP PUTE05 39r * 40r17F0 2C3E PUTEXT XOP *XR14+,0 SET UP VDP POINTER 41r17F2 D33E MOVB *XR14+,XR12 GET ATTRIBUTE BYTE 42r17F4 D2BE MOVB *XR14+,XR10 GET FLASH ATTR. (IF ANY) 43r17F6 04C9 PUTE05 CLR XR9 FOR BYTE MOVE 44r17F8 D27B PUTE10 MOVB *XR11+,XR9 GET THE CHARACTER 45r17FA 13F2 JEQ XOPXIT IF ZERO, END OF TEXT 46r17FC D60C MOVB XR12,*XR8 WRITE THE ATTRIBUTE 47r17FE 0289 2000 CI XR9,>2000 CHECK FOR SPACE 48r1802 1601 JNE PUTE20 SKIP IF NOT SPACE 49r1804 04C9 CLR XR9 SET TO ZERO 50r1806 F24A PUTE20 SOCB XR10,XR9 SET FLASH IF REQUIRED 51r1808 D609 MOVB XR9,*XR8 CHARACTER TO VDP 52r180A 10F6 JMP PUTE10 AND LOOP BACK FOR NEXT 53r ********************************************************* 54r * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 71 55r * WBIT= WRITE REGISTER BITS TO THE SCREEN 56r * CALL = WBIT_@SOURCE 57r * BYTE = NO OF BITS 58r * BYTE = ATTRIBUTE 59r ********************************************************* 60r180C D33E WRTBIT MOVB *XR14+,XR12 GET THE NUMBER OF BITS 61r180E 098C SRL XR12,8 TO LSB 62r1810 D2BE MOVB *XR14+,XR10 GET THE ATTRIBUTE 63r1812 028C 0008 CI R12,8 BYTE OR WORD? 64r1816 1202 JLE WRTB05 65r1818 C2DB MOV *XR11,XR11 66r181A 1001 JMP WRTB10 67r181C D2DB WRTB05 MOVB *XR11,XR11 GET THE DATA 68r181E D60A WRTB10 MOVB XR10,*XR8 SEND THE ATTRIBUTE 69r1820 04C9 CLR XR9 70r1822 0A1B SLA XR11,1 TEST THE BIT 71r1824 1701 JNC $+2 %%%%%%%%%%%%%% 72r1826 0709 SETO XR9 73r1828 D629 1833 MOVB @BITDAT(XR9),*XR8 CHAR TO SCREEN 74r182C 060C DEC XR12 COUNT THE BIT 75r182E 16F7 JNE WRTB10 76r1830 0380 RTWP 77r * 78r 1833 BITDAT EQU $+1 79r1832 3130 BYTE '1','0' 80r ********************************************************* 81r * 82r * WRTHXN,WRTHXB, WRTHXW write the data pointed to by the 83r * operand of the XOP (byte or nibble or word) to the 84r * screen, attribute is in the data statement 85r * Data for a nibble is in the ls nibble of the MS byte. 86r * 87r * NOTE: XR8 POINTS TO VRAM WRITE 88r ********************************************************* 89r * 90r * WRITE HEX NIBBLE ENTRY POINT 91r * 92r1834 2C3E WRTHXN XOP *XR14+,0 SET UP THE VDP ADDRESS 93r * 94r * NIBBLE WRITE (ADDRESS ALREADY SET UP) 95r * 96r1836 D29B NIBBLW MOVB *XR11,XR10 GET VALUE TO PRINT 97r1838 C2CE MOV XR14,XR11 98r183A 0209 0001 LI XR9,1 ONE NIBBLE TO WRITE 99r183E 1026 JMP NIBENT 100r * 101r * WRITE 3 HEX NIBBLES 102r * 103r1840 C31B W3HNXP MOV *XR11,XR12 GET THE VALUE 104r1842 024C 0FFF ANDI XR12,>FFF LEAVE 12 BITS ONLY 105r1846 100D JMP W3HN10 106r * 107r * WRITE 3 HEX NIBBLES, ATR IN WSP REGISTER 108r * 109r1848 C31B WRT3RG MOV *XR11,XR12 GET THE DATA 110r184A 0A4C SLA XR12,4 ALIGN TO MS BITS 111r184C 2C3E XOP *XR14+,0 SET UP VDP POINTER 112r184E C2CE MOV XR14,XR11 SAVE PROGRAM COUNTER MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 72 113r1850 C39E MOV *XR14,XR14 GET REG NO. 114r1852 A38E A XR14,XR14 CALCULATE WSP OFFSET 115r1854 A38D A XR13,XR14 POINT TO REGISTER 116r1856 0209 0003 LI XR9,3 3 NIBBLES TO WRITE 117r185A 1016 JMP LOOP1 GO WRITE, AVOIDING PC SAVE 118r * 119r * WRITE 3 HEX NIBBLES (10 BITS ONLY) 120r * 121r185C C31B W10BXP MOV *XR11,XR12 GET THE VALUE 122r185E 024C 03FF ANDI XR12,>3FF LEAVE 10 BITS ONLY 123r1862 0209 0003 W3HN10 LI XR9,3 3 NIBBLES TO WRITE 124r1866 2C3E XOP *R14+,0 SET UP THE VDP ADDRESS 125r1868 0A4C SLA XR12,4 ALIGN TO MS BITS 126r186A 100D JMP BYTENT 127r * 128r * WRITE HEX BYTE ENTRY POINT 129r * 130r186C 0209 0002 WRTHXB LI XR9,2 TWO NIBBLES TO WRITE 131r1870 2C3E XOP *R14+,0 SET UP THE VDP ADDRESS 132r1872 D31B MOVB *XR11,XR12 GET THE VALUE 133r1874 1008 JMP BYTENT 134r * 135r * WRITE 2 HEX NIBBLES ENTRY POINT 136r * ADR TO WRITE TO IS IN R0 OF CALLING WORKSPACE 137r * 138r1876 2C1D W2HNXP XOP *R13,0 SET UP VDP ADDRESS 139r * 140r * BYTE WRITE (ADDRESS ALREADY SET UP) 141r * 142r1878 0209 0002 BYTWRT LI XR9,2 2 DIGITS 143r187C D31B MOVB *XR11,XR12 GET THE VALUE 144r187E 1003 JMP BYTENT 145r * 146r * WRITE HEX WORD ENTRY POINT 147r * 148r1880 0209 0004 WRTHXW LI XR9,4 SET COUNT FOR 4 DIGITS OUT 149r1884 C31B WRTH10 MOV *XR11,XR12 GET THE VALUE 150r * 151r * HAVING SET UP, DO ALL THE WRITING 152r * 153r1886 C2CE BYTENT MOV XR14,XR11 SAVE THE PROGRAM COUNTER 154r1888 C28C LOOP1 MOV XR12,XR10 155r188A 094A SRL XR10,4 ALIGN 156r188C 024A 0F00 NIBENT ANDI XR10,>0F00 REMOVE MS NIBBLE 157r1890 028A 0900 CI XR10,>900 NUMERIC? 158r1894 1202 JLE NUM YES, SKIP 159r1896 022A 0700 AI XR10,>700 ALPHA ADJUST 160r189A 022A 3000 NUM AI XR10,'0'*256 NUMERIC TO ASCII 161r189E D61E MOVB *XR14,*XR8 WRITE THE ATTRIBUTE 162r18A0 F2AE 0001 SOCB @1(XR14),XR10 SET FLASH IF REQUIRED 163r18A4 D60A MOVB XR10,*XR8 WRITE THE CHARACTER 164r18A6 0BCC SRC XR12,12 ALIGN NEXT DIGIT 165r18A8 0609 DEC XR9 DONE? 166r18AA 16EE JNE LOOP1 NO, LOOP 167r18AC C38B MOV XR11,XR14 RETRIEVE THE PC 168r18AE 05CE INCT XR14 BYPASS DATA STATEMENT 169r18B0 0380 RTWP 170r * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 73 171r * READ CHAR (READ) 172r * 173r18B2 020C 0100 RENTRY LI R12,PORT1 174r18B6 1F15 TB 21 175r18B8 16FC JNE RENTRY 176r18BA 04DB CLR *R11 177r18BC 361B STCR *R11,8 178r18BE 1E12 SBZ 18 179r18C0 1D12 SBO 18 180r18C2 0380 RTWP 181r * 182r * WRITE CHAR 183r * 184r18C4 020C 0100 WENTRY LI R12,PORT1 185r18C8 1D10 SBO 16 186r18CA 1F16 TB 22 187r18CC 16FB JNE WENTRY 188r18CE 321B LDCR *R11,8 189r18D0 1E10 SBZ 16 190r18D2 0380 RTWP 75 COPY SETUP1.990 1s ********************************************************* 2s * 3s * SETUP1 SETS UP THE BLOCK DIAGRAM OF THE SYSTEM 4s * 5s * AUTHOR: COLIN HINSON 6s ********************************************************* 7s * 8s * SET UP THE DATA SCREEN 9s * 10s18D4 2C60 1B44 SETUP1 XOP @I2CMSG,1 WRITE THE I2C MESSAGE 11s18D8 0A26 DATA PNSIF 12s18DA 2400 DATA RED+4*256 IN RED 13s * 14s18DC 2C60 1B4E XOP @INPUTS,1 'INPUTS' 15s18E0 0A50 DATA PNINPS 16s18E2 4400 DATA GREEN+4*256 IN GREEN 17s * 18s18E4 2C60 1B63 XOP @RCMSG,1 ' RCD RCS ' 19s18E8 0A76 DATA PNRCD-ROW-CHAR 20s18EA 2400 DATA RED+4*256 21s * 22s18EC 2C60 1B96 XOP @INTERN,1 'INTERNAL' 23s18F0 0B90 DATA PNINTS 24s18F2 4400 DATA GREEN+4*256 IN GREEN 25s * 26s18F4 2C60 1B73 XOP @PLLMSG,1 27s18F8 0B42 DATA -2*ROW+PNPLL 28s18FA C400 DATA CYAN+4*256 29s * 30s18FC 2C60 1B79 XOP @FLGMSG,1 31s1900 0B4E DATA -2*ROW+12+PNPLL 32s1902 E400 DATA WHITE+4*256 33s * 34s1904 2C60 1B7F XOP @CTLMSG,1 35s1908 0B5A DATA -2*ROW+PNACC 36s190A C400 DATA CYAN+4*256 37s * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 74 38s190C 2C60 1B8B XOP @SPRMSG,1 39s1910 0B7C DATA -2*ROW-2+PNSRA 40s1912 E400 DATA WHITE+4*256 41s * 42s1914 2C60 1BC5 XOP @REGS,1 'REGISTERS' 43s1918 0C80 DATA PNREGS 44s191A 4400 DATA GREEN+4*256 IN GREEN 45s * 46s191C 2C60 1BE7 XOP @JMPMSG,1 'JUMP' 47s1920 0CC4 DATA PNJUMP 48s1922 4400 DATA GREEN+4*256 IN GREEN 49s * 50s1924 2C60 1BEE XOP @MUXS,1 'MLTPLXERS' 51s1928 0D70 DATA PNMUXS 52s192A 4400 DATA GREEN+4*256 IN GREEN 53s * 54s192C 2C60 1C01 XOP @YBUSMS,1 'YBUS' 55s1930 0D98 DATA PNYBUS-ROW-CHAR 56s1932 4400 DATA GREEN+4*256 IN GREEN 57s * 58s1934 2C60 1C08 XOP @PSMSG,1 ' PSA PSV ' 59s1938 0DAC DATA PNPSA-ROW-4 60s193A 4400 DATA GREEN+4*256 IN GREEN 61s * 62s * SET UP BREAKPOINT BLOCK 63s * 64s193C 2C60 1C31 XOP @BPMSG,1 'BREAKPOINTS' 65s1940 0E60 DATA PNBPH 66s1942 E400 DATA WHITE+4*256 IN WHITE 67s * 68s1944 2C60 1C43 XOP @BP12MS,1 'BP1 PB2' 69s1948 0EB0 DATA PNBP12 70s194A C400 DATA CYAN+4*256 71s * 72s194C 2C60 1C55 XOP @BPADMS,1 ' ADR ' 73s1950 0F00 DATA PNBPA 74s1952 6400 DATA YELLOW+4*256 75s * 76s1954 2C60 1C5A XOP @BPLPMS,1 ' LOOP ' 77s1958 0F50 DATA PNBPL 78s195A A400 DATA MAGNTA+4*256 79s * 80s195C 2C60 1C5F XOP @BPSMSG,1 ' STATUS ' 81s1960 0FA0 DATA PNBPS 82s1962 4400 DATA GREEN+4*256 83s * 84s1964 2C60 1C13 XOP @VDPMSG,1 ' VDP ' 85s1968 0E42 DATA PNVDPR-ROW+16 86s196A 4400 DATA GREEN+4*256 87s * 88s196C 2C60 1C19 XOP @VDPRMS,1 VDP REG NO.s 89s1970 0E82 DATA PNVDPR 90s1972 4400 DATA GREEN+4*256 91s * 92s1974 045B RT 76 COPY SETUP3.990 1t * 2t * SET UP MESSAGES ON QUERY PAGE 1 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 75 3t * 4t1976 2C60 1C82 SETUP3 XOP @QRYMS1,1 'SELECT DISPLAY:' 5t197A 2400 DATA 8*ROW+16+QERYPG 6t197C E000 DATA WHITE*256 IN WHITE 7t * 8t197E 2C60 1C95 XOP @QRYMS2,1 '0 - 7 = TELETEXT PAGE' 9t1982 24A0 DATA 10*ROW+16+QERYPG 10t1984 E000 DATA WHITE*256 IN WHITE 11t * 12t1986 2C60 1CAB XOP @QRYMS3,1 'ALU SELECTED PAGE' 13t198A 24F0 DATA 11*ROW+16+QERYPG 14t198C E000 DATA WHITE*256 IN WHITE 15t * 16t198E 2C60 1CC0 XOP @QRYMS4,1 'VDP SELECTED PAGE' 17t1992 2540 DATA 12*ROW+16+QERYPG 18t1994 E000 DATA WHITE*256 IN WHITE 19t * 20t1996 2C60 1CD5 XOP @QRYMS5,1 '8 = LAST 24 BYTES OF T/T P 21t199A 25E0 DATA 14*ROW+16+QERYPG 22t199C E000 DATA WHITE*256 IN WHITE 23t * 24t * SET UP MESSAGE ON QUERY PAGE 2 25t * 26t199E 2C60 1CF4 MSGINS XOP @QRYMS7,1 'CLEAR TELETEXT PAGE No: ?' 27t19A2 2BD0 DATA 8*ROW+16+QERYP2 28t19A4 E000 DATA WHITE*256 IN WHITE 29t * 30t * SET UP MESSAGES ETC. ON TELETEXT PAGE 8 31t * 32t * AS WE NEED VARIABLE DATA, EASIEST WAY IS TO 33t * EXECUTE FROM THE WORKSPACE REGISTERS. 34t * 35t19A6 CE8B MOV R11,*R10+ SAVE RETURN ON STACK 36t19A8 C020 199E MOV @MSGINS,R0 SET UP 'MSG' 37t19AC 0201 1D0E LI R1,TTP8MS POINT TO MESSAGE 38t19B0 0202 3110 LI R2,TTXPG8 POINT TO START OF PAGE 39t19B4 0203 E000 LI R3,WHITE*256 IN WHITE 40t19B8 0204 045B LI R4,>045B RETURN INSTRUCTION 41t * 42t19BC 04C5 CLR R5 PAGE COUNTER 43t19BE 06A0 F000 TTPGLP BL @WSP WRITE THE MSG 44t * 45t19C2 2F05 XOP R5,12 WRITE THE PAGE NO. 46t19C4 E000 DATA WHITE*256 IN WHITE 47t * 48t19C6 0285 0700 CI R5,>0700 CHECK FOR END 49t19CA 1405 JHE SPRADR 50t19CC 0225 0100 AI R5,>0100 NEXT PAGE 51t19D0 0222 00F0 AI R2,ROW*3 MOVE 3 ROWS DOWN 52t19D4 10F4 JMP TTPGLP AND LOOP BACK 53t * 54t * SET UP ADDRESS INFO ON SCRATCH PAD RAM DATA PAGE 55t * 56t * AS WE NEED VARIABLE DATA, EASIEST WAY IS TO 57t * EXECUTE FROM THE WORKSPACE REGISTERS. 58t * 59t19D6 0200 2CC4 SPRADR LI R0,>2CC4 SET UP 'WHXB_R4' 60t19DA 0201 11D0 LI R1,9*ROW+SPRPAG crh POINT TO TENTH ROW MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 76 61t19DE 0202 6400 LI R2,YELLOW+4*256 IN YELLOW BACKGROUND 62t19E2 0203 045B LI R3,>045B RETURN INSTRUCTION 63t * 64t19E6 04C4 CLR R4 ADDRESS HOLDER 65t19E8 06A0 F000 SPRLP BL @WSP DO THE WHXN 66t19EC 0224 0800 AI R4,>0800 NEXT ADDRESS BLOCK 67t19F0 0284 1000 CI R4,>1000 68t19F4 1207 JLE SPRLP1 69t19F6 0224 0200 AI R4,>0200 70t19FA 0284 2400 CI R4,>2400 71t19FE 1202 JLE SPRLP1 72t1A00 0224 0200 AI R4,>0200 73t1A04 0221 0050 SPRLP1 AI R1,ROW NEXT ROW 74t1A08 0284 B000 CI R4,>B000 REACHED END? 75t1A0C 1AED JL SPRLP NO, LOOP 76t * 77t1A0E 064A DECT R10 78t1A10 C2DA MOV *R10,R11 79t1A12 045B RT 77 COPY LOAD.990 1u ********************************************************* 2u * 3u * TAGGED OBJECT LOADER. 4u * 5u ********************************************************* 6u * 7u * 990 TAG FORMAT LINKING LOADER 8u * 9u * REGISTER USE 10u * R0 = POINTER FOR IDT STORE 11u * R1 = WORK REGISTER 12u * R2 = CHARACTER/DIGIT COUNTER (WORK REG) 13u * R3 = CHARACTER READ REGISTER (WORK REG) 14u * R4 = WORK REG 15u * R5 = WORK REG 16u * R6 = POINTER TO CURRENT END OF MAIN SYMBOL TABLE 17u * R7 = POINTER TO CURRENT END OF MODULE SYMBOL TABLE 18u * R8 = ERROR NUMBER 19u * R9 = CURRENT LOAD ADDRESS 20u * R10 = MULTIPLY DEFD ERROR FLAG 21u * R11 = RTN ADR. 22u * R12 = OBJECT LOAD OFFSET 23u * R13 = CHECKSUM 24u * R14 = MODULE START ADDRESS (RELOCATION BIAS) 25u * R15 = TAG BRANCH ADDRESS 26u * 27u * LOADER ENTRY POINT 28u * 29u1A14 CE8B LOADER MOV R11,*R10+ 30u1A16 04C5 CLR R5 WORD COUNTER 31u1A18 06A0 160A BL @CLRALL CLEAR THE SCREEN 32u1A1C 2C60 1D30 XOP @LOADMS,1 'LOADING' 33u1A20 0A64 DATA PNLOAD 34u1A22 E000 DATA WHITE*256 35u * 36u * GET A TAG 37u * 38u1A24 04CF TAG CLR R15 CLEAR JUMP INDEX MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 77 39u1A26 06A0 1AA6 BL @GET1 GET A TAG 40u1A2A 0A11 SLA R1,1 WORD ALIGN 41u1A2C C3E1 1A3A MOV @OP(R1),R15 GET TAG ROUTINE ADDRESS 42u1A30 1314 JEQ ENDACT F TAG IS ZERO 43u1A32 06A0 1AA0 BL @GET4 GET DATA VALUE 44u1A36 069F BL *R15 GO TO TAG ROUTINE 45u1A38 10F5 JMP TAG AND LOOP BACK 46u * 47u * TAG BRANCH TABLE 48u * 49u1A3A 1A88 OP DATA LENG 0 PROGRAM START (IDT) 50u1A3C 1AE8 DATA GETERR 1 ABS ENTRY ADR 51u1A3E 1AE8 DATA GETERR 2 REL ENTRY ADR 52u1A40 1AE8 DATA GETERR 3 EXT RELOCATABLE REFERENCE 53u1A42 1AE8 DATA GETERR 4 EXT ABSOLUTE REFERENCE 54u1A44 1AE8 DATA GETERR 5 EXT RELOCATABLE DEFINE 55u1A46 1AE8 DATA GETERR 6 EXT ABSOLUTE DEFINE 56u1A48 1AE8 DATA GETERR 7 CHECKSUM 57u1A4A 1AE8 DATA GETERR 8 IGNORE CKSUM 58u1A4C 1A64 DATA ABLOAD 9 ABS LOAD ADR 59u1A4E 1AE8 DATA GETERR A REL LOAD ADR 60u1A50 1A68 DATA ABDATA B ABS DATA 61u1A52 1AE8 DATA GETERR C REL DATA 62u1A54 1AE8 DATA GETERR D LOAD BIAS 63u1A56 1AE8 DATA GETERR E ILLEGAXP 64u1A58 0000 DATA 0 END OF RECORD 65u * 66u * F-TAG : SKIP TO END OF RECORD 67u * 68u1A5A 2F43 ENDACT XOP R3,13 GET A CHARACTER 69u1A5C 0283 0D00 CI R3,>0D00 CHECK FOR CAR. RETN 70u1A60 16FC JNE ENDACT LOOP TILL FOUND 71u1A62 10E0 JMP TAG AND START ON NEXT LINE 72u * 73u * TAG 9 - ABSOLUTE LOAD ADDRESS 74u * 75u1A64 C241 ABLOAD MOV R1,R9 SAVE LOAD ADR 76u1A66 045B RT GET NEXT TAG 77u * 78u * TAG B - ABSOLUTE DATA 79u * 80u1A68 0289 F000 ABDATA CI R9,>F000 NO LOAD OVER WORK RAM 81u1A6C 143D JHE GETERR 82u1A6E CE41 MOV R1,*R9+ LOAD DATA TO MEMORY 83u1A70 0585 INC R5 84u1A72 2560 008E CZC @WD0003,R5 85u1A76 1607 JNE ABDART 86u1A78 0203 0AB4 LI R3,PNLOAD+ROW 87u1A7C 2C03 XOP R3,0 88u1A7E 0925 SRL R5,2 89u1A80 2D05 XOP R5,4 90u1A82 E000 DATA WHITE*256 91u1A84 0A25 SLA R5,2 92u1A86 045B ABDART RT 93u * 94u * IDT TAG 0 95u * 96u1A88 0204 F0AC LENG LI R4,MODIDT POINT TO MODULE IDT BUFFER MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 78 97u1A8C 2F41 LENG10 XOP R1,13 8 CHARACTERS TO BUF 98u1A8E DD01 MOVB R1,*R4+ SAVE TO BUFFER 99u1A90 0284 F0B4 CI R4,MODIDT+8 REACHED END? 100u1A94 1AFB JL LENG10 101u1A96 2C60 F0AC XOP @MODIDT,1 102u1A9A 0A76 DATA PNLOAD+18 103u1A9C E000 DATA WHITE*256 104u1A9E 045B RT RETURN TO CALLER 105u * 106u * GET 4 HEX DIGITS AND CONVERT THEM TO BINARY. 107u * 108u1AA0 0202 FFFC GET4 LI R2,-4 SET COUNT FOR 4 DIGITS 109u1AA4 1001 JMP GET 110u * 111u * GET TAG CHAR ENTRY POINT 112u * 113u1AA6 0702 GET1 SETO R2 SET COUNT FOR 1 CHAR 114u1AA8 04C1 GET CLR R1 FOR VALID ASCII INPUT 115u1AAA 2F43 GET41 XOP R3,13 116u1AAC 0283 3000 CI R3,'0'*256 MIN ASCII 117u1AB0 11FC JLT GET41 IGNORE CONTROL CHARS. 118u1AB2 0283 3900 CI R3,'9'*256 119u1AB6 1208 JLE DECOK 120u1AB8 0283 4600 CI R3,'F'*256 MAX ASCII 121u1ABC 1B15 JH GETERR 122u1ABE 0283 4100 CI R3,'A'*256 123u1AC2 1A0A JL CHK2 124u * 125u1AC4 0223 F900 REMALF AI R3,->700 REMOVE ALPHA 126u1AC8 0223 D000 DECOK AI R3,->3000 REMOVE ASCII 127u1ACC 0983 SRL R3,8 TO LS NIBBLE 128u * 129u * ASSEMBLE THE VALUE IN BINARY 130u * 131u1ACE 0A41 SLA R1,4 MAKE ROOM FOR NEW DIGIT 132u1AD0 A043 A R3,R1 ADD NEW DIGIT 133u1AD2 0582 INC R2 DONE? 134u1AD4 16EA JNE GET41 GET ANOTHER CHAR 135u1AD6 045B RT EXIT, TAG OR INVALID INPUT 136u * 137u * DEAL WITH ERRORS WHICH OCCUR DURING LOAD 138u * 139u1AD8 0283 3A00 CHK2 CI R3,':'*256 COLON ?, (END OF MODULE) 140u1ADC 1605 JNE GETERR NO, GO TO BAD TAG ERROR 141u1ADE 2C60 1D38 XOP @COMPLT,1 'COMPLETED' 142u1AE2 0AC0 DATA PNLOAD+ROW+12 143u1AE4 E000 DATA WHITE*256 144u1AE6 1004 JMP WAITKY 145u * 146u1AE8 2C60 1D29 GETERR XOP @ERROR,1 147u1AEC 0AB4 DATA PNLOAD+ROW 148u1AEE E400 DATA WHITE+4*256 149u * 150u * WAIT FOR A KEY PRESS 151u * 152u1AF0 020B 1AF0 WAITKY LI R11,WAITKY SET RETURN ADDRESS IF NO KE 153u1AF4 CE8B MOV R11,*R10+ 154u1AF6 06A0 0EDC BL @ENCODE MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 79 155u1AFA 0420 0000 BLWP @0 RESET 78 COPY MSGS.990 1v * 2v * MESSAGES AND DATA/BYTE TABLES 3v * 4v1AFE 5445 4C45 DTAERR TEXT 'TELETEXT PAGE DATA ERROR:-' 5v1B18 00 BYTE 0 6v1B19 45 5850 DTAER2 TEXT 'EXPECTING 8X AT >' 7v1B2A 00 BYTE 0 8v1B2B 45 5850 DTAER3 TEXT 'EXPECTING >FF (EOF) AT >' 9v1B43 00 BYTE 0 10v * 11v * MESSAGES 12v * 13v1B44 2020 2049 I2CMSG TEXT ' I2C ' 14v1B4D 00 BYTE 0 15v1B4E 2020 2049 INPUTS TEXT ' INPUTS ' 16v1B58 00 BYTE 0 17v1B59 20 5446 TXTMSG TEXT ' TFE SFE ' 18v1B62 00 BYTE 0 19v1B63 20 5243 RCMSG TEXT ' RCD RCS ' 20v1B6C 00 BYTE 0 21v1B6D 20 5642 VBIMSG TEXT ' VBI ' 22v1B72 00 BYTE 0 23v1B73 20 504C PLLMSG TEXT ' PLL ' 24v1B78 00 BYTE 0 25v1B79 46 4C41 FLGMSG TEXT 'FLAGS' 26v1B7E 00 BYTE 0 27v1B7F 20 2043 CTLMSG TEXT ' C.T.L. ' 28v1B8A 00 BYTE 0 29v1B8B 20 532E SPRMSG TEXT ' S.P. RAM ' 30v1B95 00 BYTE 0 31v1B96 204C 2054 INTERN TEXT ' L T Q 1 2 ACC CHR O/P PCL ADR O/P ' 32v1BBE 00 BYTE 0 33v1BBF 20 5420 INTRN1 TEXT ' T Q ' 34v1BC4 00 BYTE 0 35v1BC5 20 5245 REGS TEXT ' REGISTERS A B D P TPD ' 36v1BE6 00 BYTE 0 37v1BE7 20 4A55 JMPMSG TEXT ' JUMP ' 38v1BED 00 BYTE 0 39v1BEE 204D 4C54 MUXS TEXT ' MLTPLXERS A B ' 40v1C00 00 BYTE 0 41v1C01 20 5942 YBUSMS TEXT ' YBUS ' 42v1C07 00 BYTE 0 43v1C08 2050 5341 PSMSG TEXT ' PSA PSV ' 44v1C12 00 BYTE 0 45v1C13 20 5644 VDPMSG TEXT ' VDP ' 46v1C18 00 BYTE 0 47v1C19 20 3020 VDPRMS TEXT ' 0 1 2 3 4 5 6 7' 48v1C30 00 BYTE 0 49v * 50v * BREAKPOINT FUNCTION MESSAGES 51v * 52v1C31 20 2020 BPMSG TEXT ' BREAKPOINTS ' 53v1C42 00 BYTE 0 54v1C43 20 2020 BP12MS TEXT ' BP1 BP2 GOTO ' 55v1C54 00 BYTE 0 56v1C55 20 4144 BPADMS TEXT ' ADR' MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 80 57v1C59 00 BYTE 0 58v1C5A 4C4F 4F50 BPLPMS TEXT 'LOOP' 59v1C5E 00 BYTE 0 60v1C5F 53 5441 BPSMSG TEXT 'STAT' 61v1C63 00 BYTE 0 62v1C64 454E 5420 ENTMSG TEXT 'ENT ' 63v1C68 00 BYTE 0 64v1C69 53 4554 SETMSG TEXT 'SET ' 65v1C6D 00 BYTE 0 66v1C6E 4F46 4620 OFFMSG TEXT 'OFF ' 67v1C72 00 BYTE 0 68v1C73 48 4954 HITMSG TEXT 'HIT ' 69v1C77 00 BYTE 0 70v1C78 4556 5420 EVTMSG TEXT 'EVT ' 71v1C7C 00 BYTE 0 72v * 73v1C7D 43 4C4B CLKMSG TEXT 'CLK=' 74v1C81 00 BYTE 0 75v * 76v1C82 EVEN 77v * 78v * MESSAGES FOR QUERY PAGE 79v * 80v1C82 2020 2053 QRYMS1 TEXT ' SELECT DISPLAY:' 81v1C94 00 BYTE 0 82v1C95 30 202D QRYMS2 TEXT '0 - 7 = TELETEXT PAGE' 83v1CAA 00 BYTE 0 84v1CAB 20 203D QRYMS3 TEXT ' =ALU SELECTED PAGE' 85v1CBF 00 BYTE 0 86v1CC0 2020 3D56 QRYMS4 TEXT ' =VDP SELECTED PAGE' 87v1CD4 00 BYTE 0 88v1CD5 38 203D QRYMS5 TEXT '8 = LAST 24 BYTES OF T/T PAGES' 89v1CF3 00 BYTE 0 90v1CF4 434C 4541 QRYMS7 TEXT 'CLEAR TELETEXT PAGE No: ?' 91v1D0D 00 BYTE 0 92v1D0E 4259 5445 TTP8MS TEXT 'BYTES 1000 - 1023, PAGE ' 93v1D26 00 BYTE 0 94v * 95v 1D28 ATRDTA EQU $+1 96v1D27 E4 E0 BYTE >E4,>E0 97v * 98v1D29 20 4552 ERROR TEXT ' ERROR' 99v1D2F 00 BYTE 0 100v1D30 4C4F 4144 LOADMS TEXT 'LOADING' 101v1D37 00 BYTE 0 102v1D38 434F 4D50 COMPLT TEXT 'COMPLETE' 103v1D40 00 BYTE 0 104v1D41 00 EVEN 79 COPY TCJ.990 1w * 2w * Read the current microcode address 3w * 4w1D42 D020 F086 RDNOW MOVB @OLDADR,R0 Fetch old microcode addre 5w1D46 2F80 XOP R0,14 6w1D48 D020 F087 MOVB @OLDADR+1,R0 7w1D4C 2F80 XOP R0,14 8w1D4E 0460 03D0 B @KEXIT1 80 * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 81 81 COPY MAINCHS2.990 1x * 2x * Line no. 9 3x * 4x * AORG >1C80 %%%%%%%%%%%%%%%%%% 5x1D52 000E 1F0E GEN0 BYTE >00,>0E,>1F,>0E,>04,>0E,>0E,>08 6x1D5A 0E0E 111E BYTE >0E,>0E,>11,>1E,>0E,>1E,>1F,>10 7x1D62 0E0E 1F0E BYTE >0E,>0E,>1F,>0E,>04,>0E,>0E,>08 8x1D6A 0E0E 111E BYTE >0E,>0E,>11,>1E,>0E,>1E,>1F,>10 9x1D72 10FF 1A BYTE >10,>FF,26 10x1D75 10 FF2B BYTE >10,>FF,43 11x1D78 3E BYTE >3E 12x1D79 00 003E BYTE >00,>00,>3E,>FF,5 13x1D7E 4001 FF07 BYTE >40,>01,>FF,7 14x1D82 3EFF 06 BYTE >3E,>FF,6 15x * 16x * Line no. 8 17x * 18x1D85 00 0408 BYTE >00,>04,>08,>01,>3E,>01,>11,>04 19x1D8D 11 0111 BYTE >11,>01,>11,>11,>11,>11,>10,>10 20x1D95 11 0408 BYTE >11,>04,>08,>01,>3E,>01,>11,>04 21x1D9D 11 0111 BYTE >11,>01,>11,>11,>11,>11,>10,>10 22x1DA5 10 FF0B BYTE >10,>FF,11 23x1DA8 10FF 0E BYTE >10,>FF,14 24x1DAB 08 FF2B BYTE >08,>FF,43 25x1DAE 01 BYTE >01 26x1DAF 00 0041 BYTE >00,>00,>41,>FF,5 27x1DB4 4001 FF06 BYTE >40,>01,>FF,6 28x1DB8 0001 FF06 BYTE >00,>01,>FF,6 29x * 30x * Line no. 7 31x * 32x1DBC 0004 0606 BYTE >00,>04,>06,>06,>14,>0E,>0E,>02 33x1DC4 0E0F 1F1E BYTE >0E,>0F,>1F,>1E,>10,>11,>1E,>1E 34x1DCC 1104 0606 BYTE >11,>04,>06,>06,>14,>0E,>0E,>02 35x1DD4 0E0F 1F1E BYTE >0E,>0F,>1F,>1E,>10,>11,>1E,>1E 36x1DDC 1E08 007F BYTE >1E,>08,>00,>7F,>08,>47,>3D,>00 37x1DE4 1004 0800 BYTE >10,>04,>08,>00,>08,>00,>08,>40 38x1DEC 1C3E 7F3E BYTE >1C,>3E,>7F,>3E,>04,>3E,>3E,>08 39x1DF4 3E3C 1818 BYTE >3E,>3C,>18,>18,>04,>00,>20,>08 40x1DFC 3F41 7E3E BYTE >3F,>41,>7E,>3E,>7E,>7F,>40,>3E 41x1E04 411C 3E42 BYTE >41,>1C,>3E,>42,>7F,>41,>41,>3E 42x1E0C 403D 413E BYTE >40,>3D,>41,>3E,>08,>3E,>08,>22 43x1E14 4108 7F08 BYTE >41,>08,>7F,>08,>0F,>08,>08,>22 44x1E1C 003F 7E3F BYTE >00,>3F,>7E,>3F,>3F,>3E,>10,>3D 45x1E24 411C 0122 BYTE >41,>1C,>01,>22,>1C,>49,>41,>3E 46x1E2C 5E3D 407E BYTE >5E,>3D,>40,>7E,>0E,>3D,>08,>36 47x1E34 423F 7F02 BYTE >42,>3F,>7F,>02,>14,>02,>00,>7F 48x * 49x * Line no. 6 50x * 51x1E3C 000C 1101 BYTE >00,>0C,>11,>01,>0C,>08,>04,>01 52x1E44 1111 1111 BYTE >11,>11,>11,>11,>11,>11,>10,>10 53x1E4C 110C 1101 BYTE >11,>0C,>11,>01,>0C,>08,>04,>01 54x1E54 1111 1111 BYTE >11,>11,>11,>11,>11,>11,>10,>10 55x1E5C 1100 0030 BYTE >11,>00,>00,>30,>7E,>27,>42,>00 56x1E64 2002 4908 BYTE >20,>02,>49,>08,>08,>00,>00,>20 57x1E6C 2208 4041 BYTE >22,>08,>40,>41,>04,>41,>41,>08 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 82 58x1E74 4102 1818 BYTE >41,>02,>18,>18,>08,>00,>10,>00 59x1E7C 4041 4141 BYTE >40,>41,>41,>41,>21,>40,>40,>41 60x1E84 4108 4144 BYTE >41,>08,>41,>44,>40,>41,>43,>41 61x1E8C 4042 4241 BYTE >40,>42,>42,>41,>08,>41,>14,>55 62x1E94 2208 2010 BYTE >22,>08,>20,>10,>08,>04,>08,>22 63x1E9C 0042 4140 BYTE >00,>42,>41,>40,>41,>40,>10,>43 64x1EA4 4108 0124 BYTE >41,>08,>01,>24,>08,>49,>41,>41 65x1EAC 6143 4001 BYTE >61,>43,>40,>01,>10,>43,>14,>49 66x1EB4 2441 200F BYTE >24,>41,>20,>0F,>14,>0F,>08,>7F 67x * 68x * Line no. 5 69x * 70x1EBC 0004 0E0E BYTE >00,>04,>0E,>0E,>04,>0F,>02,>0F 71x1EC4 0E0E 0E1E BYTE >0E,>0E,>0E,>1E,>0E,>1E,>1F,>1F 72x1ECC 0E04 0E0E BYTE >0E,>04,>0E,>0E,>04,>0F,>02,>0F 73x1ED4 0E0E 0E1E BYTE >0E,>0E,>0E,>1E,>0E,>1E,>1F,>1F 74x1EDC 1E08 0010 BYTE >1E,>08,>00,>10,>09,>10,>45,>00 75x1EE4 4001 2A08 BYTE >40,>01,>2A,>08,>FF,3,>10 76x1EEB 41 0820 BYTE >41,>08,>20,>01,>7F,>01,>41,>08 77x1EF3 41 0100 BYTE >41,>01,>00,>00,>10,>7F,>08,>08 78x1EFB 4E 4141 BYTE >4E,>41,>41,>40,>21,>40,>40,>47 79x1F03 41 0801 BYTE >41,>08,>01,>48,>40,>41,>45,>41 80x1F0B 40 4544 BYTE >40,>45,>44,>01,>08,>41,>22,>49 81x1F13 14 0810 BYTE >14,>08,>10,>20,>76,>02,>08,>7F 82x1F1B 00 3E41 BYTE >00,>3E,>41,>40,>41,>7F,>10,>41 83x1F23 41 0801 BYTE >41,>08,>01,>38,>08,>49,>41,>41 84x1F2B 41 4160 BYTE >41,>41,>60,>3E,>10,>41,>22,>49 85x1F33 18 411C BYTE >18,>41,>1C,>2A,>14,>6A,>00,>7F 86x * 87x * Line no. 4 88x * 89x1F3B 00 FE0F BYTE >00,>FE,15,>70 90x1F3F FE 10E0 BYTE >FE,16,>E0 91x1F42 F008 003C BYTE >F0,>08,>00,>3C,>3E,>08,>38,>00 92x1F4A 4001 1C7F BYTE >40,>01,>1C,>7F,>00,>3E,>00,>08 93x1F52 4108 1E0E BYTE >41,>08,>1E,>0E,>24,>01,>7E,>04 94x1F5A 3E3F 1818 BYTE >3E,>3F,>18,>18,>20,>00,>04,>06 95x1F62 517F 7E40 BYTE >51,>7F,>7E,>40,>21,>7C,>7C,>40 96x1F6A 7F08 0170 BYTE >7F,>08,>01,>70,>40,>49,>49,>41 97x1F72 7E41 7E3E BYTE >7E,>41,>7E,>3E,>08,>41,>41,>49 98x1F7A 0808 087F BYTE >08,>08,>08,>7F,>21,>7F,>49,>22 99x1F82 7F02 6140 BYTE >7F,>02,>61,>40,>43,>41,>7C,>41 100x1F8A 6108 0124 BYTE >61,>08,>01,>24,>08,>49,>61,>41 101x1F92 6143 5040 BYTE >61,>43,>50,>40,>10,>41,>41,>41 102x1F9A 2441 0226 BYTE >24,>41,>02,>26,>14,>16,>3E,>7F 103x * 104x * Line no. 3 105x * 106x1FA2 00FE 0F88 BYTE >00,>FE,15,>88 107x1FA6 FE10 40 BYTE >FE,16,>40 108x1FA9 08 0814 BYTE >08,>08,>14,>10,>48,>04,>44,>10 109x1FB1 40 012A BYTE >40,>01,>2A,>08,>FF,3,>04 110x1FB8 4108 0101 BYTE >41,>08,>01,>01,>14,>7E,>40,>02 111x1FC0 4141 1818 BYTE >41,>41,>18,>18,>10,>7F,>08,>01 112x1FC8 4F41 4140 BYTE >4F,>41,>41,>40,>21,>40,>40,>40 113x1FD0 4108 0148 BYTE >41,>08,>01,>48,>40,>55,>51,>41 114x1FD8 4141 4140 BYTE >41,>41,>41,>40,>08,>41,>41,>41 115x1FE0 1414 0420 BYTE >14,>14,>04,>20,>2E,>02,>2A,>7F MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 83 116x1FE8 003C 5E3F BYTE >00,>3C,>5E,>3F,>3D,>3E,>10,>3F 117x1FF0 5E18 0322 BYTE >5E,>18,>03,>22,>08,>76,>5E,>3E 118x1FF8 5E3D 4F3E BYTE >5E,>3D,>4F,>3E,>38,>41,>41,>41 119x2000 4241 7F22 BYTE >42,>41,>7F,>22,>14,>32,>00,>7F 120x * 121x * Line no. 2 122x * 123x2008 00FE 0F88 BYTE >00,>FE,15,>88 124x200C FE10 40 BYTE >FE,16,>40 125x200F 70 0814 BYTE >70,>08,>14,>11,>3F,>72,>44,>08 126x2017 20 0249 BYTE >20,>02,>49,>08,>00,>00,>00,>02 127x201F 22 1841 BYTE >22,>18,>41,>41,>0C,>40,>20,>01 128x2027 41 4100 BYTE >41,>41,>00,>00,>08,>00,>10,>41 129x202F 41 2241 BYTE >41,>22,>41,>41,>21,>40,>40,>41 130x2037 41 0801 BYTE >41,>08,>01,>44,>40,>63,>61,>41 131x203F 41 4141 BYTE >41,>41,>41,>41,>08,>41,>41,>41 132x2047 22 2202 BYTE >22,>22,>02,>10,>60,>04,>1C,>22 133x204F 00 0040 BYTE >00,>00,>40,>00,>01,>00,>10,>00 134x2057 40 0000 BYTE >40,>00,>00,>20,>08,>FF,7 135x205E 10FF 06 BYTE >10,>FF,6 136x2061 60 1410 BYTE >60,>14,>10,>08,>7F 137x * 138x * Line no. 1 139x * 140x2066 00FE 0F88 BYTE >00,>FE,15,>88 141x206A FE10 C0 BYTE >FE,16,>C0 142x206D 80 0814 BYTE >80,>08,>14,>0E,>08,>71,>38,>08 143x2075 10 0408 BYTE >10,>04,>08,>00,>00,>00,>00,>01 144x207D 1C 083E BYTE >1C,>08,>3E,>3E,>04,>7F,>1E,>7F 145x2085 3E 3E00 BYTE >3E,>3E,>00,>00,>04,>00,>20,>3E 146x208D 3E 1C7E BYTE >3E,>1C,>7E,>3E,>7E,>7F,>7F,>3E 147x2095 41 1C01 BYTE >41,>1C,>01,>42,>40,>41,>41,>3E 148x209D 7E 3E7E BYTE >7E,>3E,>7E,>3E,>7F,>41,>41,>41 149x20A5 41 417F BYTE >41,>41,>7F,>08,>20,>08,>08,>22 150x20AD 00 0040 BYTE >00,>00,>40,>00,>01,>00,>0F,>00 151x20B5 40 0801 BYTE >40,>08,>01,>20,>18,>FF,7 152x20BC 10FF 06 BYTE >10,>FF,6 153x20BF 20 1460 BYTE >20,>14,>60,>00,>7F 154x * 155x * Line no. 0 156x * 157x20C4 00FE 0F70 BYTE >00,>FE,15,>70 158x20C8 FE10 40 BYTE >FE,16,>40 159x20CB 78 FF5F BYTE >78,>FF,95 160x * 161x * Line no. 9 162x * 163x * AORG >1FFC crh 164x20CE 000E 1000 GEN3 BYTE >00,>0E,>10,>00 165x * 166x * Line no. 8 167x * 168x20D2 0011 1000 BYTE >00,>11,>10,>00 169x * 170x * Line no. 7 171x * 172x20D6 0011 1E00 BYTE >00,>11,>1E,>00 173x * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 84 174x * Line no. 6 175x * 176x20DA 0011 1100 BYTE >00,>11,>11,>00 177x * 178x * Line no. 5 179x * 180x20DE 000E 1E10 BYTE >00,>0E,>1E,>10 181x * 182x * Line no. 4 183x * 184x20E2 0070 F000 BYTE >00,>70,>F0,>00 185x * 186x * Line no. 3 187x * 188x20E6 0088 0800 BYTE >00,>88,>08,>00 189x * 190x * Line no. 2 191x * 192x20EA 0088 7000 BYTE >00,>88,>70,>00 193x * 194x * Line no. 1 195x * 196x20EE 0088 8000 BYTE >00,>88,>80,>00 197x * 198x * Line no. 0 199x * 200x20F2 0070 7800 BYTE >00,>70,>78,>00 82 20F6 DSTART EQU $ 83 * COPY VPSLINES 84 * COPY MAINPGS.990 85 * COPY MAINP100.990 86 * COPY TOPPAGES.TXT 87 * COPY P100P27.990 88 COPY P26PAGES.990 1y * 2y * PAGE 100 PACKET 26 TESTS 3y * 4y * ROW 00 5y20F6 8A BYTE >8A 10 HAMMING BYTES 6y20F7 01 00 BYTE >01,>00 7y20F9 00 0000 BYTE >00,>00,>00,>00,>00,>00 8y20FF 02 BYTE >02 UPDATE 9y2100 01 BYTE >01 SERIAL MAGAZINE 10y2101 50 4143 TEXT 'PACKET 26 TEST PAGE A ' 11y2118 03 BYTE >03 YELLOW 12y2119 54 494D TEXT 'TIMESLOT' 13y * MAG 1, ROW 24 14y2121 82 BYTE >82 2 HAMMING BYTES 15y2122 0118 01 BYTE >01,>18,>01 16y2125 4B 6964 TEXT 'Kids TV ' 17y212E 02 BYTE 2 18y212F 48 6967 TEXT 'Highlight' 19y2138 03 BYTE 3 20y2139 20 5456 TEXT ' TV Films' 21y2142 06 BYTE 6 22y2143 20 5456 TEXT ' TV Guide' 23y * MAG 2, ROW 27 24y214C A8 BYTE >A8 40 HAMMING BYTES MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 85 25y214D 01 1B00 BYTE >01,>1B,>00 26y2150 0F0F 0F07 BYTE >0F,>0F,>0F,>07,>0F,>03 27y2156 030A 0F07 BYTE >03,>0A,>0F,>07,>0F,>03 28y215C 0C0B 0F07 BYTE >0C,>0B,>0F,>07,>0F,>03 29y2162 0D0F 0F07 BYTE >0D,>0F,>0F,>07,>0F,>03 30y2168 0F0F 0F07 BYTE >0F,>0F,>0F,>07,>0F,>07 31y216E 010F 0F07 BYTE >01,>0F,>0F,>07,>0F,>03 32y2174 0F1F 4D BYTE >0F,>1F,>4D 33y * MAG 1 ROW 1 34y2177 82 BYTE >82 2 HAMMING BYTES 35y2178 0101 BYTE 1,1 36y217A 2020 2020 TEXT ' ' 37y218E 2020 2020 TEXT ' ALL BITS OK ' 38y * 39y * PACKET 26 (DESIGNATION 0) 40y * 41y21A2 FE BYTE >FE SPECIAL PACKET 26 CODE 42y21A3 00 0000 BYTE 0,0,0 NO ERRORS 43y21A6 011A 00 BYTE 1,26,0 MAG 1, PKT 26, DESIGNATION 44y21A9 28 0000 BYTE 40,0,0 1 =40+ ROW 24 (0) 45y21AC 000F 37 BYTE 0,>F,>37 2 46y21AF 01 0F63 BYTE 1,>F,>63 3 47y21B2 020F 6B BYTE 2,>F,>6B 4 48y21B5 03 0F26 BYTE 3,>F,>26 5 49y21B8 0402 5D BYTE 4,>2,>5D 6 50y21BB 05 025B BYTE 5,>2,>5B 7 51y21BE 0611 41 BYTE 6,>11,>41 8 52y21C1 07 1145 BYTE 7,>11,>45 9 53y21C4 0811 4F BYTE 8,>11,>4F 10 54y21C7 09 116F BYTE 9,>11,>6F 11 55y21CA 0A12 41 BYTE 10,>12,>41 12 56y21CD 0B 1245 BYTE 11,>12,>45 13 57y * 58y * PACKET 26 (DESIGNATION 1) 59y * 60y21D0 FE BYTE >FE SPECIAL PACKET 26 CODE 61y21D1 00 0000 BYTE 0,0,0 NO ERRORS 62y21D4 011A 01 BYTE 1,26,1 MAG 1 PKT 26, DESIGNATION 63y21D7 0C 1249 BYTE 12,>12,>49 1 64y21DA 0D12 4F BYTE 13,>12,>4F 2 65y21DD 0E 1255 BYTE 14,>12,>55 3 66y21E0 0F13 61 BYTE 15,>13,>61 4 67y21E3 10 1365 BYTE 16,>13,>65 5 68y21E6 1113 69 BYTE 17,>13,>69 6 69y21E9 12 136F BYTE 18,>13,>6F 7 70y21EC 1313 75 BYTE 19,>13,>75 8 71y21EF 14 1341 BYTE 20,>13,>41 9 72y21F2 1513 49 BYTE 21,>13,>49 10 73y21F5 16 1461 BYTE 22,>14,>61 11 74y21F8 1714 6F BYTE 23,>14,>6F 12 75y21FB 18 1441 BYTE 24,>14,>41 13 76y * 77y * PACKET 26 (DESIGNATION 2) NO ERRORS 78y * 79y21FE FE BYTE >FE SPECIAL PACKET 26 CODE 80y21FF 00 0000 BYTE 0,0,0 NO ERRORS 81y2202 011A 02 BYTE 1,26,2 MAG 1, PKT 26, DESIGNATION 82y2205 19 144E BYTE 25,>14,>4E 1 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 86 83y2208 1A14 4F BYTE 26,>14,>4F 2 84y220B 1B 1861 BYTE 27,>18,>61 3 85y220E 1C18 65 BYTE 28,>18,>65 4 86y2211 1D 1869 BYTE 29,>18,>69 5 87y2214 1E18 6F BYTE 30,>18,>6F 6 88y2217 1F 1849 BYTE 31,>18,>49 7 89y221A 2018 55 BYTE 32,>18,>55 8 90y221D 21 1B43 BYTE 33,>1B,>43 9 91y2220 3F1F 7F BYTE >3F,>1F,>7F 10 92y2223 3F 1F7F BYTE >3F,>1F,>7F 11 93y2226 3F1F 7F BYTE >3F,>1F,>7F 12 94y2229 3F 1F7F BYTE >3F,>1F,>7F 13 95y * MAG 1 ROW 2 96y222C 82 BYTE >82 2 HAMMING BYTES 97y222D 01 02 BYTE 1,2 98y222F 20 2020 TEXT ' ' 99y2243 45 5252 TEXT 'ERROR IN BITS 1,2,3' 100y * 101y * PACKET 26 (DESIGNATION 3) ERROR IN BIT 1 102y * 103y2257 FE BYTE >FE SPECIAL PACKET 26 CODE 104y2258 0000 01 BYTE 0,0,1 ERROR IN BIT 1 105y225B 01 1A03 BYTE 1,26,3 MAG 1, PKT 26, DESIGNATION 106y225E 2A00 00 BYTE 40+2,0,0 1 =40+ ROW 2 107y2261 00 0F37 BYTE 0,>F,>37 2 108y2264 010F 63 BYTE 1,>F,>63 3 109y2267 02 0F6B BYTE 2,>F,>6B 4 110y226A 030F 26 BYTE 3,>F,>26 5 111y226D 04 025D BYTE 4,>2,>5D 6 112y2270 0502 5B BYTE 5,>2,>5B 7 113y2273 06 1141 BYTE 6,>11,>41 8 114y2276 0711 45 BYTE 7,>11,>45 9 115y2279 08 114F BYTE 8,>11,>4F 10 116y227C 0911 6F BYTE 9,>11,>6F 11 117y227F 0A 1241 BYTE 10,>12,>41 12 118y2282 0B12 45 BYTE 11,>12,>45 13 119y * 120y * PACKET 26 (DESIGNATION 4) 121y * 122y2285 FE BYTE >FE SPECIAL PACKET 26 CODE 123y2286 0000 02 BYTE 0,0,2 ERROR IN BIT 2 124y2289 01 1A04 BYTE 1,26,4 MAG 1 PKT 26, DESIGNATION 125y228C 0C12 49 BYTE 12,>12,>49 1 126y228F 0D 124F BYTE 13,>12,>4F 2 127y2292 0E12 55 BYTE 14,>12,>55 3 128y2295 0F 1361 BYTE 15,>13,>61 4 129y2298 1013 65 BYTE 16,>13,>65 5 130y229B 11 1369 BYTE 17,>13,>69 6 131y229E 1213 6F BYTE 18,>13,>6F 7 132y22A1 13 1375 BYTE 19,>13,>75 8 133y22A4 1413 41 BYTE 20,>13,>41 9 134y22A7 15 1349 BYTE 21,>13,>49 10 135y22AA 1614 61 BYTE 22,>14,>61 11 136y22AD 17 146F BYTE 23,>14,>6F 12 137y22B0 1814 41 BYTE 24,>14,>41 13 138y * 139y * PACKET 26 (DESIGNATION 5) 140y * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 87 141y22B3 FE BYTE >FE SPECIAL PACKET 26 CODE 142y22B4 0000 04 BYTE 0,0,4 ERROR IN BIT 3 143y22B7 01 1A05 BYTE 1,26,5 MAG 1, PKT 26, DESIGNATION 144y22BA 1914 4E BYTE 25,>14,>4E 1 145y22BD 1A 144F BYTE 26,>14,>4F 2 146y22C0 1B18 61 BYTE 27,>18,>61 3 147y22C3 1C 1865 BYTE 28,>18,>65 4 148y22C6 1D18 69 BYTE 29,>18,>69 5 149y22C9 1E 186F BYTE 30,>18,>6F 6 150y22CC 1F18 49 BYTE 31,>18,>49 7 151y22CF 20 1855 BYTE 32,>18,>55 8 152y22D2 211B 43 BYTE 33,>1B,>43 9 153y22D5 3F 1F7F BYTE >3F,>1F,>7F 10 154y22D8 3F1F 7F BYTE >3F,>1F,>7F 11 155y22DB 3F 1F7F BYTE >3F,>1F,>7F 12 156y22DE 3F1F 7F BYTE >3F,>1F,>7F 13 157y * MAG 1 ROW 3 158y22E1 82 BYTE >82 2 HAMMING BYTES 159y22E2 0103 BYTE 1,3 160y22E4 2020 2020 TEXT ' ' 161y22F8 4552 524F TEXT 'ERROR IN BITS 4,5,6' 162y * 163y * PACKET 26 (DESIGNATION 6) ERROR IN BIT 4 164y * 165y230C FE BYTE >FE SPECIAL PACKET 26 CODE 166y230D 00 0008 BYTE 0,0,8 ERROR IN BIT 2 167y2310 011A 06 BYTE 1,26,6 MAG 1, PKT 26, DESIGNATION 168y2313 2B 0000 BYTE 40+3,0,0 1 =40+ ROW 3 169y2316 000F 37 BYTE 0,>F,>37 2 170y2319 01 0F63 BYTE 1,>F,>63 3 171y231C 020F 6B BYTE 2,>F,>6B 4 172y231F 03 0F26 BYTE 3,>F,>26 5 173y2322 0402 5D BYTE 4,>2,>5D 6 174y2325 05 025B BYTE 5,>2,>5B 7 175y2328 0611 41 BYTE 6,>11,>41 8 176y232B 07 1145 BYTE 7,>11,>45 9 177y232E 0811 4F BYTE 8,>11,>4F 10 178y2331 09 116F BYTE 9,>11,>6F 11 179y2334 0A12 41 BYTE 10,>12,>41 12 180y2337 0B 1245 BYTE 11,>12,>45 13 181y * 182y * PACKET 26 (DESIGNATION 7) 183y * 184y233A FE BYTE >FE SPECIAL PACKET 26 CODE 185y233B 00 0010 BYTE 0,0,>10 ERROR IN BIT 5 186y233E 011A 07 BYTE 1,26,7 MAG 1 PKT 26, DESIGNATION 187y2341 0C 1249 BYTE 12,>12,>49 1 188y2344 0D12 4F BYTE 13,>12,>4F 2 189y2347 0E 1255 BYTE 14,>12,>55 3 190y234A 0F13 61 BYTE 15,>13,>61 4 191y234D 10 1365 BYTE 16,>13,>65 5 192y2350 1113 69 BYTE 17,>13,>69 6 193y2353 12 136F BYTE 18,>13,>6F 7 194y2356 1313 75 BYTE 19,>13,>75 8 195y2359 14 1341 BYTE 20,>13,>41 9 196y235C 1513 49 BYTE 21,>13,>49 10 197y235F 16 1461 BYTE 22,>14,>61 11 198y2362 1714 6F BYTE 23,>14,>6F 12 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 88 199y2365 18 1441 BYTE 24,>14,>41 13 200y * 201y * PACKET 26 (DESIGNATION 8) 202y * 203y2368 FE BYTE >FE SPECIAL PACKET 26 CODE 204y2369 00 0020 BYTE 0,0,>20 ERROR IN BIT 6 205y236C 011A 08 BYTE 1,26,8 MAG 1, PKT 26, DESIGNATION 206y236F 19 144E BYTE 25,>14,>4E 1 207y2372 1A14 4F BYTE 26,>14,>4F 2 208y2375 1B 1861 BYTE 27,>18,>61 3 209y2378 1C18 65 BYTE 28,>18,>65 4 210y237B 1D 1869 BYTE 29,>18,>69 5 211y237E 1E18 6F BYTE 30,>18,>6F 6 212y2381 1F 1849 BYTE 31,>18,>49 7 213y2384 2018 55 BYTE 32,>18,>55 8 214y2387 21 1B43 BYTE 33,>1B,>43 9 215y238A 3F1F 7F BYTE >3F,>1F,>7F 10 216y238D 3F 1F7F BYTE >3F,>1F,>7F 11 217y2390 3F1F 7F BYTE >3F,>1F,>7F 12 218y2393 3F 1F7F BYTE >3F,>1F,>7F 13 219y * MAG 1 ROW 4 220y2396 82 BYTE >82 2 HAMMING BYTES 221y2397 01 04 BYTE 1,4 222y2399 20 2020 TEXT ' ' 223y23AD 45 5252 TEXT 'ERROR IN BITS 7,8,9' 224y * 225y * PACKET 26 (DESIGNATION 9) ERROR IN BIT 7 226y * 227y23C1 FE BYTE >FE SPECIAL PACKET 26 CODE 228y23C2 0000 40 BYTE 0,0,>40 ERROR IN BIT 7 229y23C5 01 1A09 BYTE 1,26,9 MAG 1, PKT 26, DESIGNATION 230y23C8 2C00 00 BYTE 40+4,0,0 1 =40+ ROW 4 231y23CB 00 0F37 BYTE 0,>F,>37 2 232y23CE 010F 63 BYTE 1,>F,>63 3 233y23D1 02 0F6B BYTE 2,>F,>6B 4 234y23D4 030F 26 BYTE 3,>F,>26 5 235y23D7 04 025D BYTE 4,>2,>5D 6 236y23DA 0502 5B BYTE 5,>2,>5B 7 237y23DD 06 1141 BYTE 6,>11,>41 8 238y23E0 0711 45 BYTE 7,>11,>45 9 239y23E3 08 114F BYTE 8,>11,>4F 10 240y23E6 0911 6F BYTE 9,>11,>6F 11 241y23E9 0A 1241 BYTE 10,>12,>41 12 242y23EC 0B12 45 BYTE 11,>12,>45 13 243y * 244y * PACKET 26 (DESIGNATION 10) 245y * 246y23EF FE BYTE >FE SPECIAL PACKET 26 CODE 247y23F0 0000 80 BYTE 0,0,>80 ERROR IN BIT 8 248y23F3 01 1A0A BYTE 1,26,10 MAG, PKT 26, DESIGNATION 249y23F6 0C12 49 BYTE 12,>12,>49 1 250y23F9 0D 124F BYTE 13,>12,>4F 2 251y23FC 0E12 55 BYTE 14,>12,>55 3 252y23FF 0F 1361 BYTE 15,>13,>61 4 253y2402 1013 65 BYTE 16,>13,>65 5 254y2405 11 1369 BYTE 17,>13,>69 6 255y2408 1213 6F BYTE 18,>13,>6F 7 256y240B 13 1375 BYTE 19,>13,>75 8 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 89 257y240E 1413 41 BYTE 20,>13,>41 9 258y2411 15 1349 BYTE 21,>13,>49 10 259y2414 1614 61 BYTE 22,>14,>61 11 260y2417 17 146F BYTE 23,>14,>6F 12 261y241A 1814 41 BYTE 24,>14,>41 13 262y * 263y * PACKET 26 (DESIGNATION 11) 264y * 265y241D FE BYTE >FE SPECIAL PACKET 26 CODE 266y241E 0001 00 BYTE 0,1,0 ERROR IN BIT 9 267y2421 01 1A0B BYTE 1,26,11 MAG, PKT 26, DESIGNATION 268y2424 1914 4E BYTE 25,>14,>4E 1 269y2427 1A 144F BYTE 26,>14,>4F 2 270y242A 1B18 61 BYTE 27,>18,>61 3 271y242D 1C 1865 BYTE 28,>18,>65 4 272y2430 1D18 69 BYTE 29,>18,>69 5 273y2433 1E 186F BYTE 30,>18,>6F 6 274y2436 1F18 49 BYTE 31,>18,>49 7 275y2439 20 1855 BYTE 32,>18,>55 8 276y243C 211B 43 BYTE 33,>1B,>43 9 277y243F 3F 1F7F BYTE >3F,>1F,>7F 10 278y2442 3F1F 7F BYTE >3F,>1F,>7F 11 279y2445 3F 1F7F BYTE >3F,>1F,>7F 12 280y2448 3F1F 7F BYTE >3F,>1F,>7F 13 281y * MAG 1 ROW 5 282y244B 82 BYTE >82 2 HAMMING BYTES 283y244C 0105 BYTE 1,5 284y244E 2020 2020 TEXT ' ' 285y2462 4552 524F TEXT 'ERROR IN BITS 10-12' 286y * 287y * PACKET 26 (DESIGNATION 12) ERROR IN BIT 10 288y * 289y2476 FE BYTE >FE SPECIAL PACKET 26 CODE 290y2477 00 0200 BYTE 0,2,0 ERROR IN BIT 10 291y247A 011A 0C BYTE 1,26,12 MAG, PKT 26, DESIGNATION 292y247D 2D 0000 BYTE 40+5,0,0 1 =40+ ROW 5 293y2480 000F 37 BYTE 0,>F,>37 2 294y2483 01 0F63 BYTE 1,>F,>63 3 295y2486 020F 6B BYTE 2,>F,>6B 4 296y2489 03 0F26 BYTE 3,>F,>26 5 297y248C 0402 5D BYTE 4,>2,>5D 6 298y248F 05 025B BYTE 5,>2,>5B 7 299y2492 0611 41 BYTE 6,>11,>41 8 300y2495 07 1145 BYTE 7,>11,>45 9 301y2498 0811 4F BYTE 8,>11,>4F 10 302y249B 09 116F BYTE 9,>11,>6F 11 303y249E 0A12 41 BYTE 10,>12,>41 12 304y24A1 0B 1245 BYTE 11,>12,>45 13 305y * 306y * PACKET 26 (DESIGNATION 13) 307y * 308y24A4 FE BYTE >FE SPECIAL PACKET 26 CODE 309y24A5 00 0400 BYTE 0,4,0 ERROR IN BIT 11 310y24A8 011A 0D BYTE 1,26,13 MAG, PKT 26, DESIGNATION 311y24AB 0C 1249 BYTE 12,>12,>49 1 312y24AE 0D12 4F BYTE 13,>12,>4F 2 313y24B1 0E 1255 BYTE 14,>12,>55 3 314y24B4 0F13 61 BYTE 15,>13,>61 4 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 90 315y24B7 10 1365 BYTE 16,>13,>65 5 316y24BA 1113 69 BYTE 17,>13,>69 6 317y24BD 12 136F BYTE 18,>13,>6F 7 318y24C0 1313 75 BYTE 19,>13,>75 8 319y24C3 14 1341 BYTE 20,>13,>41 9 320y24C6 1513 49 BYTE 21,>13,>49 10 321y24C9 16 1461 BYTE 22,>14,>61 11 322y24CC 1714 6F BYTE 23,>14,>6F 12 323y24CF 18 1441 BYTE 24,>14,>41 13 324y * 325y * PACKET 26 (DESIGNATION 14) 326y * 327y24D2 FE BYTE >FE SPECIAL PACKET 26 CODE 328y24D3 00 0800 BYTE 0,8,0 ERROR IN BIT 12 329y24D6 011A 0E BYTE 1,26,14 MAG, PKT 26, DESIGNATION 330y24D9 19 144E BYTE 25,>14,>4E 1 331y24DC 1A14 4F BYTE 26,>14,>4F 2 332y24DF 1B 1861 BYTE 27,>18,>61 3 333y24E2 1C18 65 BYTE 28,>18,>65 4 334y24E5 1D 1869 BYTE 29,>18,>69 5 335y24E8 1E18 6F BYTE 30,>18,>6F 6 336y24EB 1F 1849 BYTE 31,>18,>49 7 337y24EE 2018 55 BYTE 32,>18,>55 8 338y24F1 21 1B43 BYTE 33,>1B,>43 9 339y24F4 3F1F 7F BYTE >3F,>1F,>7F 10 340y24F7 3F 1F7F BYTE >3F,>1F,>7F 11 341y24FA 3F1F 7F BYTE >3F,>1F,>7F 12 342y24FD 3F 1F7F BYTE >3F,>1F,>7F 13 343y * 344y * PAGE 123 B PACKET 26 TESTS 345y * 346y * ROW 00 347y2500 8A BYTE >8A 10 HAMMING BYTES 348y2501 01 00 BYTE >01,>00 349y2503 03 0200 BYTE >03,>02,>00,>00,>00,>00 350y2509 02 BYTE >02 UPDATE 351y250A 01 BYTE >01 SERIAL MAGAZINE 352y250B 50 4143 TEXT 'PACKET 26 TEST PAGE B ' 353y2522 03 BYTE >03 YELLOW 354y2523 54 494D TEXT 'TIMESLOT' 355y * MAG 1 ROW 6 356y252B 82 BYTE >82 2 HAMMING BYTES 357y252C 0106 BYTE 1,6 358y252E 2020 2020 TEXT ' ' 359y2542 4552 524F TEXT 'ERROR IN BITS 13-15' 360y * 361y * PACKET 26 (DESIGNATION 0) 362y * 363y2556 FE BYTE >FE SPECIAL PACKET 26 CODE 364y2557 00 1000 BYTE 0,>10,0 ERROR IN BIT 13 365y255A 011A 00 BYTE 1,26,0 MAG, PKT 26, DESIGNATION 366y255D 2E 0000 BYTE 40+6,0,0 1 =40+ ROW 6 367y2560 000F 37 BYTE 0,>F,>37 2 368y2563 01 0F63 BYTE 1,>F,>63 3 369y2566 020F 6B BYTE 2,>F,>6B 4 370y2569 03 0F26 BYTE 3,>F,>26 5 371y256C 0402 5D BYTE 4,>2,>5D 6 372y256F 05 025B BYTE 5,>2,>5B 7 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 91 373y2572 0611 41 BYTE 6,>11,>41 8 374y2575 07 1145 BYTE 7,>11,>45 9 375y2578 0811 4F BYTE 8,>11,>4F 10 376y257B 09 116F BYTE 9,>11,>6F 11 377y257E 0A12 41 BYTE 10,>12,>41 12 378y2581 0B 1245 BYTE 11,>12,>45 13 379y * 380y * PACKET 26 (DESIGNATION 1) 381y * 382y2584 FE BYTE >FE SPECIAL PACKET 26 CODE 383y2585 00 2000 BYTE 0,>20,0 ERROR IN BIT 14 384y2588 011A 01 BYTE 1,26,1 MAG, PKT 26, DESIGNATION 385y258B 0C 1249 BYTE 12,>12,>49 1 386y258E 0D12 4F BYTE 13,>12,>4F 2 387y2591 0E 1255 BYTE 14,>12,>55 3 388y2594 0F13 61 BYTE 15,>13,>61 4 389y2597 10 1365 BYTE 16,>13,>65 5 390y259A 1113 69 BYTE 17,>13,>69 6 391y259D 12 136F BYTE 18,>13,>6F 7 392y25A0 1313 75 BYTE 19,>13,>75 8 393y25A3 14 1341 BYTE 20,>13,>41 9 394y25A6 1513 49 BYTE 21,>13,>49 10 395y25A9 16 1461 BYTE 22,>14,>61 11 396y25AC 1714 6F BYTE 23,>14,>6F 12 397y25AF 18 1441 BYTE 24,>14,>41 13 398y * 399y * PACKET 26 (DESIGNATION 2 ) 400y * 401y25B2 FE BYTE >FE SPECIAL PACKET 26 CODE 402y25B3 00 4000 BYTE 0,>40,0 ERROR IN BIT 15 403y25B6 011A 02 BYTE 1,26,2 MAG, PKT 26, DESIGNATION 404y25B9 19 144E BYTE 25,>14,>4E 1 405y25BC 1A14 4F BYTE 26,>14,>4F 2 406y25BF 1B 1861 BYTE 27,>18,>61 3 407y25C2 1C18 65 BYTE 28,>18,>65 4 408y25C5 1D 1869 BYTE 29,>18,>69 5 409y25C8 1E18 6F BYTE 30,>18,>6F 6 410y25CB 1F 1849 BYTE 31,>18,>49 7 411y25CE 2018 55 BYTE 32,>18,>55 8 412y25D1 21 1B43 BYTE 33,>1B,>43 9 413y25D4 3F1F 7F BYTE >3F,>1F,>7F 10 414y25D7 3F 1F7F BYTE >3F,>1F,>7F 11 415y25DA 3F1F 7F BYTE >3F,>1F,>7F 12 416y25DD 3F 1F7F BYTE >3F,>1F,>7F 13 417y * MAG 1 ROW 7 418y25E0 82 BYTE >82 2 HAMMING BYTES 419y25E1 01 07 BYTE 1,7 420y25E3 20 2020 TEXT ' ' 421y25F7 45 5252 TEXT 'ERROR IN BITS 16-18' 422y * 423y * PACKET 26 (DESIGNATION 3) 424y * 425y260B FE BYTE >FE SPECIAL PACKET 26 CODE 426y260C 0080 00 BYTE 0,>80,0 ERROR IN BIT 16 427y260F 01 1A03 BYTE 1,26,3 MAG, PKT 26, DESIGNATION 428y2612 2F00 00 BYTE 40+7,0,0 1 =40+ ROW 7 429y2615 00 0F37 BYTE 0,>F,>37 2 430y2618 010F 63 BYTE 1,>F,>63 3 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 92 431y261B 02 0F6B BYTE 2,>F,>6B 4 432y261E 030F 26 BYTE 3,>F,>26 5 433y2621 04 025D BYTE 4,>2,>5D 6 434y2624 0502 5B BYTE 5,>2,>5B 7 435y2627 06 1141 BYTE 6,>11,>41 8 436y262A 0711 45 BYTE 7,>11,>45 9 437y262D 08 114F BYTE 8,>11,>4F 10 438y2630 0911 6F BYTE 9,>11,>6F 11 439y2633 0A 1241 BYTE 10,>12,>41 12 440y2636 0B12 45 BYTE 11,>12,>45 13 441y * 442y * PACKET 26 (DESIGNATION 4) 443y * 444y2639 FE BYTE >FE SPECIAL PACKET 26 CODE 445y263A 0100 00 BYTE 1,0,0 ERROR IN BIT 17 446y263D 01 1A04 BYTE 1,26,4 MAG, PKT 26, DESIGNATION 447y2640 0C12 49 BYTE 12,>12,>49 1 448y2643 0D 124F BYTE 13,>12,>4F 2 449y2646 0E12 55 BYTE 14,>12,>55 3 450y2649 0F 1361 BYTE 15,>13,>61 4 451y264C 1013 65 BYTE 16,>13,>65 5 452y264F 11 1369 BYTE 17,>13,>69 6 453y2652 1213 6F BYTE 18,>13,>6F 7 454y2655 13 1375 BYTE 19,>13,>75 8 455y2658 1413 41 BYTE 20,>13,>41 9 456y265B 15 1349 BYTE 21,>13,>49 10 457y265E 1614 61 BYTE 22,>14,>61 11 458y2661 17 146F BYTE 23,>14,>6F 12 459y2664 1814 41 BYTE 24,>14,>41 13 460y * 461y * PACKET 26 (DESIGNATION 5 ) 462y * 463y2667 FE BYTE >FE SPECIAL PACKET 26 CODE 464y2668 0200 00 BYTE 2,0,0 ERROR IN BIT 18 465y266B 01 1A05 BYTE 1,26,5 MAG, PKT 26, DESIGNATION 466y266E 1914 4E BYTE 25,>14,>4E 1 467y2671 1A 144F BYTE 26,>14,>4F 2 468y2674 1B18 61 BYTE 27,>18,>61 3 469y2677 1C 1865 BYTE 28,>18,>65 4 470y267A 1D18 69 BYTE 29,>18,>69 5 471y267D 1E 186F BYTE 30,>18,>6F 6 472y2680 1F18 49 BYTE 31,>18,>49 7 473y2683 20 1855 BYTE 32,>18,>55 8 474y2686 211B 43 BYTE 33,>1B,>43 9 475y2689 3F 1F7F BYTE >3F,>1F,>7F 10 476y268C 3F1F 7F BYTE >3F,>1F,>7F 11 477y268F 3F 1F7F BYTE >3F,>1F,>7F 12 478y2692 3F1F 7F BYTE >3F,>1F,>7F 13 479y * MAG 1 ROW 8 480y2695 82 BYTE >82 2 HAMMING BYTES 481y2696 0108 BYTE 1,8 482y2698 2020 2020 TEXT ' ' 483y26AC 4552 524F TEXT 'ERROR IN BITS 19-21' 484y * 485y * PACKET 26 (DESIGNATION 6) 486y * 487y26C0 FE BYTE >FE SPECIAL PACKET 26 CODE 488y26C1 04 0000 BYTE 4,0,0 ERROR IN BIT 19 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 93 489y26C4 011A 06 BYTE 1,26,6 MAG, PKT 26, DESIGNATION 490y26C7 30 0000 BYTE 40+8,0,0 1 =40+ ROW 8 491y26CA 000F 37 BYTE 0,>F,>37 2 492y26CD 01 0F63 BYTE 1,>F,>63 3 493y26D0 020F 6B BYTE 2,>F,>6B 4 494y26D3 03 0F26 BYTE 3,>F,>26 5 495y26D6 0402 5D BYTE 4,>2,>5D 6 496y26D9 05 025B BYTE 5,>2,>5B 7 497y26DC 0611 41 BYTE 6,>11,>41 8 498y26DF 07 1145 BYTE 7,>11,>45 9 499y26E2 0811 4F BYTE 8,>11,>4F 10 500y26E5 09 116F BYTE 9,>11,>6F 11 501y26E8 0A12 41 BYTE 10,>12,>41 12 502y26EB 0B 1245 BYTE 11,>12,>45 13 503y * 504y * PACKET 26 (DESIGNATION 7) 505y * 506y26EE FE BYTE >FE SPECIAL PACKET 26 CODE 507y26EF 08 0000 BYTE 8,0,0 ERROR IN BIT 20 508y26F2 011A 07 BYTE 1,26,7 MAG, PKT 26, DESIGNATION 509y26F5 0C 1249 BYTE 12,>12,>49 1 510y26F8 0D12 4F BYTE 13,>12,>4F 2 511y26FB 0E 1255 BYTE 14,>12,>55 3 512y26FE 0F13 61 BYTE 15,>13,>61 4 513y2701 10 1365 BYTE 16,>13,>65 5 514y2704 1113 69 BYTE 17,>13,>69 6 515y2707 12 136F BYTE 18,>13,>6F 7 516y270A 1313 75 BYTE 19,>13,>75 8 517y270D 14 1341 BYTE 20,>13,>41 9 518y2710 1513 49 BYTE 21,>13,>49 10 519y2713 16 1461 BYTE 22,>14,>61 11 520y2716 1714 6F BYTE 23,>14,>6F 12 521y2719 18 1441 BYTE 24,>14,>41 13 522y * 523y * PACKET 26 (DESIGNATION 8 ) 524y * 525y271C FE BYTE >FE SPECIAL PACKET 26 CODE 526y271D 10 0000 BYTE >10,0,0 ERROR IN BIT 21 527y2720 011A 08 BYTE 1,26,8 MAG, PKT 26, DESIGNATION 528y2723 19 144E BYTE 25,>14,>4E 1 529y2726 1A14 4F BYTE 26,>14,>4F 2 530y2729 1B 1861 BYTE 27,>18,>61 3 531y272C 1C18 65 BYTE 28,>18,>65 4 532y272F 1D 1869 BYTE 29,>18,>69 5 533y2732 1E18 6F BYTE 30,>18,>6F 6 534y2735 1F 1849 BYTE 31,>18,>49 7 535y2738 2018 55 BYTE 32,>18,>55 8 536y273B 21 1B43 BYTE 33,>1B,>43 9 537y273E 3F1F 7F BYTE >3F,>1F,>7F 10 538y2741 3F 1F7F BYTE >3F,>1F,>7F 11 539y2744 3F1F 7F BYTE >3F,>1F,>7F 12 540y2747 3F 1F7F BYTE >3F,>1F,>7F 13 541y * MAG 1 ROW 9 542y274A 82 BYTE >82 2 HAMMING BYTES 543y274B 01 09 BYTE 1,9 544y274D 20 2020 TEXT ' ' 545y2761 45 5252 TEXT 'ERROR IN BITS 22-24' 546y * MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 94 547y * PACKET 26 (DESIGNATION 9) 548y * 549y2775 FE BYTE >FE SPECIAL PACKET 26 CODE 550y2776 2000 00 BYTE >20,0,0 ERROR IN BIT 22 551y2779 01 1A09 BYTE 1,26,9 MAG, PKT 26, DESIGNATION 552y277C 3100 00 BYTE 40+9,0,0 1 =40+ ROW 9 553y277F 00 0F37 BYTE 0,>F,>37 2 554y2782 010F 63 BYTE 1,>F,>63 3 555y2785 02 0F6B BYTE 2,>F,>6B 4 556y2788 030F 26 BYTE 3,>F,>26 5 557y278B 04 025D BYTE 4,>2,>5D 6 558y278E 0502 5B BYTE 5,>2,>5B 7 559y2791 06 1141 BYTE 6,>11,>41 8 560y2794 0711 45 BYTE 7,>11,>45 9 561y2797 08 114F BYTE 8,>11,>4F 10 562y279A 0911 6F BYTE 9,>11,>6F 11 563y279D 0A 1241 BYTE 10,>12,>41 12 564y27A0 0B12 45 BYTE 11,>12,>45 13 565y * 566y * PACKET 26 (DESIGNATION 10) 567y * 568y27A3 FE BYTE >FE SPECIAL PACKET 26 CODE 569y27A4 4000 00 BYTE >40,0,0 ERROR IN BIT 23 570y27A7 01 1A0A BYTE 1,26,10 MAG, PKT 26, DESIGNATION 571y27AA 0C12 49 BYTE 12,>12,>49 1 572y27AD 0D 124F BYTE 13,>12,>4F 2 573y27B0 0E12 55 BYTE 14,>12,>55 3 574y27B3 0F 1361 BYTE 15,>13,>61 4 575y27B6 1013 65 BYTE 16,>13,>65 5 576y27B9 11 1369 BYTE 17,>13,>69 6 577y27BC 1213 6F BYTE 18,>13,>6F 7 578y27BF 13 1375 BYTE 19,>13,>75 8 579y27C2 1413 41 BYTE 20,>13,>41 9 580y27C5 15 1349 BYTE 21,>13,>49 10 581y27C8 1614 61 BYTE 22,>14,>61 11 582y27CB 17 146F BYTE 23,>14,>6F 12 583y27CE 1814 41 BYTE 24,>14,>41 13 584y * 585y * PACKET 26 (DESIGNATION 11) 586y * 587y27D1 FE BYTE >FE SPECIAL PACKET 26 CODE 588y27D2 8000 00 BYTE >80,0,0 ERROR IN BIT 24 589y27D5 01 1A0B BYTE 1,26,11 MAG, PKT 26, DESIGNATION 590y27D8 1914 4E BYTE 25,>14,>4E 1 591y27DB 1A 144F BYTE 26,>14,>4F 2 592y27DE 1B18 61 BYTE 27,>18,>61 3 593y27E1 1C 1865 BYTE 28,>18,>65 4 594y27E4 1D18 69 BYTE 29,>18,>69 5 595y27E7 1E 186F BYTE 30,>18,>6F 6 596y27EA 1F18 49 BYTE 31,>18,>49 7 597y27ED 20 1855 BYTE 32,>18,>55 8 598y27F0 211B 43 BYTE 33,>1B,>43 9 599y27F3 3F 1F7F BYTE >3F,>1F,>7F 10 600y27F6 3F1F 7F BYTE >3F,>1F,>7F 11 601y27F9 3F 1F7F BYTE >3F,>1F,>7F 12 602y27FC 3F1F 7F BYTE >3F,>1F,>7F 13 603y * 604y * PAGE 197 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 95 605y * 606y * ROW 00 607y27FF 8A BYTE >8A 10 HAMMING BYTES 608y2800 0100 BYTE >01,>00 609y2802 0709 0000 BYTE >07,>09,>00,>00,>00,>00 610y2808 02 BYTE >02 UPDATE 611y2809 01 BYTE >01 SERIAL MAGAZINE 612y280A 4345 4546 TEXT 'CEEFAX 797 ' 613y2816 5765 6420 TEXT 'Wed 21 Oct ' 614y2821 03 BYTE >03 YELLOW 615y2822 5449 4D20 TEXT 'TIM P797' 616y * ROW 24 617y282A 82 BYTE >82 2 HAMMING BYTES 618y282B 01 18 BYTE >01,>18 619y282D 11 2F01 BYTE >11,>2F,>01 620y2830 4665 6174 TEXT 'Features' 621y2838 122F 0754 BYTE >12,>2F,>07,'T','V',>13,>2F,>03 622y2840 4675 6E2D TEXT 'Fun-Games' 623y2849 16 2F06 BYTE >16,>2F,>06 624y284C 4669 6E61 TEXT 'Finance ' 625y * 626y * PACKET 26 (DESIGNATION 0) 627y * 628y2855 FE BYTE >FE SPECIAL PACKET 26 CODE 629y2856 0000 00 BYTE 0,0,0 NO ERRORS 630y2859 01 1A00 BYTE 1,26,0 MAG 7, PKT 26, DESIGNATION 631y285C 3E00 00 BYTE 62,0,0 1 =40+ ROW 22 632y285F 00 0F37 BYTE 0,>F,>37 2 633y2862 010F 63 BYTE 1,>F,>63 3 634y2865 02 0F6B BYTE 2,>F,>6B 4 635y2868 030F 26 BYTE 3,>F,>26 5 636y286B 04 025D BYTE 4,>2,>5D 6 637y286E 0502 5B BYTE 5,>2,>5B 7 638y2871 06 1141 BYTE 6,>11,>41 8 639y2874 0711 45 BYTE 7,>11,>45 9 640y2877 08 114F BYTE 8,>11,>4F 10 641y287A 0911 6F BYTE 9,>11,>6F 11 642y287D 0A 1241 BYTE 10,>12,>41 12 643y2880 0B12 45 BYTE 11,>12,>45 13 644y * 645y * PACKET 26 (DESIGNATION 1) 646y * 647y2883 FE BYTE >FE SPECIAL PACKET 26 CODE 648y2884 0000 00 BYTE 0,0,0 NO ERRORS 649y2887 01 1A01 BYTE 1,26,1 MAG 7, PKT 26, DESIGNATION 650y288A 3E00 00 BYTE 62,0,0 1 =40+ ROW 22 651y288D 0C 1249 BYTE 12,>12,>49 2 652y2890 0D12 4F BYTE 13,>12,>4F 3 653y2893 0E 1255 BYTE 14,>12,>55 4 654y2896 0F13 61 BYTE 15,>13,>61 5 655y2899 10 1365 BYTE 16,>13,>65 6 656y289C 1113 69 BYTE 17,>13,>69 7 657y289F 12 136F BYTE 18,>13,>6F 8 658y28A2 1313 75 BYTE 19,>13,>75 9 659y28A5 14 1341 BYTE 20,>13,>41 10 660y28A8 1513 49 BYTE 21,>13,>49 11 661y28AB 16 1461 BYTE 22,>14,>61 12 662y28AE 1714 6F BYTE 23,>14,>6F 13 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 96 663y * 664y * PACKET 26 (DESIGNATION 2) 665y * 666y28B1 FE BYTE >FE SPECIAL PACKET 26 CODE 667y28B2 0000 00 BYTE 0,0,0 NO ERRORS 668y28B5 01 1A02 BYTE 1,26,2 MAG 7, PKT 26, DESIGNATION 669y28B8 3E00 00 BYTE 62,0,0 1 =40+ ROW 22 670y28BB 18 1441 BYTE 24,>14,>41 2 671y28BE 1914 4E BYTE 25,>14,>4E 3 672y28C1 1A 144F BYTE 26,>14,>4F 4 673y28C4 1B18 61 BYTE 27,>18,>61 5 674y28C7 1C 1865 BYTE 28,>18,>65 6 675y28CA 1D18 69 BYTE 29,>18,>69 7 676y28CD 1E 186F BYTE 30,>18,>6F 8 677y28D0 1F18 49 BYTE 31,>18,>49 9 678y28D3 20 1855 BYTE 32,>18,>55 10 679y28D6 211B 43 BYTE 33,>1B,>43 11 680y28D9 3F 1F7F BYTE >3F,>1F,>7F 12 681y28DC 3F1F 7F BYTE >3F,>1F,>7F 13 682y * ROW 01 683y28DF 82 BYTE >82 2 HAMMING BYTES 684y28E0 0101 BYTE >01,>01 685y28E2 0100 0100 BYTE >01,>00,>01,>00,>01,>00,>17 686y28E9 2C 2C2C TEXT ',,,' 687y28EC 1E12 2C2C BYTE >1E,>12,>2C,>2C,>1F,>1A,>2C,>2C,>2C,>19 688y28F6 2C2C 2C1A BYTE >2C,>2C,>2C,>1A,>2C,>2C,>17,>1E,>19,>2C 689y2900 2C2C 01 BYTE >2C,>2C,>01 690y2903 20 2020 TEXT ' 01' 691y * ROW 02 692y290A 82 BYTE >82 2 HAMMING BYTES 693y290B 01 02 BYTE >01,>02 694y290D 17 1E0F BYTE >17,>1E,>0F,>73,>13,>1A,>16,>1E,>1F,>18 695y2917 04 0D1D BYTE >04,>0D,>1D,>03 696y291B 45 4E47 TEXT 'ENGINEERING ' 697y2927 12 1C0C BYTE >12,>1C,>0C,>1E 698y292B 73 150E BYTE >73,>15,>0E,>11,>0F,>14,>0F,>07,>30,>32 699y * ROW 03 700y2935 82 BYTE >82 2 HAMMING BYTES 701y2936 0103 BYTE >01,>03 702y2938 171E 0F20 BYTE >17,>1E,>0F,>20,>13,>1A,>16,>1E,>1F,>18 703y2942 040D 1D03 BYTE >04,>0D,>1D,>03 704y2946 2020 2020 TEXT ' ' 705y2952 121C 0C1E BYTE >12,>1C,>0C,>1E 706y2956 2015 0E11 BYTE >20,>15,>0E,>11,>0F,>14,>0F,>07,>20,>20 707y * ROW 04 708y2960 82 BYTE >82 2 HAMMING BYTES 709y2961 01 04 BYTE >01,>04 710y2963 23 2440 TEXT '#$@[\]^_`{|}~' 711y2970 7F7E 7F7E BYTE >7F,>7E,>7F,>7E,>7F,>7E,>7F 712y2977 7E 7F7E BYTE >7E,>7F,>7E,>7F,>7E,>7F,>7E,>7F,>7E,>7F 713y2981 7E 7F7E BYTE >7E,>7F,>7E,>7F,>7E,>7F,>7E,>7F,>30,>34 714y * ROW 05 715y298B 82 BYTE >82 2 HAMMING BYTES 716y298C 0105 BYTE >01,>05 717y298E 141A 1E73 BYTE >14,>1A,>1E,>73,>11,>19,>15,>00,>15,>01 718y2998 0D20 051D BYTE >0D,>20,>05,>1D,>02 719y299D 54 6573 TEXT 'Test page ' 720y29A8 1C0C 1E12 BYTE >1C,>0C,>1E,>12 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 97 721y29AC 7316 1013 BYTE >73,>16,>10,>13,>00,>17,>10,>01,>30,>35 722y * ROW 06 723y29B6 82 BYTE >82 2 HAMMING BYTES 724y29B7 01 06 BYTE >01,>06 725y29B9 14 1A1E BYTE >14,>1A,>1E,>20,>11,>19,>15,>00,>15,>01 726y29C3 0D 2005 BYTE >0D,>20,>05,>1D,>02 727y29C8 2020 2020 TEXT ' ' 728y29D3 1C 0C1E BYTE >1C,>0C,>1E,>12 729y29D7 20 1610 BYTE >20,>16,>10,>13,>00,>17,>10,>01,>20,>20 730y * ROW 07 731y29E1 82 BYTE >82 2 HAMMING BYTES 732y29E2 0107 BYTE >01,>07 733y29E4 0100 0120 BYTE >01,>00,>01,>20,>00,>20,>01,>1E,>20,>1E 734y29EE 2017 2C13 BYTE >20,>17,>2C,>13,>13,>16,>16,>12,>12,>12 735y29F8 1515 1111 BYTE >15,>15,>11,>11,>14,>14,>14,>20,>20,>14 736y2A02 0001 0001 BYTE >00,>01,>00,>01,>00,>01,>00,>01,>30,>37 737y * ROW 08 738y2A0C 82 BYTE >82 2 HAMMING BYTES 739y2A0D 01 08 BYTE >01,>08 740y2A0F 20 2020 TEXT ' HOLD GRAPHICS ~}|{`_^]\[@$#' 741y * ROW 09 742y2A37 82 BYTE >82 2 HAMMING BYTES 743y2A38 0109 BYTE >01,>09 744y2A3A 2017 1E23 BYTE >20,>17,>1E,>23,>11,>17,>16,>17,>12,>17 745y2A44 1517 1417 BYTE >15,>17,>14,>17,>13,>17,>17 746y2A4B 20 2020 TEXT ' ' 747y2A5F 01 3039 BYTE >01,>30,>39 748y * ROW 10 749y2A62 82 BYTE >82 2 HAMMING BYTES 750y2A63 01 0A BYTE >01,>0A 751y2A65 20 2020 BYTE >20,>20,>20,>4F,>4E,>20,>20,>1E,>20,>11 752y2A6F 7F 7F7F BYTE >7F,>7F,>7F,>16,>7D,>7D,>7D,>12,>7C,>7C 753y2A79 7C 1574 BYTE >7C,>15,>74,>74,>74,>14,>70,>70,>70,>13 754y2A83 30 3030 BYTE >30,>30,>30,>17,>60,>60,>60,>20,>20,>20 755y * ROW 11 756y2A8D 82 BYTE >82 2 HAMMING BYTES 757y2A8E 010B BYTE >01,>0B 758y2A90 0D BYTE >0D 759y2A91 44 4F55 TEXT 'DOUBLE' 760y2A97 20 2020 TEXT ' ^ ^ ^ ^ ^ ^ ' 761y * ROW 12 762y2AB8 82 BYTE >82 2 HAMMING BYTES 763y2AB9 01 0C BYTE >01,>0C 764y2ABB 57 6869 TEXT 'White' 765y2AC0 03 BYTE 3 766y2AC1 59 656C TEXT 'Yellow' 767y2AC7 06 BYTE 6 768y2AC8 4379 616E TEXT 'Cyan' 769y2ACC 02 BYTE 2 770y2ACD 47 7265 TEXT 'Green' 771y2AD2 05 BYTE 5 772y2AD3 4D 6167 TEXT 'Magenta' 773y2ADA 01 BYTE 1 774y2ADB 52 6564 TEXT 'Red' 775y2ADE 04 BYTE 4 776y2ADF 42 6C75 TEXT 'Blue' 777y * ROW 13 778y2AE3 82 BYTE >82 2 HAMMING BYTES MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 98 779y2AE4 010D BYTE >01,>0D 780y2AE6 17 BYTE >17 781y2AE7 20 204F TEXT ' OFF ' 782y2AEF 11 7F7F BYTE >11,>7F,>7F,>7F,>16 783y2AF4 7D7D 7D TEXT '}}}' 784y2AF7 12 BYTE >12 785y2AF8 7C7C 7C TEXT '|||' 786y2AFB 15 BYTE >15 787y2AFC 7474 74 TEXT 'ttt' 788y2AFF 14 BYTE >14 789y2B00 7070 70 TEXT 'ppp' 790y2B03 13 BYTE >13 791y2B04 3030 30 TEXT '000' 792y2B07 17 BYTE >17 793y2B08 6060 6020 TEXT '``` ' 794y * ROW 14 795y2B0E 82 BYTE >82 2 HAMMING BYTES 796y2B0F 01 0E BYTE >01,>0E 797y2B11 5B 5C5D TEXT '[\]^_`~}|{ R C G M B Y W @$#' 798y * ROW 15 799y2B39 82 BYTE >82 2 HAMMING BYTES 800y2B3A 010F BYTE >01,>0F 801y2B3C 1D04 BYTE >1D,>04 802y2B3E 4241 434B TEXT 'BACKGROUND COLOUR ' 803y2B50 111D 161D BYTE >11,>1D,>16,>1D,>12,>1D,>15,>1D,>14,>1D 804y2B5A 131D 171D BYTE >13,>1D,>17,>1D,>1D,>1C,>20,>1D,>20,>20 805y * ROW 16 806y2B64 82 BYTE >82 2 HAMMING BYTES 807y2B65 01 10 BYTE >01,>10 808y2B67 40 2423 TEXT '@$#{|}~_^]\[` NEW] ' 809y2B7B 01 5E06 BYTE >01,>5E,>06,>5E,>02,>5E,>05,>5E,>04,>5E 810y2B85 03 5E07 BYTE >03,>5E,>07 811y2B88 5E20 2020 TEXT '^ ^ ' 812y * ROW 17 813y2B8F 82 BYTE >82 2 HAMMING BYTES 814y2B90 0111 BYTE >01,>11 815y2B92 7B7C 7D7E TEXT '{|}~$#`@[\]^_ ' 816y2BA1 02 BYTE >02 817y2BA2 2842 4C41 TEXT '(BLACK BACKGROUND) ^ ' 818y * ROW 18 819y2BBA 82 BYTE >82 2 HAMMING BYTES 820y2BBB 01 12 BYTE >01,>12 821y2BBD 17 1A21 BYTE >17,>1A,>21,>22,>23,>13,>24,>25,>26,>27 822y2BC7 16 2829 BYTE >16,>28,>29,>2A,>2B,>12,>2C,>2D,>2E,>2F 823y2BD1 19 3031 BYTE >19,>30,>31,>32,>33,>15,>34,>35,>36,>37 824y2BDB 11 3839 BYTE >11,>38,>39,>3A,>3B,>14,>3C,>3D,>3E,>3F 825y * ROW 19 826y2BE5 82 BYTE >82 2 HAMMING BYTES 827y2BE6 0113 BYTE >01,>13 828y2BE8 2020 2122 BYTE >20,>20,>21,>22,>23,>20,>24,>25,>26,>27 829y2BF2 2028 292A BYTE >20,>28,>29,>2A,>2B,>20,>2C,>2D,>2E,>2F 830y2BFC 2030 3132 BYTE >20,>30,>31,>32,>33,>20,>34,>35,>36,>37 831y2C06 2038 393A BYTE >20,>38,>39,>3A,>3B,>20,>3C,>3D,>3E,>3F 832y * ROW 20 833y2C10 82 BYTE >82 2 HAMMING BYTES 834y2C11 01 14 BYTE >01,>14 835y2C13 20 4041 TEXT ' @ABC DEFG HIJK LMNO PQRS TUVW XYZ[ \]^_' 836y * ROW 21 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 99 837y2C3B 82 BYTE >82 2 HAMMING BYTES 838y2C3C 0115 BYTE >01,>15 839y2C3E 2060 BYTE ' ',>60 840y2C40 6162 6320 TEXT 'abc defg' 841y2C48 2068 696A TEXT ' hijk lmno' 842y2C52 2070 7172 TEXT ' pqrs tuvw' 843y2C5C 2078 797A TEXT ' xyz' 844y2C60 7B20 7C7D BYTE >7B,>20,>7C,>7D,>7E,>7F 845y * ROW 22 846y * BYTE >82 2 HAMMING BYTES 847y * BYTE >01,>16 848y * BYTE >14,>60 849y * TEXT 'abc' 850y * BYTE >11 851y * TEXT 'defg' 852y * BYTE >15 853y * TEXT 'hijk' 854y * BYTE >12 855y * TEXT 'lmno' 856y * BYTE >1A 857y * TEXT 'pqrs' 858y * BYTE >16 859y * TEXT 'tuvw' 860y * BYTE >13 861y * TEXT 'xyz' 862y * BYTE >7B,>17,>7C,>7D,>7E,>7F 863y * ROW 23 864y2C66 82 BYTE >82 2 HAMMING BYTES 865y2C67 01 17 BYTE >01,>17 866y2C69 0D 0318 BYTE >0D,>03,>18 867y2C6C 5265 7665 TEXT 'Reveal' 868y2C72 08 BYTE >08 869y2C73 46 6C61 TEXT 'Flash' 870y2C78 032A 0B0B BYTE >03,>2A,>0B,>0B 871y2C7C 426F 78 TEXT 'Box' 872y2C7F 09 BYTE >09 873y2C80 5374 6561 TEXT 'Steady' 874y2C86 18 BYTE >18 875y2C87 47 6F6E TEXT 'Gone' 876y2C8B 0A 0A3F BYTE >0A,>0A,>3F,>16,>5E,>7F 877y * 878y * PAGE 844 - CZECKOSLOVAKIAN PACKET 26 TEST 879y * 880y2C91 8A BYTE >8A 10 HAMMING BYTES 881y2C92 0000 BYTE >00,>00 882y2C94 0404 0000 BYTE >04,>04,>00,>00,>00,>00 883y2C9A 02 BYTE >02 UPDATE 884y2C9B 01 BYTE >01 SERIAL MAGAZINE 885y2C9C 5449 2D54 TEXT 'TI-TEXT 844 Thu 21 Nov' 886y2CB2 03 BYTE >03 887y2CB3 54 696D TEXT 'Tim P844 ' 888y * 889y * PACKET 26 (DESIGNATION 0) 890y * 891y2CBC FE BYTE >FE SPECIAL PACKET 26 CODE 892y2CBD 00 0000 BYTE 0,0,0 NO ERRORS 893y2CC0 001A 00 BYTE 0,26,0 MAG 1, PKT 26, DESIGNATION 894y2CC3 2B 0400 BYTE >2B,4,0 1 =40+ ROW 1 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 100 895y2CC6 1012 6F BYTE >10,>12,>6F 2 896y2CC9 12 1F4E BYTE >12,>1F,>4E 3 897y2CCC 250F 27 BYTE >25,>0F,>27 4 898y2CCF 27 1249 BYTE >27,>12,>49 5 899y2CD2 2D04 00 BYTE >2D,>04,>00 6 900y2CD5 10 1272 BYTE >10,>12,>72 7 901y2CD8 121F 52 BYTE >12,>1F,>52 8 902y2CDB 14 1F64 BYTE >14,>1F,>64 9 903y2CDE 250F 30 BYTE >25,>0F,>30 10 904y2CE1 27 1841 BYTE >27,>18,>41 11 905y2CE4 2F04 00 BYTE >2F,>04,>00 12 906y2CE7 10 1F6C BYTE >10,>1F,>6C 13 907y * 908y * PACKET 26 (DESIGNATION 1) 909y * 910y2CEA FE BYTE >FE SPECIAL PACKET 26 CODE 911y2CEB 00 0000 BYTE 0,0,0 NO ERRORS 912y2CEE 001A 01 BYTE 0,26,1 MAG 0, PKT 26, DESIGNATION 913y2CF1 12 1F53 BYTE >12,>1F,>53 1 914y2CF4 1412 6C BYTE >14,>12,>6C 2 915y2CF7 25 1241 BYTE >25,>12,>41 3 916y2CFA 2718 6F BYTE >27,>18,>6F 4 917y2CFD 31 0400 BYTE >31,>04,>00 5 918y2D00 1013 6F BYTE >10,>13,>6F 6 919y2D03 12 1F54 BYTE >12,>1F,>54 7 920y2D06 1412 4C BYTE >14,>12,>4C 8 921y2D09 25 1F6E BYTE >25,>1F,>6E 9 922y2D0C 2718 75 BYTE >27,>18,>75 10 923y2D0F 33 0400 BYTE >33,>04,>00 11 924y2D12 1018 61 BYTE >10,>18,>61 12 925y2D15 12 1F5A BYTE >12,>1F,>5A 13 926y * 927y * PACKET 26 (DESIGNATION 2) 928y * 929y2D18 FE BYTE >FE SPECIAL PACKET 26 CODE 930y2D19 00 0000 BYTE 0,0,0 NO ERRORS 931y2D1C 001A 02 BYTE 0,26,2 MAG 0, PKT 26, DESIGNATION 932y2D1F 25 1F43 BYTE >25,>1F,>43 1 933y2D22 2718 4F BYTE >27,>18,>4F 2 934y2D25 35 0400 BYTE >35,>04,>00 3 935y2D28 1012 4F BYTE >10,>12,>4F 4 936y2D2B 12 1245 BYTE >12,>12,>45 5 937y2D2E 251F 44 BYTE >25,>1F,>44 6 938y2D31 27 1855 BYTE >27,>18,>55 7 939y2D34 3704 00 BYTE >37,>04,>00 8 940y2D37 10 0F7B BYTE >10,>0F,>7B 9 941y2D3A 1213 4F BYTE >12,>13,>4F 10 942y2D3D 25 1F45 BYTE >25,>1F,>45 11 943y2D40 2712 59 BYTE >27,>12,>59 12 944y2D43 39 0400 BYTE >39,>04,>00 13 945y * 946y * PACKET 26 (DESIGNATION 3) 947y * 948y2D46 FE BYTE >FE SPECIAL PACKET 26 CODE 949y2D47 00 0000 BYTE 0,0,0 NO ERRORS 950y2D4A 001A 03 BYTE 0,26,3 MAG 0, PKT 26, DESIGNATION 951y2D4D 10 1255 BYTE >10,>12,>55 1 952y2D50 121A 55 BYTE >12,>1A,>55 2 MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 101 953y2D53 25 1F4C BYTE >25,>1F,>4C 3 954y2D56 2712 52 BYTE >27,>12,>52 4 955y2D59 3F 1F00 BYTE >3F,>1F,>00 5 956y2D5C 3F1F 00 BYTE >3F,>1F,>00 6 957y2D5F 3F 1F00 BYTE >3F,>1F,>00 7 958y2D62 3F1F 00 BYTE >3F,>1F,>00 8 959y2D65 3F 1F00 BYTE >3F,>1F,>00 9 960y2D68 3F1F 00 BYTE >3F,>1F,>00 10 961y2D6B 3F 1F00 BYTE >3F,>1F,>00 11 962y2D6E 3F1F 00 BYTE >3F,>1F,>00 12 963y2D71 3F 1F7F BYTE >3F,>1F,>7F 13 964y * 965y * ROW 1 966y * 967y2D74 8200 01 BYTE >82,0,1 2 HAMMING BYTES 968y2D77 0D 0320 BYTE >0D,>03,>20,>20,>32,>20,>33,>20,>34,>20 969y2D81 35 2036 BYTE >35,>20,>36,>20,>37,>20,>38,>20,>39,>20 970y2D8B 41 2020 BYTE >41,>20,>20,>20,>20,>32,>20,>33,>20,>34 971y2D95 20 3520 BYTE >20,>35,>20,>36,>20,>37,>20,>38,>20,>39 972y * 973y * ROW 3 974y * 975y2D9F 82 0003 BYTE >82,0,3 2 HAMMING BYTES 976y2DA2 0D03 3007 BYTE >0D,>03,>30,>07,>20,>20,>30,>01,>40,>07 977y2DAC 5001 6007 BYTE >50,>01,>60,>07,>70,>02,>6F,>20,>4E,>20 978y2DB6 2020 0338 BYTE >20,>20,>03,>38,>07,>28,>20,>38,>20,>48 979y2DC0 2058 2068 BYTE >20,>58,>20,>68,>20,>78,>02,>40,>20,>49 980y * 981y * ROW 5 982y * 983y2DCA 8200 05 BYTE >82,0,5 2 HAMMING BYTES 984y2DCD 0D 0331 BYTE >0D,>03,>31,>07,>21,>20,>31,>20,>41,>20 985y2DD7 51 2061 BYTE >51,>20,>61,>20,>71,>02,>72,>20,>52,>20 986y2DE1 64 2003 BYTE >64,>20,>03,>39,>07,>29,>20,>39,>20,>49 987y2DEB 20 5920 BYTE >20,>59,>20,>69,>20,>79,>02,>60,>20,>41 988y * 989y * ROW 7 990y * 991y2DF5 82 0007 BYTE >82,0,7 2 HAMMING BYTES 992y2DF8 0D03 3207 BYTE >0D,>03,>32,>07,>22,>20,>32,>20,>42,>20 993y2E02 5220 6220 BYTE >52,>20,>62,>20,>72,>02,>6C,>20,>53,>20 994y2E0C 6C20 0341 BYTE >6C,>20,>03,>41,>07,>2A,>20,>3A,>20,>4A 995y2E16 205A 206A BYTE >20,>5A,>20,>6A,>20,>7A,>02,>41,>20,>6F 996y * 997y * ROW 9 998y * 999y2E20 8200 09 BYTE >82,0,9 2 HAMMING BYTES 1000y2E23 0D 0333 BYTE >0D,>03,>33,>01,>23,>07,>33,>20,>43,>20 1001y2E2D 53 2063 BYTE >53,>20,>63,>20,>73,>02,>6F,>20,>54,>20 1002y2E37 4C 2003 BYTE >4C,>20,>03,>42,>07,>2B,>20,>3B,>20,>4B 1003y2E41 01 5B07 BYTE >01,>5B,>07,>6B,>01,>7B,>02,>6E,>20,>75 1004y * 1005y * ROW 11 1006y * 1007y2E4B 82 000B BYTE >82,0,11 2 HAMMING BYTES 1008y2E4E 0D03 3401 BYTE >0D,>03,>34,>01,>24,>07,>34,>20,>44,>20 1009y2E58 5420 6420 BYTE >54,>20,>64,>20,>74,>02,>61,>20,>5A,>20 1010y2E62 2020 0343 BYTE >20,>20,>03,>43,>07,>2C,>20,>3C,>20,>4C MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 102 1011y2E6C 015C 076C BYTE >01,>5C,>07,>6C,>01,>7C,>02,>43,>20,>4F 1012y * 1013y * ROW 13 1014y * 1015y2E76 8200 0D BYTE >82,0,13 2 HAMMING BYTES 1016y2E79 0D 0335 BYTE >0D,>03,>35,>07,>25,>20,>35,>20,>45,>20 1017y2E83 55 2065 BYTE >55,>20,>65,>20,>75,>02,>4F,>20,>45,>20 1018y2E8D 20 2003 BYTE >20,>20,>03,>44,>07,>2D,>20,>3D,>20,>4D 1019y2E97 01 5D07 BYTE >01,>5D,>07,>6D,>01,>7D,>02,>44,>20,>55 1020y * 1021y * ROW 15 1022y * 1023y2EA1 82 000F BYTE >82,0,15 2 HAMMING BYTES 1024y2EA4 0D03 3607 BYTE >0D,>03,>36,>07,>26,>20,>36,>20,>46,>20 1025y2EAE 5620 6620 BYTE >56,>20,>66,>20,>76,>02,>7E,>20,>4F,>20 1026y2EB8 2020 0345 BYTE >20,>20,>03,>45,>07,>2E,>20,>3E,>20,>4E 1027y2EC2 015E 076E BYTE >01,>5E,>07,>6E,>01,>7E,>02,>45,>20,>59 1028y * 1029y * ROW 17 1030y * 1031y2ECC 8200 11 BYTE >82,0,17 2 HAMMING BYTES 1032y2ECF 0D 0337 BYTE >0D,>03,>37,>07,>27,>20,>37,>20,>47,>20 1033y2ED9 57 2067 BYTE >57,>20,>67,>20,>77,>02,>55,>20,>55,>20 1034y2EE3 20 2003 BYTE >20,>20,>03,>46,>07,>2F,>20,>3F,>20,>4F 1035y2EED 01 5F07 BYTE >01,>5F,>07,>6F,>20,>7F,>02,>4C,>20,>52 1036y * 1037y * ROW 20 1038y * 1039y2EF7 82 0014 BYTE >82,0,20 2 HAMMING BYTES 1040y2EFA 0D BYTE >0D 1041y2EFB 20 2020 TEXT ' CZECHOSLOVAKIAN DOUBLE HEIGHT ' 1042y * 1043y * ROW 22 1044y * 1045y2F22 8200 16 BYTE >82,0,22 2 HAMMING BYTES 1046y2F25 01 7F BYTE >01,>7F 1047y2F27 20 4E61 TEXT ' National Options' 1048y2F38 0220 7F BYTE >02,>20,>7F 1049y2F3B 20 5061 TEXT ' Packet 26 (FB on)' 89 2F4D FF BYTE >FF END OF DATA FLAG BYTE 90 END No Errors 1A86 ABDART 1A68 ABDATA 1A64 ABLOAD 030A ABTHIT F421 ACC F0CA ACCSAV F09A ADR1 F09C ADR2 F40E AM F0BC AMSAV F40D APA F0CF APASAV F404 AR F0B6 ARSAV 0FBC ASCR10 0FCC ASCR20 0FB2 ASCRAM 0AD6 ATABL1 1D28 ATRDTA FFFE BAGC0 04FE BAGC1 04FE BAGC2 04FE BAGC3 775F BAMP 775F BAMT 7760 BAMTF 09FF BAPA 1664 BASDAT 0080 BD1920 0082 * BD9600 0518 BDGT10 0540 BDGT30 0562 BDGT40 056E BDGT50 051E BDGTXT 122A BIPH10 1236 BIPH20 123A BIPH30 1226 BIPHAS 1833 BITDAT 0AE8 BITDTA 0080 * BLUE F410 BM F0BE BMSAV MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 103 1C43 BP12MS 04E8 BP1ENT 0580 BPABT 0598 BPABT5 1C55 BPADMS F08E BPADR F090 BPADR2 0502 BPDGT1 0524 BPDGT2 054E BPDGT3 F092 BPLP1 F094 BPLP2 1C5A BPLPMS 1C31 BPMSG 0096 BPSET 1C5F BPSMSG F402 BR 0332 BRANR0 F0B8 BRSAV 008A BYTE00 009E BYTE01 00A0 BYTE02 00A8 BYTE10 00AC BYTE20 00B0 BYTE80 00B4 BYTE83 00B5 * BYTEE0 00B6 * BYTEF8 00B7 BYTEFE 00B8 BYTEFF 1886 BYTENT 00B2 BYTESP 00A0 BYTRDY 2EC6 X BYTW 1878 BYTWRT 0030 * CCLK1 1616 CDLP 0002 CHAR 1800 CHGEN3 1AD8 CHK2 100C CHKEOD 0FE2 CHKP26 1002 CHKVPS F420 CHR F0CB CHRSAV 028E CKEXIT 0C8E CKRTWP 0EB4 CLAVTB 0C4E CLDR10 F0D1 CLK1SV 1030 CLKCRU F09E CLKCT1 F0A0 CLKCT2 000B CLKCTL 1C7D CLKMSG F064 CLKR10 0001 * CLKTIM F050 CLKWSP 0C8A CLKXT2 160A CLRALL 009E * CLRHIT 07DA CLRP20 07CC * CLRPKY 00D4 CLRSTC 1636 CLRT10 1654 CLRT20 161E CLRTPG B100 * CMDEND B000 CMDPTR B002 * CMDSTR 10CC CNP200 10EA CNP210 1108 CNP220 111E CNP230 1134 CNP240 1144 CNP250 1176 CNP260 103E CNVH10 104E CNVH20 1052 CNVH30 102C CNVHAM 1080 CNVPLP 107C CNVPSP 1D38 COMPLT F445 CONST 01BA CPLOOP 0011 CPUACC F618 CPULSE 00C4 CRLOOP F428 CTL 1B7F CTLMSG F0CC CTLSAV 00C0 CYAN 0C90 D3END 00BF * DCML24 1AC8 DECOK F07C DGKBRA 0C56 DISC10 079A DISMIM 070A DISSPR F40A DLO 16D6 * DLTC00 16DC DLTC20 16E6 DLTC30 16EA DLTC40 16AE DLTCHO 02D0 DOBP10 02E0 DOBP15 02B2 DOBPTS 02E6 DOBPX2 0308 DOBPXT 0003 DOT 00A8 DREG 0BAC DREGCH F0C0 DRSAV 079C DS1KEY 07B0 DS1KY5 0794 DS3KEY 38E0 DSPEND 0A00 DSPLAY 19A0 DSPLY3 F084 DSPNTR 20F6 DSTART 1B19 DTAER2 1B2B DTAER3 1AFE DTAERR 0008 * EMTST1 0038 EMULD 0EDC ENCODE 1A5A ENDACT 0EEE ENKEYB 04C6 ENTBLP 04B2 ENTBP 008A ENTBP1 0090 ENTBP2 049C ENTLP 009A ENTLP1 009C ENTLP2 1C64 ENTMSG 008A EOLFLG 067C EOLKY 1D29 ERROR 00BE ESCAPE 0028 * ETCLK 000D EVMVBI 1C78 EVTMSG 00A0 EXTBIT 00A8 EXTLRC 00A2 EXTRDY 0004 FAST 0446 FASTKY 000A * FCSW 0094 FEBITS F096 FLAG1 F098 FLAG2 1B79 FLGMSG 0450 FSTK10 1D52 GEN0 20CE GEN3 0E62 GENC10 0E6C GENC11 0E70 GENC13 0E7A GENC15 0E82 GENC20 0E90 GENC60 0E9A GENC70 0E9E GENC80 0EA8 GENC90 0E54 GENCAR 0B76 GENCLK 1AA8 GET 1AA6 GET1 1AA0 GET4 1AAA GET41 1AE8 GETERR 0208 GETKLP 0C7C GNCK10 0888 GOTOKY 0040 GREEN 1582 GT1MSG 0210 * GTKL10 1064 HAMTAB 008C HITBP1 0092 HITBP2 1C73 HITMSG 00BD HYPHEN 0AA6 * I2CCPN 0AAC * I2CDPN 1B44 I2CMSG 1690 IBASE 0000 * INCDTA 1674 INITCM 1B4E INPUTS 0708 INSTNB F080 * INTBRA 1660 INTCM1 1B96 INTERN 1BBF INTRN1 010A IVRLP 00A4 * JMPBIT 1BE7 JMPMSG F448 JUMP 1000 KBDCRU 0F14 KBDRTN 0334 KDIGIT 03D0 KEXIT1 05C6 KEXIT2 0686 KEXIT3 07EC KEXIT4 07C8 KEXIT5 08AE KEXITB 031A KEY 032C KEY100 05A4 KEYABT 0F1A KEYDWN F0DB KEYFLG F0DC KEYPRO 008C KEYQ 008A KEYT 068A KEYTAB 008C KEYVBI 0456 KFAST 0F50 KOLONN 0444 KSLOW 0007 LASTMP 0011 * LCOUNT 1A88 LENG 1A8C LENG10 F0AA LINCNT F07A LINEND 009E LINRDY 00B0 LINSET MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 104 1A14 LOADER 1D30 LOADMS 1888 LOOP1 00A0 LOOPEK 058E LPABT FFF4 LPULSE 00A0 MAGNTA 01FE MAIN 0012 * MAP0 0013 * MAP1 0014 * MAP2 1024 MAPCRU 0001 * MAXINT E000 MCRAM 0D9E MCRONG 4000 MCSTOR A400 * MGNTA4 00A2 MIMFLG 03D6 MODEKY F0AC MODIDT 03F2 MODK10 2C46 X MSG 17E2 MSGENT 199E MSGINS 2DC6 X MSGR 1BEE MUXS 0F58 NFND1 0F62 NFND2 1836 NIBBLW 188C NIBENT 2F06 X NIBW 04E4 NOBP FD00 NRDYRD 00B3 NULL00 189A NUM 1698 NXBAS 0F3C NXROW 1678 NXVDP 1C6E OFFMSG F088 OLDAD2 F08A OLDAD3 F08C OLDAD4 F086 OLDADR 8000 * OOLBIT 1A3A OP F0A2 P26ER1 F0A4 P26ER2 F0A6 P26ER3 0200 PAGLEN 0418 PAGNUM 06F4 PAGTBL F400 PCL F0C2 PCLSAV 1B73 PLLMSG 00AE PMODE 0BFA PNACC 0DD6 PNAM 0CE6 PNAR 0DDE PNBM 0F08 PNBP1 0EB0 PNBP12 0F10 PNBP2 0F00 PNBPA 0E60 PNBPH 0F50 PNBPL 0F58 PNBPL1 0F60 PNBPL2 0FA0 PNBPS 0FA8 PNBPS1 0FB0 PNBPS2 0CEE PNBR 0C02 PNCHR 0ADE PNCKCT 0A92 PNCLK 0C0A PNCTL 0DC0 PNDERR 0CF6 PNDR 0F1A * PNGOTO 0A26 PNI2C 0A50 PNINPS 0B90 PNINTS 0CC4 PNJUMP 0F90 PNLBE 0F9A PNLINC 0A64 PNLOAD 0D70 PNMUXS 1160 PNOLDA 0C14 PNPCL 0BE2 PNPLL 0D02 PNPR 0E00 PNPSA 0E0A PNPSV 0AC8 PNRCD 0AD0 PNRCS 0C80 PNREGS 0F78 PNRMIP 0AA2 PNROM 0FF0 PNRX 0ABE PNSFE 0A26 PNSIF 0C1E PNSRA 0C2A PNSRD 0AB6 PNTFE 0D0A PNTPD 1158 PNUCAD 0FD4 PNVBI 0E82 PNVDPR 1180 PNXTRA 0DEA PNYBUS 0100 PORT1 F408 PR F0BA PRSAV 1C08 PSMSG 17F6 PUTE05 17F8 PUTE10 1806 PUTE20 17F0 PUTEXT 000F QDATA 2940 QERYP2 2170 QERYPG 08CC QKEY 08DE QKEY10 1C82 QRYMS1 1C95 QRYMS2 1CAB QRYMS3 1CC0 QRYMS4 1CD5 QRYMS5 1CF4 QRYMS7 000A QTYCLK F001 R0LSB F005 * R2LSB F00B R5LSB 15F0 R6TBL1 15F6 R6TBL2 1600 R6TBL3 F011 R8LSB F444 RAMA F425 RCD F0C6 RCDSAV F0DD RCEMU 0009 RCEN 1B63 RCMSG F460 RCOUT F424 RCS F0C7 RCSSAV 1D42 RDNOW F0D2 RDYSAV 17CA RDYXIT 2F46 X READ 0020 RED 1BC5 REGS 1AC4 * REMALF 18B2 RENTRY 0006 RESET F0DE RMCOLR F442 ROMADR 0010 ROMEN 0832 ROMK10 0818 ROMKEY 00AC ROMON 0847 ROMSOF 083E ROMSON 0050 ROW 0C94 ROWTBL 0B00 RSET05 0B0A RSET07 05CA RSETKY 0B1C RSTL10 0B36 RSTL50 0B4A RSTL60 080C RSUC10 07F0 RSUCKY 0002 RUN 0466 RUNK10 0458 RUNKEY 00B0 * RVDP 0BEC * RXDI00 0BF2 RXDI20 0C12 RXDI30 0C3E RXDI40 0BB2 * RXDISP 0BC8 RXDP00 0BD6 RXDP10 0C16 RXWTCH 01F2 SAVCLR F0DB SAVEND 0280 SAVR10 025E SAVREM F0B6 SAVSTT 002B SBTQTY 008A SENDP 0AEA SERBYT 0AF2 SERBYX 021C SERTBL F030 SERWKS 0480 SET2BP 2C06 X SETA 17CC SETADR F05A SETAWS 04EC SETB10 046C SETBP 1C69 SETMSG 0400 SETPAG 033A SETRC 034A SETRC1 0384 SETRC2 0364 SETRC3 039A SETRC4 0496 SETRUN 0F7E SETS05 0FA0 SETS20 0F72 SETSRL 0FD8 SETSRT 18D4 SETUP1 0DA0 SETUP2 1976 SETUP3 117E SETVPS 0490 SETXIT F426 SFE F0C9 SFESAV 0006 SLOW 042E SLOWKY B100 SLTEXT F082 SLWCNT 0438 SLWK10 0086 SLWTIM 0B7A SNDCLK 05B0 SNDPKY F07E SPECBR 19D6 SPRADR F500 SPRAM 0C92 SPRDTA MAINCPY TMS9995, ALU EMULATOR DRIVER FOR UNITEXT PCCHASM v1.3 99xx Assembler (C) CRH/ASR 1984..94 17 SEP 02 15:59:21 PAGE 105 070C SPRKEY 19E8 SPRLP 1A04 SPRLP1 1B8B SPRMSG 0F00 SPRPAG F422 SRADR F0CD SRASAV F429 SRD F0CE SRDSAV 02A0 SRUN10 0B08 SSPXIT 0AEE SSTART 0B64 SSTRTX F0E0 STACK 00C0 START B000 STATIC 1016 STAY 0008 STEP 0428 STEPKY 03C8 STRC20 035E STRC30 03C0 STRC40 07B4 SWAPDS 0CA4 TABLE3 1A24 TAG 01A4 TCLRLP 000E TDATA 0084 TEN 0000 * TEST 00BA TEXTB 00BB TEXTE 00BC * TEXTJ 00B9 TEXTL 00A4 TEXTON F427 TFE F0C8 TFESAV 08B2 TKEY 08C4 TKEY10 F412 TPD F0C4 TPDSAV F0A8 TQDATA 08C6 TQEXIT 1D0E TTP8MS 19BE TTPGLP 06E2 TTXK20 0724 TTXK30 073E TTXK32 0748 * TTXK35 0744 TTXK40 0760 TTXK45 0764 TTXK50 0774 * TTXK52 0780 TTXK54 0786 TTXK56 078A TTXK70 06BC TTXKEY 38E0 TTXPG0 40B0 TTXPG1 4880 TTXPG2 5050 TTXPG3 5820 TTXPG4 5FF0 TTXPG5 67C0 TTXPG6 6F90 TTXPG7 3110 TTXPG8 0628 TXCOLR 0656 TXMSGE 05FC TXRC10 05FE TXRC20 0616 TXRC30 05EA TXRCKY 1B59 TXTMSG 05E4 TXTXK5 05CE TXTXKY F440 UCBYT0 F441 UCBYT1 F446 UCBYT6 F447 UCBYT7 1040 UCLIN1 10E0 UCLIN2 0130 UCRSET 0DD0 UCTBL1 0DC4 UCTE20 0DCE UCTE30 0DBC UCTEXT 140E UPD100 1424 UPD110 142A UPD120 17B8 UPD125 17C2 UPD128 144A UPD130 1460 UPD140 1476 UPD142 148C UPD150 14A2 UPD151 14B8 UPD152 14CE UPD153 14E4 UPD154 14FA UPD155 1510 UPD156 1526 UPD157 1430 * UPD180 153C UPD190 13CA UPDA10 13DE UPDA20 13FA UPDA30 1256 UPDATE 0C62 UPDSPR 1272 UPDT10 1288 UPDT20 129A UPDT30 12B0 UPDT40 12C6 UPDT50 12DC UPDT60 12F2 UPDT65 1308 UPDT66 131E UPDT67 1334 UPDT70 13B6 UPDT90 4000 VBIBIT 00B0 VBIFLG 0850 VBIKEY 0886 VBIMS0 0884 VBIMS1 1B6D VBIMSG 087E VBIXIT 00AE * VDPC 1C13 VDPMSG F900 VDPRD F800 VDPREG F470 VDPRGS 1C19 VDPRMS F0D3 VDPSAV FA00 VDPWD F470 VPA F0D0 VPASAV 1190 * VPS20 11B0 VPS30 121C VPS50 1182 VPSFCL 000D VRAM 2E06 X W10B 185C W10BXP 15B4 W2BPD 2E86 X W2HN 1876 W2HNXP 2E46 X W3HN 1862 W3HN10 1840 W3HNXP 2D46 X W3XR 1AF0 WAITKY 1580 WB1OFF 2D86 X WBIT 157A WBP100 156A WBP110 1542 WBPADR 1554 WBPALP 15DA WBPLP1 15DE WCOLOR 0088 * WD0000 008A WD0001 008C WD0002 008E WD0003 0090 WD0004 0092 WD0008 0094 WD000C 0096 WD0010 0098 * WD0020 009A WD0040 009C WD0080 009E WD0100 00A0 WD0200 00A2 WD0400 00A4 WD0800 00A6 WD0C00 00A8 WD1000 00AA * WD1400 00AC WD2000 00AE WD4000 00B0 WD8000 009E WEBIT 18C4 WENTRY 00E0 WHITE 2CC6 X WHXB 2C86 X WHXN 2D06 X WHXW 2F86 X WRIT 1848 WRT3RG 181C WRTB05 181E WRTB10 180C WRTBIT 1884 * WRTH10 186C WRTHXB 1834 WRTHXN 1880 WRTHXW 174E WRTR10 1756 WRTR20 1712 WRTRDY F000 WSP 08E2 WTMCOD 16F0 WTOADR 172C WTRE05 1720 * WTREDY 024C XFAST 0CB4 XFERM5 0CA8 XFERMC 0CBE XFRM10 0CDE XFRM20 0CF4 XFRM25 0CFC XFRM30 0D48 XFRM40 0D50 XFRM50 F010 XOPWKS 17E0 XOPXIT 000A XR10 000B XR11 000C XR12 000D XR13 000E XR14 000F * XR15 0008 XR8 0009 XR9 0228 XRUN 0240 XSLOW 0290 XSTEP 029A * XSTP10 0216 XUPDAT F406 YBUS 1C01 YBUSMS 0060 YELLOW ÿ