home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD2.bin / bbs / dev / tbsource.lha / TBSource / Blank / Blank.bak next >
Text File  |  1993-12-21  |  7KB  |  362 lines

  1. ;
  2. ; ### Blank v0.00b ###
  3. ;
  4. ; -   Created 880802 by JM
  5. ; - Recreated 910603 by TB
  6. ;
  7. ; Bugs: None born.
  8. ;
  9. ;
  10. ; Edited:
  11. ;
  12. ; - 880802 by JM -> v1.0    - kommentit
  13. ; - 880803 by JM -> v1.5    - lisatty CTRL+C
  14. ; - 910603 by TB -> v0.00a    - added checks for windows opening etc.
  15. ; - 910604 by TB -> v0.00b    - added checks for 2.0
  16. ;
  17.  
  18.         include    "jmplibs.i"    omia makroja
  19.         include    "hards.i"    hardisrekistereja
  20.         include "exec.xref"    maarittelee Execin rutiinit
  21.         include "dos.xref"    maarittelee Dossin rutiinit
  22.         include    "intuition.xref"
  23.         include    "gfx.xref"
  24.  
  25. _LVOOpenScrTList:    equ     -$264
  26. _LVOOpenWinTList:     equ    -$25e
  27.  
  28. keyboard    equ    $bfec01        nappaimiston rekisteri
  29. mouse0        equ    $dff00a        hiiren 0 rekisteri
  30. mouse1        equ    $dff00c        hiiren 1 rekisteri
  31. diskctrl    equ    $bfd100        levyaseman ohjausrekisteri
  32.  
  33. nappis        equ    0        offset-arvot omaan taulukkoon
  34. hiiri0        equ    2
  35. hiiri1        equ    4
  36. levyas        equ    6
  37. laskuri        equ    8
  38. raja        equ    12
  39. dmasailo    equ    16
  40.  
  41. SAMMUTUS    equ    %0000000110100000 pysayttaa Copperin, Spritet ja nayton
  42.  
  43. INTB_VERTB    equ    5        keskeytystyyppi Vertical Blanking
  44.  
  45. CTRL_C        equ    12        bitti, joka ilmaisee CTRL+C:n painamisen
  46.  
  47. Start        push    d2-d7/a2-a6
  48.         move.l    a0,a2
  49.         openlib    Dos,cleanup
  50.         lib    Dos,Output
  51.         move.l    d0,_stdout
  52.         cmp.b    #"?",(a2)
  53.         beq    CommandLineHelp
  54.  
  55.         move.l    a2,a0
  56.         bsr    ota_luku
  57.         mulu.w    #50,d0
  58.         bvs    viive_asetettu
  59.         beq    viive_asetettu
  60.         move.l    d0,IData+raja
  61.  
  62. viive_asetettu    openlib    Intuition,cleanup
  63.         openlib    Gfx,cleanup
  64.  
  65.         print    <"Blank version 0.01b",13,10>,_stdout
  66.  
  67. ;test for 2.0
  68.  
  69.         move.l    _IntuitionBase(pc),a6
  70.         move.w    $14(a6),d0
  71.         cmp.w    #36,d0
  72.         bcc    StartPatch20
  73.         move.w    #0,Kick
  74.         jmp    Patch1
  75.  
  76. StartPatch20:    print    <"Using KickStart 2.0 - Patching new Open(Window/Screen)TagList and Write vectors",13,10>,_stdout
  77.         move.w    #1,Kick
  78.         move.l    _IntuitionBase(pc),a1
  79.         move.l    #_LVOOpenScrTList,a0
  80.         lea.l    OpScrTL(pc),a2
  81.         move.l    a2,d0
  82.         lib    Exec,SetFunction
  83.         move.l    d0,OldOpScrTL
  84.  
  85.         move.l    _IntuitionBase(pc),a1
  86.         move.l    #_LVOOpenWinTList,a0
  87.         lea.l    OpWinTL(pc),a2
  88.         move.l    a2,d0
  89.         lib    Exec,SetFunction
  90.         move.l    d0,OldOpWinTL
  91.  
  92.         move.l    _DosBase(pc),a1
  93.         move.l    #_LVOWrite,a0
  94.         lea.l    NewWrite(pc),a2
  95.         move.l    a2,d0
  96.         lib    Exec,SetFunction
  97.         move.l    d0,OldWrite
  98.  
  99. Patch1:        move.l    _IntuitionBase(pc),a1
  100.         move.l    #_LVOOpenScreen,a0
  101.         lea.l    OpScr(pc),a2
  102.         move.l    a2,d0
  103.         lib    Exec,SetFunction
  104.         move.l    d0,OldOpScr
  105.  
  106.         move.l    _IntuitionBase(pc),a1
  107.         move.l    #_LVOOpenWindow,a0
  108.         lea.l    OpWin(pc),a2
  109.         move.l    a2,d0
  110.         lib    Exec,SetFunction
  111.         move.l    d0,OldOpWin
  112.  
  113.         move.l    _IntuitionBase(pc),a1
  114.         move.l    #_LVOPrintIText,a0
  115.         lea.l    PrIT(pc),a2
  116.         move.l    a2,d0
  117.         lib    Exec,SetFunction
  118.         move.l    d0,OldPrIT
  119.  
  120. ;        move.l    _IntuitionBase(pc),a1
  121. ;        move.l    #_LVODisplayBeep,a0
  122. ;        lea.l    DisB(pc),a2
  123. ;        move.l    a2,d0
  124. ;        lib    Exec,SetFunction
  125. ;        move.l    d0,OldDisB
  126.  
  127.         move.l    _GfxBase(pc),a1
  128.         move.l    #_LVOText,a0
  129.         lea.l    NewText(pc),a2
  130.         move.l    a2,d0
  131.         lib    Exec,SetFunction
  132.         move.l    d0,OldText
  133.  
  134.         moveq.l    #INTB_VERTB,d0
  135.         lea    keskstruc(pc),a1
  136.         lib    Exec,AddIntServer
  137.  
  138.         moveq.l    #0,d0
  139.         bset.l    #CTRL_C,d0
  140.         lib    Exec,Wait
  141.  
  142. cleanup        print    <"***Break, Blank terminating",13,10>,_stdout
  143.         moveq.l    #INTB_VERTB,d0
  144.         lea    keskstruc(pc),a1
  145.         lib    Exec,RemIntServer
  146.  
  147.         cmp.w    #1,Kick
  148.         bne    cleanup1
  149.         move.l    OldOpScrTL(pc),a0
  150.         move.l    a0,d0
  151.         move.l    _IntuitionBase(pc),a1
  152.         move.l    #_LVOOpenScrTList,a0
  153.         lib    Exec,SetFunction
  154.  
  155.         move.l    OldOpWinTL(pc),a0
  156.         move.l    a0,d0
  157.         move.l    _IntuitionBase(pc),a1
  158.         move.l    #_LVOOpenWinTList,a0
  159.         lib    Exec,SetFunction
  160.  
  161.         move.l    OldWrite(pc),a0
  162.         move.l    a0,d0
  163.         move.l    _DosBase(pc),a1
  164.         move.l    #_LVOWrite,a0
  165.         lib    Exec,SetFunction
  166.  
  167. cleanup1    move.l    OldOpScr(pc),a0
  168.         move.l    a0,d0
  169.         move.l    _IntuitionBase(pc),a1
  170.         move.l    #_LVOOpenScreen,a0
  171.         lib    Exec,SetFunction
  172.  
  173.         move.l    OldOpWin(pc),a0
  174.         move.l    a0,d0
  175.         move.l    _IntuitionBase(pc),a1
  176.         move.l    #_LVOOpenWindow,a0
  177.         lib    Exec,SetFunction
  178.  
  179.         move.l    OldPrIT(pc),a0
  180.         move.l    a0,d0
  181.         move.l    _IntuitionBase(pc),a1
  182.         move.l    #_LVOPrintIText,a0
  183.         lib    Exec,SetFunction
  184.  
  185. ;        move.l    OldDisB(pc),a0
  186. ;        move.l    a0,d0
  187. ;        move.l    _IntuitionBase(pc),a1
  188. ;        move.l    #_LVODisplayBeep,a0
  189. ;        lib    Exec,SetFunction
  190.  
  191.         move.l    OldText(pc),a0
  192.         move.l    a0,d0
  193.         move.l    _GfxBase(pc),a1
  194.         move.l    #_LVOText,a0
  195.         lib    Exec,SetFunction
  196.  
  197.         closlib    Intuition
  198.         closlib    Gfx
  199. cleanup_out    closlib    Dos
  200.         pull    d2-d7/a2-a6
  201.         rts
  202.  
  203. ota_luku    moveq.l    #0,d0
  204.         moveq.l    #0,d1
  205. ota_seuraava    move.b    (a0)+,d1
  206.         cmp.b    #'0',d1
  207.         bcs    otettu
  208.         cmp.b    #'9',d1
  209.         bhi    otettu
  210.         sub.b    #'0',d1
  211.         mulu.w    #10,d0
  212.         add.l    d1,d0
  213.         bra    ota_seuraava
  214. otettu        rts
  215.  
  216. introutine    push    d4-d7
  217.         lea    $dff000,a0
  218.         move.b    keyboard,d4
  219.         move.w    mouse0,d5
  220.         move.w    mouse1,d6
  221.         move.b    diskctrl,d7
  222.  
  223.         cmp.w    #$ff,Change
  224.         beq    touhuaa
  225.  
  226.         cmp.w    hiiri0(a1),d5
  227.         bne    touhuaa
  228.  
  229.         cmp.b    levyas(a1),d7
  230.         bne    touhuaa
  231.  
  232.         cmp.b    nappis(a1),d4
  233.         bne    touhuaa
  234.  
  235.         cmp.w    hiiri1(a1),d6
  236.         bne    touhuaa
  237.  
  238. ei_puuhaa    move.l    laskuri(a1),d0
  239.         bmi    nukkuu_jo
  240.  
  241.         addq.l    #1,d0
  242.         cmp.l    raja(a1),d0
  243.         bcs    ei_nukkumaan
  244.  
  245. nukkumaan    bset.l    #31,d0
  246.         move.l    d0,laskuri(a1)
  247.         move.w    DMACONR(a0),dmasailo(a1)
  248.         move.w    #SAMMUTUS,DMACON(a0)
  249.         clr.w    COLOR0(a0)
  250.  
  251. nukkuu_jo    pull    d4-d7
  252.         moveq.l    #0,d0
  253.         rts
  254.  
  255. ei_nukkumaan    move.l    d0,laskuri(a1)
  256.         pull    d4-d7
  257.         moveq.l    #0,d0
  258.         rts
  259.  
  260. touhuaa        move.b    d4,nappis(a1)
  261.         move.w    d5,hiiri0(a1)
  262.         move.w    d6,hiiri1(a1)
  263.         move.b    d7,levyas(a1)
  264.         move.w    #$00,Change
  265.         tst.l    laskuri(a1)
  266.         bpl    ei_herata
  267.  
  268. heratys        move.w    dmasailo(a1),d0
  269.         bset.l    #15,d0
  270.         move.w    d0,DMACON(a0)
  271.  
  272. ei_herata    clr.l    laskuri(a1)
  273.         pull    d4-d7
  274.         moveq.l    #1,d0
  275.         rts
  276.  
  277. ; Here starts the library changes
  278.  
  279. OpWin:        move.w    #$ff,Change
  280.         move.l    OldOpWin(pc),a1
  281.         jmp    (a1)
  282.  
  283. OpScr:        move.w    #$ff,Change
  284.         move.l    OldOpScr(pc),a1
  285.         jmp    (a1)
  286.  
  287. OpScrTL:    move.w    #$ff,Change
  288.         push    a2
  289.         move.l    OldOpScrTL(pc),a2
  290.         jsr    (a2)
  291.         pull    a2
  292.         rts
  293.  
  294. OpWinTL:    move.w    #$ff,Change
  295.         push    a2
  296.         move.l    OldOpWinTL(pc),a2
  297.         jsr    (a2)
  298.         pull    a2
  299.         rts
  300.  
  301. PrIT:        move.w    #$ff,Change
  302.         push    a2
  303.         move.l    OldPrIT(pc),a2
  304.         jsr    (a2)
  305.         pull    a2
  306.         rts
  307.  
  308. ;DisB:        move.w    #$ff,Change
  309. ;        move.l    OldDisB(pc),a1
  310. ;        jmp    (a1)
  311.  
  312. NewText:    move.w    #$ff,Change
  313.         push    a2
  314.         move.l    OldText(pc),a2
  315.         jsr    (a2)
  316.         pull    a2
  317.         rts
  318.  
  319. NewWrite:    move.w    #$ff,Change
  320.         move.l    OldWrite(pc),a1
  321.         jmp    (a1)
  322.  
  323.         ds.l    0
  324. OldOpWin:    dc.l    0
  325. OldOpScr:    dc.l    0
  326. OldPrIT:    dc.l    0
  327. OldOpScrTL:    dc.l    0
  328. OldOpWinTL:    dc.l    0
  329. ;OldDisB:    dc.l    0
  330. OldText:    dc.l    0
  331. OldWrite:    dc.l    0
  332. Change:        dc.w    0
  333. Kick:        dc.w    0
  334. _stdout:    dc.l    0
  335.  
  336.         ds.l    0
  337. keskstruc    dc.l    0        ;ln_Succ
  338.         dc.l    0        ;ln_Pred
  339.         dc.b    2        ;ln_Type = NT_INTERRUPT
  340.         dc.b    -1        ;ln_Pri
  341.         dc.l    intname        ;ln_Name
  342.         dc.l    IData        ;data
  343.         dc.l    introutine    ;server
  344.  
  345. IData        dc.w    0        vanha nappiksen arvo
  346.         dc.w    0        vanha hiiren 0 arvo
  347.         dc.w    0        vanha hiiren 1 arvo
  348.         dc.w    0        vanha levyaseman arvo
  349.         dc.l    0        odotettu aika
  350.         dc.l    3000        maksimi odotusaika
  351.         dc.w    0        dma-sailo
  352.         dc.w    0        varalla
  353.  
  354. intname        dc.b    'Blank_Interrupt',0    keskeytyksen nimi
  355.  
  356.         libnames            kirjastojen osoittimet, nimet
  357.  
  358.         INCLUDE    "LWF:Blank/BlCommandLineHelp.i"
  359.  
  360.         end
  361.  
  362.