home *** CD-ROM | disk | FTP | other *** search
- ; WinCtrl
- ; by Dave Thomas, © 1992-4
- ;
- ; ----------------------------------
- ; Source for WinCtrl v1.04 !RunImage
- ; ----------------------------------
- ; written for assembly in Eivind Hagen's extASM assembler
- ;
-
- #name !RunImage
- #type &ff8
- #base &8000
-
- temp r11
-
- swi Hourglass_On
- bl init
- bl load_temps
- ldr r1,infohand
- str r1,subwindow
- bl bar_icon
- swi Hourglass_Off
-
- .poll
- mov r0,#0
- adr r1,q%
- swi XWimp_Poll
- cmp r0,#0:bleq check
- cmp r0,#1:beq redraw
- cmp r0,#2:swieq XWimp_OpenWindow
- cmp r0,#3:swieq XWimp_CloseWindow
- cmp r0,#6:bleq mouse
- cmp r0,#9:bleq menu_sel
- cmp r0,#17:bleq message
- cmp r0,#18:bleq message
- b poll
-
- .check
- mov r0,#121
- mov r1,#2
- swi XOS_Byte
- cmp r1,#2
- movne pc,r14
- adr r1,q%
- swi XWimp_GetPointerInfo
- ldr r2,[r1,#8]
- cmp r2,#4
- beq check_2
- cmp r2,#1
- movne pc,r14
-
- .check_2
- ldr r0,[r1,#12]
- str r0,[r1]
- adr r2,dragtype
- ldr r0,[r2]
- str r0,[r1,#4]
- swi XWimp_DragBox
- mov pc,r14
-
- .dragtype
- dcd 1
-
- .redraw
- swi Wimp_RedrawWindow
- ._loop
- cmn r0,#1
- bne poll
- swi Interface_Render3dWindow
- swi Wimp_GetRectangle
- b _loop
-
- .init
- mov r0,#200
- adr r2,task
- ldr r1,[r2]
- adr r2,descript
- swi Wimp_Initialise
- adr r0,taskh
- str r1,[r0]
- mov pc,r14
-
- .task
- dcb "TASK"
- .descript
- dcb "WinCtrl",0
- align
- .taskh
- dcd 0
-
- .load_temps
- adr r1,tempfile
- swi Wimp_OpenTemplate
- adr r1,q%
- adr r2,indr_data
- add r3,r2,#222
- mvn r4,#0
- adr r5,infoname
- mov r6,#0
- swi Wimp_LoadTemplate
- swi Wimp_CreateWindow
- str r0,infohand
- adr r5,mainname
- swi Wimp_LoadTemplate
- adr r8,sprite_area
- str r8,[r1,#64]
- swi Wimp_CreateWindow
- str r0,mainhand
- swi Wimp_CloseTemplate
- mov pc,r14
-
- .tempfile
- dcb "<WinCtrl$Dir>.Templates",0
- .infoname
- dcb "prog_info",0
- align
- .mainname
- dcb "main",0," "
- align
- .infohand
- dcd 0
- .mainhand
- dcd 0
- .indr_data
- dbb 222
- align
-
- .bar_icon
- adr r1,icon_block
- swi Wimp_CreateIcon
- ldr r0,[r1]
- adr r2,icon_hand
- str r0,[r2]
- mov pc,r14
-
- .icon_block
- dcd -1
- dcd 0
- dcd 0
- dcd 68
- dcd 68
- dcd &3002
- dcb "!winctrl",0
- align
- .icon_hand
- dcd 0
- align
-
- .mouse
- ldr r0,[r1,#8]
- ldr r2,[r1,#12]
- ldr r3,[r1,#16]
- mvn r4,#1
- cmp r4,r2
- beq click_bar
- adr r5,mainhand
- ldr r4,[r5]
- cmp r4,r2
- beq click_wind
- mov pc,r14
-
- .click_bar
- cmp r0,#4
- beq select_bar
- cmp r0,#2
- ldr r2,[r1]
- beq menu_bar
- cmp r0,#1
- beq select_bar
- mov pc,r14
-
- .select_bar
- adr r2,mainhand
- ldr r3,[r2]
- str r3,[r1]
- swi Wimp_GetWindowState
- mvn r4,#0
- str r4,[r1,#28]
- swi Wimp_OpenWindow
- mov pc,r14
-
- .menu_bar
- adr r1,menu_block
- sub r2,r2,#64
- mov r3,#186
- swi Wimp_CreateMenu
- mov pc,r14
-
- .click_wind
- cmp r0,#4
- moveq r0,#1
- cmp r0,#1
- movne pc,r14
-
- .a_select_wind
- str r2,[r1]
- str r3,[r1,#4]
- mov r4,#1<<21
- str r4,[r1,#8]
- str r4,[r1,#12]
- swi Wimp_SetIconState
-
- .select_wind
- sub r3,r3,#1
- adr r2,dragtype
- str r3,[r2]
- mov pc,r14
-
- .menu_sel
- ldr r0,[r1]
- cmp r0,#1
- beq closedown
- swi Wimp_GetPointerInfo
- mov r0,#1
- ldr r2,[r1,#8]
- cmp r0,r2
- beq menu_bar
- mov pc,r14
-
- .message
- ldr r0,[r1,#16]
- cmp r0,#0
- beq closedown
- cmp r0,#10
- movne pc,r14
-
- .desktop_save
- adr r0,ds_dir
- add r1,r1,#256
- mov r2,#256
- mov r3,#0
- mov r4,#3
- swi OS_ReadVarVal
- mov r0,#10
- str r0,[r1,r2]
- ldr r1,[r1,#-236]
- mov r0,#"R"
- swi OS_BPut
- mov r0,#"u"
- swi OS_BPut
- mov r0,#"n"
- swi OS_BPut
- mov r0,#" "
- swi OS_BPut
- .ds_loop
- ldrb r0,[r2]
- cmp r0,#10
- swi OS_BPut
- moveq pc,r14
- add r2,r2,#1
- b ds_loop
-
- .ds_dir
- dcb "WinCtrl$Dir",0
- align
-
- .closedown
- adr r4,taskh
- ldr r0,[r4]
- adr r4,task
- ldr r1,[r4]
- swi Wimp_CloseDown
- swi OS_Exit
-
- .menu_block
- dcb "WinCtrl",0," " ; 12 bytes
- align
- dcd &00070207
- dcd 128
- dcd 44
- dcd 0
- dcd 0
- .subwindow
- dcd -1
- dcd &7000001
- dcb "Info",0," "
- align
- dcd &80
- dcd -1
- dcd &7000001
- dcb "Quit",0," "
- align
-
- .sprite_area
- dcd 368
- incbin <tmp$path>.Sprites
- align
-
- .q%
- dbb 512
- align
-