0000- 10 ; .TF SCIOS_Version_1.bin ; object file 0000- 11 .TF SCIOS_version_1.hex,INT ; Intel hex file 0000- 12 ; 0F00- 13 RAM .EQ $0F00 0D00- 14 DISPLY .EQ $0D00 0000- 15 ; 0000- 16 ; Segment Assignments 0001- 17 SA .EQ 1 0002- 18 SB .EQ 2 0004- 19 SC .EQ 4 0008- 20 SD .EQ 8 0010- 21 SE .EQ 16 0020- 22 SF .EQ 32 0040- 23 SG .EQ 64 0000- 24 ; 7-Segment Conversion 003F- 25 N0 .EQ SA+SB+SC+SD+SE+SF 0006- 26 N1 .EQ SB+SC 005B- 27 N2 .EQ SA+SB+SD+SE+SG 004F- 28 N3 .EQ SA+SB+SC+SD+SG 0066- 29 N4 .EQ SB+SC+SF+SG 006D- 30 N5 .EQ SA+SC+SD+SF+SG 007D- 31 N6 .EQ SA+SC+SD+SE+SF+SG 0007- 32 N7 .EQ SA+SB+SC 007F- 33 N8 .EQ SA+SB+SC+SD+SE+SF+SG 0067- 34 N9 .EQ SA+SB+SC+SF+SG 0077- 35 NA .EQ SA+SB+SC+SE+SF+SG 007C- 36 NB .EQ SC+SD+SE+SF+SG 0039- 37 NC .EQ SA+SD+SE+SF 005E- 38 ND .EQ SB+SC+SD+SE+SG 0079- 39 NE .EQ SA+SD+SE+SF+SG 0071- 40 NF .EQ SA+SE+SF+SG 0040- 41 DASH .EQ SG 0079- 42 KE .EQ NE 0050- 43 KR .EQ SE+SG 005C- 44 KO .EQ SC+SD+SE+SG 0000- 45 ; 0011- 46 NEXT .EQ 17 ; Flag for now data 0000- 47 ; 0000- 48 ; 'Hardware for Keyboard' 0000- 49 ; 0000- 50 ; FUNCTION DATA KYBFUNCTION 0000- 51 ; 0 080 0 0000- 52 ; 1 081 1 0000- 53 ; 2 082 2 0000- 54 ; 3 083 3 0000- 55 ; 4 084 4 0000- 56 ; 5 085 5 0000- 57 ; 6 086 6 0000- 58 ; 7 087 7 0000- 59 ; 8 040 8 0000- 60 ; 9 041 9 0000- 61 ; A 010 + 0000- 62 ; B 011 - 0000- 63 ; C 012 MUL 0000- 64 ; D 013 DIV 0000- 65 ; E 016 SQUARE 0000- 66 ; F 017 SQRT 0000- 67 ; GO 022 % 0000- 68 ; MEM 023 = 0000- 69 ; ABORT 024 CE/C 0000- 70 ; TERM 027 0000- 71 ; 0000- 72 ; RAM Pointers used by KITBUG, P3 is saved elsewhere FFF9- 73 P1H .EQ $FFF9 FFFA- 74 P1L .EQ $FFFA FFFB- 75 P2H .EQ $FFFB FFFC- 76 P2L .EQ $FFFC FFFD- 77 A .EQ $FFFD FFFE- 78 EE .EQ $FFFE ('E' is a reserved word) FFFF- 79 S .EQ $FFFF 0000- 80 ; Commands 0000- 81 ; ABORT This aborts the present operation displays- 0000- 82 ; MEM Allows users to read/modify, address is entered until TERM then data is entered. 0000- 83 ; To write data in memory TERM is pushed. Data is read to check if it got written in RAM. 0000- 84 ; GO Address is entered until TERM. The registers are loaded from RAM and program is 0000- 85 ; transferred using XPPC P3. To get back do a XPPC P3. 0000- 86 ; 0000- 87 .OR $0000 0000- 88 ; 0000- 89 ; 'Initialise' Source file: scios_version_1.asm *** Warning: Instruction starts at page boundary 90 NOP 0000-08 90 ( 5) NOP 0001-90 1D 91 ( 11) INIT: JMP START 0003- 92 ; Debug Exit 0003- 93 ; Restore Environment 0003-C2 0E 94 ( 18) GOOUT: LD ADH(2) ; get GO address 0005-37 95 ( 8) XPAH 3 0006-C2 0C 96 ( 18) LD ADL(2) 0008-33 97 ( 8) XPAL 3 0009-C7 FF 98 ( 18) LD @-1(3) ; fix GO address 000B-C0 F2 99 ( 18) LD EE ; restore registers 000D-01 100 ( 7) XAE 000E-C0 EB 101 ( 18) LD P1L 0010-31 102 ( 8) XPAL 1 0011-C0 E7 103 ( 18) LD P1H 0013-35 104 ( 8) XPAH 1 0014-C0 E7 105 ( 18) LD P2L 0016-32 106 ( 8) XPAL 2 0017-C0 E3 107 ( 18) LD P2H 0019-36 108 ( 8) XPAH 2 001A-C0 E4 109 ( 18) LD S 001C-07 110 ( 6) CAS 001D-C0 DF 111 ( 18) LD A 001F-3F 112 ( 7) XPPC 3 ; to get back 0020- 113 ; Entry Point for Debug 0020-C8 DC 114 ( 18) START: ST A ; save status 0022-40 115 ( 6) LDE 0023-C8 DA 116 ( 18) ST EE 0025-06 117 ( 5) CSA 0026-C8 D8 118 ( 18) ST S 0028-35 119 ( 8) XPAH 1 0029-C8 CF 120 ( 18) ST P1H 002B-31 121 ( 8) XPAL 1 002C-C8 CD 122 ( 18) ST P1L 002E-C4 0F 123 ( 10) LDI /RAM ; set P2 to point to RAM 0030-36 124 ( 8) XPAH 2 0031-C8 C9 125 ( 18) ST P2H 0033-C4 00 126 ( 10) LDI #RAM 0035-32 127 ( 8) XPAL 2 0036-C8 C5 128 ( 18) ST P2L 0038-C7 01 129 ( 18) LD @1(3) ; bump P3 for return 003A-33 130 ( 8) XPAL 3 ; save P3 003B-CA 0C 131 ( 18) ST ADL(2) 003D-37 132 ( 8) XPAH 3 003E-CA 0E 133 ( 18) ST ADH(2) 0040- 134 ; Abort Sequence 0040-C4 00 135 ( 10) ABORT: LDI 0 0042-CA 02 136 ( 18) ST D3(2) 0044-CA 03 137 ( 18) ST D4(2) 0046-08 138 ( 5) NOP ; mod to prevent blanking of 9th digit (was ST D9(2)) 0047-08 139 ( 5) NOP 0048-C4 40 140 ( 10) LDI DASH ; set segments to _ 004A-CA 00 141 ( 18) ST DL(2) 004C-CA 01 142 ( 18) ST DH(2) 004E-CA 04 143 ( 18) ST ADLL(2) 0050-CA 05 144 ( 18) ST ADLH(2) 0052-CA 06 145 ( 18) ST ADHL(2) 0054-CA 07 146 ( 18) ST ADHH(2) 0056-C4 01 37 C4 84 33 3F 147 WAIT: JS 3,KYBD ; display and read keyboard 005D-90 02 148 ( 11) JMP WCK ; command return 005F-90 DF 149 ( 11) JMP ABORT ; return for number 0061-E4 07 150 ( 10) WCK: XRI $07 ; check if MEM 0063-98 56 151 (9/11) JZ MEM 0065-E4 01 152 ( 10) XRI 01 ; check if GO 0067-9C D7 153 (9/11) JNZ ABORT 0069- 154 ; 'Go To' 0069- 155 ; 0069- 156 ; Go was Pushed 0069- 157 ; Go to user program 0069-C4 FF 158 ( 10) GO: LDI -1 ; set first flag 006B-CA 0F 159 ( 18) ST DDTA(2) 006D-C4 40 160 ( 10) LDI DASH ; set data to dash 006F-CA 00 161 ( 18) ST DL(2) 0071-CA 01 162 ( 18) ST DH(2) 0073-C4 59 163 ( 10) GOL: LDI DISPA-1 ; fix address segment 0075-33 164 ( 8) XPAL 3 0076-3F 165 ( 7) XPPC 3 ; do display and keyboard 0077-90 06 166 ( 11) JMP GOCK ; command return 0079-C4 1A 167 ( 10) LDI ADR-1 ; set address 007B-33 168 ( 8) XPAL 3 007C-3F 169 ( 7) XPPC 3 007D-90 F4 170 ( 11) JMP GOL ; not done 007F-E4 03 171 ( 10) GOCK: XRI 03 ; check for TERM *** Warning: Offset is -128, E register conflict 172 JZ GOOUT ; error if not TERM 0081-98 80 172 (9/11) JZ GOOUT ; error if not TERM 0083- 173 ; Incorrect Sequence 0083- 174 ; Display Error Wait for New Input 0083-C4 79 175 ( 10) ERROR: LDI KE ; fill with error 0085-CA 07 176 ( 18) ST ADHH(2) 0087-C4 50 177 ( 10) LDI KR 0089-CA 06 178 ( 18) ST ADHL(2) 008B-CA 05 179 ( 18) ST ADLH(2) 008D-CA 03 180 ( 18) ST D4(2) 008F-C4 5C 181 ( 10) LDI KO 0091-CA 04 182 ( 18) ST ADLL(2) 0093-C4 00 183 ( 10) LDI 0 0095-CA 02 184 ( 18) ST D3(2) 0097-CA 01 185 ( 18) ST DH(2) 0099-CA 00 186 ( 18) ST DL(2) 009B-90 B9 187 ( 11) JMP WAIT 009D- 188 ; 'Memory Transactions' 009D-C2 11 189 ( 18) DTACK: LD NEXT2(2) ; check if data field 009F-9C 36 190 (9/11) JNZ DATA ; address done 00A1-C2 0E 191 ( 18) MEMDN: LD ADH(2) ; put word in memory 00A3-35 192 ( 8) XPAH 1 00A4-C2 0C 193 ( 18) LD ADL(2) 00A6-31 194 ( 8) XPAL 1 00A7-C2 0D 195 ( 18) LD WORD(2) 00A9-C9 00 196 ( 18) ST (1) 00AB-90 0E 197 ( 11) JMP MEM 00AD-E4 06 198 ( 10) MEMCK: XRI $06 ; check for GO 00AF-98 D2 199 (9/11) JZ ERROR ; cannot GO now 00B1-E4 05 200 ( 10) XRI $05 ; check for TERM 00B3-98 E8 201 (9/11) JZ DTACK ; check if done 00B5-AA 0C 202 ( 22) ILD ADL(2) ; update address low 00B7-9C 02 203 (9/11) JNZ MEM ; check if update high 00B9-AA 0E 204 ( 22) ILD ADH(2) 00BB- 205 ; MEM Key Pushed 00BB-C4 FF 206 ( 10) MEM: LDI -1 ; set first flag 00BD-CA 11 207 ( 18) ST NEXT(2) ; set flag for address now 00BF-CA 0F 208 ( 18) ST DDTA(2) 00C1-C2 0E 209 ( 18) MEML: LD ADH(2) 00C3-35 210 ( 8) XPAH 1 ; set P1 for MEM address 00C4-C2 0C 211 ( 18) LD ADL(2) 00C6-31 212 ( 8) XPAL 1 00C7-C1 00 213 ( 18) LD (1) 00C9-CA 0D 214 ( 18) ST WORD(2) ; save MEM data 00CB-C4 3F 215 ( 10) LDI DISPD-1 ; fix data segment 00CD-33 216 ( 8) XPAL 3 00CE-3F 217 ( 7) XPPC 3 ; go to DISPD set segment for data 00CF-90 DC 218 ( 11) JMP MEMCK ; command return 00D1-C4 1A 219 ( 10) LDI ADR-1 ; make address 00D3-33 220 ( 8) XPAL 3 00D4-3F 221 ( 7) XPPC 3 00D5-90 EA 222 ( 11) JMP MEML ; get next character 00D7-C4 FF 223 ( 10) DATA: LDI -1 ; set first flag 00D9-CA 0F 224 ( 18) ST DDTA(2) 00DB-C2 0E 225 ( 18) LD ADH(2) ; set P1 to memory address 00DD-35 226 ( 8) XPAH 1 ; 275 00DE-C2 0C 227 ( 18) LD ADL(2) 00E0-31 228 ( 8) XPAL 1 00E1-C1 00 229 ( 18) LD (1) ; read data word 00E3-CA 0D 230 ( 18) ST WORD(2) ; save for display 00E5-C4 3F 231 ( 10) DATAL: LDI DISPD-1 ; fix data segment 00E7-33 232 ( 8) XPAL 3 00E8-3F 233 ( 7) XPPC 3 ; fix data segment GO to DISPD 00E9-90 C2 234 ( 11) JMP MEMCK ; character return 00EB-C4 04 235 ( 10) LDI 4 ; set counter for number of shifts 00ED-CA 09 236 ( 18) ST CNT(2) 00EF-AA 0F 237 ( 22) ILD DDTA(2) ; check if first 00F1-9C 06 238 (9/11) JNZ DNFST 00F3-C4 00 239 ( 10) LDI 0 ; zero word if first 00F5-CA 0D 240 ( 18) ST WORD(2) 00F7-CA 11 241 ( 18) ST NEXT(2) ; set flag for address done 00F9-02 242 ( 5) DNFST: CCL 00FA-C2 0D 243 ( 18) LD WORD(2) ; shift left 00FC-F2 0D 244 ( 19) ADD WORD(2) 00FE-CA 0D 245 ( 18) ST WORD(2) 0100-BA 09 246 ( 22) DLD CNT(2) ; check for 4 shifts 0102-9C F5 247 (9/11) JNZ DNFST 0104-C2 0D 248 ( 18) LD WORD(2) ; add new data 0106-58 249 ( 6) ORE 0107-CA 0D 250 ( 18) ST WORD(2) ; add new data 0109-90 DA 251 ( 11) JMP DATAL 010B- 252 ; 'Hexnumber to Segment Table' 010B- 253 ; 'Hex Number to Seven Segment Table' 010B-3F 254 CROM: .DB N0 010C-06 255 .DB N1 010D-5B 256 .DB N2 010E-4F 257 .DB N3 010F-66 258 .DB N4 0110-6D 259 .DB N5 0111-7D 260 .DB N6 0112-07 261 .DB N7 0113-7F 262 .DB N8 0114-67 263 .DB N9 0115-77 264 .DB NA 0116-7C 265 .DB NB 0117-39 266 .DB NC 0118-5E 267 .DB ND 0119-79 268 .DB NE 011A-71 269 .DB NF 011B- 270 ; 'Make 4 Digit Address' 011B- 271 ; Shift address left one digit then add new low hex digit in E register P2 points to RAM 011B-C4 04 272 ( 10) ADR: LDI 4 ; set number of shifts] 011D-CA 09 273 ( 18) ST CNT(2) 011F-AA 0F 274 ( 22) ILD DDTA(2) ; check if first 0121-9C 06 275 (9/11) JNZ NOTFST ; jump if number 0123-C4 00 276 ( 10) LDI 0 ; zero address 0125-CA 0E 277 ( 18) ST ADH(2) 0127-CA 0C 278 ( 18) ST ADL(2) 0129-02 279 ( 5) NOTFST: CCL ; clear link 012A-C2 0C 280 ( 18) LD ADL(2) ; shift address left 4 times 012C-F2 0C 281 ( 19) ADD ADL(2) 012E-CA 0C 282 ( 18) ST ADL(2) ; save it 0130-C2 0E 283 ( 18) LD ADH(2) ; now shift high 0132-F2 0E 284 ( 19) ADD ADH(2) 0134-CA 0E 285 ( 18) ST ADH(2) 0136-BA 09 286 ( 22) DLD CNT(2) ; check if shifted 4 times 0138-9C EF 287 (9/11) JNZ NOTFST ; jmp if not done 013A-C2 0C 288 ( 18) LD ADL(2) ; now add new number 013C-58 289 ( 6) ORE 013D-CA 0C 290 ( 18) ST ADL(2) ; number is now updated 013F-3F 291 ( 7) XPPC 3 0140- 292 ; 'Data to Segments' 0140- 293 ; Convert Hex Data to Segments, P2 points to RAM, drops through to hex address conversion 0140-C4 01 294 ( 10) DISPD: LDI /CROM ; set address of table 0142-35 295 ( 8) XPAH 1 0143-C4 0B 296 ( 10) LDI #CROM 0145-31 297 ( 8) XPAL 1 0146-C2 0D 298 ( 18) LD WORD(2) ; get memory word 0148-D4 0F 299 ( 10) ANI $0F 014A-01 300 ( 7) XAE 014B-C1 80 301 ( 18) LD -128(1) ; get segment display 014D-CA 00 302 ( 18) ST DL(2) ; save at data low 014F-C2 0D 303 ( 18) LD WORD(2) ; fix high 0151-1C 304 ( 5) SR ; shift high to low 0152-1C 305 ( 5) SR 0153-1C 306 ( 5) SR 0154-1C 307 ( 5) SR 0155-01 308 ( 7) XAE 0156-C1 80 309 ( 18) LD -128(1) ; get segments 0158-CA 01 310 ( 18) ST DH(2) ; save in data HL 015A- 311 ; Address to Segments 015A- 312 ; Convert hex address to segments, P2 points to RAM, drops through to keyboard and display 015A-03 313 ( 5) DISPA: SCL 015B-C4 01 314 ( 10) LDI /CROM ; set address of table 015D-35 315 ( 8) XPAH 1 015E-C4 0B 316 ( 10) LDI #CROM 0160-31 317 ( 8) XPAL 1 0161-C2 0C 318 ( 18) LOOPD: LD ADL(2) ; get address 0163-D4 0F 319 ( 10) ANI $0F 0165-01 320 ( 7) XAE 0166-C1 80 321 ( 18) LD -128(1) ; get segments 0168-CA 04 322 ( 18) ST ADLL(2) ; save segment of ADR LL 016A-C2 0C 323 ( 18) LD ADL(2) 016C-1C 324 ( 5) SR ; shift high digit to low 016D-1C 325 ( 5) SR 016E-1C 326 ( 5) SR 016F-1C 327 ( 5) SR 0170-01 328 ( 7) XAE 0171-C1 80 329 ( 18) LD -128(1) ; get segments 0173-CA 05 330 ( 18) ST ADLH(2) 0175-06 331 ( 5) CSA ; check if done 0176-D4 80 332 ( 10) ANI $080 0178-98 09 333 (9/11) JZ DONE 017A-02 334 ( 5) CCL ; clear flag 017B-C4 00 335 ( 10) LDI 0 017D-CA 03 336 ( 18) ST D4(2) ; zero digit 4 017F-C6 02 337 ( 18) LD @2(2) ; fix P2 for next loop 0181-90 DE 338 ( 11) JMP LOOPD 0183-C6 FE 339 ( 18) DONE: LD @-2(2) ; fix P2 0185- 340 ; 'Display and Keyboard Input' 0185- 341 ; CALL XPPC 3 0185- 342 ; JMP Command in a GO=6, MEM=7, TERM=3 0185- 343 ; in E GO=22, MEM=23, TERM=27, number return hex number in E register 0185- 344 ; ABORT key goes to ABORT 0185- 345 ; All registers are used 0185- 346 ; P2 must point to RAM, address must be xxx0 0185- 347 ; To re-execute routine do XPPC P3 0185-C4 00 348 ( 10) KYBD: LDI 0 ; zero character 0187-CA 0B 349 ( 18) ST CHAR(2) 0189-C4 0D 350 ( 10) LDI /DISPLY ; set display address 018B-35 351 ( 8) XPAH 1 018C-C4 FF 352 ( 10) OFF: LDI -1 ; set row/digit address 018E-CA 10 353 ( 18) ST ROW(2) ; save row counter 0190-C4 0A 354 ( 10) LDI 10 ; set row count 0192-CA 09 355 ( 18) ST CNT(2) 0194-C4 00 356 ( 10) LDI 0 0196-CA 0A 357 ( 18) ST PUSHED(2) ; zero keyboard input 0198-31 358 ( 8) XPAL 1 ; set display address low 0199-AA 10 359 ( 22) LOOP: ILD ROW(2) ; update row address 019B-01 360 ( 7) XAE 019C-C2 80 361 ( 18) LD -128(2) ; get segment 019E-C9 80 362 ( 18) ST -128(1) ; send it 01A0-8F 00 363 ( 13+) DLY 0 ; delay for diaplay 01A2-C1 80 364 ( 18) LD -128(1) ; get keyboard input 01A4-E4 FF 365 ( 10) XRI $FF ; check if pushed 01A6-9C 4C 366 (9/11) JNZ KEY ; jump if pushed 01A8-BA 09 367 ( 22) BACK: DLD CNT(2) ; check if done 01AA-9C ED 368 (9/11) JNZ LOOP ; no if jump 01AC-C2 0A 369 ( 18) LD PUSHED(2) ; check if key 01AE-98 0A 370 (9/11) JZ CKMORE 01B0-C2 0B 371 ( 18) LD CHAR(2) ; was there a character 01B2-9C D8 372 (9/11) JNZ OFF ; yes - wait for release 01B4-C2 0A 373 ( 18) LD PUSHED(2) ; no set character 01B6-CA 0B 374 ( 18) ST CHAR(2) 01B8-90 D2 375 ( 11) JMP OFF 01BA-C2 0B 376 ( 18) CKMORE: LD CHAR(2) ; check if there was a character 01BC-98 CE 377 (9/11) JZ OFF ; no keep looking 01BE- 378 ; Command Key Processing 01BE-01 379 ( 7) COMAND: XAE ; save character 01BF-40 380 ( 6) LDE ; get character 01C0-D4 20 381 ( 10) ANI $020 ; check for command 01C2-9C 28 382 (9/11) JNZ CMND ; jump if command 01C4-C4 80 383 ( 10) LDI $080 ; find number 01C6-50 384 ( 6) ANE 01C7-9C 1B 385 (9/11) JNZ LT7 ; 0 to 7 01C9-C4 40 386 ( 10) LDI $040 01CB-50 387 ( 6) ANE 01CC-9C 19 388 (9/11) JNZ N89 ; 8 or 9 01CE-C4 0F 389 ( 10) LDI $0F 01D0-50 390 ( 6) ANE 01D1-F4 07 391 ( 11) ADI $7 ; make offset to table 01D3-01 392 ( 7) XAE ; put offset away 01D4-C0 80 393 ( 18) LD -128(0) ; get number 01D6-01 394 ( 7) KEYRTN: XAE ; save in E 01D7-C7 02 395 ( 18) LD @2(3) ; fix return 01D9-3F 396 ( 7) XPPC 3 ; return 01DA-90 A9 397 ( 11) JMP KYBD ; allows XPPC P3 to return 01DC-0A 0B 0C 0D 00 00 0E 0F 398 .DB $0A,$0B,$0C,$0D,$0,$0,$0E,$0F 01E4-60 399 ( 6) LT7: XRE ; keep low digit 01E5-90 EF 400 ( 11) JMP KEYRTN 01E7-60 401 ( 6) N89: XRE ; get low 01E8-F4 08 402 ( 11) ADI $08 ; make digit 8 or 9 01EA-90 EA 403 ( 11) JMP KEYRTN 01EC-60 404 ( 6) CMND: XRE 01ED-E4 04 405 ( 10) XRI $04 ; check if abort 01EF-98 08 406 (9/11) JZ ABRT ; abort 01F1-3F 407 ( 7) XPPC 3 ; in E 23=MEM, 22=GO, 27=TERM 01F2- 408 ; in A 7=MEM, 6=GO, 3=TERM 01F2-90 91 409 ( 11) JMP KYBD ; allows just a XPPC P3 to return 01F4-58 410 ( 6) KEY: ORE ; make character 01F5-CA 0A 411 ( 18) ST PUSHED(2) ; save character 01F7-90 AF 412 ( 11) JMP BACK 01F9-C4 00 413 ( 10) ABRT: LDI \ABORT 01FB-37 414 ( 8) XPAH 3 01FC-C4 3F 415 ( 10) LDI #ABORT-1 01FE-33 416 ( 8) XPAL 3 01FF-3F 417 ( 7) XPPC 3 ; go to abort 0200- 418 ; 'RAM $E0FF' 0000- 419 DL .EQ 0 ; Segment for digit 1 0001- 420 DH .EQ 1 ; Segment for digit 2 0002- 421 D3 .EQ 2 ; Segment for digit 3 0003- 422 D4 .EQ 3 ; Segment for digit 4 0004- 423 ADLL .EQ 4 ; Segment for digit 5 0005- 424 ADLH .EQ 5 ; Segment for digit 6 0006- 425 ADHL .EQ 6 ; Segment for digit 7 0007- 426 ADHH .EQ 7 ; Segment for digit 8 0008- 427 D9 .EQ 8 ; Segment for digit 9 0009- 428 CNT .EQ 9 ; Counter 000A- 429 PUSHED .EQ 10 ; Key Pushed 000B- 430 CHAR .EQ 11 ; Char Read 000C- 431 ADL .EQ 12 ; Memory Address Low 000D- 432 WORD .EQ 13 ; Memory Word 000E- 433 ADH .EQ 14 ; Memory Hi 000F- 434 DDTA .EQ 15 ; First Flag 0010- 435 ROW .EQ 16 ; Row Counter 0011- 436 NEXT2 .EQ 17 ; Flag for now data 0200- 437 .END