home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / s / smilies / !Smilies / SmiliesSrc < prev    next >
Text File  |  1994-07-20  |  5KB  |  241 lines

  1. ; Smilies
  2. ; by Dave Thomas, © 1992-4
  3. ;
  4. ; ----------------------------------
  5. ; Source for Smilies v1.03 !RunImage
  6. ; ----------------------------------
  7. ; written for assembly in Eivind Hagen's extASM assembler
  8. ;
  9.  
  10. #name !RunImage
  11. #type &ff8
  12. #base &8000
  13.  
  14.    swi      Hourglass_On
  15.  
  16.    bl       initialise_wimp
  17.    bl       load_temps
  18.    adr      r0,infohand
  19.    ldr      r1,[r0]
  20.    adr      r0,subwindow
  21.    str      r1,[r0]
  22.    adr      r1,mainhand
  23.    ldr      r0,[r1]
  24.    adr      r1,q%
  25.    str      r0,[r1]
  26.    swi      Wimp_GetWindowState
  27.    mvn      r0,#0
  28.    str      r0,[r1,#28]
  29.    swi      Wimp_OpenWindow
  30.  
  31.    swi      Hourglass_Off
  32.  
  33. .poll
  34.    mov      r0,#0
  35.    adr      r1,q%
  36.    swi      Wimp_Poll
  37.    cmp      r0,#20
  38.    addlt    pc,pc,r0,lsl #2
  39.    b        poll                ; >19 reason code [no action]
  40.    b        check_for_ctrl      ; 0
  41.    b        redraw_window       ; 1
  42.    b        open_window         ; 2
  43.    b        close_down          ; 3
  44.    b        poll                ; 4
  45.    b        poll                ; 5
  46.    b        mouse               ; 6
  47.    b        poll                ; 7
  48.    b        poll                ; 8
  49.    b        menu_sel            ; 9
  50.    b        poll                ; 10
  51.    b        poll                ; 11
  52.    b        poll                ; 12
  53.    b        poll                ; 13
  54.    b        poll                ; 14
  55.    b        poll                ; 15
  56.    b        poll                ; 16
  57.    b        message             ; 17
  58.    b        message             ; 18
  59.    b        poll                ; 19
  60.  
  61. .check_for_ctrl
  62.    mov      r0,#121
  63.    mov      r1,#129
  64.    swi      OS_Byte
  65.    cmp      r1,#255
  66.    bne      poll
  67.  
  68.    adr      r1,q%
  69.    swi      Wimp_GetPointerInfo
  70.    adr      r2,mainhand
  71.    ldr      r3,[r2]
  72.    ldr      r2,[r1,#12]
  73.    cmp      r2,r3
  74.    bne      poll
  75.  
  76. .insert_smiley
  77.    mov      r0,#4
  78.    str      r0,[r1,#8]
  79.    ldr      r2,[r1,#16]
  80.    cmp      r2,#0
  81.    blt      poll
  82.    swi      Interface_SlabButton
  83.    ldr      r0,[r1,#12]
  84.    str      r0,[r1,#128]
  85.    ldr      r0,[r1,#16]
  86.    str      r0,[r1,#132]
  87.    add      r1,r1,#128
  88.    swi      Wimp_GetIconState
  89.    sub      r1,r1,#128
  90.    ldr      r3,[r1,#156]
  91.    mov      r4,r1
  92. .insert_smiley_loop
  93.    ldrb     r2,[r3]
  94.    cmp      r2,#13
  95.    beq      insert_smiley_end
  96.    mov      r0,#153
  97.    mov      r1,#0
  98.    swi      OS_Byte
  99.    add      r3,r3,#1
  100.    b        insert_smiley_loop
  101. .insert_smiley_end
  102.    mov      r1,r4
  103.    mov      r0,#0
  104.    str      r0,[r1,#8]
  105.    swi      Interface_SlabButton
  106.    b        poll
  107.  
  108. .open_window
  109.    swi      Wimp_OpenWindow
  110.    b        poll
  111.  
  112. .redraw_window
  113.    swi      Wimp_RedrawWindow
  114. .redraw_window_loop
  115.    cmn      r0,#1
  116.    bne      poll
  117.    swi      Interface_Render3dWindow
  118.    swi      Wimp_GetRectangle
  119.    b        redraw_window_loop
  120.  
  121. .initialise_wimp
  122.    mov      r0,#200
  123.    adr      r2,task
  124.    ldr      r1,[r2]
  125.    adr      r2,descript
  126.    swi      Wimp_Initialise
  127.    adr      r0,taskh
  128.    str      r1,[r0]
  129.    mov      pc,r14
  130.  
  131. .load_temps
  132.    adr      r1,tempfile
  133.    swi      Wimp_OpenTemplate
  134.    adr      r1,q%
  135.    adr      r2,indr_data
  136.    add      r3,r2,#256
  137.    mvn      r4,#0
  138.    adr      r5,infoname
  139.    mov      r6,#0
  140.    swi      Wimp_LoadTemplate
  141.    swi      Wimp_CreateWindow
  142.    adr      r8,infohand
  143.    str      r0,[r8]
  144.    adr      r5,mainname
  145.    swi      Wimp_LoadTemplate
  146.    swi      Wimp_CreateWindow
  147.    adr      r8,mainhand
  148.    str      r0,[r8]
  149.    swi      Wimp_CloseTemplate
  150.    mov      pc,r14
  151.  
  152. .descript
  153.    dcb      "Smilies",0
  154.    align
  155. .task
  156.    dcb      "TASK"
  157. .taskh
  158.    dcd 0
  159. .q%
  160.    dbb      556
  161. .indr_data
  162.    dbb      256
  163.    align
  164. .tempfile
  165.    dcb      "<Smilies$Dir>.Templates",0
  166.    align
  167. .infoname
  168.    dcb      "prog_info",0
  169.    align
  170. .infohand
  171.    dcd      0
  172. .mainname
  173.    dcb      "main",0,0,0,0,0,0,0,0
  174.    align
  175. .mainhand
  176.    dcd      0
  177.  
  178. .mouse
  179.    ldr      r0,[r1,#8]
  180.    ldr      r2,[r1,#12]
  181.    ldr      r3,[r1,#16]
  182.    adr      r5,mainhand
  183.    ldr      r4,[r5]
  184.    cmp      r4,r2
  185.    bne      poll
  186.    cmp      r0,#4
  187.    cmpne    r0,#1
  188.    beq      insert_smiley
  189.    cmp      r0,#2
  190.    beq      menu_wind
  191.    b        poll
  192.  
  193. .menu_wind
  194.    ldr      r2,[r1]
  195.    sub      r2,r2,#48
  196.    ldr      r3,[r1,#4]
  197.    adr      r1,menu_block
  198.    swi      Wimp_CreateMenu
  199.    b        poll
  200.  
  201. .menu_sel
  202.    ldr      r0,[r1]
  203.    cmp      r0,#1
  204.    beq      close_down
  205.    swi      Wimp_GetPointerInfo
  206.    ldr      r0,[r1,#8]
  207.    cmp      r0,#1
  208.    beq      menu_wind
  209.  
  210. .message
  211.    ldr      r0,[r1,#16]
  212.    cmp      r0,#0
  213.    bne      poll
  214.  
  215. .close_down
  216.    adr      r4,taskh
  217.    ldr      r0,[r4]
  218.    adr      r4,task
  219.    ldr      r1,[r4]
  220.    swi      Wimp_CloseDown
  221.    swi      OS_Exit
  222.  
  223. .menu_block
  224.    dcb      "Smilies",0,0,0,0,0
  225.    align
  226.    dcd      &00070207
  227.    dcd      128
  228.    dcd      44
  229.    dcd      0
  230.    dcd      0
  231. .subwindow
  232.    dcd      -1
  233.    dcd      &7000001
  234.    dcb      "Info",0,0,0,0,0,0,0,0
  235.    align
  236.    dcd      &80
  237.    dcd      -1
  238.    dcd      &7000001
  239.    dcb      "Quit",0,0,0,0,0,0,0,0
  240.    align
  241.