DOS335/source/DOS3.3MOVER2.S

88 lines
1.9 KiB
ArmAsm

*SYSTEM PROGRAM TO SWITCH INTO DOS 3.3 FROM PRODOS
*
**************************************************
*
* COPYRIGHT
* 1984
* BY
* R. SUTCLIFFE
*
***************************************************
*
A1L EQU $3C ;SOURCE
A1H EQU $3D
A2L EQU $3E ;END OF SOURCE
A2H EQU $3F
A4L EQU $42 ;DESTINATION
A4H EQU $43
DOSCOPY EQU $2100 ;START OF TRANSFERRED CODE
DOSSTRT EQU $9D00 ;DOS3.3 BEGINS HERE
DOSCOLD EQU $9D84
FNBLK EQU $A095 ;BLANKS FILENAME BUFFER
DOSCMD EQU $AA5F ;WHAT TO DO WHEN BOOTED
PFNBUF EQU $AA75 ;FILE NAME BUFFER
FMPLST EQU $B5BC ;FILE MANAGER PARAMETER LIST
FMPCMD EQU $B5BB
ENTRY EQU $BF00
ROMIN EQU $C082
RAMIN EQU $C083
BANK EQU $D000
MOVE EQU $FE2C ;MONITOR MOVE ROUTINE
*
ORG $2000 ;FOR ALL SYSTEM PROGRAMS
*
*PRESERVE GLOBAL PAGE TO GET BACK
*
BIT RAMIN ;WRITE ENABLE LC
BIT RAMIN
LDA #>BANK
STA A1H
LDA #>ENTRY
STA A4H
LDY #$00
STY A1L
STY A4L
LOOP LDA (A4L),Y
STA (A1L),Y
INY
BNE LOOP
BIT ROMIN
*
*
MOVER LDY #>DOSSTRT ;SET PARAMS FOR MONITOR MOVE
STY A4H ;IN PAGE ZERO
LDY #>DOSCOPY
STY A1H
LDY #$43
STY A2H
LDY #$FF
STY A2L
INY ;NOW 0
STY A1L
STY A4L
JSR MOVE ;AND MOVE DOS 3.3 IN
*
DOSPREP LDA #$0B ;INIT COMMAND MAKES IT LIVE
STA FMPCMD
LDA #$00 ;RUN COMMAND
STA DOSCMD ;FOR GREETING PROGRAM FILENAME
JSR FNBLK
LDX #0
FNAME1 LDA NAME,X ;PUT IN OUR NAME
PHA
ORA #$80 ;SET HI BIT ALWAYS
STA PFNBUF,X
PLA ;DONE IF AT HI BIT SET
BMI FIN ;YES
INX ;NOT YET
BNE FNAME1 ;ALWAYS
FIN LDA #$EA ;PATCH TO PREVENT 0 IN $E000 BY BOOT
STA $BFD3
STA $BFD4
STA $BFD5
JMP DOSCOLD ;GO START IT UP
*
*FILENAME TO RUN GOES HERE
NAME DCI 'HELLO'
*