ExecMenu
execbase = 4
OpenLib = -408
CloseWindow = -72
OpenWindow = -204
CloseLibrary = -414
OpenScreen = -198
CloseScreen = -66
ExeCute = -222
SetMenuStrip = -264
ClearMenuStrip = -54
GetMsg = -372
start:
bsr libsopen
bsr screenopen
bsr winopen
bsr setmenu
bsr loop
libsopen:
move.l execbase,a6
lea dosname,a1
jsr OpenLib(a6)
move.l d0,dosbase
move.l execbase,a6
lea intname,a1
jsr OpenLib(a6)
rts
dosname:
dc.b 'dos.library',0
even
dosbase:
dc.l 0
intname:
dc.b 'intuition.library',0
even
intbase:
dc.l 0
screenopen:
move.l d0,intbase
move.l intbase,a6
lea screen_defs,a0
jsr openscreen(a6)
rts
winopen:
move.l d0,screenhd
move.l intbase,a6
lea windowdef,a0
jsr OpenWindow(a6)
move.l d0,windowhd
rts
setmenu:
move.l intbase,a6
move.l windowhd,a0
lea menu,a1
jsr SetMenuStrip(a6)
rts
loop:
move.l execbase,a6
move.l windowhd,a0
move.l 86(a0),a0
jsr GetMsg(a6)
tst.l d0
beq loop
move.l d0,a0
move.l $14(a0),d6
move $18(a0),d7
move d7,d6
lsr #8,d7
lsr #3,d7
clr.l d5
roxr #1,d6
roxl #2,d5
and.l #$7f,d6
cmp #$7f,d6
beq loop
lsr #4,d6
cmp #0,d5
beq menu1loop
cmp #1,d5
bne menu2loop
rts
menu1loop:
cmp #0,d6
beq seka
cmp #1,d6
beq ced
cmp #2,d6
beq dm
cmp #3,d6
beq slut
rts
menu2loop:
cmp #0,d6
beq dpaint
cmp #1,d6
beq conv
rts
slut:
bsr clearmenu
bsr windclose
bsr closescr
bsr closeint
bsr closedos
clearmenu:
move.l intbase,a6
move.l windowhd,a0
jsr ClearMenuStrip(a6)
rts
closedos:
move.l execbase,a6
move.l dosbase,a1
jsr CloseLibrary(a6)
rts
closeint:
move.l execbase,a6
move.l intbase,a1
jsr CloseLibrary(a6)
rts
windclose:
move.l intbase,a6
move.l windowhd,a0
jsr CloseWindow(a6)
rts
closescr:
move.l intbase,a6
move.l screenhd,a0
jsr CloseScreen(a6)
rts
even
screen_defs:
x_pos: dc.w 0
y_pos: dc.w 0
width: dc.w 640
height: dc.w 400
depth: dc.w 2
detail_pen: dc.b 2
block_pen: dc.b 1
view_modes: dc.w $8000
screen_type: dc.w 15
font: dc.l 0
title: dc.l titel
gadgets: dc.l 0
bitmap: dc.l 0
titel: dc.b 'WorkDisc One by Henrik Stolpe',0
even
even
windowdef:
dc.w 10
dc.w 20
dc.w 250
dc.w 100
dc.b 2
dc.b 1
dc.l $100
dc.l $100f
dc.l 0
dc.l 0
dc.l windowname
screenhd:
dc.l 0
dc.l 0
dc.w 150
dc.w 50
dc.w 320
dc.w 200
dc.w 15
windowname:
dc.b 'CLI',0
even
windowhd:
dc.l 0
even
menu:
dc.l menu2
dc.w 10,30
dc.w 80,30
dc.w 1
dc.l menynamn
dc.l menuitem01
dc.w 0,0,0,0
menynamn:
dc.b "Programm.",0
even
menu2:
dc.l 0
dc.w 120,0
dc.w 90,30
dc.w 1
dc.l menynamn2
dc.l menuitem11
dc.w 0,0,0,0
menynamn2:
dc.b "Graphics",0
even
menuitem01:
dc.l menuitem02
dc.w 0,0
dc.w 160,10
dc.w %001111110
dc.l 0
dc.l text01
dc.l 0
dc.b "a"
even
dc.l 0
dc.w 0
text01:
dc.b 2,1
dc.b 0
even
dc.w 5,0
dc.l 0
dc.l text01txt
dc.l 0
text01txt:
dc.b " Seka Assemb",0
even
menuitem02:
dc.l menuitem03
dc.w 0,12
dc.w 160,10
dc.w %001111110
dc.l 0
dc.l text02
dc.l 0
dc.b "b"
even
dc.l 0
dc.w 0
text02:
dc.b 2,1
dc.b 0
even
dc.w 5,0
dc.l 0
dc.l text02txt
dc.l 0
text02txt:
dc.b " Cygnus ED",0
even
menuitem03:
dc.l menuitem04
dc.w 0,24
dc.w 160,10
dc.w %001111110
dc.l 0
dc.l text03
dc.l 0
dc.b "c"
even
dc.l 0
dc.w 0
text03:
dc.b 2,1
dc.b 0
even
dc.w 5,0
dc.l 0
dc.l text03txt
dc.l 0
text03txt:
dc.b " DMaster 2.0",0
even
menuitem04:
dc.l 0
dc.w 0,36
dc.w 160,10
dc.w %001111110
dc.l 0
dc.l text04
dc.l 0
dc.b "d"
even
dc.l 0
dc.w 0
text04:
dc.b 2,1
dc.b 0
even
dc.w 5,0
dc.l 0
dc.l text04txt
dc.l 0
text04txt:
dc.b " Quit",0
even
menuitem11:
dc.l menuitem12
dc.w 0,0
dc.w 190,10
dc.w %001111110
dc.l 0
dc.l text11
dc.l 0
dc.b "e"
even
dc.l 0
dc.w 0
text11:
dc.b 2,1
dc.b 0
even
dc.w 5,0
dc.l 0
dc.l text11txt
dc.l 0
text11txt:
dc.b " DPaint 4",0
even
menuitem12:
dc.l 0
dc.w 0,12
dc.w 190,10
dc.w %001111110
dc.l 0
dc.l text12
dc.l 0
dc.b "f"
even
dc.l 0
dc.w 0
text12:
dc.b 2,1
dc.b 0
even
dc.w 5,0
dc.l 0
dc.l text12txt
dc.l 0
text12txt:
dc.b " Deluxe Conv.",0
even
;routines
dm:
move.l dosbase,a6
move.l #command0,d1
clr.l d2
clr.l d3
jsr ExeCute(a6)
bsr loop
rts
ced:
move.l dosbase,a6
move.l #command1,d1
clr.l d2
clr.l d3
jsr ExeCute(a6)
bsr loop
rts
seka:
move.l dosbase,a6
move.l #command2,d1
clr.l d2
clr.l d3
jsr ExeCute(a6)
bsr loop
rts
dpaint:
move.l dosbase,a6
move.l #command3,d1
clr.l d2
clr.l d3
jsr ExeCute(a6)
bsr loop
rts
conv:
move.l dosbase,a6
move.l #command4,d1
clr.l d2
clr.l d3
jsr ExeCute(a6)
bsr loop
rts
command0:
dc.b "16",0
even
command1:
dc.b "14",0
even
command2:
dc.b "1",0
even
command3:
dc.b "dpaint",0
even
command4:
dc.b "4",0
even