mirror of https://github.com/dschmenk/VM02.git
93 lines
1.4 KiB
ArmAsm
Executable File
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"
|