Apple II J-plus F8 ROM Notes (Differences From The Standard Apple II Autostart ROM) Written by Nick Westgate, with thanks to Philip Lord Changes: - the monitor REGDSP (display registers) routine has been removed - the RDKEY main loop has been modified to flash an underscore cursor - the RDKEY main loop now checks for ctrl-T to toggle katakana/ASCII display Notes: - all code differences are in the F8 ROM (the video/chargen ROM is also different) - REGDSP was removed solely to make room for the new underscore cursor code - annunciator 2 is connected to the video ROM at A10 (overrides character's high bit) - annunciator 2 is normally set ($C05D) which disables katakana display - the RESET handler already sets the annunciator on RESET (no change) - when annunciator 2 is cleared ($C05C) katakana display is enabled - katakana ctrl-T output toggling is implemented via the inverse mask byte at $32 - in Applesoft, INVERSE selects kana, FLASH selects inverse kana, NORMAL selects ASCII Key: - all comments begin with ";" - all code changes are marked with "*" - all new/changed entry points are marked with "**" - changes deserving of further investigation are marked with "??" D000-F7FF ; no changes in the D0 to F0 ROMs FA59- 20 82 F8 JSR $F882 ; OLDBRK FA5C- 20 2D FF JSR $FF2D F8ROM:PRERR ; * was JSR $FADA/REGDSP - now JSR $FF2D/PRERR ... FAD7- 60 RTS ; ** was REGDSP (display registers) now removed FAD8- 48 PHA ; ** new entry UNDRSC flash cursor using underscore FAD9- A9 0F LDA #$0F ; * FADB- 25 4F AND $4F ; * FADD- D0 0C BNE $FAEB ; * FADF- 68 PLA ; * FAE0- 48 PHA ; * FAE1- D1 28 CMP ($28),Y ; * FAE3- D0 02 BNE $FAE7 ; * FAE5- A9 DF LDA #$DF ; * cursor value = underscore FAE7- 91 28 STA ($28),Y ; * FAE9- E6 4F INC $4F ; * FAEB- 68 PLA ; * FAEC- 2C 00 C0 BIT $C000 r:KBD w:CLR80COL ; * duplicate original KEYIN2 functionality before return FAEF- 60 RTS ; * end UNDRSC FAF0- AD 56 C0 LDA $C056 rw:LORES ; ** new sub GRMIX FAF3- AD 53 C0 LDA $C053 rw:MIXSET ; * ?? strange - this routine seems unnecessary - see SETGR FAF6- 60 RTS ; * end GRMIX FAF7- EA NOP ; * FAF8- EA NOP ; * FAF9- EA NOP ; * FAFA- EA NOP ; * FAFB- EA NOP ; * FAFC- EA NOP ; * end removed REGDSP sub ... FB40- AD 50 C0 LDA $C050 rw:TXTCLR ; SETGR FB43- 20 F0 FA JSR $FAF0 ; ** was LDA $C053 - now JSR new sub $FAFO/GRMIX ; ?? strange - this change seems unnecessary ; ?? only the GR command uses $FB40 (in this/earlier/later ROMs) ; ?? $C056 is set for GR at $F390 (in this/earlier/later ROMs) ... FBB3- C9 94 CMP #$94 ; ** new sub CKCTRLT - check for ctrl-T pressed FBB5- D0 C1 BNE $FB78 ; * continue to VIDWAIT FBB7- A5 32 LDA $32 ; * yes, ctrl-T pressed FBB9- 49 C0 EOR #$C0 ; * so modify INVFLG to toggle showing katakana FBBB- 4C 46 FD JMP $FD46 ; * end CKCTRLT - continue to new entry $FD46/TGLKANA ... FD0C- A4 24 LDY $24 ; RDKEY FD0E- B1 28 LDA ($28),Y FD10- 48 PHA FD11- 29 3F AND #$3F FD13- 09 40 ORA #$40 FD15- EA NOP ; * was STA ($28/BASL),Y - now removed FD16- EA NOP FD17- 68 PLA FD18- 6C 38 00 JMP ($0038) FD1B- E6 4E INC $4E FD1D- D0 02 BNE $FD21 FD1F- E6 4F INC $4F FD21- 20 D8 FA JSR $FAD8 ; * was KEYIN2 BIT $C000/KBD - now JSR new entry $FAD8/UNDRSC FD24- 10 F5 BPL $FD1B FD26- 91 28 STA ($28),Y FD28- AD 00 C0 LDA $C000 r:KBD w:CLR80COL FD2B- 2C 10 C0 BIT $C010 r:KBDSTRB FD2E- 60 RTS FD2F- 20 0C FD JSR $FD0C F8ROM:RDKEY FD32- 20 A5 FB JSR $FBA5 FD35- 20 0C FD JSR $FD0C F8ROM:RDKEY FD38- C9 9B CMP #$9B FD3A- F0 F3 BEQ $FD2F FD3C- 60 RTS FD3D- BD 00 02 LDA $0200,X ; ** changed NOTCR FD40- 20 ED FD JSR $FDED F8ROM:COUT ; * FD43- 4C 4D FD JMP $FD4D ; * FD46- 85 32 STA $32 ; ** new entry TGLKANA toggle katakana FD48- A9 94 LDA #$94 ; * FD4A- 4C 78 FB JMP $FB78 F8ROM:VIDWAIT ; * end changed NOTCR ... FDF9- 20 B3 FB JSR $FBB3 F8ROM:VERSION ; * was JSR $FB78/VIDWAIT now JSR new sub $FBB3/CKCTRLT ... FEBF- 60 RTS ; * was REGZ JMP REGDSP (removed) now RTS FEC0- EA NOP ; * FEC1- EA NOP ; * end changed REGZ