From 80fbfbd6cdeb45080e0189e796ea2edab55cf398 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Mon, 26 Jul 2021 20:07:51 -0400 Subject: [PATCH] Merged in JGHarston's patch. (Second attempt!)` --- applecorn.po | Bin 143360 -> 143360 bytes applecorn.s | 730 ++++++++++++++++++++++++++------------------------- 2 files changed, 378 insertions(+), 352 deletions(-) diff --git a/applecorn.po b/applecorn.po index ada7f0e25a47f610c93d69a90654207c4fb2052f..a59ab5024bbde5eb9470f12da00ddc03b5ef73eb 100644 GIT binary patch delta 42934 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 Q%5mAPOcGTle!M9E7xcZ3_5c6? diff --git a/applecorn.s b/applecorn.s index 40a1478..361b141 100644 --- a/applecorn.s +++ b/applecorn.s @@ -1,6 +1,8 @@ * Load an Acorn BBC Micro ROM in aux memory and * Provide an environment where it can run * Bobbi 2021 +* +* Assembled with the Merlin 8 assembler. XC ; 65c02 ORG $2000 ; Load addr of loader in main memory @@ -58,9 +60,6 @@ AUXMOS1 EQU $2000 ; Temp staging area in Aux EAUXMOS1 EQU $3000 ; End of staging area AUXMOS EQU $D000 ; Final location in aux LC -* Address is aux memory where the MOS entrypoints are -AUXVEC EQU $FFB9 ; Final location in aux LC - START STZ BLOCKS LDX #$00 :L1 LDA HELLO,X ; Signon message @@ -123,7 +122,7 @@ START STZ BLOCKS BRA :L4 :S25 STA A4H - SEC ; Main -> Aux + SEC ; Copy Main -> Aux JSR AUXMOVE INC BLOCKS @@ -148,7 +147,7 @@ START STZ BLOCKS LDA #>AUXMOS1 STA A4H - SEC ; Main->aux + SEC ; Copy MOS from Main->Aux JSR AUXMOVE LDA #RESET @@ -166,11 +165,11 @@ START STZ BLOCKS STA STRTH SEC ; Main -> Aux BIT $FF58 ; Set V; Use page zero and stack in aux - JMP XFER + JMP XFER ; Jump to copied MOS code in Aux -:DONE JSR CROUT - JSR BELL - RTS +;:DONE JSR CROUT +; JSR BELL +; RTS BLOCKS DB 0 ; Counter for blocks read * Set prefix if not already set @@ -786,6 +785,23 @@ ZP3 EQU $94 ROW EQU $96 ; Cursor row COL EQU $97 ; Cursor column WARMSTRT EQU $9F ; Cold or warm start + +* $00-$8F Language workspace +* $90-$9F Network workspace +* $A0-$A7 NMI workspace +* $A8-$AF Non-MOS *command workspace +* $B0-$BF Temporary filing system workspace +* $C0-$CF Persistant filing system workspace +* $D0-$DF VDU driver workspace +* $E0-$EE Internal MOS workspace +* $EF-$FF MOS API workspace + +OSAREG EQU $EF +OSXREG EQU $F0 +OSYREG EQU $F1 +OSCTRL EQU OSXREG +OSLPTR EQU $F2 + FAULT EQU $FD ; Error message pointer ESCFLAG EQU $FF ; Escape status BRKV EQU $202 ; BRK vector @@ -812,6 +828,7 @@ MOSSHIM * This code is initially loaded into aux mem at AUXMOS1 * Then relocated into aux LC at AUXMOS by MOSINIT * +* Initially executing at $3000 until copied to $D000 MOSINIT STA $C005 ; Make sure we are writing aux @@ -861,9 +878,9 @@ MOSINIT STA A2L LDA #>MOSVEND-MOSINIT+AUXMOS1 STA A2H - LDA #AUXVEC + LDA #>MOSAPI STA A4H :L2 LDA (A1L) STA (A4L) @@ -893,59 +910,11 @@ MOSINIT STZ ESCFLAG - LDA #MOSBRKHDLR - STA BRKV+1 - - LDA #OSCLI - STA CLIV+1 - LDA #OSBYTE - STA BYTEV+1 - LDA #OSWORD - STA WORDV+1 - LDA #OSWRCH - STA WRCHV+1 - LDA #OSRDCH - STA RDCHV+1 - LDA #OSFILE - STA FILEV+1 - LDA #OSARGS - STA ARGSV+1 - LDA #OSBGET - STA BGETV+1 - LDA #OSBPUT - STA BPUTV+1 - LDA #OSGBPB - STA GBPBV+1 - LDA #OSFIND - STA FINDV+1 - LDA #OSFSC - STA FSCV+1 + LDX #$35 +INITPG2 LDA DEFVEC,X + STA $200,X + DEX + BPL INITPG2 LDA #<:HELLO LDY #>:HELLO @@ -954,8 +923,8 @@ MOSINIT LDA #$09 ; Print language name at $8009 LDY #$80 JSR PRSTR - JSR $FFE7 ; OSNEWL - JSR $FFE7 + JSR OSNEWL + JSR OSNEWL LDA WARMSTRT CMP #MAGIC @@ -967,13 +936,15 @@ MOSINIT :S9 LDA #MAGIC ; So we do not reloc again STA WARMSTRT - LDA #$01 + CLC ; CLC=Entered from RESET + LDA #$01 ; $01=Entering application code JMP AUXADDR ; Start Acorn ROM * No return :HELLO ASC 'Applecorn MOS v0.01' - DB $0D,$0A,$0D,$0A,$00 + DB $0D,$0D,$00 :OLDM ASC '(Use OLD to recover any program)' - DB $0D,$0A,$0D,$0A,$00 + DB $0D,$0D,$00 + * Clear to EOL CLREOL LDA ROW @@ -1015,20 +986,28 @@ CLEAR STZ ROW STZ COL RTS +* Print string pointed to by X,Y to the screen +OUTSTR TXA + * Print string pointed to by A,Y to the screen -PRSTR STA ZP3 ; String in A,Y +PRSTR STA ZP3+0 ; String in A,Y STY ZP3+1 :L1 LDA (ZP3) ; Ptr to string in ZP3 BEQ :S1 - JSR $FFEE ; OSWRCH + JSR OSASCI INC ZP3 BNE :L1 INC ZP3+1 BRA :L1 :S1 RTS +* Print XY in hex +OUT2HEX TYA + JSR OUTHEX + TAX ; Continue into OUTHEX + * Print hex byte in A -PRHEX PHA +OUTHEX PHA LSR LSR LSR @@ -1036,51 +1015,46 @@ PRHEX PHA AND #$0F JSR PRNIB PLA - AND #$0F - JSR PRNIB - RTS + AND #$0F ; Continue into PRNIB +; JSR PRNIB +; RTS * Print hex nibble in A PRNIB CMP #$0A BCC :S1 CLC ; >= $0A ADC #'A'-$0A - JSR $FFEE ; OSWRCH + JSR OSWRCH RTS :S1 ADC #'0' ; < $0A - JSR $FFEE ; OSWRCH - RTS + JMP OSWRCH -OSRDRM LDA #OSRDRMM - JSR PRSTR - RTS + JMP PRSTR OSRDRMM ASC 'OSRDDRM.' DB $00 -OSEVEN LDA #OSEVENM - JSR PRSTR - RTS + JMP PRSTR OSEVENM ASC 'OSEVEN.' DB $00 -OSINIT LDA #OSINITM - JSR PRSTR - RTS -OSINITM ASC 'OSINITM.' + JMP PRSTR +OSINITM ASC 'GSINITM.' DB $00 -OSREAD LDA #OSREADM - JSR PRSTR - RTS -OSREADM ASC 'OSREAD.' + JMP PRSTR +OSREADM ASC 'GSREAD.' DB $00 * OSFIND - open/close a file for byte access -OSFIND PHX +FINDHND PHX PHY PHA STX ZP1 ; Points to filename @@ -1159,15 +1133,14 @@ OSFSCM ASC 'OSFSC.' DB $00 * OSGBPB - Get/Put a block of bytes to/from an open file -OSGBPB LDA #OSGBPBM - JSR PRSTR - RTS + JMP PRSTR OSGBPBM ASC 'OSGBPB.' DB $00 * OSBPUT - write one byte to an open file -OSBPUT LDA STRTL ; Backup STRTL/STRTH +BPUTHND LDA STRTL ; Backup STRTL/STRTH STA TEMP1 LDA STRTH STA TEMP2 @@ -1182,7 +1155,7 @@ OSBPUT LDA STRTL ; Backup STRTL/STRTH JMP XFER * OSBGET - read one byte from an open file -OSBGET LDA STRTL ; Backup STRTL/STRTH +BGETHND LDA STRTL ; Backup STRTL/STRTH STA TEMP1 LDA STRTH STA TEMP2 @@ -1210,15 +1183,22 @@ OSBGETRET RTS * OSARGS - adjust file arguments -OSARGS LDA #OSARGSM - JSR PRSTR - RTS + JMP PRSTR OSARGSM ASC 'OSARGS.' DB $00 -* OSFILE - load or save an entire file -OSFILE PHX +* OSFILE - perform actions on entire files +* On entry, A=action +* XY=>control block +* On exit, A=preserved if unimplemented +* A=0 object not found (not load/save) +* A=1 file found +* A=2 directory found +* XY preserved +* control block updated +FILEHND PHX PHY PHA @@ -1252,8 +1232,8 @@ OSFILE PHX STA (ZP1),Y STA $C005 ; Write aux INY - CMP #$0D ; Carriage return - BNE :L2 + CMP #$21 ; Space or Carriage return + BCS :L2 DEY STA $C004 ; Write main STY MOSFILE ; Length (Pascal string) @@ -1267,7 +1247,7 @@ OSFILE PHX TSX STX $0101 ; Store alt SP in $0101 - PLA + PLA ; Get action back PHA BEQ :S1 ; A=00 -> SAVE CMP #$FF @@ -1278,11 +1258,11 @@ OSFILE PHX JSR PRSTR PLA PHA - JSR PRHEX + JSR OUTHEX LDA #OSFILEM2 JSR PRSTR - PLA + PLA ; Not implemented, return unchanged PLY PLX RTS @@ -1299,6 +1279,7 @@ OSFILE PHX :S3 CLC ; Use main memory CLV ; Use main ZP and LC JMP XFER + OSFILERET LDX $0101 ; Recover alt SP from $0101 TXS @@ -1309,47 +1290,49 @@ OSFILERET STA STRTH PLA ; Return value PLY ; Value of A on entry - CPY #$FF ; LOAD - BNE :S4 + BNE :S4 ; Deal with return from SAVE + CMP #$01 ; No file found BNE :SL1 BRK - DB $D6 ; Error number ?? TBD + DB $D6 ; $D6 = Object not found ASC 'File not found' BRK - LDA #$00 ; Return code - no file - BRA :EXIT + :SL1 CMP #$02 ; Read error BNE :SL2 BRK - DB $D6 ; Error number + DB $CA ; $CA = Premature end, 'Data lost' ASC 'Read error' BRK - LDA #$01 ; Return code - file found - BRA :EXIT + :SL2 LDA #$01 ; Return code - file found BRA :EXIT -:S4 CPY #$00 ; SAVE +:S4 CPY #$00 ; Return from SAVE BNE :S6 CMP #$01 ; Unable to create or open BNE :SS1 BRK - DB $D5 ; Error number ?? TBD - ASC 'Create error' + DB $C0 ; $C0 = Can't create file to save + ASC 'Can' + DB $27 + ASC 't save file' BRK - BRA :S6 + :SS1 CMP #$02 ; Unable to write BNE :S6 BRK - DB $D5 ; Error number ?? TBD + DB $CA ; $CA = Premature end, 'Data lost' ASC 'Write error' BRK + :S6 LDA #$00 :EXIT PLY PLX RTS + OSFILEM ASC 'OSFILE($' DB $00 OSFILEM2 ASC ')' @@ -1357,7 +1340,7 @@ OSFILEM2 ASC ')' TEMP1 DB $00 TEMP2 DB $00 -OSRDCH PHX +RDCHHND PHX PHY JSR GETCHRC STA OLDCHAR @@ -1391,13 +1374,11 @@ OSRDCH PHX PLY PLX CMP #$1B ; Escape pressed? - BEQ :S5 - CLC + BNE :S5 + ROR $FF ; Set ESCFLG + SEC ; Return CS RTS -:S5 LDA ESCFLAG - ORA #$80 - STA ESCFLAG - SEC +:S5 CLC RTS CURS DW $0000 ; Counter CSTATE DB $00 ; Cursor on or off @@ -1477,12 +1458,23 @@ CURSRT LDA COL STZ COL :S2 RTS -* OSWRCH - write a character to the console -OSWRCH PHA +* OSWRCH handler +* All registers preserved +WRCHHND PHA PHX PHY +* Check any output redirections +* Check any spool output + JSR OUTCHAR +* Check any printer output + PLY + PLX + PLA + RTS - CMP #$00 ; NULL +* Output character to VDU driver +* All registers trashable +OUTCHAR CMP #$00 ; NULL BNE :T1 BRA :IDONE :T1 CMP #$07 ; BELL @@ -1543,10 +1535,7 @@ OSWRCH PHA :SCROLL JSR SCROLL STZ COL JSR CLREOL -:DONE PLY - PLX - PLA - RTS +:DONE RTS * Scroll whole screen one line SCROLL LDA #$00 @@ -1590,9 +1579,13 @@ SCNTAB DW $800,$880,$900,$980,$A00,$A80,$B00,$B80 DW $828,$8A8,$928,$9A8,$A28,$AA8,$B28,$BA8 DW $850,$8D0,$950,$9D0,$A50,$AD0,$B50,$BD0 -* OSWORD - system calls that take word argument in X,Y -OSWORD STX ZP1 ; ZP1 points to control block - STY ZP1+1 +* OSWORD HANDLER +* On entry, A=action +* XY=>control block +* On exit, All preserved (except OSWORD 0) +* control block updated +WORDHND STX OSCTRL+0 ; Point to control block + STY OSCTRL+1 CMP #$00 ; OSWORD 0 read a line BNE :S01 JMP OSWORD0 @@ -1607,74 +1600,80 @@ OSWORD STX ZP1 ; ZP1 points to control block JMP OSWORD5 :S06 CMP #$06 ; OSWORD 6 write I/O memory BNE :UNSUPP - JMP OSWORD6 + :UNSUPP PHA LDA #<:OSWORDM ; Unimplemented, print msg LDY #>:OSWORDM JSR PRSTR PLA - JSR PRHEX + PHA + JSR OUTHEX LDA #<:OSWRDM2 LDY #>:OSWRDM2 JSR PRSTR + PLA RTS -:OSWORDM STR 'OSWORD(' +:OSWORDM ASC 'OSWORD(' DB $00 -:OSWRDM2 STR ')' +:OSWRDM2 ASC ')' DB $00 -OSWORD0 LDA (ZP1) ; Addr of buf -> ZP2 - STA ZP2 - LDY #$01 - LDA (ZP1),Y - STA ZP2+1 +* OSRDLINE - Read a line of input +* On entry, (OSCTRL)=>control block +* On exit, Y=length of line, offset to +* CC = Ok, CS = Escape +* +OSWORD0 LDY #$04 +:RDLNLP1 LDA (OSCTRL),Y ; Copy MAXLEN, MINCH, MAXCH to workspace + STA :MAXLEN-2,Y + DEY + CPY #$02 + BCS :RDLNLP1 +:RDLNLP2 LDA (OSCTRL),Y ; (ZP2)=>line buffer + STA ZP2,Y + DEY + BPL :RDLNLP2 INY - LDA (ZP1),Y - STA :MAXLEN - INY - LDA (ZP1),Y - STA :MINCH - INY - LDA (ZP1),Y - STA :MAXCH - LDY #$00 BRA :L1 :BELL LDA #$07 ; BELL :R1 DEY -:R2 INY -:R3 JSR $FFEE ; OSWRCH +:R2 INY ; Step to next character +:R3 JSR OSWRCH ; Output character -:L1 JSR $FFE0 ; OSRDCH +:L1 JSR OSRDCH BCS :EXIT - + CMP #$08 ; Backspace + BEQ :RDDEL CMP #$7F ; Delete - BNE :S1 ; Nope - CPY #$00 ; Begin of line? - BEQ :L1 - DEY - BCS :R3 -:S1 CMP #$15 ; Line delete ^U - BNE :S2 ; Nope - TYA ; Begin of line? - BEQ :L1 + BEQ :RDDEL + CMP #$15 ; Ctrl-U + BNE :S2 + INY ; Balance first DEY +:RDCTRLU DEY ; Back up one character + BEQ :L1 ; Beginning of line LDA #$7F ; Delete -:L2 JSR $FFEE ; OSWRCH - DEY - BNE :L2 - BEQ :L1 + JSR OSWRCH + JMP :RDCTRLU +:RDDEL TYA + BEQ :L1 ; Beginning of line + DEY ; Back up one character + LDA #$7F ; Delete + BNE :R3 ; Jump back to delete + :S2 STA (ZP2),Y CMP #$0D ; CR BEQ :S3 CPY :MAXLEN - BCS :BELL + BCS :BELL ; Too long, beep CMP :MINCH - BCC :R1 + BCC :R1 ; MAXCHAR, don't step to next + +:S3 JSR OSNEWL :EXIT LDA ESCFLAG ROL RTS @@ -1684,7 +1683,7 @@ OSWORD0 LDA (ZP1) ; Addr of buf -> ZP2 OSWORD1 LDA #$00 LDY #$00 -:L1 STA (ZP1),Y +:L1 STA (OSCTRL),Y INY CPY #$05 BNE :L1 @@ -1692,152 +1691,122 @@ OSWORD1 LDA #$00 OSWORD2 RTS ; Nothing to do -OSWORD5 LDA (ZP1) +OSWORD5 LDA (OSCTRL) LDY #$04 - STA (ZP1),Y + STA (OSCTRL),Y RTS -OSWORD6 LDY #$04 - LDA (ZP1),Y - STA (ZP1) +OSWORD6 LDA #$04 + LDA (OSCTRL),Y + STA (OSCTRL) RTS -* OSBYTE - system calls that take a byte in A -OSBYTE PHX - PHY -:S02 CMP #$02 ; $02 = select i/p stream - BNE :S03 - PLY ; Nothing to do, for now - PLX +* OSBYTE HANDLER +* On entry, A=action +* X=first parameter +* Y=second parameter if A>$7F +* On exit, A=preserved +* X=first returned result +* Y=second returned result if A>$7F +* Cy=any returned status if A>$7F +BYTEHND PHA + JSR BYTECALLER + PLA RTS -:S03 CMP #$03 ; $03 = select o/p stream - BNE :S0B - PLY ; Nothing to do, for now - PLX +BYTECALLER + CMP #$00 + BNE :S1 + LDX #$0A RTS -:S0B CMP #$0B ; $0B = Set k/b autorep delay - BNE :S0C - PLY ; Nothing to do - PLX - RTS -:S0C CMP #$0C ; $0C = Set kbd autrep rate - BNE :S0F - PLY ; Nothing to do - PLX - RTS -:S0F CMP #$0F ; $0F = Flush selected bufs - BNE :S7C - PLY ; Nothing to do - PLX - RTS -:S7C CMP #$7C ; $7C = clear escape condition - BNE :S7D - PHA + +:S1 CMP #$7C ; $7C = clear escape condition + BNE :S2 LDA ESCFLAG AND #$7F ; Clear MSbit STA ESCFLAG - PLA - PLY - PLX RTS -:S7D CMP #$7D ; $7D = set escape condition - BNE :S7E - PHA + +:S2 CMP #$7D ; $7D = set escape condition + BNE :S3 ROR ESCFLAG - PLA - PLY - PLX RTS -:S7E CMP #$7E ; $7E = ack detection of ESC - BNE :S80 - PHA + +:S3 CMP #$7E ; $7E = ack detection of ESC + BNE :S4 LDA ESCFLAG AND #$7F ; Clear MSB STA ESCFLAG - PLA - PLY - PLX LDX #$FF ; Means ESC condition cleared RTS -:S80 CMP #$80 ; $80 = Read ADC/get buf status - BNE :S81 - PLY - PLX - JMP OSBYTE80 -:S81 CMP #$81 ; $81 = Read key with time lim - BNE :S82 - PLY - PLX - JMP GETKEY -:S82 CMP #$82 ; $82 = read high order address - BNE :S83 - PLY - PLX + +:S4 CMP #$81 ; $81 = Read key with time lim + BNE :S5 + JSR GETKEY + RTS + +:S5 CMP #$82 ; $82 = read high order address + BNE :S6 LDY #$FF ; $FFFF for I/O processor LDX #$FF RTS -:S83 CMP #$83 ; $83 = read bottom of user mem - BNE :S84 - PLY - PLX + +:S6 CMP #$83 ; $83 = read bottom of user mem + BNE :S7 LDY #$0E ; $0E00 LDX #$00 RTS -:S84 CMP #$84 ; $84 = read top of user mem - BNE :S85 - PLY - PLX + +:S7 CMP #$84 ; $84 = read top of user mem + BNE :S8 LDY #$80 LDX #$00 RTS -:S85 CMP #$85 ; $85 = top user mem for mode - BNE :S86 - PLY - PLX + +:S8 CMP #$85 ; $85 = top user mem for mode + BNE :S9 LDY #$80 LDX #$00 RTS -:S86 CMP #$86 ; $86 = read cursor pos - BNE :S8B - PLY - PLX + +:S9 CMP #$86 ; $86 = read cursor pos + BNE :S10 LDY ROW LDX COL RTS -:S8B CMP #$8B ; $8B = select file options - BNE :SDA - PLY ; Do nothing, for now - PLX + +:S10 CMP #$DA ; $DA = clear VDU queue + BNE :S11 RTS -:SDA CMP #$DA ; $DA = clear VDU queue - BNE :UNSUPP - PLY ; Nothing to do - PLX - RTS -:UNSUPP PHA + +:S11 PHX + PHY LDA #OSBYTEM JSR PRSTR - PLA - PHA - JSR PRHEX + TSX + LDA $103,X + JSR OUTHEX LDA #OSBM2 JSR PRSTR - PLA PLY PLX RTS + OSBYTEM ASC 'OSBYTE($' DB $00 OSBM2 ASC ').' DB $00 -* OSCLI - interface to command line -OSCLI PHX +* OSCLI HANDLER +* On entry, XY=>command string +CLIHND PHX PHY - STX ZP1 ; Pointer to CLI + STX ZP1+0 ; Pointer to CLI STY ZP1+1 +; TO DO: needs to skip leading '*'s and ' 's +; TO DO: exit early with +; TO DO: exit early with | as comment LDA #<:QUIT STA ZP2 LDA #>:QUIT @@ -1960,10 +1929,10 @@ STARHELP LDA #<:MSG LDY #>:MSG2 JSR PRSTR RTS -:MSG DB $0A,$0D +:MSG DB $0D ASC 'Applecorn MOS v0.01' - DB $0A,$0D,$0A,$0D,$00 -:MSG2 DB $0A,$0D,$0A,$0D,$00 + DB $0D,$0D,$00 +:MSG2 DB $0D,$00 STARQUIT LDA #MSGBRK + JSR PRSTR JSR PRERR - JSR $FFE7 ; OSNEWL - JSR $FFE7 - RTS + JSR OSNEWL + JSR OSNEWL +STOP JMP STOP ; Cannot return from a BRK -DEFBRKHDLR - LDA #BRKM - JSR PRSTR - PLA - PLX - PLY - PHY - PHX - PHA - TYA - JSR PRHEX - TXA - JSR PRHEX - LDA #BRKM2 - JSR PRSTR - RTI -BRKM ASC "BRK($" - DB $00 -BRKM2 ASC ")." +MSGBRK DB $0D + ASC "ERROR: " DB $00 + +;DEFBRKHDLR +; LDA #BRKM +; JSR PRSTR +; PLA +; PLX +; PLY +; PHY +; PHX +; PHA +; JSR OUT2HEX +; LDA #BRKM2 +; JSR PRSTR +; RTI +;BRKM ASC "BRK($" +; DB $00 +;BRKM2 ASC ")." +; DB $00 + +* Default page 2 contents +DEFVEC DW NULLRTS ; $200 USERV + DW MOSBRKHDLR ; $202 BRKV + DW NULLRTI ; $204 IRQ1V + DW NULLRTI ; $206 IRQ2V + DW CLIHND ; $208 CLIV + DW BYTEHND ; $20A BYTEV + DW WORDHND ; $20C WORDV + DW WRCHHND ; $20E WRCHV + DW RDCHHND ; $210 RDCHV + DW FILEHND ; $212 FILEV + DW ARGSHND ; $214 ARGSV + DW BGETHND ; $216 BGETV + DW BPUTHND ; $218 BPUTV + DW GBPBHND ; $21A GBPBV + DW FINDHND ; $21C FINDV + DW NULLRTS ; $21E FSCV +ENDVEC + * * Acorn MOS entry points at the top of RAM +* Copied from loaded code to high memory * -MOSVEC - JMP OSRDRM ; FFB9 - NOP ; FFBC - NOP ; FFBD - NOP ; FFBE - JMP OSEVEN ; FFBF - JMP OSINIT ; FFC2 - JMP OSREAD ; FFC5 - JMP OSWRCH ; FFC8 NVWRCH Non vectored - JMP OSRDCH ; FFCB NVRDCH Non vectored - JMP (FINDV) ; FFCE OSFIND - JMP (GBPBV) ; FFD1 OSGBPB - JMP (BPUTV) ; FFD4 OSBPUT - JMP (BGETV) ; FFD7 OSBGET - JMP (ARGSV) ; FFDA OSARGS - JMP (FILEV) ; FFDD OSFILE - JMP (RDCHV) ; FFE0 OSRDCH - CMP #$0D ; FFE3 OSASCI - BNE :S1 - LDA #$0A ; FFE7 OSNEWL + +MOSVEC ; Base of API entries here in loaded code +MOSAPI EQU $FFB6 ; Real base of API entries in real memory + ORG MOSAPI + +* OPTIONAL ENTRIES +* ---------------- +*OSSERV JMP NULLRTS ; FF95 OSSERV +*OSCOLD JMP NULLRTS ; FF98 OSCOLD +*OSPRSTR JMP OUTSTR ; FF9B PRSTRG +*OSFF9E JMP NULLRTS ; FF9E +*OSSCANHEX JMP RDHEX ; FFA1 SCANHX +*OSFFA4 JMP NULLRTS ; FFA4 +*OSFFA7 JMP NULLRTS ; FFA7 +*PRHEX JMP OUTHEX ; FFAA PRHEX +*PR2HEX JMP OUT2HEX ; FFAD PR2HEX +*OSFFB0 JMP NULLRTS ; FFB0 +*OSWRRM JMP NULLRTS ; FFB3 OSWRRM + +* COMPULSARY ENTRIES +* ------------------ +VECSIZE DB ENDVEC-DEFVEC ; FFB6 VECSIZE Size of vectors +VECBASE DW DEFVEC ; FFB7 VECBASE Base of default vectors +OSRDRM JMP RDROM ; FFB9 OSRDRM Read byte from paged ROM +OSCHROUT JMP OUTCHAR ; FFBC CHROUT Send char to VDU driver +OSEVEN JMP EVENT ; FFBF OSEVEN Signal an event +GSINIT JMP GSINTGO ; FFC2 GSINIT Init string reading +GSREAD JMP GSRDGO ; FFC5 GSREAD Parse general string +NVWRCH JMP WRCHHND ; FFC8 NVWRCH Nonvectored WRCH +NVRDCH JMP RDCHHND ; FFCB NVRDCH Nonvectored RDCH +OSFIND JMP (FINDV) ; FFCE OSFIND +OSGBPB JMP (GBPBV) ; FFD1 OSGBPB +OSBPUT JMP (BPUTV) ; FFD4 OSBPUT +OSBGET JMP (BGETV) ; FFD7 OSBGET +OSARGS JMP (ARGSV) ; FFDA OSARGS +OSFILE JMP (FILEV) ; FFDD OSFILE +OSRDCH JMP (RDCHV) ; FFE0 OSRDCH +OSASCI CMP #$0D ; FFE3 OSASCI + BNE OSWRCH +OSNEWL LDA #$0A ; FFE7 OSNEWL JSR OSWRCH - LDA #$0D -:S1 JMP (WRCHV) ; FFEE OSWRCH - JMP (WORDV) ; FFF1 OSWORD - JMP (BYTEV) ; FFF4 OSBYTE - JMP (CLIV) ; FFF7 OSCLI - NOP ; FFFA - NOP ; FFFB - NOP ; FFFC - NOP ; FFFD - DW BRKHDLR ; FFFE +OSWRCR LDA #$0D ; FFEC OSWRCR +OSWRCH JMP (WRCHV) ; FFEE OSWRCH +OSWORD JMP (WORDV) ; FFF1 OSWORD +OSBYTE JMP (BYTEV) ; FFF4 OSBYTE +OSCLI JMP (CLIV) ; FFF7 OSCLI +NMIVEC DW NULLRTI ; FFFA NMIVEC +RSTVEC DW STOP ; FFFC RSTVEC +IRQVEC + +* Assembler doesn't like running up to $FFFF, so we bodge a bit +MOSEND + ORG MOSEND-MOSAPI+MOSVEC + DW IRQBRKHDLR ; FFFE IRQVEC MOSVEND + * Buffer for one 512 byte disk block in aux mem AUXBLK DS $200