176 lines
2.4 KiB
ArmAsm
176 lines
2.4 KiB
ArmAsm
LST OFF
|
|
*
|
|
* PCS - SWAPPING HANDLER
|
|
*
|
|
ORG $1E00
|
|
OBJ $8000
|
|
*
|
|
TEMP EQU $07
|
|
XTEMP EQU TEMP+1
|
|
YTEMP EQU XTEMP+1
|
|
*
|
|
* EXTERNALS
|
|
*
|
|
DIV7 EQU $1400
|
|
MOD7 EQU DIV7+$100
|
|
LO EQU MOD7+$100
|
|
HI EQU LO+$C0
|
|
SETMODE EQU HI+$10F
|
|
DRAWBITS EQU SETMODE+$25
|
|
XOFFDRAW EQU DRAWBITS+$3D
|
|
GETRECT EQU XOFFDRAW+$59
|
|
MASKS EQU GETRECT+$41
|
|
HLINE EQU MASKS+$F
|
|
VLINE EQU HLINE+$20
|
|
FRAMERECT EQU VLINE+$58
|
|
DRAWRECT EQU FRAMERECT+$28
|
|
INRECT EQU DRAWRECT+$10
|
|
GETBUTNS EQU INRECT+$2D
|
|
INITCRSR EQU GETBUTNS+$7
|
|
XDRAWCRSR EQU INITCRSR+$1B
|
|
UPDATECRSR EQU XDRAWCRSR+$7
|
|
DOCRSRX EQU UPDATECRSR+$1E
|
|
GETCURSORX EQU DOCRSRX+$45
|
|
DOCRSRY EQU GETCURSORX+$16
|
|
JSCTRL EQU DOCRSRY+$4D
|
|
CRSRINRECT EQU JSCTRL+$21
|
|
DOMENU EQU CRSRINRECT+$13
|
|
SELECT EQU DOMENU+$54
|
|
INIT EQU SELECT+$40
|
|
MOVEUP EQU INIT+$35
|
|
MOVEDOWN EQU MOVEUP+$3B
|
|
ADDIYX EQU MOVEDOWN+$39
|
|
ADDYX EQU ADDIYX+$E
|
|
SUBIYX EQU ADDYX+$10
|
|
SUBYX EQU SUBIYX+$12
|
|
CMPYX EQU SUBYX+$10
|
|
CHARTO EQU CMPYX+$F
|
|
PRCHAR EQU CHARTO+$A
|
|
PRINT EQU PRCHAR+$38
|
|
CHAR EQU PRINT+$19
|
|
*
|
|
VALIDBUF EQU $A500
|
|
FIRSTBOOT EQU $B700
|
|
READSECTORS EQU $B784
|
|
SECTORCOUNT EQU $B7C2
|
|
BOOTSLOT EQU $B7C3
|
|
SLOT EQU $B7E9
|
|
DRIVE EQU $B7EA
|
|
VOLUME EQU $B7EB
|
|
READBUFLO EQU $B7F0
|
|
*
|
|
SWAPEDIT LDX #0
|
|
JSR SWAPSECTORS
|
|
JMP $9500
|
|
*
|
|
SWAPWIRE LDX #1
|
|
JSR SWAPPIECE
|
|
JMP $9513
|
|
*
|
|
SWAPDISK LDX #2
|
|
JSR SWAPPIECE
|
|
JMP $9510
|
|
*
|
|
SWAPUSER LDX #3
|
|
BNE SWAPSECTORS
|
|
*
|
|
RELOAD PHA
|
|
LDX #1
|
|
JSR SWAPSECTORS
|
|
PLA
|
|
TAX
|
|
TXS
|
|
LDA #0
|
|
STA $82
|
|
STA $83
|
|
STA $84
|
|
RTS
|
|
*
|
|
SWAPPIECE JSR SWAPSECTORS
|
|
JSR $9500
|
|
LDX #0
|
|
*
|
|
SWAPSECTORS STX XTEMP
|
|
LDA BOOTSLOT
|
|
STA SLOT
|
|
LDA #1
|
|
STA DRIVE
|
|
LDA #0
|
|
STA READBUFLO
|
|
STA VOLUME
|
|
JSR PCSINSERTED
|
|
*
|
|
LDX XTEMP
|
|
LDA COUNT,X
|
|
STA SECTORCOUNT
|
|
LDA SECTOR,X
|
|
STA TEMP
|
|
LDA TRACK,X
|
|
LDY ADDRHI,X
|
|
LDX TEMP
|
|
JMP READSECTORS
|
|
*
|
|
COUNT HEX 390A080A
|
|
TRACK HEX 0B0C0D0E
|
|
SECTOR HEX 08090709
|
|
ADDRHI HEX A89E9C8E
|
|
*
|
|
PCSINSERTED LDA #0
|
|
LDX #1
|
|
STX SECTORCOUNT
|
|
LDY #>VALIDBUF
|
|
JSR READSECTORS
|
|
*
|
|
LDY #$40
|
|
PCSIN2 LDA VALIDBUF,Y
|
|
CMP FIRSTBOOT,Y
|
|
BNE PCSIN3
|
|
DEY
|
|
BPL PCSIN2
|
|
RTS
|
|
*
|
|
PCSIN3 LDY #1
|
|
JSR SETMODE
|
|
LDA #<DIALOGBITS
|
|
LDX #>DIALOGBITS
|
|
JSR DRAWBITS
|
|
LDY #3
|
|
JSR SETMODE
|
|
LDA #<DIALOGBOX
|
|
LDX #>DIALOGBOX
|
|
JSR DRAWRECT
|
|
LDY #2
|
|
JSR SETMODE
|
|
JSR FRAMERECT+3
|
|
*
|
|
LDY #$59
|
|
LDX #1
|
|
LDA #0
|
|
JSR CHARTO
|
|
LDA #<INSERTMSG
|
|
LDX #>INSERTMSG
|
|
JSR PRINT
|
|
*
|
|
STA $C010
|
|
WAIT1 LDA $C000
|
|
BPL WAIT1
|
|
STA $C010
|
|
*
|
|
LDY #0
|
|
JSR SETMODE
|
|
LDA #<DIALOGBITS
|
|
LDX #>DIALOGBITS
|
|
JSR DRAWBITS
|
|
LDY #2
|
|
JSR SETMODE
|
|
*
|
|
JMP PCSINSERTED
|
|
*
|
|
INSERTMSG HEX 12171C0E1B1D24190C1C240D121C94
|
|
*
|
|
DIALOGBITS DA $A000
|
|
HEX 5700000B28
|
|
*
|
|
DIALOGBOX HEX 5700000A2705
|
|
*
|