diff --git a/applecorn.po b/applecorn.po index 22c6b88..5ebb4e8 100644 Binary files a/applecorn.po and b/applecorn.po differ diff --git a/auxmem.init.s b/auxmem.init.s index 1c7c2cb..cb8427f 100644 --- a/auxmem.init.s +++ b/auxmem.init.s @@ -7,7 +7,7 @@ * BBC Micro 'virtual machine' in Apple //e aux memory *********************************************************** -MAXROM EQU $00 ; Only one sideways ROM +MAXROM EQU $00 ; Just one ROM ZP1 EQU $90 ; $90-$9f are spare Econet space ; so safe to use @@ -125,6 +125,8 @@ MOSHIGH SEI DEX BPL :INITPG2 + JSR INITROMS ; Initialize sideways ROM table + JSR KBDINIT ; Returns A=startup MODE JSR VDUINIT ; Initialise VDU driver JSR PRHELLO diff --git a/auxmem.misc.s b/auxmem.misc.s index 21465be..3f36f8f 100644 --- a/auxmem.misc.s +++ b/auxmem.misc.s @@ -327,15 +327,108 @@ RDROM LDA $F4 * X=ROM to select * All registers must be preserved ROMSELECT CPX $F4 - BNE :ROMSELOK ; Already selected + BEQ :ROMSELOK ; Already selected * Insert code here for faking sideways ROMs by loading or otherwise * fetching code to $8000. All registers must be preserved. - + PHA + PHX + PHY + TXA + ASL A + TAX + LDA ROMTAB,X ; LSB of pointer to name + STA OSFILECB+0 + LDA ROMTAB+1,X ; MSB of pointer to name + STA OSFILECB+1 + STZ OSFILECB+2 ; Dest address $8000 + LDA #$80 + STA OSFILECB+3 + LDX #OSFILECB + LDA #$FF ; Means 'LOAD' + JSR OSFILE + PLY + PLX + PLA STX $F4 ; Set Current ROM number :ROMSELOK EVENT RTS +BASICROM ASC 'BASIC2.ROM' + DB $0D,$00 + +COMALROM ASC 'COMAL.ROM' + DB $0D,$00 + +LISPROM ASC 'LISP501.ROM' + DB $0D,$00 + +FORTHROM ASC 'FORTH103.ROM' + DB $0D,$00 + +PROLOGROM ASC 'MPROLOG310.ROM' + DB $0D,$00 + +BCPLROM ASC 'BCPL7.0.ROM' + DB $0D,$00 + +PASCROM1 ASC 'USERROM2.ROM' + DB $0D,$00 + +PASCROM2 ASC 'USERROM1.ROM' + DB $0D,$00 + +* Initialize ROMTAB according to user selection in menu +INITROMS STA $C002 ; Read main mem + LDA USERSEL + STA $C003 ; Read aux mem + ASL ; x2 + CLC + ADC #ROMS + ADC #$00 + STA OSLPTR+1 + LDY #$00 + LDA (OSLPTR),Y + STA ROMTAB+0 + INY + LDA (OSLPTR),Y + STA ROMTAB+1 + LDA #$FF + STA $F4 ; Force ROM to load + RTS + +* Active sideways ROMs +ROMTAB DW $0000 ; ROM0 + DW $0000 ; ROM1 + DW $0000 ; ROM2 + DW $0000 ; ROM3 + DW $0000 ; ROM4 + DW $0000 ; ROM5 + DW $0000 ; ROM6 + DW $0000 ; ROM7 + DW $0000 ; ROM8 + DW $0000 ; ROM9 + DW $0000 ; ROMA + DW $0000 ; ROMB + DW $0000 ; ROMC + DW $0000 ; ROMD + DW $0000 ; ROME + DW $0000 ; ROMF + +* ROM filenames in same order as in the menu +* ROMMENU copies these to ROMTAB upon user selection +ROMS DW BASICROM + DW COMALROM + DW LISPROM + DW FORTHROM + DW PROLOGROM + DW BCPLROM + DW PASCROM1 + DW PASCROM2 + *EVENT LDA #OSEVENM * JMP PRSTR diff --git a/mainmem.ldr.s b/mainmem.ldr.s index fa3f477..49fd71f 100644 --- a/mainmem.ldr.s +++ b/mainmem.ldr.s @@ -17,10 +17,10 @@ START JSR CROUT TRB $C035 JSR ROMMENU - LDA #>AUXADDR ; Address in aux - LDX #AUXADDR ; Address in aux +* LDX #