159 lines
2.5 KiB
NASM
159 lines
2.5 KiB
NASM
case on
|
|
mcopy cmdproc.macros
|
|
|
|
SESSION_NUM_START gequ $F8
|
|
|
|
RamGoComp gequ $E1100C
|
|
RamForbid gequ $E11018
|
|
RamPermit gequ $E1101C
|
|
|
|
* Location of command rec ptr on entry to an AppleTalk command procedure
|
|
* (in the system zero page, which is the current direct page)
|
|
cmdRecPtr gequ $80
|
|
|
|
* Location to put completion routine ptr before calling RamGoComp
|
|
compPtr gequ $84
|
|
|
|
|
|
* AppleTalk command procedure (which acts as a dispatcher for all commands)
|
|
cmdProc start
|
|
lda cmdRecPtr+2
|
|
pha
|
|
lda cmdRecPtr
|
|
pha
|
|
jsl DispatchASPCommand
|
|
cmp #0
|
|
bne doOrig
|
|
cpx #0
|
|
bne doOrig
|
|
rtl
|
|
doOrig short i ;push original procedure ptr
|
|
phx
|
|
long i
|
|
dec a
|
|
pha
|
|
rtl ;jump to it
|
|
end
|
|
|
|
nbpCmdProc start
|
|
lda cmdRecPtr+2
|
|
pha
|
|
lda cmdRecPtr
|
|
pha
|
|
jsl DoLookupName
|
|
cmp #0
|
|
bne doOrig
|
|
cpx #0
|
|
bne doOrig
|
|
rtl
|
|
doOrig short i ;push original procedure ptr
|
|
phx
|
|
long i
|
|
dec a
|
|
pha
|
|
rtl ;jump to it
|
|
end
|
|
|
|
pfiLoginCmdProc start
|
|
lda cmdRecPtr+2
|
|
pha
|
|
lda cmdRecPtr
|
|
pha
|
|
jslOldPFILogin entry
|
|
jsl jslOldPFILogin ; to be changed
|
|
rep #$30 ; ensure full native mode
|
|
jsl SaveNames
|
|
rtl
|
|
end
|
|
|
|
pfiLogin2CmdProc start
|
|
lda cmdRecPtr+2
|
|
pha
|
|
lda cmdRecPtr
|
|
pha
|
|
jslOldPFILogin2 entry
|
|
jsl jslOldPFILogin2 ; to be changed
|
|
rep #$30 ; ensure full native mode
|
|
jsl SaveNames
|
|
rtl
|
|
end
|
|
|
|
pfiListSessions2CmdProc start
|
|
lda cmdRecPtr+2
|
|
pha
|
|
lda cmdRecPtr
|
|
pha
|
|
jslOldPFIListSessions2 entry
|
|
jsl jslOldPFIListSessions2 ; to be changed
|
|
rep #$30 ; ensure full native mode
|
|
jsl InsertCorrectNames
|
|
rtl
|
|
end
|
|
|
|
pfiLoginContCmdProc start
|
|
lda cmdRecPtr+2
|
|
pha
|
|
lda cmdRecPtr
|
|
pha
|
|
jslOldPFILoginCont entry
|
|
jsl jslOldPFILoginCont ; to be changed
|
|
rep #$30 ; ensure full native mode
|
|
jsl PostLoginCont
|
|
rtl
|
|
end
|
|
|
|
|
|
CallCompletionRoutine start
|
|
phb
|
|
jsl ForceLCBank2 ;use LC bank 2
|
|
pha
|
|
phd
|
|
lda #0 ;set direct page = system zero page
|
|
tcd
|
|
|
|
jsl RamForbid
|
|
lda 9,s
|
|
sta compPtr
|
|
lda 9+2,s
|
|
sta compPtr+2
|
|
ora 9,s
|
|
beq skip ;skip call if compPtr = 0
|
|
jsl >RamGoComp
|
|
skip jsl RamPermit
|
|
pld
|
|
jsl RestoreStateReg
|
|
|
|
pla
|
|
sta 3,s
|
|
pla
|
|
sta 3,s
|
|
plb
|
|
rtl
|
|
end
|
|
|
|
* Replacement attention vector to be called from PFI.
|
|
* This calls the previous attention vector (from the ATalk driver) for ASP
|
|
* sessions (numbered 1-8), but not for the higher-numbered DSI sessions.
|
|
* This is needed because ATalk's attention vector is hard-coded for session
|
|
* numbers 1-8 only and trashes memory when called with higher numbers.
|
|
attentionVec start
|
|
phd
|
|
phy
|
|
phx
|
|
tsc
|
|
tcd
|
|
lda [1]
|
|
plx
|
|
ply
|
|
pld
|
|
|
|
and #$00FF
|
|
cmp #SESSION_NUM_START
|
|
bge skip
|
|
jmlOldAttentionVec entry
|
|
jml attentionVec ;to be changed to old attention vec
|
|
skip clc
|
|
rtl
|
|
end
|
|
|