a2-chemi-gs-1993/main.asm

1 line
11 KiB
NASM
Raw Permalink Normal View History

2017-10-22 14:30:14 +00:00
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