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