Home

An 8080 Simulator for the 6502, KIM-1 Version [1978]

image

Contents

1. Bi FC IOIN LDAIY PNT FINPUT FROM PORT 015A 85 ES STAZ ITO 015C 68 IOEX RTS PAGE 8 9150 9160 9161 8164 9165 0167 0169 04168 616E 916F 9170 9172 0173 0174 9175 8178 0178 017C 9170 917F 0181 9183 8184 9185 0187 8188 90189 16C 818E 0191 2192 8195 0197 8194 919C 8019F 0141 81A4 0146 8080 SIMULATOR C 1978 BY DANN MCCREARY 20 18 4C 28 Fo 4C Be 28 A2 20 50 20 A2 20 A2 4C 7 07 0 27 1102 91 9703 7683 0 E6 FC F8 t esARILOG IMMEDIATE ENTRY ta sa ARIM JSR IMM IGET IMMEDIATE BYTE CLC JMP IMARL 1GO DO ARITH ROUTINE tttetuPUSH ENTRY eertsene PUSH LSRA 918 THIS A PUSH ACS SKP YES GO PUSH CMPIM 393 BNO IS THIS CALL BEO CALLUN YES GO CALL JMP UNPEF JNO UNDEFINED 8 ASLA AN INDEX TAX 118 TT PUSH PSW BNE PUSHT 3NO KEEP INDEX DEX JYES ADJUST INDEX PUSHT TXA TEMP SAVE PHA JSR DECSP JOECREMENT STACK POINTER JSR SP PNT PIT BECOMES POINTER PLA RECOVER TEMP SAVE TAX RP MEM LOYIM 4321 JCLEAR INDEX RPLP L0AZX REGS NEXT RP DATA STAIY PNT BSTORE IN MEMORY DEX DEY BEQ RPLP RTS RTS te teJUMP ENTRY eeteere JMP CLV 9 INOICATE A JUMP e eeCALL ENTRY eervence CALL JSR CONDIY TEST CONDITION CALLUN MET JMP DBLINC sNOT MET JUMPUN CLV SINOICATE A JUMP CALLUN JSR PC PNY GET NEXT 2 BYTES LOX1M SCR PINTO SCRATCH JSR MEM RE BVC JM 3 JUMP JSR DBLI
2. 0074 TIME PSw A A C A C A 60 SHOW C 340 A E A E A 60 SHOW E 9300 A D A D A 313 SHOW D 01 ISET STACK POINTER DISABLE INTERRUPTS INO OPERATION SPOP UNUSED RETURN OFF STACK CLEAR CARRY UPDATE SECONDS MINUTE UPDATE SNOT NOW YES CLEAR SECONDS UPDATE MINUTES JHOUR UPDATE BNOT NOW sYES CLEAR MINUTES JUPDATE HOURS SUSE 324 FOR 24 HOUR CLOCK SUSE S00 FOR 24 HOUR CLOCK H POINTM jekIMe MeD M M M M C 5 9 88 8 495337 JMOVE TIME TO DISP BUFFER JSET TIME DELAY VALUE INTERRUPT TIMEBASEs ee9 99 OEBOUNCE INTERRUPTe thtttett tthbtt tb ottett te oteatett4hbottetteoteottttteo PAGE 20 8080 SIMULATOR C 1978 BY DANN MCCREARY 8835 0038 993A 830 BOSE 9041 0942 0042 845 0046 0047 9048 0049 904A 9048 904C 9040 4 99058 9051 8052 2054 8055 0056 8057 8859 905A 0058 9e5E 8968 0963 9066 2869 oo6c 06 c3 20 20 85 60 6508 QA 4500 359009 BIJA 3500 OF Fe 6500 15 5880 2809 1F iF 6A1F ES WATT C65 DSKBD 1 CPI 0A J SET DCR 8 JNZ2 WAIT EI JMP TIME 36502 DISPLAY amp KEYBOARD SUB NUMERIC KEY PRESSED I YES GO SET TIME COUNT DOWN DELAY JKEEP WAITING ENABLE INTERRUPTS GO SET TIME eeeeeeeALTERNATE FOR INTERRUPT TIMEBASEs s4 4 Jp WAIT JKEEP WAITING FOR INTERRUPT thht thtthhthttthbhbhbhbhtthtthttettbttththttttthttttthttht SET MOV
3. PAR ALL REC DONE TAY ROLZ ASLA Taz LDAZ RORA ORAIM TAX TYA BEG 1YNCZ LSRA BEA BCS LSRZ YXA AND IM 8cs ANDIM TAX 87x2 RTS PSw FLAG PS 46 DONE FLAG ALL PAR FLIP FLAG SBF REC did Pg ISAVE RESULT CLEAR SIGN BIT PUT NEW SIGN IN CARRY CLEAR LSB OF FLAG NEW SIGN IN PSW JPRESET Z P amp PRESET PISAVE IN X SRECOVER WORD SIF ZERO ALL DONE MFLIP FLAG TEST EACH BIT JNO MORE BITS JTEST FLAG JRECOVER PSn SCLEAR Z 9JPARITY EVEN INO CLEAR 8 TO X STORE AS PSM PAGE 16 8080 SIMULATOR C 1978 BY DANN MCCREARY 2350 935F 8361 0363 0365 8367 9364 36C 836F 0370 9371 9372 0374 0376 0378 7 337C 8370 037E 0380 0383 8385 8387 8388 038A 8380 O38F 8398 0391 9392 0394 8396 8397 B39A 839C 039E A2 AB 08 85 99 BS 60 RA A8 A2 DO A2 DO Bt 48 88 19 20 A2 18 85 79 95 E8 98 29 De 69 20 A2 Ag De OA 17 82 19 ES E500 E6 E600 19 8 5 FA 8303 QA oE ES E5900 ES 01 F2 9403 28 7 weeeeaeeSUBROUTINES tenete MOVE REGISTER PAIRSe PC PNT LOXIM PC SOURCE 18 PC RP PNT LDYIM JDESTINATION IS PN BNE RP RP GO TRANSFER RP SCR LDYIM SCR JOESTINATION IS SCR RP RP LDAZX REGS 1SET LOW ORDER SOURCE STAY REGS JSTORE IN LOW DESTINATION LOAZX R
4. PLA TAX JSR JMP NSP SP Lx CHL INCOFC sOROP LSB YES POINT TO IT ISAVE POINTER JGET DESTINATION INDEX 9y0A0 NO GO OO LXI YES RECOVER POINTER SET HL AS DESTINATION PGO ADD RP t HL CARRY PER 6502 CARRYs 4s FLAG Psu PC PNT MEM RR DBL INC ISAVE RESULT BRING IN CARRY CHG TO BORROW IF SUBTRACT PRESTORE CARRY BORROW JRECOVER RESULT PC INTO PNT PRECOVER POINTER SUSE TO INDEX DESTINATION RP JMOVE IMMEOIATE OATA TO RP SBUMP PROGRAM COUNTER PAGE 11 8080 SIMULATOR C 1978 BY DANN MCCREARY 023C 23F 0241 0242 0244 8246 8248 0249 924A 024D 2250 0252 8255 8257 0254 0258 029C 025E 0025F 0260 8262 8265 8267 8269 8268 26C 026D 026E 8270 8273 8275 2c F 4 90 AS 81 68 48 20 20 A2 20 A2 20 68 4A OA AA 4C A2 A1 85 68 GA AA FQ 4C A2 pa 4 4LOAD amp STORE ENTRYessnxe to n EBO1 LDSTR 08 23 ES STAX E4 DIRECT 5003 8483 19 093 17 7003 GE LOAD 93 A003 17 LOAD ES LOAX ES STORE 93 7pe1 18 STAD RIT REQ LSRA LOAZ STAIX RTS PHA JSR JSR LOXIM JSR LOXIM JSR PLA LSRA BCS ASLA TAX REG JMP LOXIM LOAIX STAZ RTS ASLA TAX BEQ JMP LOXIM BNE FOUR DIRECT LDAX A REGS PC PNT DBLINC SCR MEM RP PNT SCR RP STORE LDAD MEM RP REGS STAD RP MEM
5. 178E e176F 1791 1792 1793 1795 1797 1799 1798 1790 179F 1741 179F 1742 1745 1747 8080 SIMULATOR 1978 BY DANN MCCREARY ORG 17680 t tt t seMAIN CONTROL 2 FF MNSTRT LOXIM 9A TXS 28 9117 31 JSR AS 4 LDAZ 29 07 ANDIM 99 2 ORAIM 85 E4 STAZ 58 EXIT 68 RTS EA NOP sFF 13ET STACK POINTER IFOR MINUMUM CONFIGURATION MAIN JEXECUTE ONE 8080 OP CODE PSW IGET 8088 STATUS 507 CLEAR PRECLEAR BITS 35302 PRESET BITS PSw 3SAVE IT INTERRUPTS sRETURN TO CALLER 9S es VARIATIONS FOR MINIMUM CONFIGURATIONe ee e eo 4C 221C JMP 4C DC1C JMP 58 CLI nea EF BNE MNITOR j KIM REGISTER SINGLE STEP PCCMD 9 KIMe PC SINGLE STEP FULL SPEED RUN MNSTRT 9 thtthttt tthtttithtttnahkhttt6ettththtthtttbthtthhkththtthnth 78 MATN SET na CLO A2 08 LOXIM At 7 LOAIX 88 E6 8742 A1 EF LOAIX B5 FE STAZ 49 76 EORIM FO 04 BEQ EA NOP SOON T ALLOW INTERRUPTS CLEAR DECIMAL MODE 300 LOAD INDEX L FETCH MEMORY M PCL SFETCH INSTRUCTION INST ISAVE IT MALT 918 THIS HALT ITR YES DON T UPDATE 6 eeVARTATION FOR INTERRUPT ACTIONe 42606 9 20 7600 ISR INT 160 CHECK FOR INTERRUPT 9 t t 6tuts tt 6th bthtththt th tttt tt tentt teteo 29 8303 JSR A2 02 ITR LOXIM AS FE LDAZ INCPC INCREMENT PC 382 ISET COUNTER INOEX INST SRECOVER INSTRUCTION PAGE 6 8 82 SIMULATOR C 1978 BY DANN MCCR
6. CPNT of STAX INO STAX INO PYES STORE A SAVE IPC TO POINTER JRECOVER TEMP 110407 STORE INDEX JLOAD DIRECT NO LOAD HL OTRECT IPOINT TO POINTER LOAD JMAKE INDEX STORE A DIRECT INO STORE HL DIRECT IPOINT TO POINTER PAGE 12 8080 SIMULATOR C 1978 BY DANN MCCREARY 0277 0279 0274 027C 027E 027F 281 9283 0284 8287 0288 28 028C 28F 8292 0295 0298 8299 029A 029C 029E 2 AQ 4A 90 AQ pg A9 AA 4C 48 C6 AQ 20 4C 2e 4C 98 08 81 95 60 c 02 OF 2 8 8723 F5 01 Boas 3863 ABBS 0217 2 7 6 t tt t INX DCX ENTRY et tt kx t INXDCX LDYIM DECIT LSRA BCC LOYIM CINCIT DRP ASLA BNE NOR LDAIM SP NOR TAX JMP INCDEC CR ENTRY eeeeee DCR SEC DECZ FLAG ENTRY amp eeeene INR LDYIM SINC BTH J3R ADDR JMP STATUS httkt M VyE MVI JSR IMM JMP MOVE eaeeeweaMAVE ENTRY eeeteae MOVIT TYA MVITI DEX BNE NME M STAIX HL NMEM STAZX REGS 1 RTS SET FOR DECREMENT y YES BNO SET FOR INCR LSB IFOR SP YES POINT TO SP SUSE AS INDEX ISET FOR DECREMENT FOR INCREMENT GO ADD ISET STATUS NOT CARRY IMMEDIATE ENTRYe tota IMMEDIATE BYTE JMOVE IT TO OESTINATION JGET SOURCE DATA 115 DEST MEMORY INO YES STORE IN MEMORY
7. STORE IN DEST REGISTER PAGE 13 8080 SIMULATOR C 1978 BY DANN 0241 0242 92A4 9246 0248 B2A9 2A8 92AC 02AF 0280 8262 0284 6285 8287 8289 0286 028C 0280 Q2BF e2ce eec e2c3 82C4 2C6 g2C8 B2CA 82CD 2cF 0201 82035 205 B8 59 A2 38 4c 98 95 90 98 45 AQ 98 98 05 29 8 2s 84 85 20 25 a5 85 68 19 at F5 3203 ES 63 ES ES 19 ES FF ES 3803 4 FF E4 ARITHMETIC ROUTINES weeneewADl ENTRYSts tht e ADC CLV ADD weeaeweeC MP ENTRY eereee CMP SCR SUB LOXIM BNE SRB ENTRY amp tt tusx SBB CLV eeteeweSlB ENTRY weeerene SUB DECZ SEC FLAG kittt t t ADO ENTRY eee ADD JMP AD CRY amp LOGICAL OPERATIONS 4 stik ORA ENTRY teaeene NRA TYA ORAZ A Bcc 80 XRA ENTRYest tt o EORZ A SOM LDYIM 520 BCC ALL tt ANA ENTRY taxtene ANA TYA PHA ORAZ A ASLA ANDIM 4510 TAY PLA ANDZ A ALL 3TY2 SCR STAZ A JSR STATUS LOAIM SEE ANDZ PSM ORAZ SCR STPSW STAZ PSw RTS MCCREARY JFLAG W CARRY yCHG DEST TO SCR 180 ONLY PS IS AFFECTED w BORROW FF FOR SUBTRACT 3GET SOURCE DATA JLOGICAL OR FOR A CLEAR AUX CRY JGET SOURCE DATA SLOGICAL EXCLUSIVE OR 408 WON T SET ANY FLAGS 1GO SAVE RESULT IGET SOURCE DATA IT LOGICAL OR OF BIT JTHREE BECOMES AUX CARRY
8. ded ded ded dede d hd SYMBOL DEFINITIONS ttt e GETKEY EQU 1F6A JaKIM KEYPAD SUBROUTINE SCAND EQU WSIFIO BeKIM DISPLAY SUBROUTINE SCANDS FOU MSIFYF P KIM DISPLAY SUBROUTINE PADD EQU 5 1701 KkIM PORT A DATA DIR REG PA EQU 51700 KIM PORT A DATA SADD EQU 8 1741 J KIM PORT SA DATA DIR REG SA EQU 31740 KIM PORT SA DATA PBDD EQU 43 1703 j KIM PORT B DATA DIR REG PB FQU 1702 KIM PORT B DATA MNITOR EQU amp 1C22 J KIM RESET ENTRY TO MONITOR PCCMD FQU 3s KIM PC SINGLE STEP ENTRY REGS EQU A 58080 REG BASE ADDR HL EQU L REGISTER PAIR PC EQU PCL 18080 PROGRAM COUNTER INST SCR SCURRENT 8080 INSTRUCTION HL QU HL REGS INDEXES TO REGISTERS ETC EQU DE RE6GS SP EQU SP REGS PC EQU PC REGS EQU DECIT REGS INCIT EQU INCIT REGS PNT EQu fSCR EQU SCR REGS SMASK EQU 80 PISOLATES SIGN BIT FROM PSW PMASK FQU s 04 sISOLATES PARITY BIT CMASK EQU amp s01 ISOLATES CARRY BIT ZMASK EQU 40 ISOLATES ZERO BIT SINC EQU s301 IFOR INR DCR MINSPD EQU 00 JSETS MINIMUM TRACE SPEED HALT EQU 376 18080 HALT OP CODE BKTBLN EQU ENDBKeBKTBL JLENGTH OF BRKPNT TABLE NORRK E QU amp SFFFF DUMMY BREAKPOINT ENTRY RSTHI EQU soe HIGH ORDER 8080 RST VECTOR INPG2 FQU 02 SECOND PG OF INTERP ROUTINES INTDIS EQU 501 JDISABLES INTERRUPTS PAGE 2 17FA 17FA 17FC 17FA 17FC 17FE 0076 0076 9977 0079 007
9. 2 5c R8T JENTRIES ON 187 INTRP PAGE 3ED 5D nc ARIM O3EE 64 ec PUSH 3EF 89 DC CALL O3FO 27 pc 1 0 3F1 88 JMP O3F2 BE oc POP O3F3 A9 RETURN 3F4 A4 pc CMP SENTRIES ON 2ND INTRP PAGE O3F5 AF oc ORA O3F6 B4 DC XRA O3F7 BB O3F8 A8 5C 88 93F9 A9 oc 8u8 83FA A1 DC aoc 83F8 AC ADO t eeINPUT OUTPUT PORT ADORESS e 6 DEFINITION TABLEeetteve ENTRIES MUST BE IN NORMAL ORDER IE MOST SYGNIFIGANT ADDRESS BYTE FIRSTS BSFC 1790 IOTBL pc 2 0217 18088 PORT A KIM PORT 1746 oc 2 amp 4217 36088 PORT 1 w KIM PORT SA PAGE 19 8088 SIMULATOR C 1978 BY DANN MCCREARY 8008 ogas 8004 eod 0008 0299 BOBA 8008 odooc 8800 000 8018 8013 9015 0016 8017 0018 92019 9018 001E 8820 0021 0022 8025 8024 8026 8029 3028 002E 6638 0931 8832 0033 8033 31 F3 c3 F1 87 79 3C 27 4F FE FA 78 3C 27 5F FE FA 1E 7 3C 27 57 16 21 72 28 73 28 71 7409 9900 08 2800 60 2800 90 13 2800 FARGO 37 s 4 48080 OEMONSTRATION PROGRAMaetaree tt amp sTIME OF DAY CLOCKe t s t ORG NEMO LXI SP DI NOP JMP INTIME POP TIME ORA MOV INR DAA OV CP1 JM 0v INR DAA MOV CPI J MVI OV INR DAA OV CPI JM MVT SHOW UXT MOV DCX OV ocx MOV NXTKY MVI e esALTERNATE FOR NXTKY MVI 323000
10. 8809 6808 9000 8080 SIMULATOR C 1978 BY OANN MCCREARY sOPTIONAL EXECUTIVE LOOPexenate t ttt499ENTER AT PSTART e E2 TRACE 85 FE 29 191F TRA c6 FE pa F9 A2 02 BRK AS EF BKLP DD DE00Q pa 07 AS F ND F 24 CA NXBK ne EE A2 FF START 20 8317 A9 00 80 0317 AD 0217 29 7 99 09 ne o8 AS EF 85 FA AS FO 86 FB 90 ci REG 4C 221C MONIT LOaZz STAZ JSR NECZ BNE LOXIM LOAZ CMPX BNE L0A2 CMPX REQ DEX NEX BNE LOXIM 7x3 JSR LOAIM STA LOA ANDIM LSRA BCC LSRA BNE LOAZ STAZ LOAZ STAZ 8cc JMP SPEED SCR SCAND SCR TRA BKTBLN PCL BKTBL 2 NXBK PCH BKTBL 1 MONIT BKLP FF SIM80 INSET PBDD PB 4307 BRK REG PCL POINTL PCH POINTH TRACE MNITOR IGE SPEED VALUE J KIM DISPLAY J TIMEOUT INO KEEP DISPLAYING SLOAD TABLE LENGTH IGET LO PC BYTE yDOES MATCH INO IGET HI PC BYTE 100E3 IT MATCH IYESI GO TO MONITOR NO TRY NEXT BREAK 9 MORE JSET STACK POINTER 300 ONE 8080 INSTR ISET FOR INPUT 1 KIM 1 KIM READ CONTROL PORT SONLY TEST CONTROL SWITCHES SPEED YES GO RUN INO REGISTER MODE BYES SKIP PC UPDATE NO MOVE PC POINT peKIMe peKIMe TRACE NO STEP PAGE 4 8080 SIMULATOR C 1978 BY OANN MCCREARY 9e BREAKPOINT ADDRESS TABLEesa4 n FFFF BKTBL DC 2 NOBRK PBREAKPOINT TABLE 2 ENNBRK JNEXT ADDRESS AFTER TABLE eer SPEED
11. 9RECOVER TEMP OUT STACK DATA IBUMP SP JPOINT TO HL SASSUME SPHL 118 17 SPHL sYES GO DO IT INO WHAT IS 17 JUNDEFINED RETURN JPCHL MASKS9 e6 49 49 SMASK PMASK CMASK ZMASK SSIGN MASK JPARITY BIT MASK JCARRY BIT MASK JZERO BIT MASK RESRKRAHAHHAHKHEHRHEAAEEHHATARELERNRAD PAGE 18 8080 SIMULATOR C 1978 BY DANN MCCREARY 9200 8200 0281 8202 2205 0207 0209 g2ec 8200 020F 9211 0214 0215 9216 0218 021A 0218 021C 0210 e21F 0220 0221 0223 2226 0227 0228 022A 822C 8220 822F 8230 8231 8254 0235 8236 9239 4 BD 25 50 60 AS 4c 4 pe A9 48 8A 4A Be 68 A2 20 A8 2A 45 46 4A 26 98 69 20 68 AA 20 4c tAG1 E4 e3 FE 221C 82 28 12 v2 8703 FS E4 E4 5003 ABOS 89093 ORG 02 0 eeeeeeTEST SELECTED PSW BITeeteene CONOIT LSRA TAX LOAX ANDZ RCS EORX RTN RTS NOP ENTRYeettt NOP LDAZ BEQ UNDEF JMP MSKTBL PSW RTN MSKTBL INST RTN MNITOR JMAKE INDEX TO MASK TABLE IGET CONDITION FLAG MASK 318 CONDITION SET JLEAVE Z FLAG SET 108 REVERSE IT JCHECK INSTRUCTION SIF NOP JUST RETURN GO TO SYSTEM MONITOR 4 DAD LXTI ENTRY eeeeeen LSRA ASLA RNE LDAIM NSP PHA TXA LSRA BCS DAD PLA YAY LDXIM JSR eaSET 8080 CARRY YAY ROLA EORZ LSRZ LSRA ROLZ TYA RTS Lx JSR
12. ATES ONE OF THE 848 S UNIMPLEMENTED CODES FOR SPECIAL USE IT IS SCB AND TAKES THE FORM CB XXXX WHERE XXXX IS THE ADDRESS OF ANY 6502 SUBROUTINE SUBROUTINES WHICH DON T REQUIRE ANY PARAMETERS MAY BE CALLED DIRECTLY SUBROUTINES WHICH REQUIRE SOME DATA PASSED TO OR FROM THEM MUST BE PREFACED OR ENDED WITH CODE TO MOVE THE REQUIRED DATA INTO OR NUT OF APPROPRIATE 8280 REGISTERS SEE AS AN EXAMPLE THE OSKBD SUBROUTINE ON PAGE 20 OF THE PROGRAM LISTINGS IT DOESN T NEED ANY DATA PASSED TO IT BUT MUST RETURN A KEY VALUE IN A SURF TO SPECIFY THE ADDRESS MINUS ONE ADDR 1 WHEN USING C65 RELOCATION INFORMATION THE 8680 SIMULATOR IN ITS MINIMUM CONFIGURATION DOES NOT RELY ON ANY KIM MONITOR SURROUTINES PERe8F RATHER CONTROL IS PASSED RACK AND FORTH BETWEEN THE SIMULATOR AND THE KIM MONITOR IT IS FASILY RELOCATED WITHIN A KIM SYSTEM AND EASILY ADAPTED TO OTHER NON KIM 6502 SYSTEMS THE SIMULATOR CAN BE RELOCATED IN ROM WITH THE EXCEPTION OF THE REGISTER AREA AND OTHER ZERO PAGE VARIABLES IF YOU DON T HAVE ACCESS TO AN ASSEMRLER BUT WOULD LIKE TO PUT THE SIMULATOR IN HIGH MEMORY LEAVE THE RELATIVE POSITIONS OF THE MAJOR ROUTINES 88108 4 03FF THE SAME AND JUST BE SURE CHANGE ALL THE HIGH NRDER ADDRESSES I E THE THIRD RYTE OF ANY THREE BYTE INBTRUCTION TO USE THE 80829 SIMULATOR IN A NON e KIM 6542 SYSTEM ADDITIONAL MODIFICATIONS ARE NECESSARY ALL PROGRAM LINES WHICH REFERENCE KIM MONITOR RESIDEN
13. B A XCHG Nan M DAD M DAD M DAD XCH6 MOV A C RLC RLC RLC RLC MOV C A ANY MOV E A MOV A C ANT F gQ ORA 8 MOV C A DBNC C65 DSKBDe1 CPI 15 JM DBNC JMP SHOW JSAVE INPUT IN B JSMIFT THE TIME ONE DIGIT LEFT BY ADDING HL TO ITSELF BAND ROTATING THE SECONDS LEFT JINSERT NEW OIGIT 3WwAIT FOR KEY RELEASE JRELEASEO INOT YET YES GO SHOW TIME weenene6S02 SUBROUTINE CALLED FROM 8080 t ss CALL MUST BE TO DSKBD JSR SCANOS JSR GETKEY STAZ RTS SUBROUTINE ADDRESS 1 4 4 4 49 DISPLAY BUFFER BREAD KIMe KEYPAD JRESULT TO 880880 ACCUMULATOR JRETURN TO SIMULATOR t s2480889 STACK 929006F245 00740042 52 8030 SIMULATOR ADDENDA 1 SPECIAL INIKUM ZOXNZIGURATION FROCEDURE This nrocedure does nct require the control configuration nardware cn KIM port PB or the use of the NMI interrupt KIM s ST key It is limited to running 308C programs i e single stes or other fsaturess e i Load tne Simulator programs from tape as specified in steps 1 15 of the Tape Loading Instructions of the User Manual 2 Be absolutely certain to put 3FF in location 900F1 3 Chanze Z9173F from 360 to D0 ij Change 91790 from Z z to OEP S Examine locaticn 7 1780 it contains 342 6 Push the GO key 7 The dezonstration 3080 Tize Of Day Clack progran is now running You should see a 1EZ count begin in the display 8 The clock
14. C 70 60808 6082 8084 2086 2088 098A 8088 0050 095F 0091 0092 8094 8695 8996 6098 0699 009A 009C 2290 8080 SIMULATOR C 1978 BY DANN MCCREARY 8088 FFFF 8017 FFFF 221C A9 01 BO 0317 AD 0217 25 18 07 84 ES 09 C7 85 FE AS E3 ne Of DA 05 69 03 INTERRUPT VECTORSseenten ORG 8 17FA NM DC 2 START JAKIM NONeMASKABLE ENTERRUPT RESET oc 2 SFFFF seKImMe RESET VECTOR t 9 4 MINIMUM CONFIGURATION VECTORSs as NMI 2 MNSTRT seKIMe NON MASKABLE INTERRUPT RESET DC 2 4SFFFF j k1M RESET IRG DC 2 MNTTOR seKIM IRG VECTOR XEE ORG 8530076 t s548080 INTERRUPT LOGICweweeeo INT TAX SAVE HALT DATA LOAIM 301 BREAD INTERRUPT PORT STA P800 PUSE TO INTE LDA PB P KIMe ANOZ INTE PINTESFF IF ENABLED BPL NOINT SINTERRUPT sTYZ INTE YES DISABLE FURTHER INTERRUPTS ORAIM C7 FORM RST INSTRUCTION STAZ INST SSAVE NEW INSTRUCTION DEY SINDICATE INTERRUPT TAKEN NOINT LOAZ INTE BNE NINT DECZ INTE JENABLE INTERRUPT NINT TXA BNE IWAS THIS A HALT DEY YES I NOHLT TYA SNORMAL RETURN BNE NRMRET YES GO RETURN PLA JNO CHANGE RETURN TO F ADCIM 5393 POINT PAST JSR INCPC PHA NRMRET RTS PAGE 3 9 2 9045 9047 9 OOAD 9080 8882 BORA 8087 0889 OORA ORB BF gc3 eecs oocs oech GOCE 0900 2901 8803 6005 0807
15. D 917 INTO 17FB THIS IS THE NMI VECTOR WHICH IS ACTIVATED BY THE ST KEY ON KIM LOAD 822 INTO 5 17FE R 8 1C INTO 58 17FF FOR THE IRQ VECTOR MINIMUM CONFIGURATION SINGLE STEP MODE CHANGE LOCATIONS 4 178E 1790 TO 4C 95 22 4 1C THE PROGRAM COUNTER SHOULD CONTAIN 4 0 09 600 IN LOCATION Q EF AND 00 IN LOCATION BF IT POTNTS TO THE FIRST BYTE OF 880849 PROGRAM AREA WHICH NOW CONTAINS A SAMPLE 8280 PROGRAM LOOK AT LOCATION amp 00EF THE LOW ORDER BYTE OF THE PROGRAM COUNTER PUSH THE 187 KEY AND YOU WILL SEE IT CHANGE FROM 08 TO 503 FACH SUBSEQUENT OPERATION OF THE ST KEY WILL ADVANCE THE SIMULATOR THROUGH ANOTHER PROGRAM STEP WITH THE DEMO PROGRAM LISTING TN HAND YOU CAN VERIFY THAT THE PROGRAM IS FOLOWING ITS PROPER SEQUENCE BETWEEN EACH PROGRAM STEP CONTROL IS RETURNED TO THE KIM MONITOR PROGRAM THIS MAKES IT POSSIBLE TO VIEW OR CHANGE THE CONTENTS OF ANY SIMULATED 8080 REGISTER FOR INSTANCF LOOK AT LOCATION 4 300E5 THIS IS THE 8082 ACCUMULATOR NOW CONTINUE PRESSING THE ST KEY AND YOU CAN WATCH DATA MOVING INTO THE CUMULATOR BEING INCREMENTED AND SO ON BY USING THE DA AND HEX KEYS BETWEEN PROGRAM STEPS YOU CAN MODIFY THAT DATA TO SEE WHAT EFFECT THAT MAY MAVE ON PROGRAM EXECUTION NOTES THIS PROGRAM INTFRACTS WITH THE KIM DISPLAY BUFFER SO BE PREPARED FOR THE DISPLAY T CHANGE AFTER THE PROGRAM REACHES ADDRESS s0928 PC SINGLE STEP THE 8880 PROGRAM COUNTER IS LOCATED ON PAGE
16. D TO RESPOND TO SPECIFIC QUESTIONS WHICH ARE ACCOMPANIED BY A STAMPED SELF ADDRESSED ENVELOPE ADDITIONAL COPIES ARE AVAILARLE CONSISTING OF A KIM 1 FORMAT CASSETTE A USER MANUAL AND A COMPLETE WELL COMMENTED ASSEMBLY LEVEL SOURCF OBJE CYT LISTING PRICED AT 320 08 1 508 PASTAGE amp HANDLING CALIFORNIA RESIDENTS PLEASE ADD 6 SALES THEY MAY BE ORDERED FROM edet htththttthtutt DANN MCCREARY P 0 80X 16435 8 SAN DIEGO CA 92116 SHOE RHRERHERREKARE HEHEHE KEHENRE AS AN ADEQUATE TREATMENT OF THE INSTRUCTION SET AND PROGRAMING TECHNIQUES FOR THE 8080 MICROPROCESSOR IS BEYOND THE SCOPE OF THIS MANUAL IT IS SUGGESTED THAT THE USER AQUIRE THE 8080 8085 ASSEMBLY LANGUAGE PROGRAMMING MANUAL FROM INTEL ACKNOWLEDGEMENTS THANKS TO GARY DAVIS FOR GENEROUS SUPPORT IN THE FORM OF ACCESS TO HIS 8080 SYSTEM AND HIS ASSISTANCE IN RUNNING COMPARISON TESTS INTRODUETION WHY IMITATE ONE MICROPROCESSOR ITH ANOTHER YOU PROBABLY PURCHASED THIS 89880 SIMULATOR PACKAGE TO DO ONE OR MORE OF THE FOLLOWINGS RUN EXISTING 8080 SOFTWARE ON YOUR 6902 WRITE TEST AND DEBUG YOUR OWN 8888 SOFTWARE WITHOUT HAVING TO PURCHASE A COMPLETE 8080 BASED SYSTEM LEARN SOMETHING ABOUT THE ARCHITECTURE AND INSTRUCTION SET OF THE 8080 VIA HANDS 0N EXPERIENCE BY SPENDING A LITTLE TIME WITH THIS MANUAL AND GOING THROUGH THE STEP BY STEP FIRST TIME AROUND PROCEEDURE YOU WILL SOON BE DOING ALL THIS AND MORE
17. Dann MCCreary AN 8080 SIMULATOR for the 6502 KIM 1 VERSION k eis dm 807 Conversation ode de ede de de ee de e de ede SES EERE ERE ERE SESE ESE RE SESE SELES ERE REE SS AN 80898 SIMULATOR FOR THE 6592 USER S MANUAL KIM 1 VERSION COPYRIGHT C 1978 BY DANN MCCREARY St de he he de decide de dede de de de dee ode ido de oe ode ode dee de dede de dede de dede dede ERE ERE SERRE RE REE SO THE 82880 SIMULATOR ENABLES A 65802 MICROPROCESSOR TO EXECUTE THE 8080 INSTRUCTION SET THE SIMULATOR DOES THIS BY INTERPRETING 8888 INSTRUCTIONS IN A NORMAL PROGRAM SEQUENCE ALL INTERNAL 8280 REGISTERS ARE AVAILABLE FOR EXAMINATION AT ANY TIME THEY MAY BE VIEWED STATICLY IN A SINGLE STEP MODE OR DYNAMICLY IN A TRACE MODE ALL 8480 SOFTWARE FEATURES ARE PRESENTLY SUPPORTED WITH THE EXCEPTION OF DIRECT MEMORY ACCESS DMA THIS SIMULATOR VFRSION RUNS ON A BASIC KIM 1 IN ITS MINIMUM CONFIGURATION THE 8080 SIMULATOR PROVIDES SINGLE STEP AND FULL SPEED MONES AND LEAVES 227 BYTFS OF MEMORY OPEN FOR 8080 PROGRAMS ALTERNATIVE RUN MODE FEATURES TAKE UP ADDITIONAL OPTIONAL MEMORY SPACE THE CASSETTE TAPE INCLUDED IN THIS PACKAGE IS RECORDED IN STANDARD KIM 1 FORMAT THE PURCHASER OF THIS PACKAGE IS HEREWITH GRANTED PERMISSION TO MAKE ONE COPY FOR HIS HER OWN PERSONAL USE RETAINING THE ORIGINAL AS A BACKUP THE AUTHOR WELCOMES ANY FEEDBACK FROM SIMULATOR USERS AND WILL BE PLEASE
18. EARY 1749 48 DIV PHA TEMP SAVE 1744 29 07 ANDIM 807 MASK FOR LS3 BITS 17AC 49 07 FORIM 307 PREVERSE EM 17AE 95 F6 STAZX ODEST t SAVE EM 1788 68 PLA BRECOVER TEMP 1781 4A LSRA SHIFT TO NEXT FIEL 1782 4 LSRA 1783 4A LSRA 1784 CA DEX JOEC COUNTER INDEX 1785 00 F2 BNE DIV SLOOP TILL DONE 1787 86 FS STXZ FLAG CLEAR FLAG 1789 AQ Q2 LOYIM INPG2 ISET FOR 2ND INTERP PAGE 1788 4A LSRA TEST FOR QUADRANT 178C BQ Bcs 1MI 17 F8 E 8EQ 187 7 A9 11 TMARL LDAIM 911 ARILOG 17c2 65 F7 ADCZ DEST 17C4 AA TAX 17C5 A9 v8 LOAIM DEST A 17 7 85 F7 142 DEST 17C9 Fe 07 IMI BEQ MOVE 17C8 88 2ND DEY JCHANGE PAGES 17CC 9 07 LOAIM 997 OFFSET FOR 2ND 17CE 65 F8 137 aocz SRC 1700 AA TAX JXFER TO INDEX 1701 TNX 1702 98 MOVE TYA ISET HIGH ADDRESS 1703 48 PHA 1704 BO E303 LOAX XFRTBL GET LO ADOR 1707 48 PHA SET LO ADDRESS 1708 A6 F8 LOxZ SRC IGET SOURCE INDEX 170A B4 ES LOY2X REGS IGET SOURCE DATA IN Y 70C F LOXZ DEST IGET DESY INDEX 708 BS ES LOAZX REGS 17E06 85 F6 STAZ DSTOA ISAVE DESTINATION DATA 17E2 A9 44 LDAIM 944 ISET 6502 STATUS 17E4 48 PHA 17 5 IDEST IND IN A amp X 786 48 RTI 1GO INTERPRET PAGE 7 8088 SIMULATOR C 1978 BY DANN MCCREARY 8190 ORG 0180 8100 4A IN DETERMINE 0101 06 BEQ XCHG 0105 98 33 BCC INPUT 0185 A8 TAY ISE Ys0j 0106 4C 7403 JMP CALL65 sCALL 6502 SUBROUTINE 8189 20 6303 XCHG JSR RP SCR sMOVE HL
19. EGS 1 HIGH SOURCE STAY REGS 1 STORE IN HI OFSTINATION aTS SCR RP TXA PRP IS DESTINATION TAY LOXIM CSCR JSCR IS SOURCE BNE RP RP SP PNT LOXIM SP ISP 13 SOURCE BNE RP PNT JUNCONDITIONAL BRANCH esCALL 6502 SUBROUTINES ateate wa CALL SUBROUTINE ADDRESS 1 4 CALL65 LDAIY PC IGET ADDRESS PHA DEY IPOINT TO LO CALL BPL CALL65 JOONE 9e INC OEC OR ADD REGISTER PAIRSesatace DBLINC JSR INCPC INC PC TwICE TNCPC LOXIM PC SINC PC INC LOYIM INCIT IPOINT TO INC DATA INCOEC CLC INDE LOAZX REGS IGET AOCY REGS J ADO STAZX REGS INY BUMP INDEXES INX YYA JCHECK INDEX ANDIM 301 LAST PASS BNE INDE RTS YES DECSP DSP IDEC SP TWICE DSP LOXIM SP JbEC SP DEC LOYIM DECIT POINT TO DEC DATA BNE INCOEC 160 00 IT PAGE 17 8080 SIMULATOR C 1978 BY DANN MCCREARY 93A2 03A4 3A6 3A7 3A8 03AA 3AD 0381 0383 0385 0388 B3BA 8380 O3BE e3ce 3C1 3C3 3C 3C6 03C68 3CB 3CC 3CE 2300 0302 0304 0306 8308 0308 030C 0300 3DE 3E AQ R1 95 CA 86 F 68 A2 A1 85 A9 85 20 A2 AQ 68 98 A8 29 85 70 45 48 4A AS 29 66 29 85 A9 20 68 4A 98 65 4C 21 FC E6 F8 EF FE 19 F8 8303 92 FS OF FE 02 E4 F6 OF FE 10 EF CF32 F6 9902 amp esSUBROUTINES S sevt MOVE MEMORY TO REG PAIRe MEM eR
20. GET SOURCE DATA JLOGICAL AND ISAVE FLAG SETTING DATA SLOGICAL RESULT INTO A JSET STATUS SELECT STATUS BITS TO CLEAR JCLEAR SELECTED BITS ISET SELECTED BITS ISAVE NEW PSW PAGE 14 8080 SIMULATOR C 1978 BY DANN MCCREARY 9206 8208 2209 0208 0200 e20F e2E1 02E3 2 5 2 7 2 8 2EA 2 2ED 2EF 2F0 2F1 92F3 2F5 2F6 2 7 2F8 82FA O2FB 2FC 2FE 0390 8302 0303 2334 0395 0306 0307 9309 39C 030E 0300F 8318 9312 0314 0316 9318 931C 031E ES OA E4 82 31 EE 13 86 FF ES 82 E4 00 OF 24 4 ES 2602 F6 oF 26 E4 19 26 h t euaROTATE ETC ENTRYs sest ROTATE LOYZ STPS ROCOMP RO RRC LEFT RLE JCRY DAA NOSIX LSRA BNE LOAZ FORIM BCC ORAIM RVS acs LSRA BNE TYA FORIM STAZ RTS BCS L0AZ LSRA TYA RORA BYS LSRA BEQ TYA BCS LDAZ RORA RORA ASLA TYA ROLA STAZ JMP PHP TYA NOP TAZ ANDIM ADCIM ORAZ ANDIM BEQ LOAIM TAY A ROCOMP PSW 01 STPS 301 STP W LEFT ROT FF A RRC PSW JCRY RLC CET CARRY DESTOA SSOP 386 PSw 310 NOSIX 306 GET ACCUMULATOR BIS THIS CMC OR STC NO IT 13 A ROTATE OR CMA BYES CHANGE CARRY ICMC sSTC BLEFT OR RIGHT JNO ROTATE YES COMMPLEMENT A SDOESN T SET STATUS IGET ACCUMULATOR IGET 8080 CARRY GET ACCUMULATOR JROTATE RIGHT GO STORE
21. KPOINT A JUMP WILL BE FORCED RETURNING CONTROL TO THE KIM MONITOR YOU MAY NOW EXAMINE OR MODIFY ANY 8080 REGISTERS TO CONTINUE OPERATION ALL THAT IS REQUIRED IS TO 87 THE SIMULATOR WILL RUN UNTIL THE NEXT BREAK TS ENCOUNTERED BKTRL MAY BE EXPANDED UP TO 128 ENTRIES SIMULATOR I 0 MANDLING NORMAL SIMULATOR 1 0 INSTRUCTIONS ARF HANDLED VIA IOTBL THIS IS A TABLE OF ADDRESSES OF INPUT OUTPUT PORTS NOTE THAT THESE 1 0 ADDRESSES ARE STORED IN NORMAL ORDER IE MOST SIGNIFIGANT ADDRESS FIRST THE SIMULATOR ASSUMES THAT THERE IS A DATA DIRECTION REGISTER AT THE PORT ADDRESS 1 IF YOU ASSIGN RAM LOCATIONS AS SIMULATED 1 0 PORT ADDRESSES 2 LOCATIONS MUST BE ALLOWED FOR EACH PORT TRE FIRST ENTRY IN IOTBL WILL BE 8080 PORT THE SECOND ENTRY WILL BE 8080 PORT 1 AND SO ON UP TO A MAXIMUM OF PORT 127 THIS VERSION OF THE SIMULATOR ASSIGNS ALL 1 0 INSTRUCTIONS TO KIM PORTS amp SA PORT SA IS ALSO SHARED BY THE KIM KEYPAD TO AVOID INTERFERENCE DO NOT USE THE KEYBOARD EXCEPT FOR IST WHILE INPUT INSTRUCTIONS ARE BEING USED THE 8080 RST INSTRUCTION THE SIMULATOR SENOS RST CALLS TO PAGE ZERO AS DOES THE 8080 IF HOWEVER YOUR PAGE ZERO IS TAKEN IP WITH MONITOR ROUTINES ETC THE RESET PAGE MAY BF CHANGED BY CHANGING RSTHI FROM QQ TO WHATEVER PAGE YOU WISH IT IS LOCATED AT ADDRESS 50189 ON 9 THE SIMULATOR LISTINGS THE CALL6502 OR C65 THE SIMULATOR APPROPRI
22. LATER WHEN YOU KNOW THE CAPABILITIES ANO LIMITATIONS OF THE SIMULATOR YOU HAVE THE OPTION OF RELOCATING IT PERMANENTLY IN ROM THE ESSENTTAL PART OF THE 8080 SIMULATOR IS THE SUBROUTINE CALLED SIM80 EACH TIME THIS SUBROUTINE IS CALLED ANOTHER 8086 INSTRUCTION IS EXECUTED PROGRAMS OF VARYING COMPLEXITY MAY CALL AND USE SIM80 DEPENDING ON YOUR NBJECTIVES A TYPICAL EXAMPLE OF SUCH A PROGRAM IS INCLUDED ON PAGE THREE OF THE SIMULATOR PROGRAM LISTINGS IN CONJUNCTYON WITH A SIMPLE SET OF SWITCHES IT PROVIDES FOR EASY SELECTION OF RUN TRACE OR SINGLE STEP MODES AND BREAPOINT OPERATION ALTERNATELY THE SIMULATOR MAY BE RUN IN A MINIMUM MODE IN ORDER TO LEAVE A GRFATER AMOUNT OF MEMORY FOR 8080 PROGRAMS AFTER STUDYING THESE CALLING PROGRAMS YOU MAY WISH TO DESIGN YOUR OWN SPECTAL PURPOSE CALLING PROGRAM FOR EXAMPLE TRY A SUPER BREAKPOINT PROGRAM ALL SIMULATED 8080 REGISTERS ARE MAINTAINED IN RAM YOU CAN MONITOR THEM BETWEEN 8080 INSTRUCTIONS AND FORCE A BREAKPOINT ON THE BASIS OF A PARTICULAR PATTERN 1 0 HANDLING IS FACILITATED BY A SPECIAL INSTRUCTION DESIGNED INTO THE SIMULATOR THE C65 INSTRUCTION ENABLES YOU TO CALL 6502 CODED SUBROUTINES FROM YOUR 8080 PROGRAM WITH SLIGHT PRECAUTIONS THEN YOU CAN USE ALL YOUR SYSTEM MONITOR S SUBROUTINES INCLUDED IN THE SIMULATOR LISTINGS IS AN 8988 TIME OF DAY CLOCK PROGRAM BY USING THE SIMULATOR TO RUN THIS PROGRAM YOU WILL SEE BY EXAMPLE ALL THE VARIOUS MODES AND FEA
23. M RUNS WITH DIFFERENT RANDOM DATA IN TME REGISTERS AT STARTUP THIS WILL ASSURE YOU THAT YOUR INITIALIZATION SEQUENCES ARE WORKING AS YOU EXPECT 8080 SIMULATOR REGISTER MAP CONTROL CONFIGURATION E 4 A 15 6 13 12 A 11 10 R g 5V i t P t R e e u 1 o 1 0 1 r C p n INTERRUPT MODE VECTOR CONTROL Copyright 1978 by Dann MCCreary PAGE 1 8080 SIMULATOR C 1978 BY DANN MCCREARY i tn44ktkk4 td htkhkhtkkhktthttkh kn t teh bhthhkthththbht amp ththhthhhtthnhtkt E hu k k ttt tt AN BOBO SIMULATOR FOR THE 6502 wot ttt KIM 1 VERSION w t tit i PERERA dd ded d d dde d dede dde d d dd d deed e dh THIS PROGRAM SIMULATES THE OPERATION OF 8488 MICRO PROCESSOR SOFTWARE ON A KIM 1 6502 MICROCOMPUTER IN ORDER TO SIMPLIFY RELOCATION TO ANOTHER NON KIM 6502 SYSTEM LINES DEPENDENT ON KIM MONITOR RESIDENT DATA ARE FLAGGED WITH THE WORD KIM IN THE COMMENT FIELD dedede de dee de de de de de d de d de dede de de de de de dede e d dde dde de d e d d de d de REA ek ae COPYRIGHT C 1978 BY DANN MCCREARY swstatt de de de de ede de de de dee de e de de dee dee dede de dede eee deese ede tee eee hA ALL RIGHTS RESERVED REPRODUCTION BY ANY MEANS USE OF THIS PROGRAM OR ANY PART THEREOF FOR THE PROMOTION OR SALE OF MICROCOMPUTER HARDWARE OR SOFTWARE WITHOUT EXPRESS WRITTEN PERMISSION OF THE AUTHOR IS PROHIBITED dede de d de e d de d dede d d e d e
24. NC 3 38UMP PC SVR LOXIM PC 8SAVE RETURN JSR PUSHT JON STACK JM LOXIM PC POINT TO PC JMP SCR RP GIVE IT NEW ADDRESS PAGE 9 0149 91809 6182 0184 0186 0188 818A 018C 8 18E Q18F 91C1 1 2 1 3 1 5 81C6 1 7 81C8 1 91CC 1CD 8100 6103 2105 3108 01DA 91DC 8100 1DF 1E1 1E3 1E5 1E7 1 01E8 81EC 1 PAGE 1 RAM MEMORY ADDRESSES 01 TO S01FF MUST BE RESERVED FOR STACKe 8080 SIMULATOR C 1978 BY DANN MCCREARY 28 08 A2 na AS 85 A9 85 98 8g 4 91 40 eoo 09 14 17 01 7603 A903 D3e1 8593 92 98 28 94 2E c9 6503 eeeeeeeRETURN ENTRY ttrt RETURN JSR BNE RETUN LDXIM BNE CONDIT RTS PC POPIT TEST CONDITION SNOT MET RETURN OFF STACK INTO PC t eeRESET ENTRYS e444259 RST 047 ANDIM STAZ LDAIM STAZ BCC wenreteePOP ENTRY etenoe POP LSRA BCC ASLA TAX BNE DEX POPIT TXA PHA JSR PLA TAX JSR INCSP JSR ISP LOXIM JMP OTH LOXIM LOYIM ASLA BES CMP TM BEQ BPL LOYI SPHL JMP 4 9 e46TABLE OF MSKTBL 0C FOUR nc oc 0 INST 38 SCR RSTHI SCR SVR OTH POPIT SP PNT MEM RP 18 SP INC CHL SP SPHL 04 UNDEF RETUN PC RP RP SCONVERT INSTRUCTION TO RESET VECTOR STORE IT IN SCRATCH sHIGH RESET VECTOR y NO IPOP BNO KEEP INDEX BYES ADJUST INDEX JTEMP SAVE INDEX ISP 13 POINTER
25. P LOYIM MRLP LOAIY STAZX DEX DEY BEQ RTS 301 PNT REGS 1 MRLP MOVE DATA IN MEMORY sGET NEXT BYTE ISTORE IN DESTINATION 38UMP INDICES et eesFETCH IMMEDIATE BYTEeetrete LOXIM LOAIX STAZ LOAIM STAZ JSR LOYIM OYIM RTS 090 PCL SCR SCR SRC INCPC 88 INPG2 IGET BYTE POINTED AT IBY PROGRAM COUNTER ISAVE IT IN SCR JMAKE SCR THE SOURCE INOEX yBuMP PC IPOINT TO INTERP PAGE 2 t e4 DO CONTENTS OF Y amp DESTDAsttetre ADDR FORZ TAY ANDIM STAZ ROLA EORZ W OCRY PHA LSRA LDAZ ANDIM aocz ANDIM STAZ LDAIM JSR PLA LSRA TYA AOCZ JMP PLAG WSOP SCR W OCRY DESTDA WSOP SCR 318 SCR CYtAC DESTDA MVIT IGET SOURCE DATA SCHANGE IP SUBTRACT ISAVE LSNIB IGET CARRY IN A JADO SUB W CARRY BYES CHG PER 8080 CARRY SSAVE FOR LATER CARRY JGET ACCUM DATA LOOK LSNIB ADD TO SOURCE LSNIB WAS THERE AN ISAVE AC JCLEAR POGET CARRY BACK IGE SOURCE DATA PADO TO ACCUMULATOR 160 PUT RESULT IN DESTINATION PAGE 18 8080 SIMULATOR C 1978 BY DANN MCCREARY S esENTRY ADDRESS TABLE POR TRANSFER t 94 est TO INSTRUCTION INTERPRETA IONS tettes 83E3 98 XFRTBL DC MOVIT JENTRIES ON 2ND INTRP PAGE O3E4 D6 pc ROTATE 83E5 92 oc MV B3E6 87 DC OCR 7 INR 83E8 77 pc INXDCX 3E9 3c oc LOSTR O3EA 14 DC DADLXI 83E8 30 DC NOP 03EC n
26. RRUPT WILL OCCUR NOTES THE PB7 INTERRUPT LINE MUST BE HELD HIGH THROUGH AT LEAST ONE SIMULATOR CYCLE FOR AN INTERRUPT TO TAKE PLACE NO INTERRUPT ACKNOWLEDGE LINE IS PROVIDED TF ONE IS REQUIRED INSERT AN OUTPUT INSTRUCTION JUST BEFORE NOINT IN THE INTERRUPT LOGIC QN PAGE 2 OF THE LISTINGS THE INTE INTERRUPT FLAG ADDRESS s 00E3 18 OPPOSITE IN SENSE FROM THE RABA INTERRUPT FLAG I E IT DISABLES INTERRUPTS WHEN SET TO ONE AND ENABLES THEM WHEN SET TO ZERO IT ALSO GOES THROUGH A TRANSITION STATE OF SFF AFTER AN EL INSTRUCTION IS EXECUTED THE RESULTANT ACTION HOWEVER IS IDENTICAL TO THAT OF AN ACTUAL 8484 THE INTERRUPT VECTOR IS SET BY SWITCHES AT PB 3 4 85 8280 HALT INSTRUCTION 76 WILL CAUSE AN 8080 HALT IN AN ACTUAL 8288 THE PROCESSOR HALTS WITH THE PROGRAM COUNTER POINTING TO THE NEXT INSTRUCTION IN SEQUENCE ON THE SIMULTOR HOWEVER IN ORDER TO MAINTAIN CONTROL AND TO KEEP MONITORING FOR SIMULATED INTERRUPTS A 876 WILL RES ILT IN NO ADVANCEMENT OF THE PROGRAM COUNTER RATHER THE 76 BE REPEATEDLY EXECUTED UNTIL AN INTERRUPT TS DETECTED OR UNTIL THE SIMULATOR IS HALTED EXTERNALLY AFTER AN INTERRUPT IS SERVICED EXECUTION WILL CONTINUE WITH THE INSTRUCTION IMMEDIATELY FOLLOWING THE HALT BREAKPOINT OPERATION THE BBA STMULATOR ALLOWS MULTIPLE BREAKPOINTS STORE THESE BREAKPOINT ADDRESSES IN BKTBL A RAM AREA START PROGRAM EXECUTION IN THE NORMAL MANNER WHEN THE PROGRAM REACHES THE BREA
27. SETUP OMMITTING THE MODE CONTROL SWITCHES HOWEVER WILL ONLY RESULT IN A DEFAULT TO THE SINGLE STEP MODE WITH SWITCHES CONNECTED PUT 580 898 INTO 17 amp 4517FB PUT 58 60 S5EA BACK INTO 5 178F 4 1790 REGISTER SINGLE STEP MODE SET MODE CONTROL SWITCHES LEFT TO RIGHT TO REGISTER STEP amp STEP THIS POSITION IS YOENTICAL IN OPERATION TO THE MINIMUM CONFIGURATION SINGLE STEP MONE REGISTER TRACE MODE SET CONTROL SWITCHES TO REGISTER TRACE amp STEP WHEN YOU ACTIVATE THE ST KEY THE SIMULATOR wILL BEGIN EXECUTING 8080 INSTRUCTIONS AT A RATE DETERMINED BY THE TIME DELAY VALUE STORED IN SPEED ADDRESS w SA0E2 PROGRAM COUNTER TRACE MODE SET CONTROL SWITCHES TO PC TRACE amp STEP NOW THE DISPLAY WILL TRACE THE PROGRESS OF THE 8080 PROGRAM COUNTER AND THE 8080 PROGRAM OP CODES PROGRAM COUNTER SINGLE STEP MODE SET CONTROL SWITCHES TO PC STEP amp STEP NOW PUSHING THE ST KEY IS REQUIRED TO ADVANCE THE PROGRAM COUNTER TRACE SPEED TRACE SPEED MAY BE SET BY INSERTING A VALUE IN SPEED 4 00E2 A VALUE OF 00 GIVES THE SLOWEST TRACE AND 01 THE FASTEST RUN MODE MOVE THE RUN SWITCH TO RUN PUSH ST AND YOUR PROGRAM WILL RUN AT FULL SPEED TRY SETTING THE DEMO PROGRAM CLOCK BY KEYING IN THE TIME IN RAPID SUCCESSION MOVE THE RUN SWITCH BACK TO REVERT TO TRACE OR SINGLE STEP INTERRUPT ACTION INSERT 520 876 5800 AT 179F 4 17A TO USE INTERRUPTS WHEN PB7 IS BROUGHT HIGH AN 8088 INTE
28. T DATA HAVE THE WORD KIM SOMEWHERE IN THE COMMENT AREA THESE INCLUDE I 0 ADDRESSES AND SUBROUTINE CALLS I 0 ADDRESSES SHOULD BE CHANGED TO AVAILABLE PORTS IN YOUR SYSTEM ONE SUBROUTINE CALL 18 TO SCAND SCAND IS A MONITOR SUBROUTINE WHICH DISPLAYS THE ADDRESS SPECIFIED BY POINTL AND POINTH ALONG NITH THE DATA BYTE AT THAT ADDRESS SUBSTITUTE A SIMILAR DISPLAY ROUTINE FROM YOUR SYSTEM MONITOR GETKEY READS A ONE BYTE VALUE FROM KIMIS HEXADECIMAL KEYPAD ANY COMPARABLE INPUT ROUTINE IN YOUR MONITOR WILL 00 GENERAL OPERATING CONSIDERATIONS 6502 ADDRESSING MODES MAKE HEAVY USE OF TERO PAGE RESOURCES AND SINCE PAGE ONE IS USED FOR A STACK 8080 PROGRAMS MUST BYPASS THESE AREAS IF THE 8080 APPLICATION PROGRAM YOU WISH TO RUN USES QQEQ SOGFF OR SOIFO TO 4301FF RELOCATE THAT PORTION OF THE PROGRAM IN ANOTHER AREA AND PROVIDE JUMPS TO ANO FROM THE NEW AREA SIMULATOR PROGRAMS RUN CONSIDERABLY SLOWER THAN THE SAME PROGRAM WOULD RUN ON ACTUAL 8080 HARDWARE THIS IS OF COURSE BECAUSE THE SIMULATOR MUST EXECUTE MANY 65802 INSTRUCTIONS IN THE COURSE OF EXECUTING ONE 8280 INSTRUCTION DON T EXPECT BLINDING SPEED ON THE OTHER HAND TIME DEPENDENT EVENTS OF MODERATE FREQUENCY SUCH AS THE INCLUDFD CLOCK PROGRAM CAN BE HANDLED REASONABLY WELL IF YOU INTEND TO TRANSFER PROGRAMS TO AN ACTUAL 8980 BASED SYSTEM BE SURE TO MAKE ALLOWANCES IN YOUR TIME DELAY ROUTINES FOR HIGHLY TIME DEPENDENT EVENTS USE THE C65 INSTRUCTION TO HANDLE
29. THEM IN 6502 CONE UNLIKE AN ACTUAL 8080 PROCESSOR SIMULATOR REGISTERS ARE MAINTAINED IN MEMORY THIS REQUIRES CARE THAT YOUR 8980 PROGRAM NOT ACCESS OR MODIFY THESE REGISTERS THE SAME ALSO HOLDS TRUE FOR THE SIMULATOR PROGRAM ITSELF AVOID REFERENCING ANY SIMULATOR PROGRAM AREA FROM YOUR 8080 PROGRAM IF YOU SUSPECT THIS MAY HAVE HAPPENED RELOAD THE SIMULATOR FROM TAPE AN EASY TRAP FOR 8080 PROGRAMMERS TO FALL INTO IS ACCIDENTAL INITIALIZATION OF REGISTERS THESE ARE THE SYMPTOMS YOU COMPLETEO WORK ON AN 8089 PROGRAM IT RUNS PERFECTLY ON THE SIMULATOR YOU LOAD IT INTO THE TARGET SYSTEM HIT GO AND NOTHING HAPPENS WHY TO OPERATE PROPERLY YOUR 8088 PROGRAM MAY REQUIRE THAT ONE OR MORE REGISTERS BE INITIALIZED TO CERTAIN VALUES OR RANGES OF VALUES THE SIMULATOR REGISTERS MAY BE PRESET TO THOSE CONDITIONS FROM PRIOR OPERATION THUS YOUR PROGRAM MAY RUN ON THE SIMULATOR EVEN THOUGH IT HAS NO INSTRUCTIONS TO PROPERLY INITIALIZE THOSE REGISTERS THIS MAY EVEN MAPPEN ON YOUR TARGET SYSTEM DUE TO RANDOM VARIATIONS FROM ONE PROCESSOR CHIP TO ANOTHER EACH PROCESSOR MAY COME UP WITH DIFFERENT RANDOM VALUES IN UNINITIALIZED REGISTERS THE RESULT YOUR PROGRAM WORKS FINE WITH SOME PROCESSORS BUT NOT AT ALL WITH OTHERS TO AVOID THIS PITFALL TAKE THESE STEPS BEFORE EACH SERIOUS EVALUATION OF AN 89080 PROGRAM RELOAD THE 8050 REGISTER AREA TO A POWER ON CONFIGURATION WITH RANDOM DATA IN THE REGISTERS TRY SEVERAL PROGRA
30. TO SCRATCH 919C A2 024 LOXIM POINT TO DE 010E AQ v LOYIM HL HL 8110 2 6503 JSR RP RP MOVE DE TO HL 0113 A2 4 LDXIM DF BPOINT TO DE 9115 4C 7003 JMP SCR RP MOVE SCRATCH TO DE 9118 20 6303 xTHL JSR RP SCR MOVE ML TO SCRATCH 9118 2 7683 JSR SP PNT MAKE SP POINTER 011E A2 02 LOXIM CHL JPOINT TO HL 9120 28 4003 JSR MEM RP jMOvE STACK TOP TO HL 123 A2 19 LDXIM SCR JPOINT TO SCRATCH 6125 pa 56 BNE RP MEM MOVE SCRATCH TO STACK tesIl 0 ETC ENTRYeses se 0127 4 1 0 LSRA DWHICH INST 128 De 03 BNE LBL 09124 86 STXZ INTE SSET CLEAR INTE RTS 0120 202 LBL LOXIM IPOINT TO ML e12F CF IN 118 IT INPUT 90131 4 LSRA 9NO IS IT XTHL 0132 E4 BEQ XTHL BYES 60134 58 acs JUMPUN JIS IT JUMP 0136 C6 F5 OUTPUT DECZ FLAG X JNO FLAG AN OUTPUT 0138 28 ARGS INPUT JSR TMM GET PORT s 0138 AS FE LOAZ SCR 013D ASLA sDOUBLE INDEX 013E TAX 13F FCOS IOPLP LDAX I0T8L GET 1 0 ADDRESS 0142 99 STAY PNT 1 JSTORE IN POINTER 0145 INX 8BUMP INDEX 9146 88 DEY POECREMENY COUNTER 0147 BNE TOPLP 0149 INY IPOINT TO DATA DIR REG 014A aS F5 LOAZ FLAG INPUT OR OUTPUT DATA 014 91 FC STAIY PNT ISET DATA DIR REGISTER 014E DEY IPOINT TO PORT BLAF 4 LSRA 9 INPUT 0150 26 acc IOIN GO DO IT 6152 ES LOAZ INO OUTPUT 0154 91 FC STAIY PNT 156 04 acs IOEX 09158
31. TURES PROVIDED BY THE 8080 SIMULATOR SO WHY NOT GET STARTED TAPE LOADING INSTRUCTIONS THE 848 SIMULATOR KIM 1 FORMAT DF 4 BLOCKS OF PROGRAMS AND DATA BLOCK 1 TS THE 8089 REGISTER AREA ADDRESSES WSOOES TO MSOS3FF BLOCK 2 IS THE MAIN CONTROL LOOP BLOCK 3 IS THE OPTIONAL EXFCUTTVE ADDRESSES 0976 TO 300E2 BLOCK 4 IS A SAMPLE 8080 PROGRAM CASSETTE TAPE CONSISTS AND INTERPRETER ROUTINES ADDRESSES 81780 TO 4 17E6 AND INTERRUPT AREA ADDRESSES 320080 TO 0075 THE KIM DATA BLOCK IDe FOR ALL BLOCKS IS 580 LOADING PROCEENURE ACTION SEE DISPLAYED 1 POWER ON KIM amp CASSETTE INTERFACE 2 REWIND CASSETTE 3 PUSH RSI FAD aeri 4 PUSH DA QQ 5 PUSH AD 17F9 6 PUSH DA 80 7 START CASSETTE PLAYER 8 PUSH A0 1873 9 PUSH 1601 189 DISPLAY RELIGHTS F1 xx eer og 17F9 17F9 80 1873 A9 BLANK DISPLAY COG XX 14 REPEAT STEPS B e 18 FOR REMANING BLOCKS 15 PUSH P GF1 16 PUSH IDA FF 17 PUSH 17F 18 PUSH IDA 80 19 PUSH t4 20 PUSH 17 ee gF1 FF 17FA XX 17FA 80 17FB XX 17FB 17 OPERATING INSTRUCTIONS TO FAMILIARIZE YOURSELF WITH 8 8 SIMULATOR OPERATION LOAD TAPE BLOCKS 1 4 AND WORK YOUR WAY THROUGH THE FOLLOWING INSTRUCTIONS ONCE THE TAPE IS LOADED SURE TO PUT amp FF AT ADDRESS 4 00F1 NOW LOAD THE MINIMUM CONFIGURATION INTERRUPT VECTORS 4 8 INTO LOCATION S17FA AN
32. ZERO IN THE SAME PLACE KIM MONITOR ROUTINES STORE THE 6502 PROGRAM COUNTER IF YOU PUSH THE PC KEY BETWEEN INSTRUCTION STEPS YOU WILL SEE THE CURRENT 080 PROGRAM ADDRESS AND OPeCODE DISPLAYED BY PLACING 4C 8 DC 1C AT ADDRESS 178 8 1790 THIS WILL BE DONE FOR YOU BY THE KIM MONITOR RUN MODE TO RUN THE SAMPLE PROGRAM AT FULL SPEED JUST CHANGE THE DATA AT LOCATION 178E 1790 TO 58 D00 SEF NOW WHEN YOU PUSH ST THE SIMULATOR WILL START AND CONTINUE RUNNING UNTIL YOU PUSH RS OR ACTIVATE THE USING THE IRQ IS RECOMMENDED AS RS WILL INTERRUPT THE SIMULATOR LEAVING ITS REGISTERS IN AN UNKNOWN STATE NOTEt MINIMUM CONFIGURATION DOES NOT SUPPORT INTERRUPTS BUT IT DOES EXECUTE INTERRUPTSeRELATED INSTRUCTIONS TLLEGAL OP CODES amp BREAKPOINTS WHEN THE 8080 SIMULATOR ENCOUNTERS AN ILLEGAL OP CODE A JUMP WILL BE FORCED T THE SYSTEM MONITOR IN THE MINIMUM CONFIGURATION THIS MAY BE USED TO ADVANTAGE BY INSERTING AN ILLEGAL OP CODE TRY 810 IN PLACF OF ANY OPeCODE IN YOUR 8880 PROGRAM THIS WILL ACT AS A BREAKPOINT TO CONTINUE OPERATION AFTER A BREAKPOINT REPLACE THE ORIGINAL OP CODE SUBTRACT 1 FROM THE 8080 PROGRAM COUNTER AND CONTINUE NORMALLY NOTES DO NOT USE 4 CB AS A BREAK OPTIONAL FEATURES USING THE SIMULATOR S nPTIONAL FEATURES REGUIRES THE ILLUSTRATED SWITCHING ARRANGEMENT CONNECTED TO KIM PORT PB IN PARTICULAR DO NOT ATTEMPT TO USE THE INTERRUPT SUBROUTINE WITHOUT THE APPROPRIATE
33. amp SET CARRY JOECIMAL ADJUST 1YES GO 00 IT GET ACCUMULATOR GET 8088 CARRY JMOVE IT INTO MSNIB JMOVE IT INTO CARRY IGET ACCUMULATOR MOVE IT LEFT ISAVE IT 360 SET STATUS JPRESERVE STATUS 1GET SOURCE DATA sPREP FOR ADD LOOK AT LSNIB IF s0A WILL CAUSE AUX CRY POR YF AC IS ALREADY SET EITMER SET NO DON T ADJUST LSNIB YES ADJUST IT PAGE 15 8080 SIMULATOR C 1978 BY DANN MCCREARY 931F 8321 8325 8325 8326 8328 8329 0328 032C 032E 0832F 9331 0332 8335 8336 9339 9338 33C 33E 0340 9341 0343 0344 9345 0347 0349 8344 34C 34E 0350 8352 0353 9355 0357 0359 035A 035c 65 8e 69 2A 05 4 98 98 69 A8 A2 28 20 20 A8 26 85 AS 6A a9 AA 98 Fe 6 4 Fe 9Q Be 46 BA 29 29 86 68 F6 08 69 E4 a4 SF 00 2602 E4 FS E4 46 13 FS 2 7 FS BF 62 FB 29 E4 DA AD CRY A0CZ2 RCS AOCIM ROLA ORAZ LSRA Bcc ADCIM Tay LOXIM PLP JSR JSR DESTOA SxTY 68 PSw DA 5F 4 s20 ADOR CARRY IGET SOURCE 1139 MSNIB NOW gt s AQ IF SO CARRY IS SET IGET CARRY 108 WITH 8080 CARRY JIS EITHER SET DON T ADJUST MSNIB BYES ADJUST MSNIB 9 5F CARRY s 68 SDESTINATION IS A SRESTORE STATUS tt steSTATUS ROUTINE vse5 w t9 SETS ZERO SIGN AND PARITY LEAVES CARRY AND AC STATUS SGN FLIP
34. elocation is a necessity change XFRTEL to two byte entries including the most signifigant byte of address with each entry Change the logic on page 6 to extract both bytes from the table and push them onto the stack
35. nc MINSPD jJ8SETS TRACE SPEED XXXCEEE THE FOLLOWING ITEMS ON THIS PAGE MUST BE LOCATED IN PAGE RAM MEMORYe eTHEY MUST REMAIN IN ORDER AND BEGIN ON AN ODD BOUNDRYe 8 080 REGISTERSee 4 9 41 INTE INTDIS sSINTERRUPT ENABLE FLAG 4 2 PSw 72 18080 PROCESSOR STATUS 5 ag A oc 20 38088 ACCUMULATOR QGE6 ae M 300 sDUMMY MEMORY REGISTER 7 L oc 320 FHL REGISTER PAIR M oc ILI 9 ag E oc 300 JOE REGISTER PAIR BOE A og D pc so egEB e C oc used REGISTER PAIR GEC B ssa OED 74 SPL oc 74 380980 STACK POINTER 09 SPH DC 300 OEF ve PCL oc 00 18080 PROGRAM COUNTER eg PCH DC t eesCONSTANTS AND DATA AREAtwenenen NOTES S GF MUST BE SET TO 3900 WHEN READING OR WRITING TAPES AND MANUALLY SET TO FF BEFORE SIMULATOR OPERATION OOF 1 FFFF DECIT nc 2 SSFFFF S DOUBLE PRECISION 1 eor 3 2109 INCIT 2 001 JOOUBLE PRECISION 1 OOFS ag FLAG 320 SUSED BY SIMULATOR 6 na DESTOA 300 SDESTINATION DATA gF7 de NEST oc 302 POESTINATION INDEX 8 SRC oc 4 00 SOURCE INDEX COLE ag nc 398 J KIM DISPLAY BUFFER OOF A FA POINTL 0 SFA seKIMe DISPLAY POINTER GOOFS ng POINTM 45 06 J KIMe 4400 PNT 500091 POATA POINTER 0909 SCR p 80190 SCRATCHPAD REGISTER PAGE 1780 1788 1782 1783 1786 1788 78 178C 178E 178F 1790 178E 178E
36. zay ze set by entering the time from the xeyrad in rapid seaience less than 1 second between digits The time digits will Shift in from right left If you make a istaxe just tegsin again and the nev time will be entered _9 When restarting the nrogram or another 2 30 program be sure to set tne 308C rogram counter to zero or to whatever your 3030 progran starting aidress may cs 2 TELETYPE NCTES The following routines may be called fron your 3030 srogram to communicate with your teletype via KIM teletype routines They may be located anywhere in memory Call them from your 8080 program with the special C65 opcode in the format CB XXXX where XXXX is the address of GET O 1 or OUT80 1 least signifigant byte first Read a character from tae teletype 20 5ATE GZTS0 JSR GETCE 85 E5 STAZ A 60 RTS Write a character to the teletyre 45 ES OUTSO0 LDAZ 20 ACIE JSR OUTCER 60 RTS 5e ADDITICN amp AL RELOCATION REQUIRERENTS 1 Don t change the third byte of three byte references to sage zero Cicee Addresses OT42 0267 036C 0384 2 Change references to INPG2 at 17B9 and O3BA from 02 to the nost signifigant byte of the page to which you are moving rage two data 3 Don t attempt ta relocate the Simulator at an arbitrary address TO do so would require modifying the page select logic on 6 of the Simulatgr listings For simplicity sake keep the code in the sane position relative to the page boundary If arbitrary r

Download Pdf Manuals

image

Related Search

Related Contents

Seis-Opt Picker  Tarox 1000027 notebook  2.0 プロフェット V 2.0  Ficha técnica Rancho Vistalegre Naural  Norma complementaria - Transferencias de Fondos a Terceros    HS-MASTER  LT590-591 Manuale d`uso  

Copyright © All rights reserved.
Failed to retrieve file