; ; EMSET.ASM - Sets up ROM/RAM for running EMAX ; LDX #INITX ;Get the inter vects movw $FFFE, VFFFE1+1 ;reset movw $FFFC, VFFFC1+1 ;irq movw $FFFA, VFFFA1+1 ;nmi jsr romofi ; ;Build my vects moviw VFFFE, $FFFE moviw VFFFC, $FFFC moviw VFFFA, $FFFA ; ;Ints back on jsr romoni jsr romoff ; ; Relocate EMAX to RAM under ROM ; loadiw $7000, R0 ;Moves Tab, eminit, elib loadiw $C800, R1 relop1: lda (R0,X) sta (R1,X) incwr r0 incwr r1 bnewri r1, $D000, relop1 ; loadiw $8000, R0 ;All else loadiw $D800, R1 relop2: lda (R0,X) sta (R1,X) incwr r0 incwr r1 bnewri r1, $E900, relop2 ; ;That's it for now jmp eminit ;Continue init ; romofi: php ! pha sei lda #0 sta nmien ;Turn off NMI lda #$10 ;kbd scan off sta $232 ;kbd scan shadow sta $D20F ;kbd scan lda portb sta romonv ;save old and #$FE sta romofv sta portb ;load with ROM off pla ! plp rts ; ;ROM On ; romoni: php ! pha lda romonv sta portb lda #$13 ;kbd scan on sta $232 ;kbd scan shadow sta $D20F ;kbd scan lda #$40 sta nmien cli pla ! plp rts ; ;eof