Description: Apple II+ Mini-Assembler (3 of 4) Header: Apple II+ Mini-Assembler (3 of 4) This article last reviewed: 21 September 1984 0800: ORG $800 0800: 20 4B D6 JSR NEW ;SCRATCH ANY BASIC PROGRAM 0803: A9 00 LDA #$00 0805: 8D 00 08 STA #$0800 0808: 4C 9D 08 JMP RESETZ ;BRANCH MINI/ASSEM'S START 080B: E9 81 REL SBC #$81 ;IS FMT COMPATIBLE 080D: 4A LSR A ;WITH RELATIVE MODE? 080E: DO 14 BNE ERR3 ;NO. 0810: A4 3F LDY A2H 0812: A6 3E LDX A2L ;DOUBLE DECREMENT 0814: DO 01 BNE REL2 0816: 88 DEY 0817: CA REL2 DEX 0818: 8A TXA 0819: 18 CLC 081A: E5 3A SBC PCL ;FORM ADDRESS PC-2 081C: 85 3E STA A2L 081E: 10 01 BPL REL3 0820: C8 INY 0821: 98 REL3 TYA 0822: E5 3B SBC PCH 0824: D0 6B ERR3 BNE ERR ;TOO FAR TO BRANCH ERROR 0826: * 0826: A4 2F FINDOP LDY LENGTH 0828: B9 3D 00 FNDOP2 LDA A1H,Y ;MOVE INST TO (PC) 082B: 91 3A STA (PCL),Y 082D: 88 DEY 082E: 10 F8 BPL FNDOP2 0830: 20 1A FC JSR CURSUP 0833: 20 1A FC JSR CURSUP ;RESTORE CURSOR 0836: 20 DO F8 JSR INSTDSP ;TYPE FORMATTED LINE 0839: 20 53 F9 JSR PCADJ ;UPDATE PC 083C: 84 3B STY PCH 083E: 85 3A STA PCL 0840: 4C A0 08 JMP NXTLINE ;GET NEXT LINE 0843: 20 BE FF FKMON3 JSR TOSVB ;GO TO DELIM HANDLER 0846: A4 34 LDY YSAV ;RESTORE Y-INDEX 0848: 20 A7 FF FKMON JSR GETNUM ;READ PARAM 084B: 84 34 STY YSAV ;SAVE Y-INDEX 084D: A0 17 LDY #$17 ;INIT DELIM INDEX 084F: 88 FKMON2 DEY ;CHECK NEXT DELIM 0850: 30 4B BMI RESETZ ;ERR IF UNRECOGNIZED DELIM 0852: D9 CC FF CMP CHRTBL,Y ;COMPARE WITH DELIM TABLE 0855: D0 F8 BNE FKMON2 ;NO MATCH 0857: CO 15 CPY #$15 ;MATCH, IS IT CR? 0859: D0 E8 BNE FKMON3 ;NO HANDLE IT IN MONITOR 085B: A5 31 LDA MODE 085D: A0 00 LDY #$00 085F: C6 34 DEC YSAV 0861: 20 00 FE JSR BL1 ;HANDLE CR OUTSIDE MONITOR 0864: 4C A0 08 JMP NXTLINE 0867: * 0867: A5 3D TRYNEXT LDA A1H ;GET TRIAL OPCODE 0869: 20 8E F8 JSR INSDS2 ;GET FMT + LENGTH FOR 086C: AA TAX ;OPCODE 086D: BD 00 FA LDA MNEMR,X ;GET LOWER MNEMONIC BYTE 0870: C5 42 CMP A4L ;MATCH? 0872: D0 13 BNE NEXTOP ;NO, TRY NEXT OPCODE 0874: BD CO F9 LDA MNEML, X ;GET UPPER MNEMONIC BYTE 0877: C5 43 CMP A4H ;MATCH ? 0879: DO OC BNE NEXTOP ;NO, TRY NEXT OPCODE 087B: A5 44 LDA FMT 087D: A4 2E LDY FORMAT ;GET TRIAL FORMAT 087F: CO 9D CPY #$9D ;IS TRIAL FORMAT RELATIVE? 0881: FO 88 BEQ REL ;YES 0883: C5 2E CMP FORMAT ;SAME FORMAT? 0885: FO 9F BEQ FINDOP ;YES 0887: C6 3D NEXTOP DEC A1H ;NO, TRY NEXT OPCODE 0889: DO DC BNE TRYNEXT 088B: E6 44 INC FMT ;NO MORE, TRY WITH LEN=2 088D: C6 35 DEC L ;WAS L=2 ALREADY? 088F: FO D6 BEQ TRYNEXT ;NO 0891: 0891: A4 34 ERR LDY YSAV ;YES, UNRECOGNIZED INST. 0893: 98 ERR2 TYA 0894: AA TAX 0895: 20 4A F9 JSR PRBL2 ;PRINT ^ UNDER LAST READ 0898: A9 DE LDA #$DE ;CHAR TO INDICATE ERROR 089A: 20 ED FD JSR COUT ;POSITION 089D: 20 EA FF RESETZ JSR BELL 08AO: A9 A1 NXTLINE LDA #$A1 ; '!' 08A2: 85 33 STA PROMPT ;INITIALIZE PROMPT 08A4: 20 67 FD JSR GETLNZ ;GET LINE 08A7: 20 C7 FF JSR ZMODE ;INIT SCREEN STUFF Keywords: