Allm{n-Info =========== Programmet {r t{nkt som en disassembler f|r Z-80. (Inspreration delvis fr}n ABC-KLUBBENS Rapport Nr 1) Programmet har tv} m|jligheter disassemblering och s|kning. Disassemblering; Man v{lja mellan Instruktioner eller ASCII. - " - Hexa- eller decimal form. - " - Bildsk{rm eller Printer. Instruktioner presenteras i f|ljande form: Adress:Maskinkod Instruktion ASCII (ej ASCII => .) ---------------- ----------- --------------------- 4576:195,069,108 JP 7717 .El (Dec) 6000 :C3456C JP 6C45 .El (Hex) S|kning kan ske efter Instruktioner eller egen "text". Efter val presenteras ett exempel p} instr., f|r det {r viktigt med mellanslag eftersom programmet s|ker medelst INSTR(1,A$,S|k$). FNScroll {r t{nkt som en scroll av bildsk{rmen med rad 0+1 of|r{ndrade. I |vrigt {r m}nga Funktioner l}nade fr}n BIT F\R BIT MED ABC 800 (Tack !). Maskinkoderna {r lagrade som textvektorer i OPCODE.DAT Dessa textvaribler {r: Kod$(1-63) Entydiga Maskinkoder (1-63) Kodh$(192-255) -"- -"- (192-255) Reg$(0-7) "Register" (B,C,D,E,H,L,(HL),A) Las$(0-15) F|rsta delen f|r Maskinkoder (64-191),i komb. med Reg$. Cb$(0-31) De instr som b|rjar p} CBH, i komb. med Reg$. Dd$(9-249) De instr som b|rjar p} DDH Ed$(64-187) De instr som b|rjar p} EDH De instr som b|rjar p} FDH {r samma som Dd$ med IY <==> IX Dessutom anv{nds i textvariablerna flaggor med f|ljande betydelse NN 16-bitars tal/adress d relativt hopp/adress n 8-bitars tal Jag har valt att inte spara p} skiva, f|r d{r har alla sina egna regler. Men det {r l{tt att kompletera med detta. En fullst{ndig disassembler,m}ste antagligen g|ras i 2 steg. F|rsta steget spar Instruktionerna p} skiva. Andra steget letar r{tt p} tabeller och s{tter namn p} CALL och JUMP adresser, och spar p} skiva. Det finns s{kert en del som kan f|rb{ttras, s} lycka till. 830830 Lars Thor PS Tangenternas funktion: PF1 Avbryter p}g}ende rutin och }terg}r till meny. PF8+CTRL+SHIFT Dumpar bildsk{rm p} printer. Vid INMATNING --- --------- -> Flyttar mark|ren }t h|ger,utan att radera. <- Flyttar mark|ren }t v{nster,utan att radera. PF8 Raderar det tecken som mark|ren befinner sig p}. CE Raderar hela raden. RETURN Avslutar inmatning i ett f{lt,eller verifierar ett val. F|r er som inte t{nker k|ra p} ABC-800C s} byt ut FNGet i programmet mot nedanst}ende FNGet. DEF FNGet(Pos) LOCAL T$=1 POKE 65506,0 ! KEYFLG Z=FNRk(Pos) : OUT 56,14,57,Z/256,56,15,57,Z,56,10,57,(64 XOR 8) xx WHILE SYS(5)=0 : ; CUR(0,60) TIME$ WEND : GET T$ : IF ASCII(T$)<>247 THEN RETURN ASCII(T$) Z=FNBilddump : GOTO xx FNEND ! ! Port 56 CRTC 8-tkn ,v{lj register ! Port 57 CRTC 8-tkn ,data till valt register ! OUT 56,14 V{lj cursor adr(h) ! OUT 57,Z/256 Stoppa in aktuell bildmem(h) ! OUT 56,15 V{lj cursor adr(l) ! OUT 57,Z Stoppa in aktuell bildmem(l) ! OUT 56,10 Cursor start in line ! OUT 57,(64 XOR 8) Bit 6 satt ger blink, ! XOR med 0-8 ger olika antal linjer i cursorn