Apple2GSBuildPipeline/pkg/Templates/Apple IIgs/ORCAM Control Panel.xctemplate/main.s

214 lines
3.8 KiB
ArmAsm

;
; ___FILENAME___
; ___PACKAGENAME___
;
; Created by ___FULLUSERNAME___ on ___DATE___.
; Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved.
;
mcopy main.macros
keep main
; Resource numbers
cdevResource gequ $1
mainResource gequ $100
helpResource gequ $101
; CDEV Message Numbers
machineCDev gequ 1
bootCDev gequ 2
reservedCDev gequ 3
initCDev gequ 4
closeCDev gequ 5
eventsCDev gequ 6
createCDev gequ 7
aboutCDev gequ 8
rectCDev gequ 9
hitCDev gequ 10
runCDev gequ 11
editCDev gequ 12
; Edit menu actions
undoAction gequ 5
cutAction gequ 6
copyAction gequ 7
pasteAction gequ 8
clearAction gequ 9
main start
sub (2:message,4:data1,4:data2),0
lda message
cmp #machineCDev
bne notMachine
; Return zero if you cannot be opened on this machine
; (and maybe display an alert explaining why).
ret 2:#1
notMachine anop
cmp #bootCDev
bne notBoot
jsl doBoot
bra done
notBoot anop
cmp #initCDev
bne notInit
jsl doInit
bra done
notInit anop
cmp #closeCDev
bne notClose
jsl doClose
bra done
notClose anop
cmp #eventsCDev
bne notEvents
jsl doEvents
bra done
notEvents anop
cmp #createCDev
bne notCreate
jsl doCreate
bra done
notCreate anop
cmp #aboutCDev
bne notAbout
jsl doAbout
bra done
notAbout anop
cmp #rectCDev
bne notRect
jsl doRect
bra done
notRect anop
cmp #hitCDev
bne notHit
jsl doHit
bra done
notHit anop
cmp #runCDev
bne notRun
jsl doRun
bra done
notRun anop
cmp #editCDev
bne notEdit
jsl doEdit
bra done
notEdit anop
done anop
ret 2:#1
doBoot entry
; data1 is a pointer to a flag. Set bit 0 to 1 in this flag if you want to
; draw an X through the icon at boot time to indicate that this CDev will not
; load.
rtl
doInit entry
; data1 is a pointer to the grafport.
rtl
doClose entry
; data1 is a pointer to the grafport.
rtl
doEvents entry
; data1 is a pointer to the event record.
; data2 is a pointer to the grafport.
rtl
doCreate entry
; data1 is a pointer to the grafport.
pha
pha
~NewControl2 data1,#9,#mainResource
pla
pla
rtl
doAbout entry
; data1 is a pointer to the grafport.
pha
pha
~NewControl2 data1,#9,#helpResource
pla
pla
rtl
doRect entry
; data1 is a pointer to the grafport.
rtl
doHit entry
; data1 is a handle to the control which was hit
; data2 is the controlID of the control which was hit
rtl
doRun entry
; data1 is a pointer to the grafport.
rtl
doEdit entry
; The lower 16 bits of data1 is the edit action
; data2 is a pointer to the grafport.
lda data1
cmp #undoAction
bne notUndo
; Handle undo here
bra doneEdit
notUndo anop
cmp #cutAction
bne notCut
; Handle cut here
bra doneEdit
notCut anop
cmp #copyAction
bne notCopy
; Handle copy here
bra doneEdit
notCopy anop
cmp #pasteAction
bne notPaste
; Handle paste here
bra doneEdit
notPaste anop
cmp #clearAction
bne notClear
; handle clear here
bra doneEdit
notClear anop
doneEdit anop
rtl
end