1 line
11 KiB
NASM
1 line
11 KiB
NASM
|
keep Main
****************************************************************
* ChemiGS *
****************************************************************
* A Drawing Program for Chemical Structures *
* (c) 1992-93 by Urs Hochstrasser *
* Buendtenweg 6 *
* 5105 AUENSTEIN (SWITZERLAND) *
****************************************************************
* Module MAIN
****************************************************************
*
* USES ...
*
mcopy Main.macros
copy equates.asm
****************************************************************
*
* MAIN ROUTINE
*
Main start
using Globals
phk
plb
~TLStartup
pha gMemID:=MMStartup;
~MMstartup
pla
sta gMemID
ora #$0100
sta gMyID make private ID for all mem requests
lda #1
sta fDoAbout
jsr Hello
pha gToolRef:=StartupTools(...
pha
~StartupTools gMemID,#RefIsResource,#kTools
sta gToolErr
pl4 gToolRef
lda gToolErr
bne exit Shutdown on Tool Startup Error
jsr InitGlobals
lda fDoAbout
beq noAbout
jsr ShowAbout
noAbout anop
jsr SetUpMenus
jsr SetUpWindows
jsr HideAbout
jsr FirstFile
~InitCursor
jsr EventLoop
exit ~DisposeAll gMyID
~ShutDownTools #RefIsHandle,gToolRef
~MMShutDown gMemID
~TLShutDown
QuitGS quitParm
quitParm ds 8
end
FirstFile start
using Globals
using Parms
ph4 #0
~NewHandle #1,gMyID,#0,#0
pl4 messaHandle
~MessageCenter #2,#1,messaHandle get Message from Finder
bcc l4
brl l1 ...no message found...
l4 anop
lda messaHandle
ldx messaHandle+2
jsr Deref
sta messaPtr
stx messaPtr+2
move4 messaPtr,0
add4 0,#6
lda [0]
sta message
cmp #2
bcc l3
brl l2 >= 2 NO VALID MESSAGE!
l3 anop
inc4 0 put pointer one byte before path str
* brk
lda [0] ...and convert it to a Cl1 input string
xba
and #$00FF
sta [0]
sta pathLen
move4 0,Opath
ldy pathLen load path str length into y
add4 0,#1 0 points 1 byt before 1st ch in path str
loop lda [0],y
and #$00FF
cmp #'/'
beq match
cmp #':'
beq match
dbne y,loop
match sty temp
sub2 pathLen,temp,nameLen
add4 0,temp
dec4 0
lda nameLen
* xba
sta nameLen2
inc4 0
inc4 nameLen
ph4 #0
~NewHandle nameLen,gMyID,#0,#0
pl4 gTitleH
~PtrToHand 0,gTitleH,nameLen
~PtrToHand #nameLen2,gTitleH,#1
lda gTitleH
ldx gTitleH+2
jsr Deref
sta gTitlePtr
stx gTitlePtr+2
inc fFirstFile
jsr Open2
lda message
cmp #1
bne l2
jsr DoPrint
l2 ~MessageCenter #3,#1,messaHandle delete the Message
~DisposeHandle messaHandle
bra exit
l1 jsr DoNew
exit rts
messaHandle ds 4
thePtr ds 4
messaPtr ds 4
message ds 2
nameLen ds 4
pathLen ds 4
temp ds 4
nameLen2 ds 2
end
****************************************************************
*
* General Subroutines
Error start if there is a Tool error, display it
using Globals
php
lda gToolErr
beq exit
~SysBeep
ph2 #0
~ErrorWindow #1,#0,gToolErr
pl2 dummy
exit lda gToolErr
plp
rts
dummy ds 2
end
SetUpMenus start
using Globals
ph4 #0
~NewMenuBar2 #RefIsResource,#kMBarID,#0
pl4 myBar
~SetsysBar myBar
~SetMenuBar #0
~FixAppleMenu #kAppleM
pha
~FixMenuBar
pl2 heigth
~DrawMenuBar
rts
heigth ds 2
myBar ds 4
end END of SetUPMenus
EventLoop start
using Globals
stz gDone
evloop jsr CheckFrontW
pha
~TaskMaster #everyEvent,#gMainEvt
pl2 code
lda code
cmp #wInGoAway
bne l2
jsr DoClose
brl exit
l2 cmp #wInMenuBar
bne l1
jsr HandleMenu
brl exit
l1 cmp #wInSpecial
bne l3
jsr HandleMenu
brl exit ???//
l3 anop *** new stuff
cmp #wInContent
bne l4
jsr HandleContent in module WINDOWS
brl exit ???//
l4 cmp #wInInfo
bne exit
jsr HandleInfo in module WINDOWS
exit lda gDone
bne exit2
lda gTaskDta see whether Tool win needs redrawing
and #$7FFF
cmp #wInGrow
beq doUpD @@@@@@@@
cmp #wInDrag
beq doUpD
cmp #wInZoom
beq doUpD
cmp #wClickCalled
beq doUpD
* Insert Null Event Handler Here...
jsr HndlDiskInsert
bra loop
doUpD jsr UpdateToolWin
loop anop
jsr AdjustCursor
jmp evloop
exit2 rts
code ds 2
end
CheckFrontW start
using Globals
ph4 #0
~FrontWindow
pl4 theWindow
lda theWindow same window
|