kim listing 1234

Upload: namelessu

Post on 17-Feb-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/23/2019 Kim Listing 1234

    1/34

    KIM.ASM 6502 CROSS-ASSEMBLER ver 1.0rmb 12-17-1981 Page 1LINE LOC INSTR SOURCE CODEdf34324234423sdf234324324tertertersdffsd 1 ; 2 ;- - - - - - - - - - - - - - KIM.ASM - - - - - - - - - - -

    3 ; COPYRIGHT MOS TECHNOLOGY, INC 4 ; DATE: OCT 18, 1975 REV-D 5 ;************************ 6530-003 I.C. ****************** 6 ; 6530-003 I.C. IS AN AUDIO CASSETTE TAPE RECORDER 7 ; EXTENSION OF THE BASIC KIM MONITOR. IT FEATURES 8 ; TWO ROUTINES: 9 ; LOADT - LOAD MEMORY FROM AUDIO TAPE 10 ; ID=00 IGNORE ID 11 ; ID=FF IGNORE ID, USE SA FOR START ADDR 12 ; ID=01-FE USE ADDRESS ON TAPE 13 ; 14 ; DUMPT - STORE MEMORY ONTO AUDIO TAPE

    15 ; ID=00 SHOULD NOT BE USED 16 ; ID=FF SHOULD NOT BE USED 17 ; ID=01-FE NORMAL ID RANGE 18 ; SAL LSB STARTING ADDRESS OF PROGRAM 19 ; SAH MSB 20 ; EAL ENDING ADDRESS OF PROGRAM 21 ; EAH MSB 22 ; 23 *= $1800 24 SAD = $1740 6530 A DATA 25 PADD = $1741 6530 A DATA DIRECTION 26 SBD = $1742 6530 B DATA 27 PBDD = $1743 6530 B DATA DIRECTION

    28 CLK1T = $1744 DIV BY 1 TIME 29 CLK8T = $1745 DIV BY 8 TIME 30 CLK64T = $1746 DIV BY 64 TIME 31 CLKKT = $1747 DIV BY 1024 TIME 32 CLKRDI = $1747 READ TIME OUT BIT 33 CLKRDT = $1746 READ TIME 34 ; ** MPU REG. SAVX AREA IN PAGE 0 ** 35 PCL = $EF PROGRAM CNT LOW 36 PCH = $F0 PROGRAM CNT HI 37 PREG = $F1 CURRENT STATUS REG 38 SPUSER = $F2 CURRENT STACK POINTER 39 ACC = $F3 ACCUMULATOR

    40 YREG = $F4 Y INDEX 41 XREG = $F5 X INDEX 42 ; ** KIM FIXED AREA IN PAGE 0 ** 43 CHKHI = $F6 44 CHKSUM = $F7 45 INL = $F8 INPUT BUFFER 46 INH = $F9 INPUT BUFFER 47 POINTL = $FA LSB OF OPEN CELL 48 POINTH = $FB MSB OF OPEN CELL 49 TEMP = $FC 50 TMPX = $FD 51 CHAR = $FE 52 MODE = $FF

    53 ; ** KIM FIXED AREA IN PAGE 23 ** 54 CHKL = $17E7 55 CHKH = $17E8 CHKSUM

  • 7/23/2019 Kim Listing 1234

    2/34

    56 SAVX = $17E9 (3-BYTES) 57 VEB = $17EC VOLATILE EXEC BLOCK (6-B)

  • 7/23/2019 Kim Listing 1234

    3/34

    KIM.ASM 6502 CROSS-ASSEMBLER ver 1.0rmb 12-17-1981 Page 2LINE LOC INSTR SOURCE CODE58 CNTL30 = $17F2 TTY DELAY

    59 CNTH30 = $17F3 TTY DELAY 60 TIMH = $17F4

    61 SAL = $17F5 LOW STARTING ADDRESS 62 SAH = $17F6 HI STARTING ADDRESS 63 EAL = $17F7 LOW ENDING ADDRESS 64 EAH = $17F8 HI ENDING ADDRESS 65 ID = $17F9 TAPE PROGRAM ID NUMBER 66 ; ** INTERRUPT VECTORS ** 67 NMIV = $17FA STOP VECTOR (STOP=1C00) 68 RSTV = $17FC RST VECTOR 69 IRQV = $17FE IRQ VECTOR (BRK=1C00) 71 ; 72 ; ** DUMP MEMORY TO TAPE ** 73 1800 A9 AD DUMPT LDA #$AD LOAD ABSOLUTE INST 1800

    74 1802 8D EC 17 STA VEB75 1805 20 32 19 JSR INTVEB 76 1808 A9 27 LDA #$27 TURN OFF DATAIN PB5 77 180A 8D 42 17 STA SBD78 180D A9 BF LDA #$BF CONVERT PB7 TO OUTPUT

    79 180F 8D 43 17 STA PBDD80 1812 A2 64 LDX #$64 100 CHARS81 1814 A9 16 DUMPT1 LDA #$16 SYNC CHARS

    82 1816 20 7A 19 JSR OUTCHT 83 1819 CA DEX84 181A D0 F8 BNE DUMPT1

    85 181C A9 2A LDA #$2A START CHAR 86 181E 20 7A 19 JSR OUTCHT

    87 1821 AD F9 17 LDA ID OUTPUT ID88 1824 20 61 19 JSR OUTBT89 1827 AD F5 17 LDA SAL OUTPUT STARTING

    90 182A 20 5E 19 JSR OUTBTC ADDRESS91 182D AD F6 17 LDA SAH92 1830 20 5E 19 JSR OUTBTC

    93 1833 AD ED 17 DUMPT2 LDA VEB+1 CHECK FOR LAST 94 1836 CD F7 17 CMP EAL DATA BYTE 95 1839 AD EE 17 LDA VEB+296 183C ED F8 17 SBC EAH97 183F 90 24 BCC DUMPT4

    98 1841 A9 2F LDA #'/ OUTPUT END-OF-DATA CHAR 99 1843 20 7A 19 JSR OUTCHT100 1846 AD E7 17 LDA CHKL LAST BYTE HAS BEEN101 1849 20 61 19 JSR OUTBT OUTPUT NOW OUTPUT102 184C AD E8 17 LDA CHKH CHKSUM103 184F 20 61 19 JSR OUTBT104 1852 A2 02 LDX #$02 2 CHARS105 1854 A9 04 DUMPT3 LDA #$04 EOT CHAR106 1856 20 7A 19 JSR OUTCHT107 1859 CA DEX108 185A D0 F8 BNE DUMPT3109 185C A9 00 LDA #$00 DISPLAY 0000110 185E 85 FA STA POINTL FOR NORMAL EXIT111 1860 85 FB STA POINTH

    112 1862 4C 4F 1C JMP START113 1865 20 EC 17 DUMPT4 JSR VEB DATA BYTE OUTPUT114 1868 20 5E 19 JSR OUTBTC

  • 7/23/2019 Kim Listing 1234

    4/34

    115 186B 20 EA 19 JSR INCVEB

  • 7/23/2019 Kim Listing 1234

    5/34

    KIM.ASM 6502 CROSS-ASSEMBLER ver 1.0rmb 12-17-1981 Page 3LINE LOC INSTR SOURCE CODE116 186E 4C 33 18 JMP DUMPT2117 ;118 ; ** LOAD MEMORY FROM TAPE **

    119 ;120 1871 0F 19 TAB .WORD LOAD12 'LOAD12' ADDRESS 1871122 ;123 1873 A9 8D LOADT LDA #$8D INIT VOLATILE EXECUTION 1873124 1875 8D EC 17 STA VEB BLOCK WITH STA ABS.125 1878 20 32 19 JSR INTVEB126 187B A9 4C LDA #$4C JUMP TYPE RTRN127 187D 8D EF 17 STA VEB+3128 1880 AD 71 18 LDA TAB129 1883 8D F0 17 STA VEB+4130 1886 AD 72 18 LDA TAB+1131 1889 8D F1 17 STA VEB+5

    132 188C A9 07 LDA #$07 RESET PB5=0 (DATA-IN)133 188E 8D 42 17 STA SBD134 1891 A9 FF SYNC LDA #$FF CLEAR SAVX FOR SYNC CHAR 1891135 1893 8D E9 17 STA SAVX136 1896 20 41 1A SYNC1 JSR RDBIT GET A BIT137 1899 4E E9 17 LSR SAVX SHIFT BIT INTO CHAR138 189C 0D E9 17 ORA SAVX139 189F 8D E9 17 STA SAVX140 18A2 AD E9 17 LDA SAVX GET NEW CHAR141 18A5 C9 16 CMP #$16 SYNC CHAR142 18A7 D0 ED BNE SYNC1143 18A9 A2 0A LDX #$0A TEST FOR 10 SYNC CHARS144 18AB 20 24 1A SYNC2 JSR RDCHT

    145 18AE C9 16 CMP #$16146 18B0 D0 DF BNE SYNC IF NOT 10 CHAR, RE-SYNC147 18B2 CA DEX148 18B3 D0 F6 BNE SYNC2149 18B5 20 24 1A LOADT4 JSR RDCHT LOOK FOR START OF150 18B8 C9 2A CMP #$2A DATA CHAR151 18BA F0 06 BEQ LOAD11152 18BC C9 16 CMP #$16 IF NOT , SHOULD BE SYNC153 18BE D0 D1 BNE SYNC154 18C0 F0 F3 BEQ LOADT4155 18C2 20 F3 19 LOAD11 JSR RDBYT READ ID FROM TAPE156 18C5 CD F9 17 CMP ID COMPARE WITH REQUESTED ID157 18C8 F0 0D BEQ LOADT5158 18CA AD F9 17 LDA ID DEFAULT 00, READ RECORD159 18CD C9 00 CMP #$00 ANYWAY160 18CF F0 06 BEQ LOADT5161 18D1 C9 FF CMP #$FF DEFAULT FF, IGNORE SA ON162 18D3 F0 17 BEQ LOADT6 TAPE163 18D5 D0 9C BNE LOADT164 18D7 20 F3 19 LOADT5 JSR RDBYT GET SA FROM TAPE165 18DA 20 4C 19 JSR CHKT166 18DD 8D ED 17 STA VEB+1 SAVX IN VEB+1,2167 18E0 20 F3 19 JSR RDBYT168 18E3 20 4C 19 JSR CHKT169 18E6 8D EE 17 STA VEB+2

    170 18E9 4C F8 18 JMP LOADT7171 ;172 18EC 20 F3 19 LOADT6 JSR RDBYT GET SA BUT IGNORE 18EC

  • 7/23/2019 Kim Listing 1234

    6/34

    173 18EF 20 4C 19 JSR CHKT

  • 7/23/2019 Kim Listing 1234

    7/34

    KIM.ASM 6502 CROSS-ASSEMBLER ver 1.0rmb 12-17-1981 Page 4LINE LOC INSTR SOURCE CODE174 18F2 20 F3 19 JSR RDBYT175 18F5 20 4C 19 JSR CHKT176 18F8 A2 02 LOADT7 LDX #$02 GET 2 CHARS

    177 18FA 20 24 1A LOAD13 JSR RDCHT GET CHAR (X)178 18FD C9 2F CMP #$2F LOOK FOR LAST CHAR179 18FF F0 14 BEQ LOADT8180 1901 20 00 1A JSR PACKT CONVERT TO HEX181 1904 D0 23 BNE LOADT9 Y=1 NON-HEX CHAR182 1906 CA DEX183 1907 D0 F1 BNE LOAD13184 1909 20 4C 19 JSR CHKT COMPARE CHECKSUM185 190C 4C EC 17 JMP VEB SAVX DATA IN MEMORY186 190F 20 EA 19 LOAD12 JSR INCVEB INCR DATA POINTER187 1912 4C F8 18 JMP LOADT7188 ;

    189 1915 20 F3 19 LOADT8 JSR RDBYT END OF DATA, COMPARE CHKSUM 1915190 1918 CD E7 17 CMP CHKL191 191B D0 0C BNE LOADT9192 191D 20 F3 19 JSR RDBYT193 1920 CD E8 17 CMP CHKH194 1923 D0 04 BNE LOADT9195 1925 A9 00 LDA #$00 NORMAL EXIT196 1927 F0 02 BEQ LOAD10197 1929 A9 FF LOADT9 LDA #$FF ERROR EXIT198 192B 85 FA LOAD10 STA POINTL199 192D 85 FB STA POINTH200 192F 4C 4F 1C JMP START201 ;

    202 ; ** SUBROUTINES BELOW **203 1932 AD F5 17 INTVEB LDA SAL MOVE SA TO VEB+1,2 1932204 1935 8D ED 17 STA VEB+1205 1938 AD F6 17 LDA SAH206 193B 8D EE 17 STA VEB+2207 193E A9 60 LDA #$60 RTS INST208 1940 8D EF 17 STA VEB+3209 1943 A9 00 LDA #$00 CLEAR CHKSUM AREA210 1945 8D E7 17 STA CHKL211 1948 8D E8 17 STA CHKH212 194B 60 RTS213 ; ** COMPUTE CHKSUM FOR TAPE LOAD **214 194C A8 CHKT TAY 194C215 194D 18 CLC216 194E 6D E7 17 ADC CHKL217 1951 8D E7 17 STA CHKL218 1954 AD E8 17 LDA CHKH219 1957 69 00 ADC #$00220 1959 8D E8 17 STA CHKH221 195C 98 TYA222 195D 60 RTS223 ; ** OUTPUT ONE BYTE **224 195E 20 4C 19 OUTBTC JSR CHKT COMPARE CHKSUM 195E225 1961 A8 OUTBT TAY SAVX DATA BYTE226 1962 4A LSR A SHIFT OFF LSD

    227 1963 4A LSR A228 1964 4A LSR A229 1965 4A LSR A

  • 7/23/2019 Kim Listing 1234

    8/34

    230 1966 20 6F 19 JSR HEXOUT OUTPUT MSD

  • 7/23/2019 Kim Listing 1234

    9/34

    KIM.ASM 6502 CROSS-ASSEMBLER ver 1.0rmb 12-17-1981 Page 5LINE LOC INSTR SOURCE CODE231 1969 98 TYA232 196A 20 6F 19 JSR HEXOUT OUTPUT LSD233 196D 98 TYA

    234 196E 60 RTS235 ; ** CONVERT LSD OF A TO ASCII, OUTPUT TO TAPE **236 196F 29 0F HEXOUT AND #$0F 196F237 1971 C9 0A CMP #$0A238 1973 18 CLC239 1974 30 02 BMI HEX1240 1976 69 07 ADC #$07241 1978 69 30 HEX1 ADC #$30242 ; ** OUTPUT TO TAPE ONE ASCII CHAR **243 197A 8E E9 17 OUTCHT STX SAVX 197A244 197D 8C EA 17 STY SAVX+1245 1980 A0 08 LDY #$08 START BIT

    246 1982 20 9E 19 CHT1 JSR ONE247 1985 4A LSR A GET DATA BIT248 1986 B0 06 BCS CHT2249 1988 20 9E 19 JSR ONE DATA BIT=1250 198B 4C 91 19 JMP CHT3251 198E 20 C4 19 CHT2 JSR ZRO DATA BIT=0252 1991 20 C4 19 CHT3 JSR ZRO253 1994 88 DEY254 1995 D0 EB BNE CHT1255 1997 AE E9 17 LDX SAVX256 199A AC EA 17 LDY SAVX+1257 199D 60 RTS258 ; ** OUTPUT 1 TO TAPE, 9 PULSES, 138 US EACH **

    259 199E A2 09 ONE LDX #$09 199E260 19A0 48 PHA SAVX A261 19A1 2C 47 17 ONE1 BIT CLKRDI WAIT FOR TIME OUT 19A1262 19A4 10 FB BPL ONE1263 19A6 A9 7E LDA #126264 19A8 8D 44 17 STA CLK1T265 19AB A9 A7 LDA #$A7266 19AD 8D 42 17 STA SBD SET PB7 = 1267 19B0 2C 47 17 ONE2 BIT CLKRDI 19B0268 19B3 10 FB BPL ONE2269 19B5 A9 7E LDA #126270 19B7 8D 44 17 STA CLK1T271 19BA A9 27 LDA #$27272 19BC 8D 42 17 STA SBD RESET PB7=0273 19BF CA DEX274 19C0 D0 DF BNE ONE1275 19C2 68 PLA276 19C3 60 RTS277 ; ** OUTPUT 0 TO TAPE, 6 PULSES, 207 US EACH **278 19C4 A2 06 ZRO LDX #$06 19C4279 19C6 48 PHA SAVX A280 19C7 2C 47 17 ZRO1 BIT CLKRDI 19C7281 19CA 10 FB BPL ZRO1282 19CC A9 C3 LDA #$C3283 19CE 8D 44 17 STA CLK1T

    284 19D1 A9 A7 LDA #$A7285 19D3 8D 42 17 STA SBD SET PB7=1286 19D6 2C 47 17 ZRO2 BIT CLKRDI

  • 7/23/2019 Kim Listing 1234

    10/34

    287 19D9 10 FB BPL ZRO2

  • 7/23/2019 Kim Listing 1234

    11/34

    KIM.ASM 6502 CROSS-ASSEMBLER ver 1.0rmb 12-17-1981 Page 6LINE LOC INSTR SOURCE CODE288 19DB A9 C3 LDA #195289 19DD 8D 44 17 STA CLK1T290 19E0 A9 27 LDA #$27

    291 19E2 8D 42 17 STA SBD RESET PB7=0292 19E5 CA DEX293 19E6 D0 DF BNE ZRO1294 19E8 68 PLA RESTORE A295 19E9 60 RTS296 ; ** SUB TO INC VEB+1,2 **297 19EA EE ED 17 INCVEB INC VEB+1 19EA298 19ED D0 03 BNE INCVE1299 19EF EE EE 17 INC VEB+2300 19F2 60 INCVE1 RTS301 ; ** SUB TO READ BYTE FROM TAPE **302 19F3 20 24 1A RDBYT JSR RDCHT 19F3

    303 19F6 20 00 1A JSR PACKT304 19F9 20 24 1A JSR RDCHT305 19FC 20 00 1A JSR PACKT306 19FF 60 RTS307 ; ** PACK A=ASCII INTO SAVX AS HEX DATA **308 1A00 C9 30 PACKT CMP #$30 1A00309 1A02 30 1E BMI PACKT3310 1A04 C9 47 CMP #$47311 1A06 10 1A BPL PACKT3312 1A08 C9 40 CMP #$40313 1A0A 30 03 BMI PACKT1314 1A0C 18 CLC315 1A0D 69 09 ADC #$09

    316 1A0F 2A PACKT1 ROL A317 1A10 2A ROL A318 1A11 2A ROL A319 1A12 2A ROL A320 1A13 A0 04 LDY #$04321 1A15 2A PACKT2 ROL A322 1A16 2E E9 17 ROL SAVX323 1A19 88 DEY324 1A1A D0 F9 BNE PACKT2325 1A1C AD E9 17 LDA SAVX326 1A1F A0 00 LDY #$00 Y=0 VALID HEX CHAR327 1A21 60 RTS328 1A22 C8 PACKT3 INY Y=1 NOT HEX329 1A23 60 RTS330 ; ** GET 1 CHAR FROM TAPE AND RETURN WITH331 ; CHAR IN A. USE SAVX+1 TO ASM CHAR **332 1A24 8E EB 17 RDCHT STX SAVX+2 1A24333 1A27 A2 08 LDX #$08 READ 8 BITS334 1A29 20 41 1A RDCHT1 JSR RDBIT GET NEXT DATA BIT335 1A2C 4E EA 17 LSR SAVX+1 RIGHT SHIFT CHAR336 1A2F 0D EA 17 ORA SAVX+1 OR IN SIGN BIT337 1A32 8D EA 17 STA SAVX+1 REPLACE CHAR338 1A35 CA DEX339 1A36 D0 F1 BNE RDCHT1340 1A38 AD EA 17 LDA SAVX+1 MOVE CHAR INTO A

    341 1A3B 2A ROL A SHIFT OFF PARITY342 1A3C 4A LSR A343 1A3D AE EB 17 LDX SAVX+2

  • 7/23/2019 Kim Listing 1234

    12/34

    344 1A40 60 RTS

  • 7/23/2019 Kim Listing 1234

    13/34

    KIM.ASM 6502 CROSS-ASSEMBLER ver 1.0rmb 12-17-1981 Page 7LINE LOC INSTR SOURCE CODE345 ; ** THIS SUB GETS ONE BIT FROM TAPE AND346 ; RETURNS IT IN SIGN OF A **347 1A41 2C 42 17 RDBIT BIT SBD WAIT FOR END OF START BIT 1A41

    348 1A44 10 FB BPL RDBIT349 1A46 AD 46 17 LDA CLKRDT GET START BIT TIME350 1A49 A0 FF LDY #$FF A=256-T1351 1A4B 8C 46 17 STY CLK64T SET UP TIMER352 1A4E A0 14 LDY #$14353 1A50 88 RDBIT3 DEY DELAY 100 MICRO SEC354 1A51 D0 FD BNE RDBIT3355 1A53 2C 42 17 RDBIT2 BIT SBD356 1A56 30 FB BMI RDBIT2 WAIT FOR NEXT START BIT357 1A58 38 SEC358 1A59 ED 46 17 SBC CLKRDT (256-T1)-(256-T2)=T2-T1359 1A5C A0 FF LDY #$FF

    360 1A5E 8C 46 17 STY CLK64T SET UP TIMER FOR NEXT BIT361 1A61 A0 07 LDY #$07362 1A63 88 RDBIT4 DEY DELAY 50 MICROSEC363 1A64 D0 FD BNE RDBIT4364 1A66 49 FF EOR #$FF COMPLEMENT SIGN OF A365 1A68 29 80 AND #$80 MASK ALL EXCEPT SIGN366 1A6A 60 RTS367 ; ** PLLCAL OUTPUT 166 MICROSEC (6024 HZ)368 ; PULSE STRING369 1A6B A9 27 PLLCAL LDA #$27 1A6B370 1A6D 8D 42 17 STA SBD TURN OFF DATIN PB5=1371 1A70 A9 BF LDA #$BF CONVERT PB7 TO OUTPUT372 1A72 8D 43 17 STA PBDD

    373 1A75 2C 47 17 PLL1 BIT CLKRDI374 1A78 10 FB BPL PLL1375 1A7A A9 9A LDA #154 WAIT 166 MICROSEC376 1A7C 8D 44 17 STA CLK1T377 1A7F A9 A7 LDA #$A7 OUTPUT PB7=1378 1A81 8D 42 17 STA SBD379 1A84 2C 47 17 PLL2 BIT CLKRDI380 1A87 10 FB BPL PLL2381 1A89 A9 9A LDA #154382 1A8B 8D 44 17 STA CLK1T383 1A8E A9 27 LDA #$27 PB7=0384 1A90 8D 42 17 STA SBD385 1A93 4C 75 1A JMP PLL1386 ;387 ; ** INTERRUPTS **388 *= $1BFA389 1BFA 6B 1A NMIP27 .WORD PLLCAL391 1BFC 6B 1A RSTP27 .WORD PLLCAL393 1BFE 6B 1A IRQP27 .WORD PLLCAL395 ;396 ;******************* 6530-002 I.C. *****************397 ; ** COPYRIGHT MOS TECHNOLOGY INC.398 ; DATE OCT 13, 1975 REV E399 ;400 ; ** KIM **

    401 ; TTY INTERFACE 6530-002402 ; KEYBOARD INTERFACE,403 ; 7-SEGMENT 6-DIGIT DISPLAY

  • 7/23/2019 Kim Listing 1234

    14/34

    404 ;

  • 7/23/2019 Kim Listing 1234

    15/34

    KIM.ASM 6502 CROSS-ASSEMBLER ver 1.0rmb 12-17-1981 Page 8LINE LOC INSTR SOURCE CODE405 ; TTY COMANDS:406 ; G GOEXEC407 ; CR OPEN NEXT CELL

    408 ; LF OPEN PREVIOUS CELL409 ; . MODIFY OPEN CELL410 ; SP OPEN NEW CELL411 ; L LOAD (OBJECT FORMAT)412 ; Q DUMP FROM OPEN CELL ADDR TO HI LIMIT413 ; RO RUB OUT - RETURN TO START KIM414 ; (ALL ILLEGAL CHARS ARE IGNORED)415 ;416 ; KEYBOARD COMMANDS:417 ; ADDR SETS MODE TO MODIFY CELL ADDRESS418 ; DATA SETS MODE TO MODIFY DATA IN OPEN CELL419 ; STEP INCREMENTS TO NEXT CELL

    420 ; RST SYSTEM RESET421 ; RUN GOEXEC422 ; STOP $1C00 CAN BE LOADED INTO NMIV TO USE423 ; PC DISPLAY PC (PROGRAM COUNTER)424 ;425 *= $1C00426 1C00 85 F3 SAVE STA ACC KIM ENTRY VIA STOP (NMI) 1C00427 1C02 68 PLA OR BRK (IRQ)428 1C03 85 F1 STA PREG429 1C05 68 PLA KIM ENTRY VIA JSR (A LOST) 1C05430 1C06 85 EF STA PCL431 1C08 85 FA STA POINTL432 1C0A 68 PLA

    433 1C0B 85 F0 STA PCH434 1C0D 85 FB STA POINTH435 1C0F 84 F4 STY YREG436 1C11 86 F5 STX XREG437 1C13 BA TSX438 1C14 86 F2 STX SPUSER439 1C16 20 88 1E JSR INITS440 1C19 4C 4F 1C JMP START441 ;442 1C1C 6C FA 17 NMIT JMP (NMIV) NON-MASKABLE INTERRUPT TRAP 1C1C443 1C1F 6C FE 17 IRQT JMP (IRQV) INTERRUPT TRAP 1C1F444 1C22 A2 FF RST LDX #$FF KIM ENTRY VIA RST 1C22445 1C24 9A TXS446 1C25 86 F2 STX SPUSER447 1C27 20 88 1E JSR INITS448 1C2A A9 FF LDA #$FF COUNT START BIT449 1C2C 8D F3 17 STA CNTH30 ZERO CNTH30450 1C2F A9 01 LDA #$01 MASK HI ORDER BITS451 1C31 2C 40 17 DET1 BIT SAD TEST 1C31452 1C34 D0 19 BNE START KEYBD SSW TEST453 1C36 30 F9 BMI DET1 START BIT TEST454 1C38 A9 FC LDA #$FC455 1C3A 18 DET3 CLC THIS LOOP COUNTS 1C3A456 1C3B 69 01 ADC #$01 THE START BIT TIME457 1C3D 90 03 BCC DET2

    458 1C3F EE F3 17 INC CNTH30459 1C42 AC 40 17 DET2 LDY SAD CHECK FOR END OF START BIT 1C42460 1C45 10 F3 BPL DET3

  • 7/23/2019 Kim Listing 1234

    16/34

    461 1C47 8D F2 17 STA CNTL30

  • 7/23/2019 Kim Listing 1234

    17/34

    KIM.ASM 6502 CROSS-ASSEMBLER ver 1.0rmb 12-17-1981 Page 9LINE LOC INSTR SOURCE CODE462 1C4A A2 08 LDX #$08463 1C4C 20 6A 1E JSR GET5 GET REST OF THE CHAR, TEST CHAR464 ; ** MAKE TTY/KB SELECTION **

    465 1C4F 20 8C 1E START JSR INIT1 1C4F466 1C52 A9 01 LDA #$01467 1C54 2C 40 17 BIT SAD468 1C57 D0 1E BNE TTYKB469 1C59 20 2F 1E JSR CRLF PRT CR LF470 1C5C A2 0A LDX #$0A TYPE OUT KIM471 1C5E 20 31 1E JSR PRTST472 1C61 4C AF 1D JMP SHOW1473 ;474 1C64 A9 00 CLEAR LDA #$00475 1C66 85 F8 STA INL CLEAR INPUT BUFFER476 1C68 85 F9 STA INH

    477 1C6A 20 5A 1E READ JSR GETCH GET CHAR478 1C6D C9 01 CMP #$01479 1C6F F0 06 BEQ TTYKB480 1C71 20 AC 1F JSR PACK481 1C74 4C DB 1D JMP SCAN482 ; ** MAIN ROUTINE FOR KEYBOARD AND DISPLAY **483 1C77 20 19 1F TTYKB JSR SCAND IF A=0 NO KEY 1C77484 1C7A D0 D3 BNE START485 1C7C A9 01 TTYKB1 LDA #$01486 1C7E 2C 40 17 BIT SAD487 1C81 F0 CC BEQ START488 1C83 20 19 1F JSR SCAND489 1C86 F0 F4 BEQ TTYKB1

    490 1C88 20 19 1F JSR SCAND491 1C8B F0 EF BEQ TTYKB1492 1C8D 20 6A 1F JSR GETKEY493 1C90 C9 15 CMP #$15494 1C92 10 BB BPL START495 1C94 C9 14 CMP #$14496 1C96 F0 44 BEQ PCCMD DISPLAY PC497 1C98 C9 10 CMP #$10 ADDR MODE=1498 1C9A F0 2C BEQ ADDRM499 1C9C C9 11 CMP #$11 DATA MODE=1500 1C9E F0 2C BEQ DATAM501 1CA0 C9 12 CMP #$12 STEP502 1CA2 F0 2F BEQ STEP503 1CA4 C9 13 CMP #$13 RUN504 1CA6 F0 31 BEQ GOV505 1CA8 0A ASL A SHIFT CHAR INTO HIGH506 1CA9 0A ASL A ORDER NIBBLE507 1CAA 0A ASL A508 1CAB 0A ASL A509 1CAC 85 FC STA TEMP STORE IN TEMP510 1CAE A2 04 LDX #$04511 1CB0 A4 FF DATA1 LDY MODE TEST MODE 1=ADDR512 1CB2 D0 0A BNE ADDR MODE=0 DATA513 1CB4 B1 FA LDA (POINTL),Y GET DATA514 1CB6 06 FC ASL TEMP SHIFT CHAR

    515 1CB8 2A ROL A SHIFT DATA516 1CB9 91 FA STA (POINTL),Y STORE OUT DATA517 1CBB 4C C3 1C JMP DATA2

  • 7/23/2019 Kim Listing 1234

    18/34

    518 ;

  • 7/23/2019 Kim Listing 1234

    19/34

    KIM.ASM 6502 CROSS-ASSEMBLER ver 1.0rmb 12-17-1981 Page 10LINE LOC INSTR SOURCE CODE519 1CBE 0A ADDR ASL A SHIFT CHAR520 1CBF 26 FA ROL POINTL SHIFT ADDR521 1CC1 26 FB ROL POINTH SHIFT ADDR HI

    522 1CC3 CA DATA2 DEX523 1CC4 D0 EA BNE DATA1 DO 4 TIMES524 1CC6 F0 08 BEQ DATAM2 EXIT HERE525 1CC8 A9 01 ADDRM LDA #$01526 1CCA D0 02 BNE DATAM1527 1CCC A9 00 DATAM LDA #$00528 1CCE 85 FF DATAM1 STA MODE529 1CD0 4C 4F 1C DATAM2 JMP START530 ;531 1CD3 20 63 1F STEP JSR INCPT 1CD3532 1CD6 4C 4F 1C JMP START533 ;

    534 1CD9 4C C8 1D GOV JMP GOEXEC 1CD9535 ; ** DISPLAY PC BY MOVING PC TO POINT **536 1CDC A5 EF PCCMD LDA PCL 1CDC537 1CDE 85 FA STA POINTL538 1CE0 A5 F0 LDA PCH539 1CE2 85 FB STA POINTH540 1CE4 4C 4F 1C JMP START541 ; ** LOAD PAPER TAPE FROM TTY **542 1CE7 20 5A 1E LOAD JSR GETCH LOOK FOR FIRST CHAR 1CE7543 1CEA C9 3B CMP #$3B SEMICOLON544 1CEC D0 F9 BNE LOAD545 1CEE A9 00 LDA #$00546 1CF0 85 F7 STA CHKSUM

    547 1CF2 85 F6 STA CHKHI548 1CF4 20 9D 1F JSR GETBYT GET BYTE COUNT549 1CF7 AA TAX SAVE IN X INDEX550 1CF8 20 91 1F JSR CHK COMPUTE CHECKSUM551 1CFB 20 9D 1F JSR GETBYT GET ADDRESS HI552 1CFE 85 FB STA POINTH553 1D00 20 91 1F JSR CHK554 1D03 20 9D 1F JSR GETBYT GET ADDRESS LO555 1D06 85 FA STA POINTL556 1D08 20 91 1F JSR CHK557 1D0B 8A TXA IF CNT=0 DONT558 1D0C F0 0F BEQ LOAD3 GET ANY DATA559 1D0E 20 9D 1F LOAD2 JSR GETBYT GET DATA560 1D11 91 FA STA (POINTL),Y STORE DATA561 1D13 20 91 1F JSR CHK562 1D16 20 63 1F JSR INCPT NEXT ADDRESS563 1D19 CA DEX564 1D1A D0 F2 BNE LOAD2565 1D1C E8 INX X=1 DATA RCD X=0 LAST RCD566 1D1D 20 9D 1F LOAD3 JSR GETBYT COMPARE CHKSUM567 1D20 C5 F6 CMP CHKHI568 1D22 D0 17 BNE LOADE1569 1D24 20 9D 1F JSR GETBYT570 1D27 C5 F7 CMP CHKSUM571 1D29 D0 13 BNE LOADER

    572 1D2B 8A TXA X=0 LAST RECORD573 1D2C D0 B9 BNE LOAD574 1D2E A2 0C LDX #$0C X-OFF KIM

  • 7/23/2019 Kim Listing 1234

    20/34

    575 1D30 A9 27 LOAD8 LDA #$27

  • 7/23/2019 Kim Listing 1234

    21/34

    KIM.ASM 6502 CROSS-ASSEMBLER ver 1.0rmb 12-17-1981 Page 11LINE LOC INSTR SOURCE CODE576 1D32 8D 42 17 STA SBD DISABLE DATA IN577 1D35 20 31 1E JSR PRTST578 1D38 4C 4F 1C JMP START

    579 ;580 1D3B 20 9D 1F LOADE1 JSR GETBYT DUMMY581 1D3E A2 11 LOADER LDX #$11 X-OFF ERR KIM582 1D40 D0 EE BNE LOAD8583 ; ** DUMP TO TTY FROM OPEN CELL ADDRESS TO584 ; LIMHL, LIMHH **585 1D42 A9 00 DUMP LDA #$00 1D42586 1D44 85 F8 STA INL587 1D46 85 F9 STA INH CLEAR RECORD COUNT588 1D48 A9 00 DUMP0 LDA #$00589 1D4A 85 F6 STA CHKHI CLEAR CHKSUM590 1D4C 85 F7 STA CHKSUM

    591 1D4E 20 2F 1E JSR CRLF PRINT CR LF592 1D51 A9 3B LDA #$3B PRINT SEMICOLON593 1D53 20 A0 1E JSR OUTCH594 1D56 A5 FA LDA POINTL TEST POINT GT OR ET595 1D58 CD F7 17 CMP EAL HI LIMIT GOTO EXIT596 1D5B A5 FB LDA POINTH597 1D5D ED F8 17 SBC EAH598 1D60 90 18 BCC DUMP4599 1D62 A9 00 LDA #$00 PRINT LAST RECORD600 1D64 20 3B 1E JSR PRTBYT 0 BYTES601 1D67 20 CC 1F JSR OPEN602 1D6A 20 1E 1E JSR PRTPNT603 1D6D A5 F6 LDA CHKHI PRINT CHKSUM

    604 1D6F 20 3B 1E JSR PRTBYT FOR LAST RECORD605 1D72 A5 F7 LDA CHKSUM606 1D74 20 3B 1E JSR PRTBYT607 1D77 4C 64 1C JMP CLEAR608 ;609 1D7A A9 18 DUMP4 LDA #$18 PRINT 24 BYTE COUNT 1D7A610 1D7C AA TAX SAVE AS INDEX611 1D7D 20 3B 1E JSR PRTBYT612 1D80 20 91 1F JSR CHK613 1D83 20 1E 1E JSR PRTPNT614 1D86 A0 00 DUMP2 LDY #$00 PRINT 24 BYTES615 1D88 B1 FA LDA (POINTL),Y GET DATA616 1D8A 20 3B 1E JSR PRTBYT PRINT DATA617 1D8D 20 91 1F JSR CHK COMPUTE CHKSUM618 1D90 20 63 1F JSR INCPT INCREMENT POINT619 1D93 CA DEX620 1D94 D0 F0 BNE DUMP2621 1D96 A5 F6 LDA CHKHI PRINT CHKSUM622 1D98 20 3B 1E JSR PRTBYT623 1D9B A5 F7 LDA CHKSUM624 1D9D 20 3B 1E JSR PRTBYT625 1DA0 E6 F8 INC INL INCR RECORD COUNT626 1DA2 D0 02 BNE DUMP3627 1DA4 E6 F9 INC INH628 1DA6 4C 48 1D DUMP3 JMP DUMP0

    629 ;630 1DA9 20 CC 1F SPACE JSR OPEN OPEN NEW CELL 1DA9631 1DAC 20 2F 1E SHOW JSR CRLF PRINT CR LF

  • 7/23/2019 Kim Listing 1234

    22/34

    632 1DAF 20 1E 1E SHOW1 JSR PRTPNT

  • 7/23/2019 Kim Listing 1234

    23/34

    KIM.ASM 6502 CROSS-ASSEMBLER ver 1.0rmb 12-17-1981 Page 12LINE LOC INSTR SOURCE CODE633 1DB2 20 9E 1E JSR OUTSP PRINT SPACE634 1DB5 A0 00 LDY #$00 PRINT DATA SPECIFIED635 1DB7 B1 FA LDA (POINTL),Y BY POINT AD=LDA EXT

    636 1DB9 20 3B 1E JSR PRTBYT637 1DBC 20 9E 1E JSR OUTSP PRINT SPACE638 1DBF 4C 64 1C JMP CLEAR639 ;640 1DC2 20 63 1F RTRN JSR INCPT OPEN NEXT CELL 1DC2641 1DC5 4C AC 1D JMP SHOW642 ;643 1DC8 A6 F2 GOEXEC LDX SPUSER 1DC8644 1DCA 9A TXS645 1DCB A5 FB LDA POINTH PROGRAM RUNS FROM646 1DCD 48 PHA OPEN CELL ADDRESS647 1DCE A5 FA LDA POINTL

    648 1DD0 48 PHA649 1DD1 A5 F1 LDA PREG650 1DD3 48 PHA651 1DD4 A6 F5 LDX XREG RESTORE REGS652 1DD6 A4 F4 LDY YREG653 1DD8 A5 F3 LDA ACC654 1DDA 40 RTI655 ;656 1DDB C9 20 SCAN CMP #$20 OPEN CELL657 1DDD F0 CA BEQ SPACE658 1DDF C9 7F CMP #$7F RUB OUT (KIM)659 1DE1 F0 1B BEQ STV660 1DE3 C9 0D CMP #$0D NEXT CELL

    661 1DE5 F0 DB BEQ RTRN662 1DE7 C9 0A CMP #$0A PREV CELL663 1DE9 F0 1C BEQ FEED664 1DEB C9 2E CMP #'. MODIFY CELL665 1DED F0 26 BEQ MODIFY666 1DEF C9 47 CMP #'G GO EXEC667 1DF1 F0 D5 BEQ GOEXEC668 1DF3 C9 51 CMP #'Q DUMP FROM OPEN CELL TO HI LIMIT669 1DF5 F0 0A BEQ DUMPV670 1DF7 C9 4C CMP #'L LOAD TAPE671 1DF9 F0 09 BEQ LOADV672 1DFB 4C 6A 1C JMP READ IGNORE ILLEGAL CHAR673 ;674 1DFE 4C 4F 1C STV JMP START675 1E01 4C 42 1D DUMPV JMP DUMP676 1E04 4C E7 1C LOADV JMP LOAD677 ;678 1E07 38 FEED SEC 1E07679 1E08 A5 FA LDA POINTL DEC DOUBLE BYTE680 1E0A E9 01 SBC #$01 AT POINTL AND POINTH681 1E0C 85 FA STA POINTL682 1E0E B0 02 BCS FEED1683 1E10 C6 FB DEC POINTH684 1E12 4C AC 1D FEED1 JMP SHOW685 ;

    686 1E15 A0 00 MODIFY LDY #$00 GET CONTENTS OF INPUT BUFF687 1E17 A5 F8 LDA INL INL AND STORE IN LOC688 1E19 91 FA STA (POINTL),Y SPECIFIED BY POINT

  • 7/23/2019 Kim Listing 1234

    24/34

    689 1E1B 4C C2 1D JMP RTRN

  • 7/23/2019 Kim Listing 1234

    25/34

    KIM.ASM 6502 CROSS-ASSEMBLER ver 1.0rmb 12-17-1981 Page 13LINE LOC INSTR SOURCE CODE690 ;691 ; ** SUBROUTINES FOLLOW **692 1E1E A5 FB PRTPNT LDA POINTH PRINT POINTL, POINTH 1E1E

    693 1E20 20 3B 1E JSR PRTBYT694 1E23 20 91 1F JSR CHK695 1E26 A5 FA LDA POINTL696 1E28 20 3B 1E JSR PRTBYT697 1E2B 20 91 1F JSR CHK698 1E2E 60 RTS699 ; **PRINT STRING OF ASCII CHARS FROM TOP+X TO TOP700 1E2F A2 07 CRLF LDX #$07701 1E31 BD D5 1F PRTST LDA TOP,X702 1E34 20 A0 1E JSR OUTCH703 1E37 CA DEX704 1E38 10 F7 BPL PRTST STOP ON INDEX ZERO

    705 1E3A 60 RTS706 ; ** PRINT 1 HEX BYTE AS 2 ASCII CHARS **707 1E3B 85 FC PRTBYT STA TEMP 1E3B708 1E3D 4A LSR A SHIFT CHAR RIGHT 4 BITS709 1E3E 4A LSR A710 1E3F 4A LSR A711 1E40 4A LSR A712 1E41 20 4C 1E JSR HEXTA CONVERT TO HEX AND PRINT713 1E44 A5 FC LDA TEMP GET OTHER HALF714 1E46 20 4C 1E JSR HEXTA CONVERT TO HEX AND PRINT715 1E49 A5 FC LDA TEMP RESTORE BYTE IN A AND RETURN716 1E4B 60 RTS717 1E4C 29 0F HEXTA AND #$0F MASK HI 4 BITS

    718 1E4E C9 0A CMP #$0A719 1E50 18 CLC720 1E51 30 02 BMI HEXTA1721 1E53 69 07 ADC #$07 ALPHA HEX722 1E55 69 30 HEXTA1 ADC #$30 DEC HEX723 1E57 4C A0 1E JMP OUTCH PRINT CHAR724 ; ** GET 1 CHAR FROM TTY, CHAR IN A725 1E5A 86 FD GETCH STX TMPX SAVE X REG 1E5A726 1E5C A2 08 LDX #$08 SET UP 8-BIT COUNT727 1E5E A9 01 LDA #$01728 1E60 2C 40 17 GET1 BIT SAD729 1E63 D0 22 BNE GET6730 1E65 30 F9 BMI GET1 WAIT FOR START BIT731 1E67 20 D4 1E JSR DELAY DELAY 1 BIT732 1E6A 20 EB 1E GET5 JSR DEHALF DELAY 1/2 BIT TIME733 1E6D AD 40 17 GET2 LDA SAD GET 8 BITS734 1E70 29 80 AND #$80 MASK OFF LOW ORDER BITS735 1E72 46 FE LSR CHAR SHIFT RIGHT CHAR736 1E74 05 FE ORA CHAR737 1E76 85 FE STA CHAR738 1E78 20 D4 1E JSR DELAY DELAY 1 BIT TIME739 1E7B CA DEX740 1E7C D0 EF BNE GET2 GET NEXT CHAR741 1E7E 20 EB 1E JSR DEHALF EXIT THIS ROUTINE742 1E81 A6 FD LDX TMPX

    743 1E83 A5 FE LDA CHAR744 1E85 2A ROL A SHIFT OFF PARITY745 1E86 4A LSR A

  • 7/23/2019 Kim Listing 1234

    26/34

    746 1E87 60 GET6 RTS

  • 7/23/2019 Kim Listing 1234

    27/34

    KIM.ASM 6502 CROSS-ASSEMBLER ver 1.0rmb 12-17-1981 Page 14LINE LOC INSTR SOURCE CODE747 ; ** INITIALIZATION FOR SIGMA **748 1E88 A2 01 INITS LDX #$01 SET KB MODE TO ADDR 1E88749 1E8A 86 FF STX MODE

    750 1E8C A2 00 INIT1 LDX #$00751 1E8E 8E 41 17 STX PADD FOR SIGMA USE SADD752 1E91 A2 3F LDX #$3F753 1E93 8E 43 17 STX PBDD FOR SIGMA USE SBDD754 1E96 A2 07 LDX #$07 ENABLE DATA IN755 1E98 8E 42 17 STX SBD OUTPUT756 1E9B D8 CLD757 1E9C 78 SEI758 1E9D 60 RTS759 ; ** PRINT ONE CHAR IN A **760 1E9E A9 20 OUTSP LDA #$20 PRINT SPACE 1E9E761 1EA0 85 FE OUTCH STA CHAR

    762 1EA2 86 FD STX TMPX763 1EA4 20 D4 1E JSR DELAY DELAY 10/11 BIT CODE SYNC764 1EA7 AD 42 17 LDA SBD START BIT765 1EAA 29 FE AND #$FE766 1EAC 8D 42 17 STA SBD767 1EAF 20 D4 1E JSR DELAY768 1EB2 A2 08 LDX #$08769 1EB4 AD 42 17 OUT1 LDA SBD DATA BIT770 1EB7 29 FE AND #$FE771 1EB9 46 FE LSR CHAR772 1EBB 69 00 ADC #$00773 1EBD 8D 42 17 STA SBD774 1EC0 20 D4 1E JSR DELAY

    775 1EC3 CA DEX776 1EC4 D0 EE BNE OUT1777 1EC6 AD 42 17 LDA SBD STOP BIT778 1EC9 09 01 ORA #$01779 1ECB 8D 42 17 STA SBD780 1ECE 20 D4 1E JSR DELAY STOP BIT781 1ED1 A6 FD LDX TMPX RESTORE INDEX782 1ED3 60 RTS783 ; ** DELAY 1 BIT TIME **784 1ED4 AD F3 17 DELAY LDA CNTH30 1ED4785 1ED7 8D F4 17 STA TIMH786 1EDA AD F2 17 LDA CNTL30787 1EDD 38 DE2 SEC788 1EDE E9 01 DE4 SBC #$01789 1EE0 B0 03 BCS DE3790 1EE2 CE F4 17 DEC TIMH791 1EE5 AC F4 17 DE3 LDY TIMH792 1EE8 10 F3 BPL DE2793 1EEA 60 RTS794 ; ** DELAY 1/2 BIT TIME **795 1EEB AD F3 17 DEHALF LDA CNTH30 1EEB796 1EEE 8D F4 17 STA TIMH797 1EF1 AD F2 17 LDA CNTL30798 1EF4 4A LSR A799 1EF5 4E F4 17 LSR TIMH

    800 1EF8 90 E3 BCC DE2801 1EFA 09 80 ORA #$80802 1EFC B0 E0 BCS DE4

  • 7/23/2019 Kim Listing 1234

    28/34

    803 ; ** SUB TO DETERMINE IF KEY IS DEPRESSED OR

  • 7/23/2019 Kim Listing 1234

    29/34

    KIM.ASM 6502 CROSS-ASSEMBLER ver 1.0rmb 12-17-1981 Page 15LINE LOC INSTR SOURCE CODE804 ; CONDITION OF SSW KEY NOT DEPRESSED OR805 ; TTY MODE A=0806 ; KEY DEPRESSED OR KB MODE A NOT ZERO

    807 1EFE A0 03 AK LDY #$03 3 ROWS808 1F00 A2 01 LDX #$01 DIGIT 0809 1F02 A9 FF ONEKEY LDA #$FF810 1F04 8E 42 17 AK1 STX SBD OUTPUT DIGIT811 1F07 E8 INX GET NEXT DIGIT812 1F08 E8 INX813 1F09 2D 40 17 AND SAD INPUT SEGMENTS814 1F0C 88 DEY815 1F0D D0 F5 BNE AK1816 1F0F A0 07 LDY #$07817 1F11 8C 42 17 STY SBD818 1F14 09 80 ORA #$80

    819 1F16 49 FF EOR #$FF820 1F18 60 RTS821 ; ** OUTPUT TO 7-SEGMENT DISPLAY **822 1F19 A0 00 SCAND LDY #$00 GET DATA 1F19823 1F1B B1 FA LDA (POINTL),Y SPECIFIED BY POINT824 1F1D 85 F9 STA INH SET UP DISPLAY BUFFER825 1F1F A9 7F LDA #$7F CHANGE SEG826 1F21 8D 41 17 STA PADD TO OUTPUT827 1F24 A2 09 LDX #$09 INIT DIGIT NUMBER828 1F26 A0 03 LDY #$03 OUTPUT 3 BYTES829 1F28 B9 F8 00 SCAND1 LDA INL,Y GET BYTE830 1F2B 4A LSR A GET MSD831 1F2C 4A LSR A

    832 1F2D 4A LSR A833 1F2E 4A LSR A834 1F2F 20 48 1F JSR CONVD OUTPUT CHAR835 1F32 B9 F8 00 LDA INL,Y GET BYTE AGAIN836 1F35 29 0F AND #$0F GET LSD837 1F37 20 48 1F JSR CONVD OUTPUT CHAR838 1F3A 88 DEY SET UP FOR NEXT BYTE839 1F3B D0 EB BNE SCAND1840 1F3D 8E 42 17 STX SBD ALL DIGITS OFF841 1F40 A9 00 LDA #$00 CHANGE SEGMENT842 1F42 8D 41 17 STA PADD TO INPUTS843 1F45 4C FE 1E JMP AK GET ANY KEY844 ; ** CONVERT AND DISPLAY HEX (USED BY SCAND ONLY)**845 1F48 84 FC CONVD STY TEMP846 1F4A A8 TAY SAVE Y847 1F4B B9 E7 1F LDA TABLE,Y USE CHAR AS INDEX848 1F4E A0 00 LDY #$00 LOOKUP CONVERSION849 1F50 8C 40 17 STY SAD TURN OFF SEGMENTS850 1F53 8E 42 17 STX SBD OUTPUT DIGIT ENABLE851 1F56 8D 40 17 STA SAD OUTPUT SEGMENTS852 1F59 A0 7F LDY #$7F DELAY 500 CYCLES853 1F5B 88 CONVD1 DEY854 1F5C D0 FD BNE CONVD1855 1F5E E8 INX GET NEXT DIGIT NUMBER856 1F5F E8 INX ADD 2

    857 1F60 A4 FC LDY TEMP RESTORE Y858 1F62 60 RTS859 ; ** INCREMENT POINT **

  • 7/23/2019 Kim Listing 1234

    30/34

    860 1F63 E6 FA INCPT INC POINTL

  • 7/23/2019 Kim Listing 1234

    31/34

    KIM.ASM 6502 CROSS-ASSEMBLER ver 1.0rmb 12-17-1981 Page 16LINE LOC INSTR SOURCE CODE861 1F65 D0 02 BNE INCPT2862 1F67 E6 FB INC POINTH863 1F69 60 INCPT2 RTS

    864 ; ** GET KEY FROM KEYPAD A=KEYVALUE **865 1F6A A2 21 GETKEY LDX #$21 START AT DIGIT 0 1F6A866 1F6C A0 01 GETKE5 LDY #$01 GET 1 ROW867 1F6E 20 02 1F JSR ONEKEY868 1F71 D0 07 BNE KEYIN A=0 NO KEY869 1F73 E0 27 CPX #$27 TEST FOR DIGIT 2870 1F75 D0 F5 BNE GETKE5871 1F77 A9 15 LDA #$15 15=NOKEY872 1F79 60 RTS873 1F7A A0 FF KEYIN LDY #$FF874 1F7C 0A KEYIN1 ASL A SHIFT LEFT875 1F7D B0 03 BCS KEYIN2 UNTIL Y=KEY NO

    876 1F7F C8 INY877 1F80 10 FA BPL KEYIN1878 1F82 8A KEYIN2 TXA879 1F83 29 0F AND #$0F MASK MSD880 1F85 4A LSR A DIVIDE BY 2881 1F86 AA TAX882 1F87 98 TYA883 1F88 10 03 BPL KEYIN4884 1F8A 18 KEYIN3 CLC885 1F8B 69 07 ADC #$07 MULT (X-1 TIMES A886 1F8D CA KEYIN4 DEX887 1F8E D0 FA BNE KEYIN3888 1F90 60 RTS

    889 ; ** COMPUTE CHECKSUM **890 1F91 18 CHK CLC891 1F92 65 F7 ADC CHKSUM892 1F94 85 F7 STA CHKSUM893 1F96 A5 F6 LDA CHKHI894 1F98 69 00 ADC #$00895 1F9A 85 F6 STA CHKHI896 1F9C 60 RTS897 ; ** GET 2 HEX CHARS AND PACK INTO INL AND INH **898 1F9D 20 5A 1E GETBYT JSR GETCH899 1FA0 20 AC 1F JSR PACK900 1FA3 20 5A 1E JSR GETCH901 1FA6 20 AC 1F JSR PACK902 1FA9 A5 F8 LDA INL903 1FAB 60 RTS904 ; ** SHIFT CHAR IN A INTO INL AND INH **905 1FAC C9 30 PACK CMP #$30 CHECK FOR HEX 1FAC906 1FAE 30 1B BMI UPDAT2907 1FB0 C9 47 CMP #$47 NOT HEX EXIT908 1FB2 10 17 BPL UPDAT2909 1FB4 C9 40 CMP #$40 CONVERT TO HEX910 1FB6 30 03 BMI UPDATE911 1FB8 18 CLC912 1FB9 69 09 ADC #$09913 1FBB 2A UPDATE ROL A

    914 1FBC 2A ROL A915 1FBD 2A ROL A916 1FBE 2A ROL A

  • 7/23/2019 Kim Listing 1234

    32/34

    917 1FBF A0 04 LDY #$04 SHIFT INTO I/O BUFFER

  • 7/23/2019 Kim Listing 1234

    33/34

    KIM.ASM 6502 CROSS-ASSEMBLER ver 1.0rmb 12-17-1981 Page 17LINE LOC INSTR SOURCE CODE918 1FC1 2A UPDAT1 ROL A919 1FC2 26 F8 ROL INL920 1FC4 26 F9 ROL INH

    921 1FC6 88 DEY922 1FC7 D0 F8 BNE UPDAT1923 1FC9 A9 00 LDA #$00 A=0 IF HEX NUM924 1FCB 60 UPDAT2 RTS925 ;926 1FCC A5 F8 OPEN LDA INL MOVE I/O BUFFER TO POINT927 1FCE 85 FA STA POINTL928 1FD0 A5 F9 LDA INH TRANSFER INH- POINTH929 1FD2 85 FB STA POINTH930 1FD4 60 RTS931 ;932 ; ** TABLES **

    933 1FD5 00 00 TOP .DBYTE $0000,$0000,$0000,$0A0D 1FD5934 1FD7 00 00935 1FD9 00 00936 1FDB 0A 0D938 1FDD 4D .BYTE 'M,'I,'K,$20,$13 KIM939 1FDE 49940 1FDF 4B941 1FE0 20942 1FE1 13944 1FE2 52 .BYTE 'R,'R,'E,$20,$13 ERR945 1FE3 52946 1FE4 45947 1FE5 20

    948 1FE6 13950 1FE7 BF 86 TABLE .DBYTE $BF86,$DBCF,$E6ED,$FD87 ;0-7 1FE7951 1FE9 DB CF952 1FEB E6 ED953 1FED FD 87955 1FEF FF EF .DBYTE $FFEF,$F7FC,$B9DE,$F9F1 ;8-F HEX TO 7-SEG956 1FF1 F7 FC957 1FF3 B9 DE958 1FF5 F9 F1960 ;961 ; ** INTERRUPT VECTORS **962 *= $1FFA963 1FFA 1C 1C NMIENT .WORD NMIT965 1FFC 22 1C RSTENT .WORD RST967 1FFE 1F 1C IRQENT .WORD IRQT969 .END

    No Errors found above.

  • 7/23/2019 Kim Listing 1234

    34/34

    KIM.ASM SYMBOL TABLE DUMPACC 00F3 DET3 1C3A INTVEB 1932 OUT1 1EB4 SAH 17F6ADDR 1CBE DUMP 1D42 IRQENT 1FFE OUTBT 1961 SAL 17F5ADDRM 1CC8 DUMP0 1D48 IRQP27 1BFE OUTBTC 195E SAVE 1C00AK 1EFE DUMP2 1D86 IRQT 1C1F OUTCH 1EA0 SAVX 17E9AK1 1F04 DUMP3 1DA6 IRQV 17FE OUTCHT 197A SBD 1742

    CHAR 00FE DUMP4 1D7A KEYIN 1F7A OUTSP 1E9E SCAN 1DDBCHK 1F91 DUMPT 1800 KEYIN1 1F7C PACK 1FAC SCAND 1F19CHKH 17E8 DUMPT1 1814 KEYIN2 1F82 PACKT 1A00 SCAND1 1F28CHKHI 00F6 DUMPT2 1833 KEYIN3 1F8A PACKT1 1A0F SHOW 1DACCHKL 17E7 DUMPT3 1854 KEYIN4 1F8D PACKT2 1A15 SHOW1 1DAFCHKSUM 00F7 DUMPT4 1865 LOAD 1CE7 PACKT3 1A22 SPACE 1DA9CHKT 194C DUMPV 1E01 LOAD10 192B PADD 1741 SPUSER 00F2CHT1 1982 EAH 17F8 LOAD11 18C2 PBDD 1743 START 1C4FCHT2 198E EAL 17F7 LOAD12 190F PCCMD 1CDC STEP 1CD3CHT3 1991 FEED 1E07 LOAD13 18FA PCH 00F0 STV 1DFECLEAR 1C64 FEED1 1E12 LOAD2 1D0E PCL 00EF SYNC 1891CLK1T 1744 GET1 1E60 LOAD3 1D1D PLL1 1A75 SYNC1 1896

    CLK64T 1746 GET2 1E6D LOAD8 1D30 PLL2 1A84 SYNC2 18ABCLK8T 1745 GET5 1E6A LOADE1 1D3B PLLCAL 1A6B TAB 1871CLKKT 1747 GET6 1E87 LOADER 1D3E POINTH 00FB TABLE 1FE7CLKRDI 1747 GETBYT 1F9D LOADT 1873 POINTL 00FA TEMP 00FCCLKRDT 1746 GETCH 1E5A LOADT4 18B5 PREG 00F1 TIMH 17F4CNTH30 17F3 GETKE5 1F6C LOADT5 18D7 PRTBYT 1E3B TMPX 00FDCNTL30 17F2 GETKEY 1F6A LOADT6 18EC PRTPNT 1E1E TOP 1FD5CONVD 1F48 GOEXEC 1DC8 LOADT7 18F8 PRTST 1E31 TTYKB 1C77CONVD1 1F5B GOV 1CD9 LOADT8 1915 RDBIT 1A41 TTYKB1 1C7CCRLF 1E2F HEX1 1978 LOADT9 1929 RDBIT2 1A53 UPDAT1 1FC1DATA1 1CB0 HEXOUT 196F LOADV 1E04 RDBIT3 1A50 UPDAT2 1FCBDATA2 1CC3 HEXTA 1E4C MODE 00FF RDBIT4 1A63 UPDATE 1FBBDATAM 1CCC HEXTA1 1E55 MODIFY 1E15 RDBYT 19F3 VEB 17EC

    DATAM1 1CCE ID 17F9 NMIENT 1FFA RDCHT 1A24 XREG 00F5DATAM2 1CD0 INCPT 1F63 NMIP27 1BFA RDCHT1 1A29 YREG 00F4DE2 1EDD INCPT2 1F69 NMIT 1C1C READ 1C6A ZRO 19C4DE3 1EE5 INCVE1 19F2 NMIV 17FA RST 1C22 ZRO1 19C7DE4 1EDE INCVEB 19EA ONE 199E RSTENT 1FFC ZRO2 19D6DEHALF 1EEB INH 00F9 ONE1 19A1 RSTP27 1BFCDELAY 1ED4 INIT1 1E8C ONE2 19B0 RSTV 17FCDET1 1C31 INITS 1E88 ONEKEY 1F02 RTRN 1DC2DET2 1C42 INL 00F8 OPEN 1FCC SAD 1740191 Labels listed