VM02/plasma2/loadcmd.s

93 lines
1.4 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
;**********************************************************
;*
;* VM ZERO PAGE LOCATIONS
;*
;**********************************************************
ESTKSZ EQU $20
ESTK EQU $C0
ESTKL EQU ESTK
ESTKH EQU ESTK+ESTKSZ/2
FRMP EQU ESTK+ESTKSZ
FRMPL EQU FRMP
FRMPH EQU FRMP+1
TMP EQU $F0
TMPL EQU TMP
TMPH EQU TMP+1
SRC EQU TMP
SRCL EQU SRC
SRCH EQU SRC+1
DST EQU SRC+2
DSTL EQU DST
DSTH EQU DST+1
ESP EQU DST+2
;*
;* PAGE 3 ENTRYPOINTS TO INTERNAL ROUTINES
;*
_INTERP EQU $03D0
LEAVE EQU $03DC
ENTER EQU $03E2
;*
;* CLEAR COMMAND LINE LENGTH BYTE IF CALLED FROM 'BYE'
;*
LDY #$00
LDX #$FE ; LEAVE ROOM FOR COMMAND LINE LENGTH BYTE
TXS
BVS :+
STY $01FF ; CLEAR AUTORUN COMMAND WHEN CALLED FROM 'BYE'
;*
;* MOVE REST OF CMD FROM LANGUAGE CARD
;*
: STY $06
STY $08
LDA #$D2
STA $07
LDA #$11
STA $09
BIT LCBNK2
MVVM: LDA ($06),Y
STA ($08),Y
INY
BNE MVVM
INC $07
INC $09
LDA $07
CMP #$E0
BNE MVVM
;*
;* DEACTIVATE 80 COL CARDS
;*
BIT ROMIN
LDY #4
: LDA DISABLE80,Y
JSR $FDED
DEY
BPL :-
BIT $C054 ; SET TEXT MODE
BIT $C051
BIT $C058
JSR $FC58 ; HOME
;*
;* JUMP TO INTERPRETER
;*
BIT LCBNK2
LDX #$00
LDA #$BF
STX FRMPL
STA FRMPH
LDY #>START
LDA #<START
JMP $D104
DISABLE80: DB 21, 13, '1', 26, 13
.INCLUDE "cmd.s"