home *** CD-ROM | disk | FTP | other *** search
- opt c-,d-,l-,x-
-
- *
- * Brain Version 1.01
- *
- * © André Wichmann of CLUSTER in 1990
- *
- * Started on 25/05/1990
- * Last update 30/09/1990
- *
-
- incdir RAM:include/
- include exec/exec_lib.i
- include exec/exec.i
- include exec/memory.i
- include intuition/intuition_lib.i
- include intuition/intuition.i
- include graphics/graphics_lib.i
- include libraries/dos_lib.i
- include libraries/dosextens.i
-
- ALLOC MACRO
- move.l #\1,d0
- move.l #\2,d1
- CALLEXEC AllocMem
- ENDM
- FREE MACRO
- move.l \1,a1
- move.l #\2,d0
- CALLEXEC FreeMem
- ENDM
- MENU MACRO
- dc.l \1
- dc.w \2,\3,\4,\5
- dc.w MENUENABLED
- dc.l Titel_\@
- dc.l \6
- dc.w 0,0,0,0
- Titel_\@ dc.b \7,0
- EVEN
- ENDM
-
- ITEM MACRO
- dc.l \1
- dc.w \2,\3,\4,\5
- dc.w ITEMENABLED!ITEMTEXT!HIGHCOMP!\6
- dc.l 0
- dc.l Name_\@
- dc.l 0
- dc.b \7,0
- dc.l 0
- dc.w 0
- Name_\@ dc.b 0,2
- dc.b RP_JAM1,0
- dc.w 2,2
- dc.l 0
- dc.l String_\@
- dc.l 0
- String_\@ dc.b \8,0
- EVEN
- ENDM
- EXCLUDE MACRO
- dc.l \1
- dc.w \2,\3,\4,\5
- dc.w ITEMENABLED!ITEMTEXT!HIGHCOMP!CHECKIT!\6
- dc.l \7
- dc.l Name_\@
- dc.l 0
- dc.b 0,0
- dc.l 0
- dc.w 0
- Name_\@ dc.b 0,2
- dc.b RP_JAM1,0
- dc.w 2,2
- dc.l 0
- dc.l String_\@
- dc.l 0
- String_\@ dc.b \8,0
- EVEN
- ENDM
-
- BOOLGAD MACRO
- dc.l \1
- dc.w \2,\3,\4,\5
- dc.w GADGHNONE
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l 0,0,0,0,0
- dc.w \6
- dc.l 0
- ENDM
- PRINT MACRO
- move.l \1,d0
- move.l \2,d1
- move.l rp(pc),a1
- CALLGRAF Move
- lea Text_\@(pc),a0
- bsr Print_text
- bra.s Branch_\@
- Text_\@ dc.b \3,0
- EVEN
- Branch_\@
- ENDM
- LINE MACRO
- move.l rp(pc),a1
- move.l \5,d0
- CALLGRAF SetAPen
- move.l rp(pc),a1
- move.l \1,d0
- move.l \2,d1
- CALLGRAF Move
- move.l \3,d0
- move.l \4,d1
- CALLGRAF Draw
- ENDM
- BOX MACRO
- move.l rp(pc),a1
- move.l \5,d0
- CALLGRAF SetAPen
- move.l rp(pc),a1
- move.l \1,d0
- move.l \2,d1
- move.l \3,d2
- move.l \4,d3
- CALLGRAF RectFill
- LINE \1,\2,\3,\2,#5
- LINE \1,\2,\1,\4,#5
- LINE \3,\2,\3,\4,#6
- LINE \1,\4,\3,\4,#6
- move.l rp(pc),a1
- move.l #7,d0
- CALLGRAF SetAPen
- move.l rp(pc),a1
- move.l \5,d0
- CALLGRAF SetBPen
- ENDM
-
- MESSAGE MACRO
- move.l rp(pc),a1
- move.l #0,d0
- CALLGRAF SetAPen
- move.l rp(pc),a1
- move.l #0,d0
- CALLGRAF SetBPen
- move.l rp(pc),a1
- move.l \1,d0
- move.l \2,d1
- CALLGRAF Move
- lea Spaces(pc),a0
- bsr Print_text
- move.l rp(pc),a1
- move.l \1+2,d0
- move.l \2+2,d1
- CALLGRAF Move
- lea Spaces(pc),a0
- bsr Print_text
- move.l rp(pc),a1
- move.l #RP_JAM1,d0
- CALLGRAF SetDrMd
- move.l rp(pc),a1
- move.l #0,d0
- CALLGRAF SetBPen
- move.l rp(pc),a1
- move.l #6,d0
- CALLGRAF SetAPen
- move.l rp(pc),a1
- move.l \1+2,d0
- move.l \2+2,d1
- CALLGRAF Move
- lea String_\@(pc),a0
- bsr Print_text
- move.l rp(pc),a1
- move.l #5,d0
- CALLGRAF SetAPen
- move.l rp(pc),a1
- move.l \1+1,d0
- move.l \2+1,d1
- CALLGRAF Move
- lea String_\@(pc),a0
- bsr Print_text
- move.l rp(pc),a1
- move.l #4,d0
- CALLGRAF SetAPen
- move.l rp(pc),a1
- move.l \1,d0
- move.l \2,d1
- CALLGRAF Move
- lea String_\@(pc),a0
- bsr Print_text
- move.l rp(pc),a1
- move.l #RP_JAM2,d0
- CALLGRAF SetDrMd
- bra.s Label_\@
- String_\@ dc.b \3,0
- EVEN
- Label_\@
- ENDM
-
- SECTION "Brain",CODE
-
- include user/WBStartup.i
-
- _Main bsr OpenLibs
- move.l #4*8*8,d0
- move.l #MEMF_PUBLIC!MEMF_CLEAR,d1
- CALLEXEC AllocMem
- move.l d0,LevelA
- move.l #4*8*8,d0
- move.l #MEMF_PUBLIC!MEMF_CLEAR,d1
- CALLEXEC AllocMem
- move.l d0,LevelB
- move.l #4*64*8*8,d0
- move.l #MEMF_PUBLIC!MEMF_CLEAR,d1
- CALLEXEC AllocMem
- move.l d0,Undo
- move.l #64*gg_SIZEOF,d0
- move.l #MEMF_PUBLIC!MEMF_CLEAR,d1
- CALLEXEC AllocMem
- move.l d0,GadgetX
- move.l d0,Gadget4
-
- New_Size bsr CloseInt
- bsr OpenInt
- tst.l Screenptr
- beq Fail_1
- BOX #44,#184,#123,#199,#1
- PRINT #52,#194,<"NEW GAME">
- BOX #140,#184,#187,#199,#2
- PRINT #148,#194,<"QUIT">
- BOX #204,#184,#275,#199,#3
- PRINT #212,#194,<"ICONIFY">
- BOX #100,#166,#147,#181,#4
- PRINT #108,#176,<"UNDO">
- BOX #164,#166,#219,#181,#1
- PRINT #172,#176,<"RETRY">
- bsr DisplayAbout
-
- Create_New clr.l Won
- bsr New_Level
- bsr Show_LevelA
- bsr Show_LevelB
- move.l #0,Move
- MESSAGE #8,#148,<" ">
-
- Main_Event move.l Windowptr(pc),a0
- bsr Get_Message
- cmp.l #MENUPICK,d6
- beq Do_Menu
- clr.l d0
- move.w gg_GadgetID(a4),d0
- cmp.l #128,d0
- beq Create_New
- cmp.l #129,d0
- beq _End
- cmp.l #130,d0
- beq Iconify
- cmp.l #131,d0
- beq Un_do
- cmp.l #132,d0
- beq Retry
- move.l LevelB(pc),a0
- move.l d0,d1
- lsl.l #2,d1
- cmp.l #0,(a0,d1)
- bne IllegalMove
- movem.l d0-d7/a0-a6,-(sp)
- move.l Undo(pc),a1
- move.l Move(pc),d0
- mulu #4*64,d0
- add.l d0,a1
- move.l LevelB(pc),a0
- move.l Looper(pc),d0
- Copy_Level move.l (a0)+,(a1)+
- dbra d0,Copy_Level
- addq.l #1,Move
- movem.l (sp)+,d0-d7/a0-a6
- bsr Set
- bsr Show_LevelB
- MESSAGE #8,#148,<" ">
- move.l LevelA(pc),a0
- move.l LevelB(pc),a1
- move.l Looper(pc),d0
- Compare cmp.l (a0)+,(a1)+
- bne Main_Event
- dbra d0,Compare
- MESSAGE #8,#148,<" --- LEVEL FINISHED ! --- ">
- move.l #1,Won
- bra Main_Event
-
- Un_do tst.l Move
- bne UndoOk
- MESSAGE #8,#148,<" --- CAN'T UNDO !!! --- ">
- bra Main_Event
- UndoOk subq.l #1,Move
- move.l Undo(pc),a0
- move.l Move(pc),d0
- mulu #4*64,d0
- add.l d0,a0
- move.l LevelB(pc),a1
- move.l Looper(pc),d0
- ReCopy_Level move.l (a0)+,(a1)+
- dbra d0,ReCopy_Level
- bsr Show_LevelB
- bra Main_Event
-
- Iconify bsr CloseInt
- lea AvailWindow(pc),a0
- CALLINT OpenWindow
- move.l d0,Windowptr
- move.l d0,a0
- move.l wd_RPort(a0),rp
-
- IconEvent bsr Show_Mem
- move.l #25,d1
- CALLDOS Delay
- move.l Windowptr(pc),a0
- move.l wd_UserPort(a0),a0
- CALLEXEC GetMsg
- tst.l d0
- beq.s IconEvent
- move.l d0,a1
- CALLEXEC ReplyMsg
-
- move.l Windowptr(pc),a0
- CALLINT CloseWindow
- bsr OpenInt
- BOX #44,#184,#123,#199,#1
- PRINT #52,#194,<"NEW GAME">
- BOX #140,#184,#187,#199,#2
- PRINT #148,#194,<"QUIT">
- BOX #204,#184,#275,#199,#3
- PRINT #212,#194,<"ICONIFY">
- BOX #100,#166,#147,#181,#4
- PRINT #108,#176,<"UNDO">
- BOX #164,#166,#219,#181,#1
- PRINT #172,#176,<"RETRY">
- bsr Show_LevelA
- bsr Show_LevelB
- bra Main_Event
-
- Show_Mem lea Title+2(pc),a5
- move.l #MEMF_CHIP,d1
- CALLEXEC AvailMem
- lea Title+2(pc),a5
- bsr ConvertDec
- move.l #MEMF_FAST,d1
- CALLEXEC AvailMem
- move.b #" ",(a5)+
- move.b #"F",(a5)+
- move.b #":",(a5)+
- bsr.s ConvertDec
- move.l #MEMF_LARGEST,d1
- CALLEXEC AvailMem
- move.b #" ",(a5)+
- move.b #"L",(a5)+
- move.b #":",(a5)+
- bsr.s ConvertDec
- move.l #0,d1
- CALLEXEC AvailMem
- move.b #" ",(a5)+
- move.b #"A",(a5)+
- move.b #":",(a5)+
- bsr.s ConvertDec
- clr.b (a5)+
- move.l rp(pc),a1
- move.l #30,d0
- move.l #7,d1
- CALLGRAF Move
- lea Title(pc),a0
- move.l #31,d0
- CALLGRAF Text
- rts
-
- ConvertDec lsr.l #8,d0
- lsr.l #2,d0
- move.l #10000,d1
- moveq #4,d2
- clr.l d3
- Convert divu d1,d0
- divu #10,d1
- add.b #"0",d0
- cmp.b #"0",d0
- bne.s Not_ZeroA
- tst.l d3
- bne.s Not_ZeroA
- move.b #" ",d0
- bra.s LetterOut
- Not_ZeroA move.l #1,d3
- LetterOut move.b d0,(a5)+
- swap d0
- and.l #$ffff,d0
- dbra d2,Convert
- rts
-
- AvailWindow dc.w 588-(36*8-4),0,36*8-8,10
- dc.b -1,-1
- dc.l CLOSEWINDOW!MOUSEBUTTONS
- dc.l SMART_REFRESH!WINDOWDRAG!WINDOWCLOSE!RMBTRAP
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
- dc.w 0,0,0,0
- dc.w WBENCHSCREEN
- Windowptr_1 ds.l 1
-
- Title dc.b "C:"
- ds.b 38
- Buffer ds.b 16
-
- Do_Menu cmp.l #MENUNULL,d7
- beq Main_Event
- move.l d7,d0
- and.l #%11111,d0
- lsl.l #2,d0
- lea Titles(pc),a0
- move.l (a0,d0),a0
- move.l d7,d0
- lsr.l #5,d0
- and.l #%111111,d0
- lsl.l #2,d0
- move.l (a0,d0),a0
- jmp (a0)
-
- Titles dc.l Items1,Items2,Items2
- Items1 dc.l Calc_Size,Create_New,Retry,Un_do,Iconify,About,_End
- Items2 dc.l Main_Event,Main_Event,Main_Event,Main_Event,Main_Event,Main_Event,Main_Event
- Items3 dc.l Main_Event,Main_Event,Main_Event,Main_Event,Main_Event,Main_Event,Main_Event
-
- About clr.l AboutFlag
- bsr.s DisplayAbout
- bra Main_Event
-
- DisplayAbout move.l Screenptr(pc),ScreenptrA
- move.l rp(pc),hrp
- tst.l AboutFlag
- bne AboutFail
- lea AboutWindow(pc),a0
- CALLINT OpenWindow
- tst.l d0
- beq AboutFail
- move.l d0,WindowptrA
- move.l d0,a0
- move.l wd_RPort(a0),rp
- move.l #1,AboutFlag
-
- BOX #0,#0,#247,#179,#0
- MESSAGE #8+2,#8+4,<" BRAIN Version 1.01">
- MESSAGE #12+2,#18+8,<"© André Wichmann of CLUSTER">
- MESSAGE #12+2,#28+8,<" Posener Weg 4">
- MESSAGE #12+2,#38+8,<" 5300 Bonn 1">
- MESSAGE #12+2,#48+8,<" West Germany">
- MESSAGE #8+2,#68+8,<" This game is FREEWARE and">
- MESSAGE #12+2,#78+8,<"may be copied as long as the">
- MESSAGE #8+2,#88+8,<" doc-file is included, the">
- MESSAGE #8+2,#98+8,<" credits are not changed and">
- MESSAGE #12+2,#108+8,<" - NO - profit is made with">
- MESSAGE #12+2,#118+8,<" distribution.">
- MESSAGE #8+2,#138+8,<"Dedicated to all programmers">
- MESSAGE #12+2,#148+8,<" who don't know what to do">
- MESSAGE #8+2,#158+8,<"while assembling/compiling!">
- LINE #247,#0,#247,#179,#6
-
- move.l WindowptrA(pc),a0
- bsr Get_Message
-
- move.l WindowptrA(pc),a0
- CALLINT CloseWindow
- AboutFail move.l hrp(pc),rp
- rts
-
- AboutWindow dc.w 36,10,248,180
- dc.b -1,-1
- dc.l MOUSEBUTTONS
- dc.l SMART_REFRESH!ACTIVATE!BORDERLESS!RMBTRAP
- dc.l 0,0,0
- ScreenptrA ds.l 1
- dc.l 0
- dc.w 0,0,0,0
- dc.w CUSTOMSCREEN
-
- Calc_Size lea Item2_1(pc),a0
- move.l #2,d0
- Get_NewX move.w mi_Flags(a0),d1
- and.l #TOGGLESELECT,d1
- tst.l d1
- bne.s YeahX
- move.l (a0),a0
- addq.l #1,d0
- bra.s Get_NewX
- YeahX move.w d0,XSize
- move.l #2,d0
- lea Item3_1(pc),a0
- Get_NewY move.w mi_Flags(a0),d1
- and.l #TOGGLESELECT,d1
- tst.l d1
- bne.s YeahY
- move.l (a0),a0
- addq.l #1,d0
- bra.s Get_NewY
- YeahY move.w d0,YSize
- clr.l d0
- clr.l d1
- move.w XSize(pc),d0
- move.w YSize(pc),d1
- move.l d0,d2
- move.l d1,d3
- mulu d3,d2
- move.w d2,Mul
- subq.l #1,d2
- move.l d2,Looper
- subq.l #1,d0
- subq.l #1,d1
- move.l d0,XLooper
- move.l d1,YLooper
- bra New_Size
-
- Retry move.l LevelB(pc),a0
- move.l Looper(pc),d0
- ClearB move.l #0,(a0)+
- dbra d0,ClearB
- bsr Show_LevelB
- move.l #0,Move
- bra Main_Event
-
- IllegalMove tst.l Won
- bne Main_Event
- MESSAGE #8,#148,<" --- ILLEGAL MOVE ! --- ">
- bra Main_Event
-
- _End
- Fail_2 bsr CloseInt
- Fail_1 bsr CloseLibs
- move.l LevelA(pc),a1
- move.l #4*8*8,d0
- CALLEXEC FreeMem
- move.l LevelB(pc),a1
- move.l #4*8*8,d0
- CALLEXEC FreeMem
- move.l Undo(pc),a1
- move.l #4*64*8*8,d0
- CALLEXEC FreeMem
- move.l GadgetX(pc),a1
- move.l #64*gg_SIZEOF,d0
- CALLEXEC FreeMem
- clr.l d0
- rts
-
- OpenLibs lea Intuitionname,a1
- clr.l d0
- CALLEXEC OpenLibrary
- move.l d0,_IntuitionBase
- lea Graphicsname,a1
- clr.l d0
- CALLEXEC OpenLibrary
- move.l d0,_GfxBase
- lea Dosname,a1
- clr.l d0
- CALLEXEC OpenLibrary
- move.l d0,_DosBase
- rts
- CloseLibs move.l _IntuitionBase,a1
- CALLEXEC CloseLibrary
- move.l _GfxBase,a1
- CALLEXEC CloseLibrary
- move.l _DosBase,a1
- CALLEXEC CloseLibrary
- rts
-
- Get_Message move.l a0,a5
- Clear_Port move.l wd_UserPort(a5),a0
- CALLEXEC GetMsg
- tst.l d0
- bne.s Clear_Port
- Wait_Event move.l wd_UserPort(a5),a0
- move.b MP_SIGBIT(a0),d1
- clr.l d0
- bset d1,d0
- CALLEXEC Wait
- move.l wd_UserPort(a5),a0
- CALLEXEC GetMsg
- tst.l d0
- beq.s Wait_Event
- move.l d0,a1
- move.l im_Class(a1),d6
- clr.l d7
- move.w im_Code(a1),d7
- move.l im_IAddress(a1),a4
- CALLEXEC ReplyMsg
- rts
-
- New_Level move.l LevelA(pc),a0
- move.l LevelB(pc),a1
- move.l Looper(pc),d0
- ClearLvs move.l #0,(a0)+
- move.l #0,(a1)+
- dbra d0,ClearLvs
- lea RandomTab(pc),a0
- move.l #0,d0
- SetRandom move.l d0,(a0)+
- addq.l #1,d0
- cmp.w Mul,d0
- bne.s SetRandom
- move.l Looper(pc),d7
- lea RandomTab(pc),a5
- SetLevelA move.l d7,-(sp)
- Get_RND move.w $dff006,d0
- lsr.w #8,d0
- move.w $dff006,d1
- lsr.w #1,d0
- eor.b d1,d0
- move.w $dff006,d1
- lsr.w #4,d0
- eor.b d1,d0
- and.l #15,d0
- cmp.b d7,d0
- bgt.s Get_RND
- lsl.l #2,d0
- move.l (a5,d0),d6
- move.l #-1,(a5,d0)
- move.l d6,d0
- movem.l d0-d7/a0-a6,-(sp)
- move.l LevelA(pc),a0
- bsr.s Set
- cmp.w #20,Mul
- bgt.s No_Show
- bsr Show_LevelA
- No_Show movem.l (sp)+,d0-d7/a0-a6
- lea RandomTab(pc),a0
- lea RandomTab(pc),a1
- move.l Looper(pc),d0
- ShortenTab move.l (a0)+,d1
- tst.l d1
- bmi.s No_Back
- move.l d1,(a1)+
- No_Back dbra d0,ShortenTab
- move.l (sp)+,d7
- dbra d7,SetLevelA
- bsr Show_LevelA
- rts
-
- Set move.l d0,d1
- lsl.l #2,d0
- move.l #1,(a0,d0)
- divu XSize,d1
- move.l d1,d0
- and.l #$f,d1
- swap d0
- and.l #$f,d0
- move.l d0,d2
- move.l d1,d3
- addq.l #1,d0
- bsr.s Plot
- move.l d2,d0
- move.l d3,d1
- addq.l #1,d1
- bsr.s Plot
- move.l d2,d0
- move.l d3,d1
- subq.l #1,d0
- bsr.s Plot
- move.l d2,d0
- move.l d3,d1
- subq.l #1,d1
- bsr.s Plot
- rts
-
- Plot tst.l d0
- bmi.s NoPlot
- cmp.w XSize,d0
- bge.s NoPlot
- tst.l d1
- bmi.s NoPlot
- cmp.w YSize,d1
- bge.s NoPlot
- mulu XSize,d1
- add.l d1,d0
- lsl.l #2,d0
- cmp.l #0,(a0,d0)
- beq.s NoPlot
- add.l #1,(a0,d0)
- cmp.l #4,(a0,d0)
- ble.s NoPlot
- move.l #1,(a0,d0)
- NoPlot rts
-
- Show_LevelA move.l LevelA(pc),a5
- move.l #0,d5
- move.l YLooper(pc),d7
- SLALoop_1 move.l XBaseA(pc),d4
- move.l XLooper(pc),d6
- SLALoop_2 move.l d4,d2
- move.l d5,d3
- add.l #15,d2
- add.l #15,d3
- BOX d4,d5,d2,d3,(a5)
- move.l rp(pc),a1
- move.l d4,d0
- move.l d5,d1
- add.l #4,d0
- add.l #10,d1
- CALLGRAF Move
- move.l (a5)+,d0
- add.b #"0",d0
- cmp.b #"0",d0
- bne.s Not_Zero
- move.b #" ",d0
- Not_Zero move.b d0,Number
- lea Number(pc),a0
- move.l #1,d0
- CALLGRAF Text
- add.l #16,d4
- dbra d6,SLALoop_2
- add.l #16,d5
- dbra d7,SLALoop_1
- rts
-
- Show_LevelB move.l LevelB(pc),a5
- move.l #0,d5
- move.l YLooper(pc),d7
- SLBLoop_1 move.l XBaseB(pc),d4
- move.l XLooper(pc),d6
- SLBLoop_2 move.l d4,d2
- move.l d5,d3
- add.l #15,d2
- add.l #15,d3
- BOX d4,d5,d2,d3,(a5)
- move.l rp(pc),a1
- move.l d4,d0
- move.l d5,d1
- add.l #4,d0
- add.l #10,d1
- CALLGRAF Move
- move.l (a5)+,d0
- add.b #"0",d0
- cmp.b #"0",d0
- bne.s Not_Zero2
- move.b #" ",d0
- Not_Zero2 move.b d0,Number
- lea Number(pc),a0
- move.l #1,d0
- CALLGRAF Text
- add.l #16,d4
- dbra d6,SLBLoop_2
- add.l #16,d5
- dbra d7,SLBLoop_1
- rts
-
- OpenInt clr.l d0
- move.w XSize(pc),d0
- mulu #16,d0
- mulu #2,d0
- add.l #16,d0
- move.l #320,d1
- sub.l d0,d1
- divu #2,d1
- and.l #$ffff,d1
- move.l d1,XBaseA
- add.l #16,d1
- clr.l d0
- move.w XSize(pc),d0
- mulu #16,d0
- add.l d0,d1
- move.l d1,XBaseB
-
- move.l GadgetX(pc),a5
- move.l #0,d5
- move.l YLooper(pc),d7
- move.l #0,d3
- Build_1 move.l XBaseB(pc),d4
- move.l XLooper(pc),d6
- Build_2 move.l a5,(a5)
- add.l #gg_SIZEOF,(a5)+
- move.w d4,(a5)+
- move.w d5,(a5)+
- move.w #16,(a5)+
- move.w #16,(a5)+
- move.w #GADGHCOMP,(a5)+
- move.w #RELVERIFY,(a5)+
- move.w #BOOLGADGET,(a5)+
- move.l #0,(a5)+
- move.l #0,(a5)+
- move.l #0,(a5)+
- move.l #0,(a5)+
- move.l #0,(a5)+
- move.w d3,(a5)+
- move.l #0,(a5)+
- addq.w #1,d3
- add.w #16,d4
- dbra d6,Build_2
- add.w #16,d5
- dbra d7,Build_1
- sub.l #gg_SIZEOF,a5
- move.l #0,(a5)
-
- clr.l Screenptr
- lea Screen_1(pc),a0
- CALLINT OpenScreen
- tst.l d0
- beq.s NoScreen
- move.l d0,Screenptr
- move.l d0,a0
- add.l #44,a0
- lea Colortable(pc),a1
- move.l #8,d0
- CALLGRAF LoadRGB4
- lea Window_1(pc),a0
- CALLINT OpenWindow
- tst.l d0
- beq.s NoWindow
- move.l d0,Windowptr
- move.l d0,a0
- move.l wd_RPort(a0),rp
- move.l Windowptr(pc),a0
- lea Menu1(pc),a1
- CALLINT SetMenuStrip
- rts
- NoWindow move.l Screenptr(pc),a0
- CALLINT CloseScreen
- clr.l Screenptr
- NoScreen rts
-
- CloseInt tst.l Windowptr
- beq.s No_IntClose
- move.l Windowptr(pc),a0
- CALLINT CloseWindow
- move.l Screenptr(pc),a0
- CALLINT CloseScreen
- clr.l Screenptr
- clr.l Windowptr
- No_IntClose rts
-
- Print_text clr.l d0
- move.l a0,a2
- Count_Letters cmp.b #0,(a2)
- beq.s Found_Zero
- addq.l #1,d0
- addq.l #1,a2
- bra.s Count_Letters
- Found_Zero CALLGRAF Text
- rts
-
- Screen_1 dc.w 0,0,320,200,3
- dc.b 0,1
- dc.w 0,CUSTOMSCREEN
- dc.l Topaz_80,0,0,0
-
- Topaz_80 dc.l T80_Name
- dc.w TOPAZ_EIGHTY
- dc.b FS_NORMAL
- dc.b FPF_ROMFONT
- T80_Name dc.b "topaz.font",0
- EVEN
-
- Window_1 dc.w 0,0,320,200
- dc.b -1,-1
- dc.l GADGETUP!GADGETDOWN!MENUPICK
- dc.l SMART_REFRESH!ACTIVATE!BORDERLESS
- dc.l Gadget0
- dc.l 0,0
- Screenptr ds.l 1
- dc.l 0
- dc.w 0,0,0,0
- dc.w CUSTOMSCREEN
- Gadget0 BOOLGAD Gadget1,44,184,80,16,128
- Gadget1 BOOLGAD Gadget2,140,184,48,16,129
- Gadget2 BOOLGAD Gadget3,204,184,72,16,130
- Gadget3 BOOLGAD Gadget4,100,166,48,16,131
- Gadget4 BOOLGAD GadgetX,164,166,56,16,132
-
- Menu1 MENU Menu2,16,0,80,12,Item1_1,<"Project ">
- Item1_1 ITEM Item1_2,0,0,80,12,0,0,<"New Size ">
- Item1_2 ITEM Item1_3,0,12,80,12,0,0,<"New Game ">
- Item1_3 ITEM Item1_4,0,24,80,12,0,0,<"New Try ">
- Item1_4 ITEM Item1_5,0,36,80,12,0,0,<"Undo ">
- Item1_5 ITEM Item1_6,0,48,80,12,0,0,<"Iconify ">
- Item1_6 ITEM Item1_7,0,60,80,12,0,0,<"About... ">
- Item1_7 ITEM 0,0,72,80,12,0,0,<"Quit ">
- Menu2 MENU Menu3,112,0,64,12,Item2_1,<"X-Size ">
- Item2_1 EXCLUDE Item2_2,0,0,64,12,0,%1111110,<" 2 ">
- Item2_2 EXCLUDE Item2_3,0,12,64,12,TOGGLESELECT,%1111101,<" 3 ">
- Item2_3 EXCLUDE Item2_4,0,24,64,12,0,%1111011,<" 4 ">
- Item2_4 EXCLUDE Item2_5,0,36,64,12,0,%1110111,<" 5 ">
- Item2_5 EXCLUDE Item2_6,0,48,64,12,0,%1101111,<" 6 ">
- Item2_6 EXCLUDE Item2_7,0,60,64,12,0,%1011111,<" 7 ">
- Item2_7 EXCLUDE 0,0,72,64,12,0,%0111111,<" 8 ">
- Menu3 MENU 0,192,0,64,12,Item3_1,<"Y-Size ">
- Item3_1 EXCLUDE Item3_2,0,0,64,12,0,%1111110,<" 2 ">
- Item3_2 EXCLUDE Item3_3,0,12,64,12,TOGGLESELECT,%1111101,<" 3 ">
- Item3_3 EXCLUDE Item3_4,0,24,64,12,0,%1111011,<" 4 ">
- Item3_4 EXCLUDE Item3_5,0,36,64,12,0,%1110111,<" 5 ">
- Item3_5 EXCLUDE Item3_6,0,48,64,12,0,%1101111,<" 6 ">
- Item3_6 EXCLUDE Item3_7,0,60,64,12,0,%1011111,<" 7 ">
- Item3_7 EXCLUDE 0,0,72,64,12,0,%0111111,<" 8 ">
-
- SECTION "Brain",DATA
-
- XSize dc.w 3
- YSize dc.w 3
- Looper dc.l 3*3-1
- Mul dc.w 3*3
- XLooper dc.l 3-1
- YLooper dc.l 3-1
- Colortable dc.w $000,$a00,$00a,$808,$066,$999,$333,$bbb
- Spaces dc.b " ",0
- EVEN
- Intuitionname dc.b "intuition.library",0
- EVEN
- Graphicsname dc.b "graphics.library",0
- EVEN
- Dosname dc.b "dos.library",0
- EVEN
-
- SECTION "Brain",BSS
-
- Windowptr ds.l 1
- rp ds.l 1
- Won ds.l 1
- XBaseB ds.l 1
- XBaseA ds.l 1
- Move ds.l 1
- LevelA ds.l 1
- LevelB ds.l 1
- Undo ds.l 1
- GadgetX ds.l 1
- Number ds.l 1
- RandomTab ds.l 10*10
- _IntuitionBase ds.l 1
- _GfxBase ds.l 1
- _DosBase ds.l 1
- hrp ds.l 1
- AboutFlag ds.l 1
- WindowptrA ds.l 1
-
-