home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / develop / beermon / bmsourcecode.lha / BMPE.S < prev    next >
Text File  |  1993-08-14  |  23KB  |  1,114 lines

  1. ;
  2. ; BeerMon Preferences Editor
  3. ;
  4. _SysBase=4
  5.     incdir "DH0:Include"
  6.  
  7. CloseLibrary        = -414
  8. Forbid            = -132
  9. GetMsg            = -372
  10. OldOpenLibrary        = -408
  11. ReplyMsg        = -378
  12. WaitPort        = -384
  13.  
  14. Close            = -36
  15. Open            = -30
  16. Output            = -60
  17. Read            = -42
  18. Seek            = -66
  19. Write            = -48
  20.  
  21. DisplayBeep        = -96
  22.  
  23. GT_GetIMsg        = -72
  24. GT_ReplyIMsg        = -78
  25. GT_SetGadgetAttrsA    = -42
  26.  
  27. bmmaxlen    = $30000
  28.  
  29. preflen    = 4+4+4+4+(10*20)+30
  30. patchoff= 4
  31. patchlen= 4+4+4+(10*20)
  32.  
  33. bmpid  = "BMP"<<8+0
  34.  
  35. run:    move.l 4.w,a6
  36.     move.l $114(a6),a3
  37.     moveq #0,d0
  38.     tst.l $ac(a3)    ;pr_cli
  39.     bne.b fromcli
  40.     lea $5c(a3),a0
  41.     jsr WaitPort(a6)
  42.     lea $5c(a3),a0
  43.     jsr GetMsg(a6)
  44. fromcli:move.l d0,wbmsg
  45.  
  46.     move.w $14(a6),d2
  47.     lea dosname(pc),a1
  48.     jsr OldOpenLibrary(a6)
  49.     move.l d0,dosbase
  50.     beq.w nodos
  51.  
  52.     cmp.w #36,d2
  53.     bhi.b kickok
  54.     move.l d0,a5
  55.     exg a5,a6
  56.     jsr Output(a6)
  57.     move.l d0,d1
  58.     beq.b nohd
  59.     move.l #kickmsg,d2
  60.     move.l #kicklen,d3
  61.     jsr Write(a6)
  62. nohd:    exg a5,a6
  63.     bra.w nogad
  64.  
  65. kickok:    lea gadname(pc),a1
  66.     jsr OldOpenLibrary(a6)
  67.     move.l d0,_GadToolsBase
  68.     beq.w nogad
  69.     lea intname(pc),a1
  70.     jsr OldOpenLibrary(a6)
  71.     move.l d0,_IntuitionBase
  72.     beq.w noint
  73.  
  74.     jsr SetupScreen
  75.     bne.w initfail
  76.     jsr OpenProject0Window
  77.     bne.w initfail
  78.  
  79.     move.l Project0Wnd,a4
  80.     bsr.w ldpref
  81.  
  82.     moveq #0,d7
  83. gadepty:tst.l d7
  84.     bne.w leave
  85.  
  86.     move.l 4.w,a6
  87.     move.l $56(a4),a0
  88.     jsr WaitPort(a6)
  89.  
  90.     move.l _GadToolsBase(pc),a6
  91.     move.l $56(a4),a0
  92.     jsr GT_GetIMsg(a6)
  93.     tst.l d0
  94.     beq.b gadepty
  95.     move.l d0,a1
  96.     movem.l a1/a6,-(a7)
  97.  
  98.     cmp.l #$40,$14(a1)    ;class_gadgetup
  99.     bne.w gadlp0
  100.     move.w $18(a1),d2    ;code
  101.     move.l $1c(a1),a0    ;iadress
  102.     move.w $26(a0),d0    ;gadgetid
  103.     cmp.w #GD_Gadget180,d0
  104.     bne.b nocanc
  105.     moveq #-1,d7
  106.  
  107. nocanc:    cmp.w #GD_Gadget100,d0
  108.     bne.b nomodeg
  109.     move.b d2,prefbuf+8+1    
  110. nomodeg:cmp.w #GD_Gadget110,d0
  111.     bne.b nokeymg
  112.     and.b #$f0,prefbuf+8+2
  113.     or.b d2,prefbuf+8+2
  114. nokeymg:cmp.w #GD_Gadget120,d0
  115.     bne.b noreptg
  116.     move.b d2,prefbuf+8+3
  117. noreptg:cmp.w #GD_Gadget210,d0
  118.     bne.b nocpug
  119.     move.b d2,prefbuf+8+0
  120. nocpug:
  121.     cmp.w #GD_Gadget190,d0
  122.     bne.w nodoit
  123.     bsr.w update
  124.  
  125.     move.l dosbase(pc),a6
  126.     lea Project0Gadgets+(GD_Gadget200*4),a0
  127.     bsr.w getadr
  128.     move.l a1,d1        ;name
  129.     move.l #1005,d2        ;load
  130.     jsr Open(a6)
  131.     move.l d0,d4
  132.     beq.w noop3
  133.     move.l d4,d1
  134.     move.l #bmbuf,d2
  135.     move.l #bmmaxlen,d3
  136.     jsr Read(a6)
  137.     move.l d0,bmlen
  138.     move.l d0,-(a7)
  139.     beq.b bmemp
  140.     
  141.     lea bmbuf,a0
  142.     move.l #bmmaxlen,a1
  143.     add.l a0,a1
  144.     move.l #"PTCH",d0
  145. ptcnf:    cmp.l (a0)+,d0
  146.     beq.b ptcfnd
  147.     subq.w #2,a0
  148.     cmp.l a0,a1
  149.     bne.b ptcnf
  150.     clr.l (a7)        ;set error flag
  151.     bra.w bmemp        ;patch not found
  152. ptcfnd:    sub.l #bmbuf,a0
  153.     move.l a0,d2    ;offset
  154.     move.l d4,d1
  155.     moveq #-1,d3    ;offset beg
  156.     jsr Seek(a6)
  157.     move.l d4,d1
  158.     move.l #prefbuf+patchoff,d2
  159.     move.l #patchlen,d3
  160.     jsr Write(a6)
  161.     cmp.l d3,d0
  162.     seq d0
  163.     ext.w d0
  164.     ext.l d0
  165.     move.l d0,(a7)        ;clr error flag
  166. bmemp:    move.l d4,d1
  167.     jsr Close(a6)
  168.     tst.l (a7)+
  169.     beq.b noop3
  170.  
  171.     moveq #1,d7
  172.     bra.b opok3
  173. noop3:    bsr.w beep
  174. opok3:
  175.  
  176. nodoit:    cmp.w #GD_Gadget130,d0
  177.     bne.b nogad13
  178.     lea Project0Gadgets+(GD_Gadget130*4),a0
  179.     bsr.w getadr
  180.     bsr.w cvrgb
  181.     bmi.b nogad13
  182.     bsr.w beep
  183.     move.l Project0Gadgets+(GD_Gadget130*4),a0
  184.     lea GadGet130Tags,a3
  185.     bsr.w setgad
  186. nogad13:cmp.w #GD_Gadget140,d0
  187.     bne.b nogad14
  188.     lea Project0Gadgets+(GD_Gadget140*4),a0
  189.     bsr.w getadr
  190.     bsr.w cvrgb
  191.     bmi.b nogad14
  192.     bsr.w beep
  193.     move.l Project0Gadgets+(GD_Gadget140*4),a0
  194.     lea GadGet140Tags,a3
  195.     bsr.w setgad
  196. nogad14:
  197.  
  198.     cmp.w #GD_Gadget150,d0
  199.     bne.w nogad15
  200.     bsr.w ldpref
  201.  
  202. nogad15:cmp.w #GD_Gadget160,d0
  203.     bne.w nogad16
  204.  
  205.     bsr.w update
  206.  
  207.     move.l dosbase(pc),a6
  208.     lea Project0Gadgets+(GD_Gadget170*4),a0
  209.     bsr.w getadr
  210.     move.l a1,d1        ;name
  211.     move.l #1006,d2        ;save
  212.     jsr Open(a6)
  213.     move.l d0,d4
  214.     beq.b noop2
  215.     move.l d4,d1
  216.     move.l #prefbuf,d2
  217.     move.l #preflen,d3
  218.     jsr Write(a6)
  219.     move.l d0,-(a7)
  220.     move.l d4,d1
  221.     jsr Close(a6)
  222.     cmp.l (a7)+,d3
  223.     bne.b noop2
  224.     bra.b opok2
  225. noop2:    bsr.w beep
  226. opok2:
  227.  
  228. nogad16:cmp.w #GD_Gadget220,d0
  229.     bne.w nogad22
  230.     bchg #4,prefbuf+8+2
  231. nogad22:
  232. gadlp0:    movem.l (a7)+,a1/a6
  233.     jsr GT_ReplyIMsg(a6)
  234.     bra.w gadepty
  235.  
  236. leave:
  237.  
  238. initfail:
  239.     jsr CloseProject0Window
  240.     jsr CloseDownScreen
  241.  
  242.     move.l 4.w,a6
  243.     move.l _IntuitionBase(pc),a1
  244.     jsr CloseLibrary(a6)
  245. noint:    move.l _GadToolsBase(pc),a1
  246.     jsr CloseLibrary(a6)
  247. nogad:    move.l dosbase(pc),a1
  248.     jsr CloseLibrary(a6)
  249. nodos:    move.l wbmsg(pc),d7
  250.     beq.b noreply
  251.     jsr Forbid(a6)
  252.     move.l d7,a1
  253.     jsr ReplyMsg(a6)    
  254. noreply:moveq #0,d0
  255.     rts
  256.  
  257. copystr:move.l (a0)+,a1
  258.     move.l $22(a1),a1    ;strinfo
  259.     move $0a(a1),d1
  260.     subq.w #2,d1        ;size-1
  261.     move.l (a1),a1        ;buffer
  262. cpfgd:    move.b (a1)+,(a2)+
  263.     dbf d1,cpfgd
  264.     dbf d0,copystr
  265.     rts
  266.  
  267. getadr:    move.l (a0)+,a1
  268.     move.l $22(a1),a1    ;strinfo
  269.     move.l (a1),a1        ;buffer
  270.     rts
  271.  
  272. update:    lea prefbuf(pc),a2
  273.     move.l #bmpid,(a2)+
  274.     move.l #$deaddead,(a2)+    ;reserved
  275.  
  276.     tst.l (a2)+        ;cpu,mode,keymap,repeat
  277.  
  278.     lea Project0Gadgets+(GD_Gadget130*4),a0
  279.     bsr.b getadr
  280.     bsr.b cvrgb
  281.     move.w d2,(a2)+        ;even
  282.     bsr.b getadr
  283.     bsr.b cvrgb
  284.     move.w d2,(a2)+
  285.  
  286.     lea Project0Gadgets+(GD_Gadget00*4),a0    ;f1-f10
  287.     moveq #10-1,d0
  288.     bsr.w copystr
  289.  
  290.     lea Project0Gadgets+(GD_Gadget200*4),a0    ;path
  291.     moveq #1-1,d0
  292.     bra.w copystr
  293.  
  294. cvrgb:    moveq #0,d2
  295.     moveq #3-1,d0
  296. cvrgb0:    lsl.w #4,d2
  297.     move.b (a1)+,d1
  298.     sub.b #"0",d1
  299.     bcs.b cverr
  300.     cmp.b #9,d1
  301.     bls.b cvok
  302.     bclr #5,d1
  303.     sub.b #"A"-"0"-10,d1
  304.     bcs.b cverr
  305.     cmp.b #15,d1
  306.     bhi.b cverr
  307. cvok:    or.b d1,d2
  308.     dbf d0,cvrgb0
  309. cverr:    tst.w d0
  310.     rts
  311. beep:    move.l _IntuitionBase(pc),a6
  312.     move.l Scr,a0
  313.     jmp DisplayBeep(a6)
  314.  
  315. ldpref:    move.l dosbase(pc),a6
  316.     lea Project0Gadgets+(GD_Gadget170*4),a0
  317.     bsr.w getadr
  318.     move.l a1,d1        ;name
  319.     move.l #1005,d2        ;load
  320.     jsr Open(a6)
  321.     move.l d0,d4
  322.     beq.w noop
  323.     move.l d4,d1
  324.     move.l #prefbuf,d2
  325.     move.l #preflen,d3
  326.     jsr Read(a6)
  327.     move.l d0,-(a7)
  328.     move.l d4,d1
  329.     jsr Close(a6)
  330.     cmp.l (a7)+,d3
  331.     bne.w noop
  332.  
  333.     lea prefbuf(pc),a2
  334.     cmp.l #bmpid,(a2)+
  335.     bne.w noop
  336.     addq.w #4,a2        ;reserved
  337.  
  338.     lea Project0Gadgets+(GD_Gadget210*4),a0
  339.     bsr.w setcyc
  340.  
  341.     lea Project0Gadgets+(GD_Gadget100*4),a0
  342.     bsr.w setcyc
  343.  
  344.     lea Project0Gadgets+(GD_Gadget110*4),a0
  345.     moveq #%1111,d0        ;bit0-3:language
  346.     and.b (a2),d0
  347.     move.b d0,cyctags+4+3
  348.     bsr.w setcyc2
  349.     move.l Project0Gadgets+(GD_Gadget220*4),a0
  350.     lea chktags,a3
  351.     btst #4,(a2)+        ;bit4:verify
  352.     sne d0
  353.     addq.b #1,d0
  354.     move.b d0,4+3(a3)
  355.     bsr.w setgad
  356.  
  357.     lea Project0Gadgets+(GD_Gadget120*4),a0
  358.     bsr.w setcyc
  359.  
  360.     lea Project0Gadgets+(GD_Gadget130*4),a0
  361.     move.w (a2)+,d0        ;col0
  362.     lea strstr(pc),a3
  363.     bsr.w rgbcnv
  364.     exg a3,a2
  365.     bsr.w setstr
  366.     exg a3,a2
  367.     move.w (a2)+,d0        ;col1
  368.     lea strstr(pc),a3
  369.     bsr.w rgbcnv
  370.     exg a3,a2
  371.     bsr.w setstr
  372.     exg a3,a2
  373.  
  374.     lea Project0Gadgets+(GD_Gadget00*4),a0
  375.     moveq #10-1,d0        ;f1-f10
  376. setstr0:bsr.w setstr
  377.     dbf d0,setstr0
  378.     lea Project0Gadgets+(GD_Gadget200*4),a0    ;path
  379.     bra.w setstr
  380. noop:    bra.w beep
  381.  
  382. rgbcnv:    moveq #3-1,d2
  383.     rol.w #8,d0
  384. hexcnv:    moveq #$0f,d1
  385.     and.w d0,d1
  386.     rol.w #4,d0
  387.     move.b hextab(pc,d1.w),(a3)+
  388.     dbf d2,hexcnv
  389.     subq.w #3,a3
  390.     rts
  391. hextab:    dc.b "0123456789ABCDEF"
  392.  
  393. setgad:    movem.l d0-d1/a0-a2/a6,-(a7)
  394.     move.l _GadToolsBase(pc),a6
  395.     move.l Project0Wnd,a1
  396.     sub.l a2,a2
  397.     jsr GT_SetGadgetAttrsA(a6)
  398.     movem.l (a7)+,d0-d1/a0-a2/a6
  399.     rts
  400.     
  401. chktags:dc.l $80080004,1
  402.     dc.l 0
  403.  
  404. setcyc:    move.b (a2)+,cyctags+4+3
  405. setcyc2:movem.l d0-d1/a0-a3/a6,-(a7)
  406.     move.l (a0),a0        ;gadget    
  407.     move.l _GadToolsBase(pc),a6
  408.     move.l Project0Wnd,a1
  409.     sub.l a2,a2
  410.     lea cyctags(pc),a3
  411.     jsr GT_SetGadgetAttrsA(a6)
  412.     movem.l (a7)+,d0-d1/a0-a3/a6
  413.     addq.w #4,a0
  414.     rts
  415. cyctags:dc.l $8008000f,0    ;number
  416.     dc.l 0
  417. setstr:    movem.l d0-d1/a0-a1/a3/a6,-(a7)
  418.     move.l (a0),a0        ;gadget    
  419.     move.l $22(a0),a1    ;strinfo
  420.     move.w $0a(a1),d0    ;size+1
  421.     subq.b #2,d0
  422.     lea strstr(pc),a1
  423. setatr0:move.b (a2)+,(a1)+
  424.     dbf d0,setatr0
  425.     sf (a1)+
  426.     move.l a2,-(a7)
  427.     move.l _GadToolsBase(pc),a6
  428.     move.l Project0Wnd,a1
  429.     sub.l a2,a2
  430.     lea strtags(pc),a3
  431.     jsr GT_SetGadgetAttrsA(a6)
  432.     move.l (a7)+,a2
  433.     movem.l (a7)+,d0-d1/a0-a1/a3/a6
  434.     addq.w #4,a0
  435.     rts
  436. strtags:dc.l $8008002d,strstr    ;string
  437.     dc.l 0
  438. strstr:    dcb.b 30,0
  439.     dc.b 0
  440.  
  441.     even
  442. prefbuf:dcb.b preflen,0            ;even!
  443. gadname:dc.b "gadtools.library",0
  444. intname:dc.b "intuition.library",0
  445. dosname:dc.b "dos.library",0
  446. kickmsg:dc.b "This tool needs Kickstart V37 or higher!",10
  447. kicklen=*-kickmsg
  448.     dc.b "$VER: BeerMon Preferences Editor V0.14",0
  449.     even
  450. wbmsg:    dc.l 0
  451. dosbase:dc.l 0
  452. _IntuitionBase:
  453.     dc.l 0
  454. _GadToolsBase:
  455.     dc.l 0
  456. bmlen:    dc.l 0
  457.  
  458.     section "BeerBuf",bss
  459. bmbuf:    ds.b bmmaxlen
  460.  
  461.     section "GadToolsBox",code
  462.  
  463. Project0_CNT=23
  464.  
  465. *
  466. *  Source machine generated by GadToolsBox V2.0
  467. *  which is (c) Copyright 1991-1993 Jaba Development
  468. *
  469. *  GUI Designed by : -- Unnamed --
  470. *
  471.  
  472.     include 'exec/types.i'
  473.     include 'intuition/intuition.i'
  474.     include 'intuition/classes.i'
  475.     include 'intuition/classusr.i'
  476.     include 'intuition/imageclass.i'
  477.     include 'intuition/gadgetclass.i'
  478.     include 'libraries/gadtools.i'
  479.     include 'graphics/displayinfo.i'
  480.     include 'graphics/gfxbase.i'
  481.  
  482.     XREF    _GadToolsBase
  483.     XREF    _IntuitionBase
  484.     XREF    _GfxBase
  485.     XREF    _SysBase
  486.  
  487. OpenScreenTagList    EQU    -612
  488. OpenWindowTagList    EQU    -606
  489. CloseScreen          EQU    -66
  490. CloseWindow          EQU    -72
  491. PrintIText           EQU    -216
  492. LockPubScreen        EQU    -510
  493. UnlockPubScreen      EQU    -516
  494. SetMenuStrip         EQU    -264
  495. ClearMenuStrip       EQU    -54
  496. GetVisualInfoA       EQU    -126
  497. FreeVisualInfo       EQU    -132
  498. CreateContext        EQU    -114
  499. CreateGadgetA        EQU    -30
  500. GT_RefreshWindow     EQU    -84
  501. FreeGadgets          EQU    -36
  502. CreateMenusA         EQU    -48
  503. LayoutMenusA         EQU    -66
  504. FreeMenus            EQU    -54
  505. OpenDiskFont         EQU    -30
  506. CloseFont            EQU    -78
  507. DrawBevelBoxA        EQU    -120
  508. FreeClass            EQU    -714
  509. NewObjectA           EQU    -636
  510. DisposeObject        EQU    -642
  511. TextLength           EQU    -54
  512. CopyMem              EQU    -624
  513. FindTagItem          EQU    -30
  514. IntuiTextLength      EQU    -330
  515. ;Forbid               EQU    -132
  516. Permit               EQU    -138
  517.  
  518. GD_Gadget00                            EQU    0
  519. GD_Gadget10                            EQU    1
  520. GD_Gadget20                            EQU    2
  521. GD_Gadget30                            EQU    3
  522. GD_Gadget40                            EQU    4
  523. GD_Gadget50                            EQU    5
  524. GD_Gadget60                            EQU    6
  525. GD_Gadget70                            EQU    7
  526. GD_Gadget80                            EQU    8
  527. GD_Gadget90                            EQU    9
  528. GD_Gadget100                           EQU    10
  529. GD_Gadget110                           EQU    11
  530. GD_Gadget120                           EQU    12
  531. GD_Gadget130                           EQU    13
  532. GD_Gadget140                           EQU    14
  533. GD_Gadget150                           EQU    15
  534. GD_Gadget160                           EQU    16
  535. GD_Gadget170                           EQU    17
  536. GD_Gadget180                           EQU    18
  537. GD_Gadget190                           EQU    19
  538. GD_Gadget200                           EQU    20
  539. GD_Gadget210                           EQU    21
  540. GD_Gadget220                           EQU    22
  541.  
  542. Scr:
  543.     DC.L    0
  544. VisualInfo:
  545.     DC.L    0
  546. PubScreenName:
  547.     DC.L    WBName
  548. WBName:
  549.     DC.B    'Workbench',0
  550.     CNOP  0,2
  551. Project0Wnd:
  552.     DC.L    0
  553. Project0GList:
  554.     DC.L    0
  555. Project0Gadgets:
  556.     DCB.L    23,0
  557. BufNewGad:
  558.     DC.W    0,0,0,0
  559.     DC.L    0,0
  560.     DC.W    0
  561.     DC.L    0,0,0
  562. TD:
  563.     DC.L    TAG_DONE
  564. Project0Left:
  565.     DC.W    113
  566. Project0Top:
  567.     DC.W    11
  568. Project0Width:
  569.     DC.W    419
  570. Project0Height:
  571.     DC.W    169
  572.  
  573. Project0GTypes:
  574.     DC.W    STRING_KIND
  575.     DC.W    STRING_KIND
  576.     DC.W    STRING_KIND
  577.     DC.W    STRING_KIND
  578.     DC.W    STRING_KIND
  579.     DC.W    STRING_KIND
  580.     DC.W    STRING_KIND
  581.     DC.W    STRING_KIND
  582.     DC.W    STRING_KIND
  583.     DC.W    STRING_KIND
  584.     DC.W    CYCLE_KIND
  585.     DC.W    CYCLE_KIND
  586.     DC.W    CYCLE_KIND
  587.     DC.W    STRING_KIND
  588.     DC.W    STRING_KIND
  589.     DC.W    BUTTON_KIND
  590.     DC.W    BUTTON_KIND
  591.     DC.W    STRING_KIND
  592.     DC.W    BUTTON_KIND
  593.     DC.W    BUTTON_KIND
  594.     DC.W    STRING_KIND
  595.     DC.W    CYCLE_KIND
  596.     DC.W    CHECKBOX_KIND
  597.  
  598. Project0NGads:
  599.     DC.W    225,3,180,13
  600.     DC.L    Gadget00Text,0
  601.     DC.W    GD_Gadget00
  602.     DC.L    PLACETEXT_LEFT,0,0
  603.     DC.W    225,18,180,13
  604.     DC.L    Gadget10Text,0
  605.     DC.W    GD_Gadget10
  606.     DC.L    PLACETEXT_LEFT,0,0
  607.     DC.W    225,33,180,13
  608.     DC.L    Gadget20Text,0
  609.     DC.W    GD_Gadget20
  610.     DC.L    PLACETEXT_LEFT,0,0
  611.     DC.W    225,48,180,13
  612.     DC.L    Gadget30Text,0
  613.     DC.W    GD_Gadget30
  614.     DC.L    PLACETEXT_LEFT,0,0
  615.     DC.W    225,63,180,13
  616.     DC.L    Gadget40Text,0
  617.     DC.W    GD_Gadget40
  618.     DC.L    PLACETEXT_LEFT,0,0
  619.     DC.W    225,78,180,13
  620.     DC.L    Gadget50Text,0
  621.     DC.W    GD_Gadget50
  622.     DC.L    PLACETEXT_LEFT,0,0
  623.     DC.W    225,93,180,13
  624.     DC.L    Gadget60Text,0
  625.     DC.W    GD_Gadget60
  626.     DC.L    PLACETEXT_LEFT,0,0
  627.     DC.W    225,108,180,13
  628.     DC.L    Gadget70Text,0
  629.     DC.W    GD_Gadget70
  630.     DC.L    PLACETEXT_LEFT,0,0
  631.     DC.W    225,123,180,13
  632.     DC.L    Gadget80Text,0
  633.     DC.W    GD_Gadget80
  634.     DC.L    PLACETEXT_LEFT,0,0
  635.     DC.W    225,138,180,13
  636.     DC.L    Gadget90Text,0
  637.     DC.W    GD_Gadget90
  638.     DC.L    PLACETEXT_LEFT,0,0
  639.     DC.W    46,3,142,13
  640.     DC.L    Gadget100Text,0
  641.     DC.W    GD_Gadget100
  642.     DC.L    PLACETEXT_LEFT,0,0
  643.     DC.W    62,33,126,13
  644.     DC.L    Gadget110Text,0
  645.     DC.W    GD_Gadget110
  646.     DC.L    PLACETEXT_LEFT,0,0
  647.     DC.W    62,48,126,13
  648.     DC.L    Gadget120Text,0
  649.     DC.W    GD_Gadget120
  650.     DC.L    PLACETEXT_LEFT,0,0
  651.     DC.W    62,18,44,13
  652.     DC.L    Gadget130Text,0
  653.     DC.W    GD_Gadget130
  654.     DC.L    PLACETEXT_LEFT,0,0
  655.     DC.W    144,18,44,13
  656.     DC.L    Gadget140Text,0
  657.     DC.W    GD_Gadget140
  658.     DC.L    PLACETEXT_LEFT,0,0
  659.     DC.W    7,93,81,13
  660.     DC.L    Gadget150Text,0
  661.     DC.W    GD_Gadget150
  662.     DC.L    PLACETEXT_IN,0,0
  663.     DC.W    107,93,81,13
  664.     DC.L    Gadget160Text,0
  665.     DC.W    GD_Gadget160
  666.     DC.L    PLACETEXT_IN,0,0
  667.     DC.W    62,108,126,13
  668.     DC.L    Gadget170Text,0
  669.     DC.W    GD_Gadget170
  670.     DC.L    PLACETEXT_LEFT,0,0
  671.     DC.W    7,138,165,13
  672.     DC.L    Gadget180Text,0
  673.     DC.W    GD_Gadget180
  674.     DC.L    PLACETEXT_IN,0,0
  675.     DC.W    7,152,165,13
  676.     DC.L    Gadget190Text,0
  677.     DC.W    GD_Gadget190
  678.     DC.L    PLACETEXT_IN,0,0
  679.     DC.W    225,153,180,12
  680.     DC.L    Gadget200Text,0
  681.     DC.W    GD_Gadget200
  682.     DC.L    PLACETEXT_LEFT,0,0
  683.     DC.W    46,63,142,13
  684.     DC.L    Gadget210Text,0
  685.     DC.W    GD_Gadget210
  686.     DC.L    PLACETEXT_LEFT,0,0
  687.     DC.W    151,80,26,11
  688.     DC.L    Gadget220Text,0
  689.     DC.W    GD_Gadget220
  690.     DC.L    PLACETEXT_LEFT,0,0
  691.  
  692. Project0GTags:
  693.     DC.L    GTST_String,Gadget00String
  694.     DC.L    GTST_MaxChars,20
  695.     DC.L    TAG_DONE
  696.     DC.L    GTST_String,Gadget10String
  697.     DC.L    GTST_MaxChars,20
  698.     DC.L    TAG_DONE
  699.     DC.L    GTST_String,Gadget20String
  700.     DC.L    GTST_MaxChars,20
  701.     DC.L    TAG_DONE
  702.     DC.L    GTST_String,Gadget30String
  703.     DC.L    GTST_MaxChars,20
  704.     DC.L    TAG_DONE
  705.     DC.L    GTST_String,Gadget40String
  706.     DC.L    GTST_MaxChars,20
  707.     DC.L    TAG_DONE
  708.     DC.L    GTST_MaxChars,20
  709.     DC.L    TAG_DONE
  710.     DC.L    GTST_MaxChars,20
  711.     DC.L    TAG_DONE
  712.     DC.L    GTST_MaxChars,20
  713.     DC.L    TAG_DONE
  714.     DC.L    GTST_MaxChars,20
  715.     DC.L    TAG_DONE
  716.     DC.L    GTST_MaxChars,20
  717.     DC.L    TAG_DONE
  718.     DC.L    GTCY_Labels,Gadget100Labels
  719.     DC.L    TAG_DONE
  720.     DC.L    GTCY_Labels,Gadget110Labels
  721.     DC.L    TAG_DONE
  722.     DC.L    GTCY_Labels,Gadget120Labels
  723.     DC.L    TAG_DONE
  724. GadGet130Tags:
  725.     DC.L    GTST_String,Gadget130String
  726.     DC.L    GTST_MaxChars,3
  727.     DC.L    TAG_DONE
  728. GadGet140Tags:
  729.     DC.L    GTST_String,Gadget140String
  730.     DC.L    GTST_MaxChars,3
  731.     DC.L    TAG_DONE
  732.     DC.L    TAG_DONE
  733.     DC.L    TAG_DONE
  734.     DC.L    GTST_String,Gadget170String
  735.     DC.L    GTST_MaxChars,30
  736.     DC.L    TAG_DONE
  737.     DC.L    TAG_DONE
  738.     DC.L    TAG_DONE
  739.     DC.L    GTST_String,Gadget200String
  740.     DC.L    GTST_MaxChars,30
  741.     DC.L    TAG_DONE
  742.     DC.L    GTCY_Labels,Gadget210Labels
  743.     DC.L    TAG_DONE
  744.     DC.L    GTCB_Checked,1
  745.     DC.L    TAG_DONE
  746.  
  747.  
  748. Gadget00String:
  749.     DC.B    'l 40000 0 2 s|',0
  750.     CNOP    0,2
  751.  
  752. Gadget10String:
  753.     DC.B    'a 40000|',0
  754.     CNOP    0,2
  755.  
  756. Gadget20String:
  757.     DC.B    'd 40000|',0
  758.     CNOP    0,2
  759.  
  760. Gadget30String:
  761.     DC.B    'L oi 40000|',0
  762.     CNOP    0,2
  763.  
  764. Gadget40String:
  765.     DC.B    'cd:|dir|',0
  766.     CNOP    0,2
  767.  
  768. Gadget130String:
  769.     DC.B    'BBB',0
  770.     CNOP    0,2
  771.  
  772. Gadget140String:
  773.     DC.B    '222',0
  774.     CNOP    0,2
  775.  
  776. Gadget170String:
  777.     DC.B    'S:BM.Prefs',0
  778.     CNOP    0,2
  779.  
  780. Gadget200String:
  781.     DC.B    ':C/BeerMon',0
  782.     CNOP    0,2
  783.  
  784. Gadget00Text:
  785.     DC.B    'F1',0
  786.  
  787. Gadget10Text:
  788.     DC.B    'F2',0
  789.  
  790. Gadget20Text:
  791.     DC.B    'F3',0
  792.  
  793. Gadget30Text:
  794.     DC.B    'F4',0
  795.  
  796. Gadget40Text:
  797.     DC.B    'F5',0
  798.  
  799. Gadget50Text:
  800.     DC.B    'F6',0
  801.  
  802. Gadget60Text:
  803.     DC.B    'F7',0
  804.  
  805. Gadget70Text:
  806.     DC.B    'F8',0
  807.  
  808. Gadget80Text:
  809.     DC.B    'F9',0
  810.  
  811. Gadget90Text:
  812.     DC.B    'F10',0
  813.  
  814. Gadget100Text:
  815.     DC.B    'Mode',0
  816.  
  817. Gadget110Text:
  818.     DC.B    'Keymap',0
  819.  
  820. Gadget120Text:
  821.     DC.B    'Repeat',0
  822.  
  823. Gadget130Text:
  824.     DC.B    'Col0  ',0
  825.  
  826. Gadget140Text:
  827.     DC.B    '1',0
  828.  
  829. Gadget150Text:
  830.     DC.B    'Load',0
  831.  
  832. Gadget160Text:
  833.     DC.B    'Save',0
  834.  
  835. Gadget170Text:
  836.     DC.B    'Prefs ',0
  837.  
  838. Gadget180Text:
  839.     DC.B    'Cancel',0
  840.  
  841. Gadget190Text:
  842.     DC.B    'Modify BeerMon',0
  843.  
  844. Gadget200Text:
  845.     DC.B    'Path',0
  846.  
  847. Gadget210Text:
  848.     DC.B    'CPU ',0
  849.  
  850. Gadget220Text:
  851.     DC.B    'Disk Verification',0
  852.  
  853.     CNOP    0,2
  854.  
  855. Gadget100Labels:
  856.     DC.L    Gadget100Lab0
  857.     DC.L    Gadget100Lab1
  858.     DC.L    Gadget100Lab2
  859.     DC.L    Gadget100Lab3
  860.     DC.L    Gadget100Lab4
  861.     DC.L    0
  862.  
  863. Gadget110Labels:
  864.     DC.L    Gadget110Lab0
  865.     DC.L    Gadget110Lab1
  866.     DC.L    0
  867.  
  868. Gadget120Labels:
  869.     DC.L    Gadget120Lab0
  870.     DC.L    Gadget120Lab1
  871.     DC.L    Gadget120Lab2
  872.     DC.L    0
  873.  
  874. Gadget210Labels:
  875.     DC.L    Gadget210Lab0
  876.     DC.L    Gadget210Lab1
  877.     DC.L    0
  878.  
  879. Gadget100Lab0:    DC.B    'PAL [640×256]',0
  880. Gadget100Lab1:    DC.B    'PAL [640×512]',0
  881. Gadget100Lab2:    DC.B    'NTSC [640×200]',0
  882. Gadget100Lab3:    DC.B    'NTSC [640×400]',0
  883. Gadget100Lab4:    DC.B    'VGA [640×480]',0
  884.  
  885.     CNOP    0,2
  886.  
  887. Gadget110Lab0:    DC.B    'German',0
  888. Gadget110Lab1:    DC.B    'American',0
  889.  
  890.     CNOP    0,2
  891.  
  892. Gadget120Lab0:    DC.B    'Fast',0
  893. Gadget120Lab1:    DC.B    'Medium',0
  894. Gadget120Lab2:    DC.B    'Slow',0
  895.  
  896.     CNOP    0,2
  897.  
  898. Gadget210Lab0:    DC.B    'Standard',0
  899. Gadget210Lab1:    DC.B    'Economy',0
  900.  
  901.     CNOP    0,2
  902.  
  903. topaz8:
  904.     DC.L    topazFName8
  905.     DC.W    8
  906.     DC.B    $00,$01
  907.  
  908. topazFName8:
  909.     DC.B    'topaz.font',0
  910.     CNOP    0,2
  911.  
  912. Project0WindowTags:
  913. Project0L:
  914.     DC.L    WA_Left,0
  915. Project0T:
  916.     DC.L    WA_Top,0
  917. Project0W:
  918.     DC.L    WA_Width,0
  919. Project0H:
  920.     DC.L    WA_Height,0
  921.     DC.L    WA_IDCMP,STRINGIDCMP!CYCLEIDCMP!BUTTONIDCMP!CHECKBOXIDCMP!IDCMP_REFRESHWINDOW
  922.     DC.L    WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_SMART_REFRESH!WFLG_ACTIVATE!WFLG_RMBTRAP
  923. Project0WG:
  924.     DC.L    WA_Gadgets,0
  925.     DC.L    WA_Title,Project0WTitle
  926.     DC.L    WA_ScreenTitle,Project0STitle
  927.     DC.L    TAG_DONE
  928.  
  929. Project0WTitle:
  930.     DC.B    'BeerMon Preferences Editor V0.14',0
  931.     CNOP    0,2
  932.  
  933. Project0STitle:
  934.     DC.B    'Written By Carnivore/BeerMacht',0
  935.     CNOP    0,2
  936.  
  937. SetupScreen
  938.     movem.l d1-d3/a0-a2/a6,-(sp)
  939.     move.l  _IntuitionBase,a6
  940.     move.l  PubScreenName,a0
  941.     jsr     LockPubScreen(a6)
  942.     move.l  d0,Scr
  943.     tst.l   d0
  944.     beq     SError
  945.     move.l  Scr,a0
  946.     move.l  _GadToolsBase,a6
  947.     lea.l   TD,a1
  948.     jsr     GetVisualInfoA(a6)
  949.     move.l  d0,VisualInfo
  950.     tst.l   d0
  951.     beq     VError
  952.     moveq   #0,d0
  953. SDone:
  954.     movem.l (sp)+,d1-d3/a0-a2/a6
  955.     rts
  956. SError:
  957.     moveq   #1,d0
  958.     bra.s   SDone
  959. VError:
  960.     moveq   #2,d0
  961.     bra.s   SDone
  962.  
  963. CloseDownScreen:
  964.     movem.l d0-d1/a0-a1/a6,-(sp)
  965.     move.l  _GadToolsBase,a6
  966.     move.l  VisualInfo,a0
  967.     cmpa.l  #0,a0
  968.     beq.s   NoVis
  969.     jsr     FreeVisualInfo(a6)
  970.     move.l  #0,VisualInfo
  971. NoVis:
  972.     move.l  _IntuitionBase,a6
  973.     suba.l  a0,a0
  974.     move.l  Scr,a1
  975.     cmpa.l  #0,a1
  976.     beq.s   NoScr
  977.     jsr     UnlockPubScreen(a6)
  978.     move.l  #0,Scr
  979. NoScr:
  980.     movem.l (sp)+,d0-d1/a0-a1/a6
  981.     rts
  982.  
  983.     XDEF    OpenProject0Window
  984.  
  985. OpenProject0Window:
  986.     movem.l d1-d4/a0-a4/a6,-(sp)
  987.     move.l  Scr,a0
  988.     moveq   #0,d3
  989.     moveq   #0,d2
  990.     move.b  sc_WBorLeft(a0),d2
  991.     move.l  sc_Font(a0),a1
  992.     move.w  ta_YSize(a1),d3
  993.     addq.w  #1,d3
  994.     add.b   sc_WBorTop(a0),d3
  995.     move.l  _GadToolsBase,a6
  996.     lea.l   Project0GList,a0
  997.     jsr     CreateContext(a6)
  998.     move.l  d0,a3
  999.     tst.l   d0
  1000.     beq     Project0CError
  1001.     movem.w d2-d3,-(sp)
  1002.     moveq   #0,d3
  1003.     lea.l   Project0GTags,a4
  1004. Project0GL:
  1005.     move.l  _SysBase,a6
  1006.     lea.l   Project0NGads,a0
  1007.     move.l  d3,d0
  1008.     mulu    #gng_SIZEOF,d0
  1009.     add.l   d0,a0
  1010.     lea.l   BufNewGad,a1
  1011.     moveq   #gng_SIZEOF,d0
  1012.     jsr     CopyMem(a6)
  1013.     lea.l   BufNewGad,a0
  1014.     move.l  VisualInfo,gng_VisualInfo(a0)
  1015.     move.l  #topaz8,gng_TextAttr(a0)
  1016.     move.w  gng_LeftEdge(a0),d0
  1017.     add.w   (sp),d0
  1018.     move.w  d0,gng_LeftEdge(a0)
  1019.     move.w  gng_TopEdge(a0),d0
  1020.     add.w   2(sp),d0
  1021.     move.w  d0,gng_TopEdge(a0)
  1022.     move.l  _GadToolsBase,a6
  1023.     lea.l   Project0GTypes,a0
  1024.     moveq   #0,d0
  1025.     move.l  d3,d1
  1026.     asl.l   #1,d1
  1027.     add.l   d1,a0
  1028.     move.w  (a0),d0
  1029.     move.l  a3,a0
  1030.     lea.l   BufNewGad,a1
  1031.     move.l  a4,a2
  1032.     jsr     CreateGadgetA(a6)
  1033.     tst.l   d0
  1034.     bne.s    Project0COK
  1035.     movem.w (sp)+,d2-d3
  1036.     bra     Project0CError
  1037. Project0COK:
  1038.     move.l  d0,a3
  1039.     move.l  d3,d0
  1040.     asl.l   #2,d0
  1041.     lea.l   Project0Gadgets,a0
  1042.     add.l   d0,a0
  1043.     move.l  a3,(a0)
  1044. Project0TL:
  1045.     tst.l   (a4)
  1046.     beq.s   Project0DN
  1047.     addq.w  #8,a4
  1048.     bra.s   Project0TL
  1049. Project0DN:
  1050.     addq.w  #4,a4
  1051.     addq.w  #1,d3
  1052.     cmp.w   #Project0_CNT,d3
  1053.     bmi     Project0GL
  1054.     movem.w (sp)+,d2-d3
  1055.     move.l  Project0GList,Project0WG+4
  1056.     moveq   #0,d0
  1057.     move.w  Project0Left,d0
  1058.     move.l  d0,Project0L+4
  1059.     move.w  Project0Top,d0
  1060.     move.l  d0,Project0T+4
  1061.     move.w  Project0Width,d0
  1062.     move.l  d0,Project0W+4
  1063.     move.w  Project0Height,d0
  1064.     add.w   d3,d0
  1065.     move.l  d0,Project0H+4
  1066.     move.l  _IntuitionBase,a6
  1067.     suba.l  a0,a0
  1068.     lea.l   Project0WindowTags,a1
  1069.     jsr     OpenWindowTagList(a6)
  1070.     move.l  d0,Project0Wnd
  1071.     tst.l   d0
  1072.     beq     Project0WError
  1073.     move.l  _GadToolsBase,a6
  1074.     move.l  Project0Wnd,a0
  1075.     suba.l  a1,a1
  1076.     jsr     GT_RefreshWindow(a6)
  1077.     moveq   #0,d0
  1078. Project0Done:
  1079.     movem.l (sp)+,d1-d4/a0-a4/a6
  1080.     rts
  1081. Project0CError:
  1082.     moveq   #1,d0
  1083.     bra.s   Project0Done
  1084. Project0GError:
  1085.     moveq   #2,d0
  1086.     bra.s   Project0Done
  1087. Project0WError:
  1088.     moveq   #4,d0
  1089.     bra.s   Project0Done
  1090.  
  1091. CloseProject0Window:
  1092.     movem.l d0-d1/a0-a2/a6,-(sp)
  1093.     move.l  _IntuitionBase,a6
  1094.     move.l  Project0Wnd,a0
  1095.     cmpa.l  #0,a0
  1096.     beq     Project0NWnd
  1097.     jsr     CloseWindow(a6)
  1098.     move.l  #0,Project0Wnd
  1099. Project0NWnd:
  1100.     move.l  _GadToolsBase,a6
  1101.     move.l  Project0GList,a0
  1102.     cmpa.l  #0,a0
  1103.     beq     Project0NGad
  1104.     jsr     FreeGadgets(a6)
  1105.     move.l  #0,Project0GList
  1106. Project0NGad:
  1107.     movem.l (sp)+,d0-d1/a0-a2/a6
  1108.     rts
  1109.  
  1110.  
  1111.     end
  1112.  
  1113.     end
  1114.