VM02/plasma2/loadvm.s

118 lines
2.0 KiB
ArmAsm
Executable File

.PC02
.DEFINE EQU =
.DEFINE DB .BYTE
.DEFINE DW .WORD
.DEFINE DS .RES
;*
;* LANGUAGE CARD CONTROL
;*
LCBNK2 EQU $C080
ROMIN EQU $C081
;*
;* PRODOS
;*
PRODOS EQU $BF00
;*
;* LOAD VMCORE FILE
;*
;LOADVM:
LDA #$00
INC ; ONLY WORKS ON 65C02
CMP #$01
BEQ LDVMC02
LDVM02: LDA #<VMCORE
STA $06
LDA #>VMCORE
STA $07
BNE :+
LDVMC02: LDA #<VMCOREC
STA $06
LDA #>VMCOREC
STA $07
;*
;* MOVE VM INTO LANGUAGE CARD
;*
: LDA #$00
STA $08
LDA #$D0
STA $09
LDY #$00
BIT $C083 ; SELECT AND WE LC BANK 2
BIT $C083
MVVM: LDA ($06),Y ; COPY VM+CMD INTO LANGUAGE CARD
STA ($08),Y
INY
BNE MVVM
INC $07
INC $09
LDA $09
CMP #$E0
BNE MVVM
LDX #$FE
TXS
LDX #$00
STX $01FF
;*
;* LOOK FOR STARTUP FILE
;*
JSR PRODOS ; OPEN AUTORUN
DB $C8
DW OPENPARMS
BCC :+
JMP EXIT
: LDA REFNUM
STA NLPARMS+1
JSR PRODOS
DB $C9
DW NLPARMS
BCC :+
JMP EXIT
: LDA REFNUM
STA READPARMS+1
JSR PRODOS
DB $CA
DW READPARMS
BCC :+
JMP EXIT
: LDX READPARMS+6
STX $01FF
EXIT: JSR PRODOS
DB $CC
DW CLOSEPARMS
LDY #$00
STY $06
LDA #$D1
STA $07
LDVM: LDA ($06),Y ; LOAD FIRST PAGE OF CMD INTO PLACE
STA $1000,Y
INY
BNE LDVM
LDA #$7F
ADC #$01 ; SET V FLAG
JMP $1007 ; CALL CMD
;EXIT: JSR PRODOS
; DB $65
; DW EXITPARMS
;EXITPARMS: DB 4
; DB 0
AUTORUN: DB 7,"AUTORUN"
OPENPARMS: DB 3
DW AUTORUN
DW $0800
REFNUM: DB 0
NLPARMS: DB 3
DB 0
DB $7F
DB $0D
READPARMS: DB 4
DB 0
DW $0200
DW $0080
DW 0
CLOSEPARMS: DB 1
DB 0
VMCORE:
.INCLUDE "vmcore.byte"
VMCOREC:
.INCLUDE "vmcorec.byte"