* MAINMEM.MENU.S * (c) Bobbi 2021 GPL3 * * Applecorn ROM menu. Runs in main memory. ROMMENU JSR HOME ; Clear screen LDA #TITLE1 STA A1H JSR PRSTRA1 JSR CROUT JSR CROUT LDA #TITLE2 STA A1H JSR PRSTRA1 JSR CROUT JSR CROUT JSR CROUT LDX #$00 ; Print menu :L1 LDA MSGTBL,X STA A1L INX LDA MSGTBL,X STA A1H INX JSR PRSTRA1 JSR CROUT JSR CROUT CPX #8*2 BEQ :KEYIN BRA :L1 :KEYIN LDA $C000 ; Kdb data / strobe BPL :KEYIN ; Wait for keystroke STA $C010 ; Clear strobe AND #$7F SEC SBC #'1' ; '1'->0, '2'->1 etc. CMP #8 BCC :KEYOK JSR BELL ; Invalid - beep BRA :KEYIN ; Go again :KEYOK ASL ; x2 TAX LDA ROMTBL,X ; Fetch ROM filename ... STA OPENPL+1 ; ... and put in MLI OPEN PL LDA ROMTBL+1,X STA OPENPL+2 RTS * Print a string pointed to by A1L/A1H * Trashes A, preserves X and Y PRSTRA1 PHY LDY #$00 :L1 LDA (A1L),Y BEQ :NULL JSR COUT1 INY BRA :L1 :NULL PLY RTS TITLE1 ASC "** APPLECORN **" DB $00 TITLE2 ASC "Choose a BBC Micro ROM:" DB $00 MSGTBL DW MSG1 DW MSG2 DW MSG3 DW MSG4 DW MSG5 DW MSG6 DW MSG7 DW MSG8 ROMTBL DW ROM1 DW ROM2 DW ROM3 DW ROM4 DW ROM5 DW ROM6 DW ROM7 DW ROM8 MSG1 ASC " 1. BBC BASIC" DB $00 ROM1 STR "BASIC2.ROM" MSG2 ASC " 2. Acornsoft COMAL" DB $00 ROM2 STR "COMAL.ROM" MSG3 ASC " 3. Acornsoft Lisp" DB $00 ROM3 STR "LISP501.ROM" MSG4 ASC " 4. Acornsoft Forth" DB $00 ROM4 STR "FORTH103.ROM" MSG5 ASC " 5. Acornsoft MicroProlog" DB $00 ROM5 STR "MPROLOG310.ROM" MSG6 ASC " 6. Acornsoft BCPL" DB $00 ROM6 STR "BCPL7.0.ROM" MSG7 ASC " 7. USERROM1.ROM" DB $00 ROM7 STR "USERROM1.ROM" MSG8 ASC " 8. USERROM2.ROM" DB $00 ROM8 STR "USERROM2.ROM"