; da65 V2.19 - Git 59c58acbe ; Created: 2021-11-02 17:43:56 ; Input file: Franklin_Ace2000_ROM_U2_P2_Rev6.bin ; Page: 1 .setcpu "65C02" .include "opcodes.inc" .feature string_escapes ;;; Set to 1 to include preliminary fixes for: ;;; * MouseText mode failing to exist on $18 output. ;;; * CH not working to set horizontal cursor position. INCLUDE_PATCHES = 0 ;;; Zero Page WNDLFT := $20 WNDWDTH := $21 WNDTOP := $22 WNDBTM := $23 CH := $24 CV := $25 BASL := $28 BASH := $29 BAS2L := $2A BAS2H := $2B INVFLG := $32 CSWL := $36 CSWH := $37 KSWL := $38 KSWH := $39 A1L := $3C A1H := $3D A2L := $3E A2H := $3F A4L := $42 A4H := $43 RNDL := $4E RNDH := $4F ;;; Page 3 Vectors XFERVEC := $3ED ;;; Screen Holes SAVEA := $4F8 SAVEX := $578 SAVEY := $478 SAVECV := $6F8 SAVECH := $778 OLDCH := $47B MODE := $4FB ;; Bit 7 = Escape Mode ;; Bit 6 = MouseText active ;; Bit 5 = ??? set when "normal" ;; Bit 4 = ??? set when "normal" ;; Bit 3 = ??? unused ??? ;; Bit 2 = ??? unused ??? ;; Bit 1 = ??? used for ??? ;; Bit 0 = ??? used for ??? M_ESC = %10000000 M_MOUSE = %01000000 M_NORMAL= %00110000 M_INACTIVE = $FF ; When firmware is inactive OURCH := $57B OURCV := $5FB CHAR := $67B XCOORD := $6FB TEMP1 := $77B ; Unused OLDBASL := $77B TEMP2 := $7FB OLDBASH := $7FB ;;; I/O Soft Switches KBD := $C000 CLR80COL:= $C000 SET80COL:= $C001 RDMAINRAM := $C002 RDCARDRAM := $C003 WRMAINRAM := $C004 WRCARDRAM := $C005 ALTZPOFF:= $C008 ALTZPON := $C009 CLR80VID:= $C00C SET80VID:= $C00D CLRALTCHAR := $C00E SETALTCHAR := $C00F KBDSTRB := $C010 RDLCBNK2:= $C011 RDLCRAM := $C012 RDRAMRD := $C013 RDRAMWRT:= $C014 RD80COL := $C018 RDTEXT := $C01A ALTCHARSET := $C01E RD80VID := $C01F TXTPAGE1:= $C054 TXTPAGE2:= $C055 ROMIN := $C081 ROMIN2 := $C082 LCBANK2 := $C083 LCBANK1 := $C08B ;;; Documented Firmware Entry Points C3KeyIn := $C305 C3COut1 := $C307 AUXMOVE := $C311 XFER := $C314 CLRROM := $CFFF ;;; Monitor ROM BELLB := $FBE2 SETWND := $FB4B SETKBD := $FE89 SETVID := $FE93 MON_VTAB:= $FC22 CLREOP := $FC42 HOME := $FC58 CLREOL := $FC9C ;;; ============================================================ .org $C300 ;; Init LC300: bit SETV ; V = init bra MainEntry ;; Input .assert * = C3KeyIn, error, "Entry point mismatch" LC305: sec .byte OPC_BCC ; never taken; skip next byte ;; Output .assert * = C3COut1, error, "Entry point mismatch" LC307: clc clv bra MainEntry ;; Signature bytes .byte $01, $88 ;; Pascal 1.1 Firmware Protocol Table .byte LC305 stx KSWH lda #