home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / dse-src1.dms / in.adf / vectorboot.s < prev    next >
Encoding:
Text File  |  1992-07-26  |  13.5 KB  |  713 lines

  1. ;========================================================================
  2. ;
  3. ; Project...: Utility boot (VectorBOOT)
  4. ; Version...: V1.03
  5. ; Date......: 8-June-1991
  6. ; Author....: P. de Boer
  7. ; Assembler.: ASM-One V1.01, DevPac V2.14
  8. ;
  9. ; PS: You'll have to change a few things, if you want to assemble it in
  10. ;     DevPac or SEKA
  11. ;     (It even works on kick 2.0 !!)
  12. ;
  13. ;========================================================================
  14.  
  15. Installer    EQU    1
  16.  
  17.         IFEQ    Installer
  18. WriteBB        EQU    0
  19.         IFNE    WriteBB            ;ASM-One directive
  20.         AUTO    ws\BootBlock\0\2\cc\
  21.         ENDC
  22.         ELSEIF
  23. WriteBB        EQU    1
  24.         ENDC
  25.  
  26. ;========================================================================
  27. ;HARDWARE EQU's
  28.  
  29. DMACONR    EQU    $002
  30. VHPOSR    EQU    $006
  31.  
  32. POTGOR    EQU    $016
  33. COP1LCH    EQU    $080
  34. COPJMP1    EQU    $088
  35. DIWSTRT    EQU    $08E
  36. DIWSTOP    EQU    $090
  37. DDFSTRT    EQU    $092
  38. DDFSTOP    EQU    $094
  39. DMACON    EQU    $096
  40. INTENA    EQU    $09A
  41. BPL1PTH    EQU    $0E0
  42. BPL1PTL    EQU    $0E2
  43. BPL2PTH    EQU    $0E4
  44. BPL2PTL    EQU    $0E6
  45. BPLCON0    EQU    $100
  46. BPLCON1    EQU    $102
  47. BPLCON2    EQU    $104
  48. BPL1MOD    EQU    $108
  49.  
  50. COLOR00    EQU    $180
  51. COLOR01    EQU    $182
  52. COLOR08    EQU    $190
  53. COLOR09    EQU    $192
  54.  
  55. CUSTOM    EQU    $DFF000
  56.  
  57. CIAB    EQU    $BFD000
  58. CIAA    EQU    $BFE001
  59.  
  60. PRA    EQU    $000
  61. SPx    EQU    $C00
  62.  
  63. NULL    EQU    0
  64.  
  65. ;------ DOS LVO's
  66.  
  67. _LVOOpen        EQU    -30
  68. _LVOClose        EQU    -36
  69. _LVOWrite        EQU    -48
  70. _LVOOutput        EQU    -60
  71.  
  72. MODE_NEW        EQU    1004
  73.  
  74. ;------ GFX LVO's
  75.  
  76. _LVOOpenFont        EQU    -72
  77.  
  78. ;------ EXEC LVO's
  79.  
  80. _LVOFindResident    EQU    -96
  81. _LVOSuperState        EQU    -150
  82. _LVOAllocMem        EQU    -198
  83. _LVOFreeMem        EQU    -210
  84. _LVOAvailMem        EQU    -216
  85. _LVOFindTask        EQU    -294
  86. _LVOAddPort        EQU    -354
  87. _LVORemPort        EQU    -360
  88. _LVOGetMsg        EQU    -372
  89. _LVOReplyMsg        EQU    -378
  90. _LVOWaitPort        EQU    -384
  91. _LVOCloseLibrary    EQU    -414
  92. _LVOOpenDevice        EQU    -444
  93. _LVOCloseDevice        EQU    -450
  94. _LVODoIO        EQU    -456
  95. _LVOOpenLibrary        EQU    -552
  96.  
  97. ExecBase        EQU    $4
  98.  
  99.             RSRESET        ;node structure
  100. LN            RS.B    0
  101. LN_SUCC            RS.L    1
  102. LN_PRED            RS.L    1
  103. LN_TYPE            RS.B    1
  104. LN_PRI            RS.B    1
  105. LN_NAME            RS.L    1
  106. LN_SIZE            RS.W    0
  107.  
  108. NT_MSGPORT        EQU    4
  109.  
  110.  
  111. ;========================================================================
  112.  
  113.         opt    o+
  114.  
  115.         SECTION    MainCode,CODE
  116.  
  117.         IFEQ    Installer
  118.         JMP    s
  119.         ENDC
  120.  
  121. Start        move.l    a0,a5
  122.  
  123.         suba.l    a1,a1
  124.         move.l    (ExecBase).w,a6
  125.         JSR    _LVOFindTask(a6)
  126.         move.l    d0,MyTask
  127.         move.l    d0,MyPort+$10    ;beetje gejat uit intern
  128.  
  129.         lea    MyPort(pc),a1
  130.         move.l    (ExecBase).w,a6
  131.         JSR    _LVOAddPort(a6)
  132.  
  133.         lea    _DOSName(pc),a1
  134.         clr.l    d0
  135.         move.l    (ExecBase).w,a6
  136.         JSR    _LVOOpenLibrary(a6)
  137.         move.l    d0,DOSBase
  138.         beq    NoDOS
  139.  
  140.         move.l    DOSBase(pc),a6
  141.         JSR    _LVOOutput(a6)
  142.         move.l    d0,OutHandle
  143.  
  144.         move.l    #Hello.TXT,d2
  145.         move.l    #Hello.LEN,d3
  146.         BSR    Print
  147.  
  148. SkipSpaces    move.b    (a5)+,d0
  149.         cmp.b    #$0A,d0
  150.         beq.s    Fout
  151.         cmp.b    #" ",d0
  152.         beq.s    SkipSpaces
  153.  
  154. NotReturn    cmp.b    #"0",d0
  155.         blt.s    SkipSpaces
  156.         cmp.b    #"3",d0
  157.         ble.s    Install
  158.  
  159. Fout        move.l    #Syntax.TXT,d2
  160.         move.l    #Syntax.LEN,d3
  161.         bra    PrintAndExit
  162.  
  163. Install        move.b    d0,Unit
  164.         sub.b    #"0",d0
  165.         ext.w    d0
  166.         ext.l    d0
  167.         clr.l    d1
  168.  
  169.         lea    TrdDevice(pc),a0
  170.         lea    DiskIO(pc),a1
  171.         move.l    (ExecBase).w,a6
  172.         JSR    _LVOOpenDevice(a6)
  173.         tst.l    d0
  174.         beq.s    TrdOpen
  175.  
  176.         move.l    #NoTrd.TXT,d2
  177.         move.l    #NoTrd.LEN,d3
  178.         bra    PrintAndExit
  179.  
  180. TrdOpen        lea    BootBlock,a0
  181.         clr.l    4(a0)
  182.         clr.l    d0
  183.         move.w    #1024/4-1,d7
  184. CheckSum    add.l    (a0)+,d0
  185.         bcc.s    .Ok
  186.         addq.l    #1,d0
  187. .Ok        dbf    d7,CheckSum
  188.         not.l    d0
  189.         move.l    d0,-(1024-4)(a0)
  190.  
  191.         lea    DiskIO(pc),a1
  192.         move.l    #MyPort,14(a1)
  193.         move.l    #BootBlock,40(a1)
  194.         move.l    #2*512,36(a1)
  195.         clr.l    44(a1)
  196.  
  197.         move.l    (ExecBase).w,a6
  198.  
  199.         move.w    #5,28(a1)
  200.         JSR    _LVODoIO(a6)
  201.         move.w    #3,28(a1)
  202.         JSR    _LVODoIO(a6)
  203.         move.w    #4,28(a1)
  204.         JSR    _LVODoIO(a6)
  205.  
  206.         clr.l    36(a1)
  207.         move.w    #9,28(a1)
  208.         JSR    _LVODoIO(a6)
  209.  
  210.         lea    DiskIO(pc),a1
  211.         move.l    (ExecBase).w,a6
  212.         JSR    _LVOCloseDevice(a6)
  213.  
  214.         move.l    #Done.TXT,d2
  215.         move.l    #Done.LEN,d3
  216.  
  217. PrintAndExit    BSR.S    Print
  218.  
  219. RemPort        lea    MyPort(pc),a1
  220.         move.l    (ExecBase).w,a6
  221.         JSR    _LVORemPort(a6)
  222.  
  223. CloseDOS    move.l    DOSBase(pc),a1
  224.         move.l    (ExecBase).w,a6
  225.         JSR    _LVOCloseLibrary(a6)
  226.  
  227. NoDOS        clr.l    d0
  228.         rts
  229.  
  230. ;========================================================================
  231. Print        move.l    OutHandle(pc),d1
  232.         beq.s    .Exit
  233.         move.l    DOSBase(pc),a6
  234.         JSR    _LVOWrite(a6)
  235.  
  236. .Exit        rts
  237.  
  238. ;========================================================================
  239.  
  240. DOSBase        DC.L    0
  241. OutHandle    DC.L    0
  242. MyTask        DC.L    0
  243.  
  244. DiskIO        DCB.L    20,0
  245. IO        DCB.L    12,0
  246. IOReq        DCB.L    16,0
  247.  
  248. MyPort        DC.L    NULL            ;message port structure
  249.         DC.L    NULL
  250.         DC.B    NT_MSGPORT
  251.         DC.B    0
  252.         DC.L    MyPortName
  253.         DC.B    0
  254.         DC.B    0
  255.         DC.L    NULL
  256.         DS.B    14
  257.  
  258.  
  259. _DOSName    DC.B    "dos.library",$0
  260. TrdDevice    DC.B    "trackdisk.device",$0
  261. MyPortName    DC.B    "VectorBOOT port",$0
  262.  
  263. Hello.TXT    DC.B    $9B,"33;1mVectorBOOT"
  264.         DC.B    $9B,"0m V1.1 by P. de Boer (VECTOR/Vision)",$0A
  265. Hello.LEN    EQU    *-Hello.TXT
  266. Syntax.TXT    DC.B    $9B,"33mSYNTAX:"
  267.         DC.B    $9B,"0m VectorBOOT n",$0A
  268.         DC.B    "  Where n stands for the drive you want to install",$0A
  269. Syntax.LEN    EQU    *-Syntax.TXT
  270. NoTrd.TXT    DC.B    "Unable to open trackdisk.device for unit "
  271. Unit        DC.B    "0"
  272.         DC.B    " !",$0A
  273. NoTrd.LEN    EQU    *-NoTrd.TXT
  274. Done.TXT    DC.B    "Bootblock installed.",$0A
  275. Done.LEN    EQU    *-Done.TXT
  276.  
  277. ;========================================================================
  278.         IFEQ    Installer
  279.  
  280.         SECTION    TestCode,CODE
  281.  
  282. s        move.l    $4.w,a6
  283.         move.w    #$4E75,EndAddr        ; put rts into code
  284.         jmp    Go
  285.  
  286.         ENDC
  287.  
  288. ;========================================================================
  289.         SECTION    VectorBOOT,DATA_C
  290.  
  291.         opt    o+,p+
  292.  
  293. ScrW        EQU    640
  294. ScrH        EQU    88
  295.  
  296. BootBlock    DC.B    'DOS',0
  297.         DC.L    0
  298.         DC.L    880
  299.  
  300. Go        movem.l    d0-d7/a0-a6,-(a7)
  301.  
  302. AllocMem    pea    (ScrW/8*ScrH+$400).w
  303.         move.l    (a7),d0            ; ==> sp 4
  304.         move.l    #$10002,d1
  305.         JSR    _LVOAllocMem(a6)
  306.         move.l    d0,d2
  307.         beq.w    Exit
  308.         move.l    d2,-(a7)        ; ==> sp 8
  309.  
  310.         IFNE    WriteBB
  311. ReadBB        movea.l    9*4+8(SP),a1    ;a1=io struct only in bootblock !
  312.         movea.l    d2,a0
  313.         adda.w    #(ScrW/8)*ScrH,a0
  314.         move.l    a0,40(a1)    ;read buffer
  315.         JSR    _LVODoIO(a6)
  316.  
  317. MotorOFF    addq.w    #7,28(a1)        ;2+7=9
  318.         suba.l    a3,a3
  319.         BSR    DoIO
  320.         ELSEIF
  321.         DCB.W    14,$4E71
  322.         ENDC
  323.  
  324.         clr.w    -(a7)            ; ==> sp 10
  325.         cmp.b    #60,530(a6)
  326.         beq.s    OpenGFX
  327.         move.w    #$0020,(a7)        ;Freq
  328.  
  329. OpenGFX        lea    GFXName(pc),a1        ; gfx name
  330.         clr.l    d0
  331.         JSR    _LVOOpenLibrary(a6)
  332.         movea.l    d0,a6            ; gfx base
  333.         move.l    d0,-(a7)        ; ==> sp 14
  334.  
  335. OpenFONT    lea    TextAttr(pc),a0
  336.         lea    FontName(pc),a1
  337.         move.l    a1,(a0)
  338.         JSR    _LVOOpenFont(a6)
  339.         movea.l    d0,a0
  340.         movea.l    34(a0),a4        ; bit ptr
  341.         move.w    38(a0),d7        ; modulo
  342.  
  343.         move.l    $4.w,a6            ; execbase back
  344.  
  345. SetPtrs        lea    BitPlanes+2(pc),a0
  346.         moveq    #80,d1
  347.         add.l    d2,d1
  348.  
  349.         move.w    d1,(a0)
  350.         swap    d1
  351.         move.w    d1,4(a0)
  352.  
  353.         move.w    d2,8(a0)
  354.         swap    d2
  355.         move.w    d2,12(a0)
  356.  
  357. SetDMA        lea    CUSTOM+DMACON,a5
  358.         move.w    DMACONR-DMACON(a5),-(a7)    ; ==> sp 16
  359.         move.w    #$7FFF,-(a7)        ; ==> sp 18
  360.         move.w    (a7),(a5)        ; disable all dma's
  361.  
  362.         clr.l    BPL1MOD-DMACON(a5)
  363.  
  364.         lea    CList(pc),a0
  365.         move.l    a0,COP1LCH-DMACON(a5)        ; copper1 start adress
  366.         move.w    #$C008,INTENA-DMACON(a5)
  367.         clr.w    COPJMP1-DMACON(a5)        ; start copper1
  368.  
  369.  
  370. ;========================================================================
  371. WaitLoop
  372.  
  373. ;========================================================================
  374. PrintText    moveq    #80,d2
  375.  
  376.         lea    Text(pc),a0
  377.         move.l    10(SP),a1        ; screenptr
  378.         lea    Address(pc),a3
  379.         bra.s    SkipRow        
  380.  
  381. NextChar    moveq    #0,d0
  382.         move.b    (a0)+,d0        ; get char
  383. ChangeAdr    EQU    *+2
  384.         bmi    Restore            ; last char ???
  385.         bgt.s    TestSpace
  386.  
  387. SkipRow        moveq    #8,d1            ; first column
  388.         lea    80*8(a1),a1        ; next line
  389.         bra.s    NextChar        ; get next char
  390.  
  391. TestSpace    subq.b    #1,d0            ; space mark
  392.         bne.s    TestAddress
  393.         add.b    (a0)+,d1        ; get spaces
  394.         bra.s    NextChar
  395.  
  396. TestAddress    subq.b    #1,d0
  397.         bne.s    TestAddress2
  398.  
  399.         move.w    (a3)+,a2
  400.         move.l    (a2),d6
  401.         cmp.w    #$00FC,(a2)
  402.         bne.s    VIRUS
  403.         bra.s    DoLong
  404.  
  405. TestAddress2    subq.b    #1,d0
  406.         bne.s    TestAVAIL
  407.  
  408.         move.w    (a3)+,a2
  409.         move.l    0(a2,a6.l),d6
  410.         bne.s    VIRUS
  411.  
  412. DoLong        btst    #2,POTGOR-DMACON(a5)
  413.         bne.s    ConvertULong
  414.  
  415. Change        lea    ChangeAdr(pc),a2
  416.         move.w    #EndText-ChangeAdr,(a2)
  417.         bra.s    ConvertULong
  418.  
  419. VIRUS        addq.w    #1,d1
  420.         moveq    #"?",d0
  421.         BSR.S    PutChar        
  422.         subq.w    #2,d1
  423.  
  424.         lea    Streepje1(pc),a2
  425.         move.w    #$0E30,(a2)
  426.         move.w    (a2),Streepje2(a2)
  427.         bra.s    Change
  428.  
  429. TestAVAIL    subq.b    #1,d0
  430.         bne.s    TestDrives
  431.  
  432.         movem.l    d1/a0-a1,-(SP)
  433.         clr.l    d1
  434.         move.b    (a3)+,d1
  435.         JSR    _LVOAvailMem(a6)
  436.         movem.l    (SP)+,d1/a0-a1
  437.  
  438.         move.l    d0,d6
  439.         bra.s    ConvertULong
  440.  
  441. TestDrives    subq.b    #1,d0
  442.         bne.s    .Cont
  443.  
  444.         moveq    #1,d0
  445.  
  446.         IFNE    WriteBB
  447.         BSR    GetPtr            ;This code only in bootblock
  448.         moveq    #3-1,d5
  449. .Test        tst.l    (a0)+
  450.         bne.s    .End
  451.         addq.w    #1,d0
  452.         dbf    d5,.Test
  453.  
  454. .End
  455.         ELSEIF
  456.         DCB.W    8,$4E71
  457.         ENDC
  458.  
  459.         add.w    #"0"-5,d0
  460.  
  461. .Cont        addq.b    #5,d0
  462.         BSR.S    PutChar
  463.         bra.s    FakeNextChar
  464.  
  465. ;========================================================================
  466. ConvertULong    addq.w    #3,d1
  467.         moveq    #"$",d0
  468.         BSR.S    PutChar
  469.  
  470.         moveq    #8-1,d4
  471. .Next        rol.l    #4,d6
  472.         move.b    d6,d0
  473.         and.w    #$000F,d0
  474.         cmp.w    #10,d0
  475.         blt.s    .Ok
  476.         addq.w    #7,d0
  477.  
  478. .Ok        add.w    #"0",d0
  479.         BSR.S    PutChar
  480.         dbf    d4,.Next        
  481.  
  482.         addq.w    #8,d1
  483. FakeNextChar    jmp    NextChar(pc)
  484.  
  485. ;========================================================================
  486. PutChar        move.w    d1,d3
  487.         moveq    #8-1,d5            ; copy 8 bytes
  488. .Copy        move.b    -$20(a4,d0.w),0(a1,d3.w) ; copy one byte from char
  489.         add.w    d7,d0            ; next byte in char
  490.         add.w    d2,d3
  491.         dbf    d5,.Copy
  492.         addq.w    #1,d1            ; move 1 right
  493.         rts
  494. ;========================================================================
  495. EndText
  496.  
  497. MouseWait    move.w    #$87D0,(a5)    ; enable dma's
  498.  
  499.         btst    #6,CIAA!PRA
  500.         beq.s    Restore
  501.  
  502. PressWait    move.b    CIAA!SPx,d1
  503.         btst    #0,d1
  504.         beq.s    MouseWait
  505.  
  506. TestESC        cmp.b    #$75,d1
  507.         bne.s    TestKeys
  508.  
  509. ;========================================================================
  510. Restore        move.w    (a7)+,(a5)            ; disable dma
  511.         or.w    #$8000,(a7)            ; set bit 15
  512.         move.w    (a7)+,(a5)            ; enable dma
  513.  
  514. RestoreCList    movea.l    (a7)+,a1            ; get gfx base
  515.         move.l    $26(a1),COP1LCH-DMACON(a5)    ; restore old copper ptr
  516.         move.w    (a7)+,COPJMP1-DMACON(a5)    ; start copper
  517.  
  518. CloseGFX    JSR    _LVOCloseLibrary(a6)
  519.  
  520. FreeMemory    movea.l    (a7)+,a1
  521.         move.l    (a7)+,d0
  522.         JSR    _LVOFreeMem(a6)
  523.  
  524. Exit        clr.l    COLOR00-DMACON(a5)
  525.         movem.l    (a7)+,d0-d7/a0-a6
  526.  
  527. EndAddr        lea    DOSName(pc),a1
  528.         move.w    #'do',(a1)
  529.         JSR    _LVOFindResident(a6)
  530.         tst.l    d0
  531.         beq.s    .Foutje
  532.         movea.l    d0,a0
  533.         movea.l    22(a0),a0
  534.         moveq    #-1,d0
  535.  
  536. .Foutje        not.l    d0
  537.         rts
  538.  
  539. ;========================================================================
  540. GetPtr        movea.l    9*4+18+4(SP),a0        ;io struct (a1)
  541.         movea.l    20(a0),a0        ;trackdisk device struct
  542.         movea.l    60(a0),a0
  543.         lea    52(a0),a0
  544.         rts
  545.  
  546. ;========================================================================
  547. TestKeys    not.b    d1
  548.         sub.w    #$A0-2,d1
  549.  
  550. TestF1        subq.b    #2,d1
  551.         bne.s    TestF2
  552.         eori.w    #$0020,8(SP)        ;Freq
  553.  
  554. ;========================================================================
  555. TestF2        subq.b    #2,d1
  556.         bne.s    TestF3
  557.  
  558. Go512Kb        movea.l    a6,a0
  559.         movea.l    a5,a1
  560.         move.l    (a7),(a1)+
  561.         move.l    (a7),(a1)+
  562.         moveq    #-1,d6            ;prevents guru
  563.         lea    $80000,a3
  564.         suba.l    a4,a4
  565.         lea    $676.w,a6
  566.         move.l    #$FC0222,$80.W
  567.         trap    #0
  568.  
  569. ;========================================================================
  570. TestF3        subq.b    #2,d1
  571.         bne.s    TestF4
  572.  
  573. OneDrive    BSR.S    GetPtr
  574.         moveq    #-1,d0
  575.         move.l    d0,(a0)+
  576.         move.l    d0,(a0)+
  577.         move.l    d0,(a0)+
  578.  
  579. ;========================================================================
  580. TestF4        subq.b    #2,d1
  581.         beq.s    SoftReset
  582.  
  583. TestF5        subq.b    #2,d1
  584.         bne.s    TestF6
  585.  
  586. HardReset    clr.l    38(a6)            ;just kill chkbase
  587. SoftReset    JSR    _LVOSuperState(a6)    ;this is the only
  588.         lea    $2.w,a0            ;correct way to reset
  589.         RESET                ;your amiga !!!
  590.         JMP    (a0)
  591.  
  592. ;========================================================================
  593. TestF6        subq.b    #2,d1
  594.         bne.s    ReleaseWait
  595.  
  596.         movea.l    9*4+18(SP),a1
  597.         lea    28(a1),a2
  598.         lea    $400.w,a3
  599.  
  600.         subq.w    #4,(a2)            ;9-4=5 !
  601.         BSR.S    DoIO
  602.         subq.w    #2,(a2)            ;5-2=3 !
  603.         BSR.S    DoIO
  604.         addq.w    #1,(a2)            ;3+1=4 !
  605.         BSR.S    DoIO
  606.         addq.w    #5,(a2)            ;4+5=9 !
  607.         BSR.S    DoIO
  608.         suba.l    a3,a3
  609.         BSR.S    DoIO
  610.  
  611. ;========================================================================
  612. ReleaseWait    btst    #0,CIAA!SPx
  613.         bne.s    ReleaseWait
  614.  
  615.         lea    FreqText(pc),a0
  616.         move.b    #"5",(a0)
  617.         move.w    8(SP),$1DC-DMACON(a5)        ;freq
  618.         beq.s    .Skip
  619.         move.b    #"6",(a0)
  620.  
  621. .Skip        jmp    WaitLoop(pc)
  622.  
  623. ;========================================================================
  624. DoIO        move.l    a3,36(a1)
  625.         JMP    _LVODoIO(a6)
  626.  
  627. ;========================================================================
  628. Address        DC.W    $64,42            ;peek address
  629.         DC.W    $68,46            ;negative address means
  630.         DC.W    $6C,50            ;exec-base offset
  631.         DC.W    $70
  632.         DC.W    $74,546
  633.         DC.W    $78,550
  634.         DC.W    $7C,554
  635.         DC.B    2,4
  636.  
  637. TextAttr    DC.L    0
  638.         DC.W    8
  639.         DC.B    0
  640.         DC.B    0
  641.         DC.W    8
  642.  
  643. FontName    DC.B    'topaz.font',0
  644. GFXName        DC.B    'graph'
  645. DOSName        DC.B    'ics.library',0
  646.  
  647. ;========================================================================
  648. CList        DC.W    BPLCON0,$A400,BPLCON1,$0010,BPLCON2,$0000
  649.         DC.W    DIWSTRT,$6081,DIWSTOP,$60C2+(ScrH-1)<<8
  650.         DC.W    DDFSTRT,$003C,DDFSTOP,$00D4
  651.  
  652. BitPlanes    DC.W    BPL1PTL,$0000,BPL1PTH,$0000
  653.         DC.W    BPL2PTL,$0000,BPL2PTH,$0000
  654.  
  655.         DC.W    COLOR00,$0123,COLOR01,$0EEE
  656.         DC.W    COLOR09,$0000
  657.  
  658. Streepje1    EQU    *+6
  659.         DC.W    $5F0F,$FFFE,COLOR00,$03E0
  660.         DC.W    $600F,$FFFE,COLOR00,$0455
  661.  
  662. Streepje2    EQU    (*-Streepje1)+6
  663.         DC.W    $5F0F+ScrH<<8,$FFFE,COLOR00,$03E0
  664.         DC.W    $600F+ScrH<<8,$FFFE,COLOR00,$0123
  665.  
  666.         DC.W    $FFFF,$FFFE
  667.  
  668. Text        DC.B    "I1:",2            ;menu text
  669.         DC.B    "COLD:",3        ;0 =   end of line
  670.         DC.B    "F1: 60Hz"        ;1 =   space indentifier
  671. FreqText    EQU    *-4            ;      e.g. 1,amount of spaces
  672.         DC.B    $00            ;2/3 = get next peek address
  673.         DC.B    "I2:",2            ;      from list
  674.         DC.B    "COOL:",3        ;4 =   get mem. req. from list
  675.         DC.B    "F2: 512Kb"        ;      and do an availmem
  676.         DC.B    $00            ;5 =   check amount of drives
  677.         DC.B    "I3:",2            ;$FF = end of text (negative)
  678.         DC.B    "WARM:",3
  679.         DC.B    "F3: One drive"
  680.         DC.B    $00
  681.         DC.B    "I4:",2
  682.         DC.B    1,25,"F4: Reset"
  683.         DC.B    $00
  684.         DC.B    "I5:",2
  685.         DC.B    "MEM: ",3
  686.         DC.B    "F5: KILL"
  687.         DC.B    $00
  688.         DC.B    "I6:",2
  689.         DC.B    "TAG: ",3
  690.         DC.B    "F6: Write boot"
  691.         DC.B    $00
  692.         DC.B    "I7:",2
  693.         DC.B    "CHK: ",3
  694.         DC.B    $00,$00
  695.         DC.B    1,-2,"CHIP:",4
  696.         DC.B    "FAST:",4
  697.         DC.B    "DRIVES: ",5
  698.         DC.B    $FF
  699.  
  700. Size        EQU    1024-(*-BootBlock)
  701.  
  702. ;        PRINTV    *-BootBlock
  703. ;        PRINTV    Size
  704.  
  705.         IFLT    Size
  706.         PRINTT    "Code to large !"
  707.         ELSEIF
  708.         DCB.B    1024-(*-BootBlock),$00
  709.         ENDC
  710.  
  711. ;========================================================================
  712.  
  713.