home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / testi / corsoasm / sorgenti_darkcoder / vari / gunwriter.s < prev    next >
Encoding:
Text File  |  1995-12-06  |  27.2 KB  |  1,123 lines

  1. *************************************************************************
  2. *        Gunwriter for ITALIAN CHART 1992            *
  3. *                                    *
  4. * Coder: DDT    (D.Paccaloni)                        *
  5. * Date : dd/mm/1992                            *
  6. *                                    *
  7. * Aggiornamento e fixamento: RANDY/RAM JAM (Fabio Ciucci)        *
  8. * Date: 1995                                *
  9. *                                    *
  10. *************************************************************************
  11.  
  12. FRAMES = 100        ; Velocita' (1-254)
  13.  
  14.     Section GunWritoccio,code
  15.  
  16. ;    Include    "DaWorkBench.s"    ; togliere il ; prima di salvare con "WO"
  17.  
  18. *****************************************************************************
  19.     include    "startup2.s"    ; salva interrupt, dma eccetera.
  20. *****************************************************************************
  21.  
  22. ; Con DMASET decidiamo quali canali DMA aprire e quali chiudere
  23.  
  24.         ;5432109876543210
  25. DMASET    EQU    %1000001111000000    ; copper,bitplane,blitter DMA abilitati
  26.  
  27. WaitDisk    EQU    10    ; 50-150 al salvataggio (secondo i casi)
  28.  
  29. START:
  30.  
  31. ; Puntiamo il nostro int di livello 3
  32.  
  33.     move.l    BaseVBR(PC),a0         ; In a0 il valore del VBR
  34.     move.l    #NewIRQ,$6c(a0)         ; metto la mia rout. int. livello 3.
  35.  
  36.     MOVE.L    #plane1,D0      ; planes
  37.     LEA    BplPointers,A1      ; indirizzo puntatori nella copperlist.
  38.     moveq    #2-1,d1          ; 2 planes
  39. Ploop:
  40.     move.w    d0,6(a1)
  41.     swap    d0
  42.     move.w    d0,2(a1)
  43.     swap    d0
  44.     add.l    #40*256,d0
  45.     addq.w    #8,a1
  46.     dbra    d1,Ploop
  47.  
  48.     lea    $dff000,a5
  49.     MOVE.W    #DMASET,$96(a5)        ; DMACON - abilita bitplane, copper
  50.                     ; e sprites.
  51.     move.l    #Newclist,$80(a5)    ; Puntiamo la nostra COP
  52.     move.w    d0,$88(a5)        ; Facciamo partire la COP
  53.     move.w    #0,$1fc(a5)        ; Disattiva l'AGA
  54.     move.w    #$c00,$106(a5)        ; Disattiva l'AGA
  55.     move.w    #$11,$10c(a5)        ; Disattiva l'AGA
  56.  
  57.         ; 5432109876543210
  58.     move.w    #%1100000000100000,$9a(a5)    ; INTENA - abilito solo VERTB
  59.  
  60. ;    MAIN PROGRAM
  61.  
  62. SetLine:
  63.     lea    $dff000,a0
  64.     move.w    #40,$60(a0)
  65.     move.w    #40,$66(a0)
  66.     move.l    #plane1,$48(a0)
  67.     move.l    #plane1,$54(a0)
  68.     move.l    #-1,$44(a0)
  69.     move.w    #$8000,$74(a0)
  70.     move.w    #$ffff,$72(a0)
  71.  
  72.     lea    MenoUno(PC),a1
  73.     lea    LinesData(PC),a4    ; Pointer to line to get
  74.     sf    FrameN            ; Reset frame number counter
  75.  
  76. qTF0:    cmp.b    #$f0,$dff006
  77.     bne.s    qTF0
  78. qTF1:    cmp.b    #$f0,$dff006
  79.     beq.s    qTF1
  80.  
  81. aTF0:    cmp.b    #$f0,$dff006
  82.     bne.s    aTF0
  83. aTF1:    cmp.b    #$f0,$dff006
  84.     beq.s    aTF1
  85.  
  86. aTF2:    cmp.b    #$f0,$dff006
  87.     bne.s    aTF2
  88. aTF3:    cmp.b    #$f0,$dff006
  89.     beq.s    aTF3
  90.  
  91.     btst    #6,$dff002
  92. CLS1:
  93.     btst    #6,$dff002    ;Clear text plane
  94.     bne.s    CLS1
  95.  
  96.     move.w    #0,$dff066        ;D modulo
  97.     move.l    #plane2,$dff054        ;D pointer
  98.     move.w    #$0000,$dff042        ;bltcon 1
  99.     move.w    #$0100,$dff040        ;bltcon 0
  100.     move.w    #$4014,$dff058        ;bltsize
  101. WBLLI:
  102.     btst    #6,$dff002
  103.     bne.s    WBLLI
  104.  
  105. NEXTFRAME:
  106.     btst    #10,$dff016
  107.     beq.w    Exit
  108.  
  109.     tst.w    LastN
  110.     bne.s    ooo
  111.  
  112.     cmp.w    #-1,(a1)    ;Test for end of current Char
  113.     bne.w    Continue
  114.  
  115. GetNewChar:
  116.     move.w    StrVal(PC),d6    ; StretchValue
  117.     moveq    #0,d7        ; Clear d7
  118.     move.l    TxtPnt(PC),a0
  119. GetNxt:
  120.     move.b    (a0),d7
  121.     bne.w    NoEOP
  122. CLSP:                ;End of PAGE {
  123.     tst.w    LastN
  124.     bne.s    ooo
  125.     move.w    #1,LastN
  126. ooo:
  127.     lea    MenoUno(PC),a1
  128.     cmp.w    #Frames,LastN
  129.     bne.w    CONTINUE
  130.     lea    Text(PC),a0
  131.     move.l    a0,TxtPnt
  132.     clr.w    LastN
  133.  
  134. lll:    btst    #6,$bfe001    ; swappa pagina col tasto sinistro
  135.     bne.s    lll
  136.  
  137.     sf    FrameN        ;Reset frame number counter
  138.     move.w    #Frames,d0
  139.     mulu.w    #12,d0
  140.     lea    LinesData(PC),a4
  141. SetLDat:
  142.     move.w    #-1,(a4)+
  143.     dbra    d0,SetLDat
  144.  
  145.     lea    LinesData(PC),a4    ; Pointer to line to get
  146.  
  147.     btst    #6,$dff002    ;Clear text plane
  148.     bne.s    CLSP
  149.  
  150.     move.w    #0,$dff066        ;D modulo
  151.     move.l    #plane2,$dff054        ;D pointer
  152.     move.w    #$0000,$dff042        ;bltcon 1
  153.     move.w    #$0100,$dff040        ;bltcon 0
  154.     move.w    #$4014,$dff058        ;bltsize
  155. WBLLIP:
  156.     btst    #6,$dff002
  157.     bne.s    WBLLIP        ;}.
  158.     bra.w    GetNxt
  159.  
  160. NoEOP:
  161.     cmp.b    #-1,d7
  162.     bne.s    NoEOF
  163.     lea    Text(PC),a0
  164.     move.l    a0,TxtPnt
  165.     bra.w    GetNxt
  166.  
  167. NoEOF:
  168.     cmp.b    #9,d7
  169.     bpl.s    NoStr
  170.     move.b    d7,d6
  171.     subq.w    #1,d6
  172.     move.w    d6,StrVal
  173.     addq.w    #1,a0
  174.     bra.w    GetNxt
  175.  
  176. NoStr:
  177.     cmp.b    #10,d7
  178.     bne.s    NoCR
  179.     st.b    ACapo
  180.     moveq    #8,d7
  181.     lsl.w    d6,d7
  182.     add.w    d7,CurY
  183.     clr.w    CurX
  184.     addq.w    #1,a0
  185.     bra.w    GetNxt
  186.  
  187. NoCR:
  188.     cmp.b    #11,d7
  189.     bne.s    NoXY
  190.     st.b    ACapo
  191.     clr.w    CurX
  192.     clr.w    CurY
  193.     move.b    1(a0),CurX+1
  194.     move.b    2(a0),CurY+1
  195.     addq.w    #3,a0
  196.     bra.w    GetNxt
  197.  
  198. NoXY:
  199.     tst.b    ACapo
  200.     beq.s    NoAC
  201.     sf.b    ACapo
  202.     bra.s    Skizz
  203.  
  204. NoAC:
  205.     moveq    #8,d0            ;NormalChar
  206.     lsl.w    d6,d0
  207.     add.w    d0,CurX
  208. Skizz:
  209.     addq.w    #1,a0
  210.     move.l    a0,TxtPnt
  211.  
  212.     move.w    d7,d0
  213.     sub.w    #32,d0
  214.     lsl.w    #2,d0
  215.     lea    CharsOffs(PC),a5
  216.     move.l    (a5,d0.w),a1        ;Start of new_Char data
  217.     cmp.b    #-1,(a1)
  218.     beq.w    GetNxt
  219.  
  220. Continue:                ;Set next line
  221.     tst.w    LastN
  222.     beq.s    Normal
  223.     move.w    #$5000,(a4)
  224.     add.w    #24,a4
  225.     bra.w    GoDraw
  226.  
  227. Normal:
  228.     moveq    #6,d7        ; Shift Value
  229.     moveq    #0,d0
  230.     moveq    #0,d1
  231.     moveq    #0,d4
  232.     moveq    #0,d5
  233.     move.w    GunX(PC),d0    ; Get GunX pos as X0
  234.     move.w    GunY(PC),d1    ; Get GunY pos as Y0
  235.     lsl.w    d7,d0        ; Make X0 *64
  236.     lsl.w    d7,d1        ; Make Y0 *64
  237.     move.w    d0,(a4)+    ; Set X0 *64
  238.     move.w    d1,(a4)+    ; Set Y0 *64
  239.     move.w    OldGunX(pc),d4    ; Get GunX oldpos as X1
  240.     move.w    OldGunY(pc),d5    ; Get GunY oldpos as Y1
  241.     lsl.w    d7,d4        ; Make X1 *64
  242.     lsl.w    d7,d5        ; Make Y1 *64
  243.     move.w    d4,(a4)+    ; Set X1 *64
  244.     move.w    d5,(a4)+    ; Set Y1 *64
  245.  
  246.     move.w    (a1)+,d4    ; Get abs dX0
  247.     move.w    (a1)+,d5    ; Get abs dY0
  248.     lsl.w    d6,d4        ; stretchval
  249.     lsl.w    d6,d5
  250.     add.w    CurX(PC),d4    ; Make rel dX0
  251.     add.w    CurY(PC),d5    ; Make rel dY0
  252.     move.w    d4,(a4)+    ; Put dX0
  253.     move.w    d5,(a4)+    ; Put dY0
  254.     lsl.w    d7,d4        ; Make tsX0 *64
  255.     lsl.w    d7,d5        ; Make tsY0 *64
  256.     sub.w    d0,d4        ; Find total X0 step *64
  257.     sub.w    d1,d5        ; Find total Y0 step *64
  258.     ext.l    d4
  259.     ext.l    d5
  260.     divs.w    #FRAMES,d4    ; Find X0 step *64
  261.     divs.w    #FRAMES,d5    ; Find Y0 step *64
  262.  
  263.     move.w    (a1)+,d2    ; Get abs dX1
  264.     move.w    (a1)+,d3    ; Get abs dY1
  265.     lsl.w    d6,d2
  266.     lsl.w    d6,d3
  267.     add.w    CurX(PC),d2    ; Make rel dX1
  268.     add.w    CurY(PC),d3    ; Make rel dY1
  269.     move.w    d2,(a4)+    ; Put dX1
  270.     move.w    d3,(a4)+    ; Put dY1
  271.     lsl.w    d7,d2        ; Make tsX1 *64
  272.     lsl.w    d7,d3        ; Make tsY1 *64
  273.     move.w    OldGunX(pc),d0    ; Get GunX oldpos as X1
  274.     move.w    OldGunY(pc),d1    ; Get GunY oldpos as Y1
  275.     lsl.w    d7,d0        ; Make X1 *64
  276.     lsl.w    d7,d1        ; Make Y1 *64
  277.     sub.w    d0,d2        ; Find total X1 step *64
  278.     sub.w    d1,d3        ; Find total Y1 step *64
  279.     ext.l    d2
  280.     ext.l    d3
  281.     divs    #FRAMES,d2    ; Find X1 step *64
  282.     divs    #FRAMES,d3    ; Find Y1 step *64
  283.  
  284.     move.w    d4,(a4)+    ; Put sX0 *64
  285.     move.w    d5,(a4)+    ; Put sY0 *64
  286.     move.w    d2,(a4)+    ; Put sX1 *64
  287.     move.w    d3,(a4)+    ; Put sY1 *64
  288.  
  289. ;LinesData:    ; dc.w    X0,Y0,X1,Y1,dX0,dY0,dX1,dY1,sX0,sY0,sX1,sY1
  290.  
  291. GoDraw:
  292. ;    tst.w    LastN
  293. ;    beq.s    Jepa
  294. ;    lea    MenoUno,a1
  295. Jepa:
  296.     lea    LinesData(PC),a5    ;Add steps
  297.     moveq    #-1,d7
  298. DrawNext:
  299.     cmp.b    #-1,d7
  300.     bne.s    NoFLin
  301.     cmp.b    #FRAMES-1,FrameN
  302.     bne.s    NoLast
  303.     bra.s    Zump
  304.  
  305. NoFLin:
  306.     cmp.b    FrameN(PC),d7
  307.     bne.s    NoLast
  308. Zump:
  309.     move.w    8(a5),d0
  310.     move.w    10(a5),d1
  311.     move.w    12(a5),d2
  312.     move.w    14(a5),d3
  313.     move.l    #plane2,CurScreen
  314.     bra.s    WBLL
  315.  
  316. NoLast:
  317.     tst.w    LastN
  318.     beq.s    NoBlub
  319.     cmp.w    #$5000,(a5)
  320.     beq.w    Blub
  321. NoBlub:
  322.     move.w    16(a5),d0
  323.     add.w    d0,(a5)
  324.     move.w    18(a5),d0
  325.     add.w    d0,2(a5)
  326.     move.w    20(a5),d0
  327.     add.w    d0,4(a5)
  328.     move.w    22(a5),d0
  329.     add.w    d0,6(a5)
  330.  
  331.     move.w    (a5),d0
  332.     move.w    2(a5),d1
  333.     move.w    4(a5),d2
  334.     move.w    6(a5),d3
  335.     moveq    #6,d4    ; per dividere /64
  336.     lsr.w    d4,d0    ; x0
  337.     lsr.w    d4,d1    ; y0
  338.     lsr.w    d4,d2    ; x1
  339.     lsr.w    d4,d3    ; y1
  340.  
  341. WBLL:
  342.  
  343.     movem.l    d0-d7/a0-a6,-(sp)
  344.     lea    $dff000,a5
  345.     btst    #6,2(a5) ; dmaconr
  346. WBlit_Init:
  347.     btst    #6,2(a5) ; dmaconr - attendi che il blitter abbia finito
  348.     bne.s    Wblit_Init
  349.  
  350.     moveq    #-1,d5
  351.     move.l    d5,$44(a5)        ; BLTAFWM/BLTALWM = $FFFF
  352.     move.w    #$8000,$74(a5)        ; BLTADAT = $8000
  353.     move.w    #40,$60(a5)        ; BLTCMOD = 40
  354.     move.w    #40,$66(a5)        ; BLTDMOD = 40
  355.     move.l    CurScreen(PC),a0
  356.     bsr.w    DrawLine
  357.     movem.l    (sp)+,d0-d7/a0-a6
  358.  
  359. ;---------
  360.  
  361. Blub:
  362.     move.l    SwapScreen(PC),CurScreen
  363.     addq.w    #1,d7
  364.     add.w    #24,a5
  365.     cmp.w    #-1,(a5)
  366.     bne.w    DrawNext
  367.  
  368. WTF0:
  369.     cmp.b    #$f0,$dff006
  370.     bne.s    WTF0
  371. WTF1:
  372.     cmp.b    #$f0,$dff006
  373.     beq.s    WTF1
  374.  
  375.     not.b    SwapFlag
  376.     beq.s    Evenf
  377.     move.l    #plane1,CurScreen
  378.     move.l    #plane1,SwapScreen
  379.     bra.s    Pluz
  380. Evenf:
  381.     move.l    #plane5,CurScreen
  382.     move.l    #plane5,SwapScreen
  383. Pluz:
  384.     move.l    CurScreen(PC),d0
  385.     LEA    BplPointers,A0      ; indirizzo puntatori nella copperlist.
  386.     move.w    d0,6(a0)
  387.     swap    d0
  388.     move.w    d0,2(a0)
  389.  
  390. ; Clear Screen
  391.  
  392.     btst    #6,$dff002
  393. CLS:
  394.     btst    #6,$dff002
  395.     bne.s    CLS
  396.  
  397.     move.w    #0,$dff066            ; D modulo
  398.     move.l    SwapScreen(PC),$dff054        ; D pointer
  399.     move.w    #$0000,$dff042            ; bltcon 1
  400.     move.w    #$0100,$dff040            ; bltcon 0
  401.     move.w    #$4014,$dff058            ; bltsize
  402. NoDel:
  403.     tst.w    LastN
  404.     beq.s    Gollum
  405.     addq.w    #1,LastN
  406. Gollum:
  407.     addq.b    #1,FrameN
  408.     cmp.b    #FRAMES,FrameN
  409.     bne.w    NEXTFRAME
  410.     sf    FrameN
  411.     lea    LinesData(PC),a4
  412.     bra.w    NEXTFRAME
  413.  
  414. Exit:
  415.     rts
  416.  
  417.  
  418. ;******************************************************************************
  419. ; Questa routine effettua il disegno della linea. prende come parametri gli
  420. ; estremi della linea P1 e P2, e l'indirizzo del bitplane su cui disegnarla.
  421. ; D0 - X1 (coord. X di P1)
  422. ; D1 - Y1 (coord. Y di P1)
  423. ; D2 - X2 (coord. X di P2)
  424. ; D3 - Y2 (coord. Y di P2)
  425. ; A0 - indirizzo bitplane
  426. ;******************************************************************************
  427.  
  428. ; costanti
  429.  
  430. DL_Fill        =    0        ; 0=NOFILL / 1=FILL
  431.  
  432.     IFEQ    DL_Fill
  433. DL_MInterns    =    $CA
  434.     ELSE
  435. DL_MInterns    =    $4A
  436.     ENDC
  437.  
  438.  
  439. DrawLine:
  440.     sub.w    d1,d3    ; D3=Y2-Y1
  441.  
  442.     IFNE    DL_Fill
  443.     beq.s    .end    ; per il fill non servono linee orizzontali 
  444.     ENDC
  445.  
  446.     bgt.s    .y2gy1    ; salta se positivo..
  447.     exg    d0,d2    ; ..altrimenti scambia i punti
  448.     add.w    d3,d1    ; mette in D1 la Y piu` piccola
  449.     neg.w    d3    ; D3=DY
  450. .y2gy1:
  451.     mulu.w    #40,d1        ; offset Y
  452.     add.l    d1,a0
  453.     moveq    #0,d1        ; D1 indice nella tabella ottanti
  454.     sub.w    d0,d2        ; D2=X2-X1
  455.     bge.s    .xdpos        ; salta se positivo..
  456.     addq.w    #2,d1        ; ..altrimenti sposta l'indice
  457.     neg.w    d2        ; e rendi positiva la differenza
  458. .xdpos:
  459.     moveq    #$f,d4        ; maschera per i 4 bit bassi
  460.     and.w    d0,d4        ; selezionali in D4
  461.         
  462.     IFNE    DL_Fill        ; queste istruzioni vengono assemblate
  463.                 ; solo se DL_Fill=1
  464.     move.b    d4,d5        ; calcola numero del bit da invertire
  465.     not.b    d5        ; (la BCHG numera i bit in modo inverso    
  466.     ENDC
  467.  
  468.     lsr.w    #3,d0        ; offset X:
  469.                 ; Allinea a byte (serve per BCHG)
  470.     add.w    d0,a0        ; aggiunge all'indirizzo
  471.                 ; nota che anche se l'indirizzo
  472.                 ; e` dispari non fa nulla perche`
  473.                 ; il blitter non tiene conto del
  474.                 ; bit meno significativo di BLTxPT
  475.  
  476.     ror.w    #4,d4        ; D4 = valore di shift A
  477.     or.w    #$B00+DL_MInterns,d4    ; aggiunge l'opportuno
  478.                     ; Minterm (OR o EOR)
  479.     swap    d4        ; valore di BLTCON0 nella word alta
  480.         
  481.     cmp.w    d2,d3        ; confronta DiffX e DiffY
  482.     bge.s    .dygdx        ; salta se >=0..
  483.     addq.w    #1,d1        ; altrimenti setta il bit 0 del'indice
  484.     exg    d2,d3        ; e scambia le Diff
  485. .dygdx:
  486.     add.w    d2,d2        ; D2 = 2*DiffX
  487.     move.w    d2,d0        ; copia in D0
  488.     sub.w    d3,d0        ; D0 = 2*DiffX-DiffY
  489.     addx.w    d1,d1        ; moltiplica per 2 l'indice e
  490.                 ; contemporaneamente aggiunge il flag
  491.                 ; X che vale 1 se 2*DiffX-DiffY<0
  492.                 ; (settato dalla sub.w)
  493.     move.b    Oktants(PC,d1.w),d4    ; legge l'ottante
  494.     swap    d2            ; valore BLTBMOD in word alta
  495.     move.w    d0,d2            ; word bassa D2=2*DiffX-DiffY
  496.     sub.w    d3,d2            ; word bassa D2=2*DiffX-2*DiffY
  497.     moveq    #6,d1            ; valore di shift e di test per
  498.                     ; la wait blitter 
  499.  
  500.     lsl.w    d1,d3        ; calcola il valore di BLTSIZE
  501.     add.w    #$42,d3
  502.  
  503.     lea    $52(a5),a1    ; A1 = indirizzo BLTAPTL
  504.                 ; scrive alcuni registri
  505.                 ; consecutivamente con delle 
  506.                 ; MOVE #XX,(Ax)+
  507.  
  508.     btst    d1,2(a5)    ; aspetta il blitter
  509. .wb:
  510.     btst    d1,2(a5)
  511.     bne.s    .wb
  512.  
  513.     IFNE    DL_Fill        ; questa istruzione viene assemblata
  514.                 ; solo se DL_Fill=1
  515.     bchg    d5,(a0)        ; Inverte il primo bit della linea
  516.     ENDC
  517.  
  518.     move.l    d4,$40(a5)    ; BLTCON0/1
  519.     move.l    d2,$62(a5)    ; BLTBMOD e BLTAMOD
  520.     move.l    a0,$48(a5)    ; BLTCPT
  521.     move.w    d0,(a1)+    ; BLTAPTL
  522.     move.l    a0,(a1)+    ; BLTDPT
  523.     move.w    d3,(a1)        ; BLTSIZE
  524. .end:
  525.     rts
  526.  
  527. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  528. ; se vogliamo eseguire linee per il fill, il codice ottante setta ad 1 il bit
  529. ; SING attraverso la costante SML
  530.  
  531.     IFNE    DL_Fill
  532. SML        =     2
  533.     ELSE
  534. SML        =    0
  535.     ENDC
  536.  
  537. ; tabella ottanti
  538.  
  539. Oktants:
  540.     dc.b    SML+1,SML+1+$40
  541.     dc.b    SML+17,SML+17+$40
  542.     dc.b    SML+9,SML+9+$40
  543.     dc.b    SML+21,SML+21+$40
  544.  
  545. ***************************************
  546. ***    VBLANK IRQ HANDLER   ($6c)  ***
  547. ***************************************
  548.  
  549.     cnop    0,4
  550.  
  551. NewIRQ:
  552.     btst.b    #5,$dff01f    ; INTREQR - il bit 5, VERTB, e' azzerato?
  553.     beq.w    NOIRQ_6c    ; Se si, non e' un "vero" int VERTB!
  554.     movem.l    d0-d7/a0-a6,-(sp)
  555.  
  556. ; Ora gestiamo il punto generatore che ondeggia nello schermo.
  557. ; Prima deletiamo il vecchio
  558.  
  559.     moveq    #0,d0
  560.     moveq    #0,d1
  561.     move.w    GunX(PC),d0
  562.     move.w    GunY(PC),d1
  563.     move.w    d0,OldGunX
  564.     move.w    d1,OldGunY
  565.     move.l    SavedSCR(PC),a0    ; plane destinazione
  566.  
  567. ;    a0 = Indirizzo bitplane destinazione
  568. ;    d0.w = Coordinata X (0-319)
  569. ;    d1.w = Coordinata Y (0-255)
  570.  
  571.     move.w    d0,d2        ; Copia la coordinata X in d2
  572.     lsr.w    #3,d0        ; Intanto trova l'offset orizzontale,
  573.     mulu.w    #40,d1        ; offset y (Y* larghschermo)
  574.     add.w    d1,d0        ; Somma lo scostam. vert. a quello orizzontale
  575.     and.w    #%111,d2    ; Seleziona solo i primi 3 bit di X, ossia
  576.     not.w    d2        ; opportunamente nottato
  577.     bclr.b    d2,(a0,d0.w)    ; Azzera il bit d2 all'ofsset giusto
  578.  
  579. ; Ora stabiliamo la nuova posizione: leggiamo i valori di ADD
  580.  
  581.     lea    SinPX0(PC),a0    ;Moto Armonico {
  582.     move.w    (a0),d0        ; x0
  583.     move.w    2(a0),d2    ; x1
  584.     move.w    4(a0),d1    ; y0
  585.     move.w    6(a0),d3    ; y1
  586.  
  587. ; addiamoli
  588.  
  589.     add.w    #10,d0        ; Inc MA pts (EVEN values)
  590.     addq.w    #6,d2
  591.     addq.w    #8,d1
  592.     add.w    #14,d3
  593.  
  594.     move.w    #2047,d4    ; max value
  595.     and.w    d4,d0
  596.     and.w    d4,d2
  597.     and.w    d4,d1
  598.     and.w    d4,d3
  599.  
  600. ; e salviamoli
  601.  
  602.     move.w    d0,(a0)        ; x0
  603.     move.w    d2,2(a0)    ; x1
  604.     move.w    d1,4(a0)    ; y0
  605.     move.w    d3,6(a0)    ; y1
  606.  
  607. ; Ora prendiamo i valori dalla sintab e li salviamo per i prossimo step
  608.  
  609.     lea    SinTab(pc),a1
  610.     move.w    (a1,d0.w),d0
  611.     move.w    (a1,d2.w),d2
  612.     move.w    (a1,d1.w),d1
  613.     move.w    (a1,d3.w),d3
  614.  
  615.     add.w    d2,d0    ; X
  616.     add.w    d3,d1    ; Y
  617.     asr.w    #4,d0    ; /16
  618.     asr.w    #4,d1    ; /16
  619.     add.w    #160,d0    ; centraX
  620.     add.w    #128,d1    ; centraY
  621.     move.w    d0,GunX
  622.     move.w    d1,GunY
  623.  
  624. ; plottiamo il nuovo punto
  625.  
  626.     move.l    CurScreen(PC),a0    ; plane destinazione
  627.     move.l    a0,SavedSCR
  628.  
  629. ;    a0 = Indirizzo bitplane destinazione
  630. ;    d0.w = Coordinata X (0-319)
  631. ;    d1.w = Coordinata Y (0-255)
  632.  
  633.     move.w    d0,d2        ; Copia la coordinata X in d2
  634.     lsr.w    #3,d0        ; Intanto trova l'offset orizzontale,
  635.     mulu.w    #40,d1        ; offset y (Y* larghschermo)
  636.     add.w    d1,d0        ; Somma lo scostam. vert. a quello orizzontale
  637.     and.w    #%111,d2    ; Seleziona solo i primi 3 bit di X, ossia
  638.     not.w    d2        ; opportunamente nottato
  639.     bset.b    d2,(a0,d0.w)    ; Setta il bit d2 all'ofsset giusto
  640.  
  641.     movem.l    (sp)+,d0-d7/a0-a6
  642. NOIRQ_6c:
  643.     move.w    #%1110000,$dff09c ; INTREQ - cancello rich. BLIT,VERTB e COPER
  644.     rte    ; uscita dall'int COPER/BLIT/VERTB
  645.  
  646. SavedSCR:
  647.     dc.l    0
  648.  
  649.     cnop    0,4
  650. SinPX0:    dc.w    1000    ;MotArm X0
  651. SinPX1:    dc.w    1800    ;MotArm X1
  652. SinPY0:    dc.w    900    ;MotArm Y0
  653. SinPY1:    dc.w    0    ;MotArm Y1
  654.  
  655.     cnop    0,4
  656. GunX:    dc.w    0    ;Gun X pos
  657.  
  658.     cnop    0,4
  659. GunY:    dc.w    0    ;Gun Y pos
  660.  
  661.     cnop    0,4
  662. OldGunX:dc.w    0    ;Gun X pos old
  663.  
  664.     cnop    0,4
  665. OldGunY:dc.w    0    ;Gun Y pos old
  666.  
  667.     cnop    0,4
  668. TxtPnt:    dc.l    Text    ;Pointer to current character in the text
  669.  
  670.     cnop    0,4
  671. CurX:    dc.w    0    ;Cursor X pos
  672.  
  673.     cnop    0,4
  674. CurY:    dc.w    0    ;Cursor Y pos
  675.  
  676.     cnop    0,4
  677. StrVal:    dc.w    0    ;Stretch value (0 = 1:1)
  678.  
  679.     cnop    0,4
  680. AtLins:dc.w    0    ;Number of lines activated
  681.  
  682.     cnop    0,4
  683. LastN:    dc.w    0    ;Last lines to draw (used at end of page)
  684.  
  685.     cnop    0,4
  686. MenoUno:dc.w    -1    ;Fake location for startup
  687.  
  688.     cnop    0,4
  689. FrameN:    dc.b    0    ;Frame number counter (compare with FRAMES)
  690.  
  691.     cnop    0,4
  692. SwapFlag: dc.b    0    ;Boolean flag for SwapScreen control
  693.  
  694.     cnop    0,4
  695. ACapo:    dc.b    0    ;Flag for CR handling
  696.  
  697.     cnop    0,4
  698.  
  699. CurScreen:    dc.l    plane1
  700. SwapScreen:    dc.l    plane1
  701. ;---------------------------------------
  702.  
  703. *****************************************************************************
  704.  
  705.     cnop    0,4
  706. SinTab:
  707.     dc.w    0,6,13,$13,$19,$1F,$26,$2C,$32,$39,$3F,$45,$4B
  708.     dc.w    $52,$58,$5E,$65,$6B,$71,$77,$7E,$84,$8A,$90,$97
  709.     dc.w    $9D,$A3,$A9,$AF,$B6,$BC,$C2,$C8,$CE,$D4,$DB,$E1
  710.     dc.w    $E7,$ED,$F3,$F9,$FF,$105,$10B,$112,$118,$11E,$124
  711.     dc.w    $12A,$130,$136,$13C,$142,$148,$14E,$154,$15A,$15F
  712.     dc.w    $165,$16B,$171,$177,$17D,$183,$188,$18E,$194,$19A
  713.     dc.w    $1A0,$1A5,$1AB,$1B1,$1B7,$1BC,$1C2,$1C7,$1CD,$1D3
  714.     dc.w    $1D8,$1DE,$1E3,$1E9,$1EF,$1F4,$1F9,$1FF,$204,$20A
  715.     dc.w    $20F,$215,$21A,$21F,$225,$22A,$22F,$235,$23A,$23F
  716.     dc.w    $244,$249,$24E,$254,$259,$25E,$263,$268,$26D,$272
  717.     dc.w    $277,$27C,$281,$286,$28B,$28F,$294,$299,$29E,$2A3
  718.     dc.w    $2A7,$2AC,$2B1,$2B5,$2BA,$2BE,$2C3,$2C8,$2CC,$2D1
  719.     dc.w    $2D5,$2D9,$2DE,$2E2,$2E7,$2EB,$2EF,$2F3,$2F8,$2FC
  720.     dc.w    $300,$304,$308,$30C,$310,$315,$319,$31C,$320,$324
  721.     dc.w    $328,$32C,$330,$334,$337,$33B,$33F,$343,$346,$34A
  722.     dc.w    $34D,$351,$354,$358,$35B,$35F,$362,$365,$369,$36C
  723.     dc.w    $36F,$372,$376,$379,$37C,$37F,$382,$385,$388,$38B
  724.     dc.w    $38E,$391,$394,$396,$399,$39C,$39F,$3A1,$3A4,$3A6
  725.     dc.w    $3A9,$3AB,$3AE,$3B0,$3B3,$3B5,$3B8,$3BA,$3BC,$3BE
  726.     dc.w    $3C1,$3C3,$3C5,$3C7,$3C9,$3CB,$3CD,$3CF,$3D1,$3D3
  727.     dc.w    $3D5,$3D6,$3D8,$3DA,$3DB,$3DD,$3DF,$3E0,$3E2,$3E3
  728.     dc.w    $3E5,$3E6,$3E8,$3E9,$3EA,$3EC,$3ED,$3EE,$3EF,$3F0
  729.     dc.w    $3F1,$3F2,$3F3,$3F4,$3F5,$3F6,$3F7,$3F8,$3F9,$3F9
  730.     dc.w    $3FA,$3FB,$3FB,$3FC,$3FC,$3FD,$3FD,$3FE,$3FE,$3FF
  731.     dc.w    $3FF,$3FF,$3FF,$400,$400,$400,$400,$400,$400,$400
  732.     dc.w    $400,$400,$400,$3FF,$3FF,$3FF,$3FF,$3FE,$3FE,$3FD
  733.     dc.w    $3FD,$3FD,$3FC,$3FB,$3FB,$3FA,$3F9,$3F9,$3F8,$3F7
  734.     dc.w    $3F6,$3F5,$3F4,$3F4,$3F3,$3F1,$3F0,$3EF,$3EE,$3ED
  735.     dc.w    $3EC,$3EA,$3E9,$3E8,$3E6,$3E5,$3E4,$3E2,$3E1,$3DF
  736.     dc.w    $3DD,$3DC,$3DA,$3D8,$3D7,$3D5,$3D3,$3D1,$3CF,$3CD
  737.     dc.w    $3CB,$3C9,$3C7,$3C5,$3C3,$3C1,$3BF,$3BC,$3BA,$3B8
  738.     dc.w    $3B6,$3B3,$3B1,$3AE,$3AC,$3A9,$3A7,$3A4,$3A2,$39F
  739.     dc.w    $39C,$399,$397,$394,$391,$38E,$38B,$388,$385,$382
  740.     dc.w    $37F,$37C,$379,$376,$373,$370,$36C,$369,$366,$363
  741.     dc.w    $35F,$35C,$358,$355,$351,$34E,$34A,$347,$343,$33F
  742.     dc.w    $33C,$338,$334,$330,$32D,$329,$325,$321,$31D,$319
  743.     dc.w    $315,$311,$30D,$309,$305,$301,$2FD,$2F8,$2F4,$2F0
  744.     dc.w    $2EC,$2E7,$2E3,$2DE,$2DA,$2D6,$2D1,$2CD,$2C8,$2C4
  745.     dc.w    $2BF,$2BB,$2B6,$2B1,$2AD,$2A8,$2A3,$29E,$29A,$295
  746.     dc.w    $290,$28B,$286,$281,$27D,$278,$273,$26E,$269,$264
  747.     dc.w    $25F,$259,$254,$24F,$24A,$245,$240,$23A,$235,$230
  748.     dc.w    $22B,$225,$220,$21B,$215,$210,$20B,$205,$200,$1FA
  749.     dc.w    $1F5,$1EF,$1EA,$1E4,$1DF,$1D9,$1D4,$1CE,$1C8,$1C3
  750.     dc.w    $1BD,$1B7,$1B2,$1AC,$1A6,$1A0,$19B,$195,$18F,$189
  751.     dc.w    $184,$17E,$178,$172,$16C,$166,$160,$15A,$154,$14F
  752.     dc.w    $149,$143,$13D,$137,$131,$12B,$125,$11F,$118,$112
  753.     dc.w    $10C,$106,$100,$FA,$F4,$EE,$E8,$E2,$DB,$D5,$CF
  754.     dc.w    $C9,$C3,$BD,$B6,$B0,$AA,$A4,$9E,$97,$91,$8B,$85
  755.     dc.w    $7E,$78,$72,$6C,$65,$5F,$59,$53,$4C,$46,$40,$3A
  756.     dc.w    $33,$2D,$27,$20,$1A,$14,13,7,1,$FFFB,$FFF4,$FFEE
  757.     dc.w    $FFE8,$FFE1,$FFDB,$FFD5,$FFCF,$FFC8,$FFC2,$FFBC
  758.     dc.w    $FFB5,$FFAF,$FFA9,$FFA3,$FF9C,$FF96,$FF90,$FF8A
  759.     dc.w    $FF83,$FF7D,$FF77,$FF71,$FF6A,$FF64,$FF5E,$FF58
  760.     dc.w    $FF52,$FF4B,$FF45,$FF3F,$FF39,$FF33,$FF2C,$FF26
  761.     dc.w    $FF20,$FF1A,$FF14,$FF0E,$FF08,$FF02,$FEFB,$FEF5
  762.     dc.w    $FEEF,$FEE9,$FEE3,$FEDD,$FED7,$FED1,$FECB,$FEC5
  763.     dc.w    $FEBF,$FEB9,$FEB3,$FEAD,$FEA7,$FEA1,$FE9B,$FE96
  764.     dc.w    $FE90,$FE8A,$FE84,$FE7E,$FE78,$FE73,$FE6D,$FE67
  765.     dc.w    $FE61,$FE5B,$FE56,$FE50,$FE4A,$FE45,$FE3F,$FE39
  766.     dc.w    $FE34,$FE2E,$FE28,$FE23,$FE1D,$FE18,$FE12,$FE0D
  767.     dc.w    $FE07,$FE02,$FDFC,$FDF7,$FDF2,$FDEC,$FDE7,$FDE1
  768.     dc.w    $FDDC,$FDD7,$FDD2,$FDCC,$FDC7,$FDC2,$FDBD,$FDB7
  769.     dc.w    $FDB2,$FDAD,$FDA8,$FDA3,$FD9E,$FD99,$FD94,$FD8F
  770.     dc.w    $FD8A,$FD85,$FD80,$FD7B,$FD76,$FD71,$FD6C,$FD68
  771.     dc.w    $FD63,$FD5E,$FD59,$FD55,$FD50,$FD4B,$FD47,$FD42
  772.     dc.w    $FD3E,$FD39,$FD35,$FD30,$FD2C,$FD27,$FD23,$FD1E
  773.     dc.w    $FD1A,$FD16,$FD11,$FD0D,$FD09,$FD05,$FD01,$FCFC
  774.     dc.w    $FCF8,$FCF4,$FCF0,$FCEC,$FCE8,$FCE4,$FCE0,$FCDC
  775.     dc.w    $FCD8,$FCD4,$FCD1,$FCCD,$FCC9,$FCC5,$FCC2,$FCBE
  776.     dc.w    $FCBA,$FCB7,$FCB3,$FCB0,$FCAC,$FCA9,$FCA5,$FCA2
  777.     dc.w    $FC9E,$FC9B,$FC98,$FC94,$FC91,$FC8E,$FC8B,$FC88
  778.     dc.w    $FC85,$FC82,$FC7E,$FC7B,$FC78,$FC76,$FC73,$FC70
  779.     dc.w    $FC6D,$FC6A,$FC67,$FC65,$FC62,$FC5F,$FC5D,$FC5A
  780.     dc.w    $FC57,$FC55,$FC52,$FC50,$FC4E,$FC4B,$FC49,$FC46
  781.     dc.w    $FC44,$FC42,$FC40,$FC3E,$FC3B,$FC39,$FC37,$FC35
  782.     dc.w    $FC33,$FC31,$FC2F,$FC2E,$FC2C,$FC2A,$FC28,$FC26
  783.     dc.w    $FC25,$FC23,$FC21,$FC20,$FC1E,$FC1D,$FC1B,$FC1A
  784.     dc.w    $FC19,$FC17,$FC16,$FC15,$FC13,$FC12,$FC11,$FC10
  785.     dc.w    $FC0F,$FC0E,$FC0D,$FC0C,$FC0B,$FC0A,$FC09,$FC08
  786.     dc.w    $FC08,$FC07,$FC06,$FC05,$FC05,$FC04,$FC04,$FC03
  787.     dc.w    $FC03,$FC02,$FC02,$FC01,$FC01,$FC01,$FC01,$FC00
  788.     dc.w    $FC00,$FC00,$FC00,$FC00,$FC00,$FC00,$FC00,$FC00
  789.     dc.w    $FC00,$FC01,$FC01,$FC01,$FC01,$FC02,$FC02,$FC02
  790.     dc.w    $FC03,$FC03,$FC04,$FC05,$FC05,$FC06,$FC06,$FC07
  791.     dc.w    $FC08,$FC09,$FC0A,$FC0A,$FC0B,$FC0C,$FC0D,$FC0E
  792.     dc.w    $FC0F,$FC11,$FC12,$FC13,$FC14,$FC15,$FC17,$FC18
  793.     dc.w    $FC19,$FC1B,$FC1C,$FC1E,$FC1F,$FC21,$FC22,$FC24
  794.     dc.w    $FC26,$FC27,$FC29,$FC2B,$FC2D,$FC2F,$FC31,$FC32
  795.     dc.w    $FC34,$FC36,$FC38,$FC3B,$FC3D,$FC3F,$FC41,$FC43
  796.     dc.w    $FC45,$FC48,$FC4A,$FC4C,$FC4F,$FC51,$FC54,$FC56
  797.     dc.w    $FC59,$FC5B,$FC5E,$FC61,$FC63,$FC66,$FC69,$FC6C
  798.     dc.w    $FC6F,$FC71,$FC74,$FC77,$FC7A,$FC7D,$FC80,$FC83
  799.     dc.w    $FC86,$FC89,$FC8D,$FC90,$FC93,$FC96,$FC9A,$FC9D
  800.     dc.w    $FCA0,$FCA4,$FCA7,$FCAB,$FCAE,$FCB2,$FCB5,$FCB9
  801.     dc.w    $FCBC,$FCC0,$FCC4,$FCC7,$FCCB,$FCCF,$FCD3,$FCD7
  802.     dc.w    $FCDB,$FCDE,$FCE2,$FCE6,$FCEA,$FCEE,$FCF2,$FCF6
  803.     dc.w    $FCFB,$FCFF,$FD03,$FD07,$FD0B,$FD10,$FD14,$FD18
  804.     dc.w    $FD1D,$FD21,$FD25,$FD2A,$FD2E,$FD33,$FD37,$FD3C
  805.     dc.w    $FD40,$FD45,$FD49,$FD4E,$FD53,$FD57,$FD5C,$FD61
  806.     dc.w    $FD66,$FD6A,$FD6F,$FD74,$FD79,$FD7E,$FD83,$FD88
  807.     dc.w    $FD8D,$FD92,$FD97,$FD9C,$FDA1,$FDA6,$FDAB,$FDB0
  808.     dc.w    $FDB5,$FDBA,$FDC0,$FDC5,$FDCA,$FDCF,$FDD5,$FDDA
  809.     dc.w    $FDDF,$FDE4,$FDEA,$FDEF,$FDF5,$FDFA,$FDFF,$FE05
  810.     dc.w    $FE0A,$FE10,$FE15,$FE1B,$FE21,$FE26,$FE2C,$FE31
  811.     dc.w    $FE37,$FE3D,$FE42,$FE48,$FE4E,$FE53,$FE59,$FE5F
  812.     dc.w    $FE64,$FE6A,$FE70,$FE76,$FE7C,$FE81,$FE87,$FE8D
  813.     dc.w    $FE93,$FE99,$FE9F,$FEA5,$FEAB,$FEB1,$FEB7,$FEBD
  814.     dc.w    $FEC3,$FEC9,$FECF,$FED5,$FEDB,$FEE1,$FEE7,$FEED
  815.     dc.w    $FEF3,$FEF9,$FEFF,$FF05,$FF0B,$FF11,$FF17,$FF1E
  816.     dc.w    $FF24,$FF2A,$FF30,$FF36,$FF3C,$FF42,$FF49,$FF4F
  817.     dc.w    $FF55,$FF5B,$FF61,$FF68,$FF6E,$FF74,$FF7A,$FF81
  818.     dc.w    $FF87,$FF8D,$FF93,$FF9A,$FFA0,$FFA6,$FFAC,$FFB3
  819.     dc.w    $FFB9,$FFBF,$FFC6,$FFCC,$FFD2,$FFD8,$FFDF,$FFE5
  820.     dc.w    $FFEB,$FFF2,$FFF8,$FFFE,4
  821.  
  822.  
  823. CharsData:    ; Vector-Characters definitions (x0,y0,y1,y1, ... ,-1)
  824. Ch:
  825.     dc.w    -1
  826. ChEscl:
  827.     dc.w    3,0,4,0, 4,0,4,3, 4,3,3,3, 3,3,3,0
  828.     dc.w    3,5,4,5, 4,5,4,6, 4,6,3,6, 3,6,3,5, -1
  829. ChVirgtt:
  830.     dc.w    2,0,2,1, 4,0,4,1, -1
  831. ChNumb:
  832.     dc.w    2,0,2,6, 4,0,4,6, 0,2,6,2, 0,4,6,4, -1
  833. ChString:
  834.     dc.w    -1
  835. ChPercent:
  836.     dc.w    0,6,6,0, 0,0,1,0, 1,0,1,1, 1,1,0,1, 0,1,0,0, 6,6,5,6
  837.     dc.w    5,6,5,5, 5,5,6,5, 6,5,6,6, -1
  838. ChAnd:
  839.     dc.w    -1
  840. ChApice:
  841.     dc.w    3,0,4,0, 4,0,4,1, 4,1,3,2, -1
  842. ChAperta:
  843.     dc.w    4,0,3,0, 3,0,2,1, 2,1,2,5, 2,5,3,6, 3,6,5,6, -1
  844. ChChiusa:
  845.     dc.w    2,0,3,0, 3,0,4,1, 4,1,4,5, 4,5,3,6, 3,6,2,6, -1
  846. ChPer:
  847.     dc.w    0,3,6,3, 3,0,3,6, 1,1,5,5, 1,5,5,1, -1
  848. ChPiu:
  849.     dc.w    3,1,3,5, 0,3,5,3, -1
  850. ChVirgola:
  851.     dc.w    3,5,4,5, 4,5,4,6, 4,6,3,7, -1
  852. ChMeno:
  853.     dc.w    0,3,5,3, -1
  854. ChPunto:
  855.     dc.w    3,5,4,5, 4,5,4,6, 4,6,3,6, 3,6,3,5, -1
  856. ChSlash:
  857.     dc.w    0,6,6,0, -1
  858. Ch0:
  859.     dc.w    0,1,1,0, 1,0,5,0, 5,0,6,1, 6,1,6,5, 6,5,5,6, 5,6,1,6
  860.     dc.w    1,6,0,5, 0,5,0,1, 3,2,3,4, -1
  861. Ch1:
  862.     dc.w    3,0,3,6, 1,6,5,6, 1,2,3,0, -1
  863. Ch2:
  864.     dc.w    6,6,0,6, 0,6,0,4, 0,4,1,3, 1,3,5,3, 5,3,6,2, 6,2,6,1
  865.     dc.w    6,1,5,0, 5,0,1,0, 1,0,0,1, -1
  866. Ch3:
  867.     dc.w    0,5,1,6, 1,6,5,6, 5,6,6,5, 6,5,6,4, 6,4,5,3, 5,3,3,3
  868.     dc.w    5,3,6,2, 6,2,6,1, 6,1,5,0, 5,0,1,0, 1,0,0,1, -1
  869. Ch4:
  870.     dc.w    5,0,5,6, 6,4,0,4, 0,4,5,0, -1
  871. Ch5:
  872.     dc.w    6,0,0,0, 0,0,0,2, 0,2,5,2, 5,2,6,3, 6,3,6,5, 0,4,0,5
  873.     dc.w    0,5,1,6, 1,6,5,6, 5,6,6,5, -1
  874. Ch6:
  875.     dc.w    6,1,5,0, 5,0,1,0, 1,0,0,1, 0,1,0,5, 0,5,1,6, 1,6,5,6
  876.     dc.w    5,6,6,5, 6,5,6,4, 6,4,5,3, 5,3,0,3, -1
  877. Ch7:
  878.     dc.w    0,0,6,0, 6,0,6,1, 6,1,2,5, 2,5,6,5, -1
  879. Ch8:
  880.     dc.w    1,0,5,0, 5,0,6,1, 6,1,6,2, 6,2,5,3, 5,3,6,4, 6,4,6,5
  881.     dc.w    6,5,5,6, 5,6,1,6, 1,6,0,5, 0,5,0,4, 0,4,1,3, 1,3,0,2
  882.     dc.w    0,2,0,1, 0,1,1,0, 1,3,5,3, -1
  883. Ch9:
  884.     dc.w    0,5,1,6, 1,6,5,6, 5,6,6,5, 6,5,6,1, 6,1,5,0, 5,0,1,0
  885.     dc.w    1,0,0,1, 0,1,0,2, 0,2,1,3, 1,3,6,3, -1
  886. ChDueP:
  887.     dc.w    3,5,4,5, 4,5,4,6, 4,6,4,6, 3,6,3,5
  888.     dc.w    3,0,3,1, 3,1,4,1, 4,1,4,0, 4,0,3,0, -1
  889. ChPuntEV:
  890.     dc.w    3,5,4,5, 4,5,4,6, 4,6,3,7
  891.     dc.w    3,1,3,2, 3,2,4,2, 4,2,4,1, 4,1,3,1, -1
  892. ChMin:
  893.     dc.w    4,1,2,3, 2,3,4,5, -1
  894. ChUgual:
  895.     dc.w    1,2,5,2, 1,4,5,4, -1
  896. ChMag:
  897.     dc.w    2,1,4,3, 4,3,2,5, -1
  898. ChInterr:
  899.     dc.w    -1
  900. ChAt:
  901.     dc.w    -1
  902. ChA:
  903.     dc.w    3,0,0,3, 0,3,0,6, 3,0,6,3, 6,3,6,6, 0,4,6,4, -1
  904. ChB:
  905.     dc.w    0,0,0,6, 0,0,5,0, 5,0,6,1, 6,1,6,2, 6,2,5,3, 5,3,6,4, 6,4,6,5
  906.     dc.w    6,5,5,6, 5,6,0,6, 0,3,5,3, -1
  907. ChC:
  908.     dc.w    6,1,5,0, 5,0,1,0, 1,0,0,1, 0,1,0,5, 0,5,1,6, 1,6,5,6, 5,6,6,5, -1
  909. ChD:
  910.     dc.w    0,0,0,6, 0,6,4,6, 4,6,6,4, 6,4,6,2, 6,2,4,0, 4,0,0,0, -1
  911. ChE:
  912.     dc.w    0,0,0,6, 0,0,6,0, 0,3,5,3, 0,6,6,6, -1
  913. ChF:
  914.     dc.w    0,0,0,6, 0,0,6,0, 0,3,5,3, -1
  915. ChG:
  916.     dc.w    6,1,5,0, 5,0,1,0, 1,0,0,1, 0,1,0,5, 0,5,1,6, 1,6,5,6, 5,6,6,5
  917.     dc.w    6,5,6,3, 6,3,4,3, -1
  918. ChH:
  919.     dc.w    0,0,0,6, 0,3,6,3, 6,0,6,6, -1
  920. ChI:
  921.     dc.w    1,0,5,0, 1,6,5,6, 3,0,3,6, -1
  922. ChJ:
  923.     dc.w    0,5,1,6, 1,6,5,6, 5,6,6,5, 6,5,6,0, 6,0,4,0, -1
  924. ChK:
  925.     dc.w    0,0,0,6, 0,3,3,3, 3,3,6,0, 3,3,6,6, -1
  926. ChL:
  927.     dc.w    0,0,0,6, 0,6,6,6, -1
  928. ChM:
  929.     dc.w    0,0,0,6, 0,0,3,3, 3,3,6,0, 6,0,6,6, -1
  930. ChN:
  931.     dc.w    0,0,0,6, 0,0,6,6, 6,6,6,0, -1
  932. ChO:
  933.     dc.w    6,1,5,0, 5,0,1,0, 1,0,0,1, 0,1,0,5, 0,5,1,6, 1,6,5,6, 5,6,6,5
  934.     dc.w    6,5,6,1, -1
  935. ChP:
  936.     dc.w    0,0,0,6, 0,0,5,0, 5,0,6,1, 6,1,6,2, 6,2,5,3, 5,3,0,3, -1
  937. ChQ:
  938.     dc.w    6,1,5,0, 5,0,1,0, 1,0,0,1, 0,1,0,5, 0,5,1,6, 1,6,5,6, 5,6,6,5
  939.     dc.w    6,5,6,1, 5,5,7,7,  -1
  940. ChR:
  941.     dc.w    0,0,0,6, 0,0,5,0, 5,0,6,1, 6,1,6,2, 6,2,5,3, 5,3,0,3
  942.     dc.w    4,3,6,6, -1
  943. ChS:
  944.     dc.w    5,0,1,0, 1,0,0,1, 0,1,0,2, 0,2,1,3, 1,3,5,3, 5,3,6,4
  945.     dc.w    6,4,6,5, 6,5,5,6, 5,6,0,6, -1
  946. ChT:
  947.     dc.w    0,0,6,0, 3,0,3,6, -1
  948. ChU:
  949.     dc.w    0,0,0,5, 0,5,1,6, 1,6,5,6, 5,6,6,5, 6,5,6,0, -1
  950. ChV:
  951.     dc.w    0,0,3,6, 3,6,6,0, -1
  952. ChW:
  953.     dc.w    0,0,0,5, 0,5,1,6, 1,6,3,4, 3,4,5,6, 5,6,6,5, 6,5,6,0, -1
  954. ChX:
  955.     dc.w    6,0,0,6, 0,0,6,6, -1
  956. ChY:
  957.     dc.w    0,0,3,3, 3,3,3,6, 3,3,6,0, -1
  958. ChZ:
  959.     dc.w    6,6,0,6, 0,6,6,0, 6,0,0,0, -1
  960. ChQAperta:
  961.     dc.w    4,0,2,0, 2,0,2,6, 2,6,4,6, -1
  962. ChBSlash:
  963.     dc.w    0,0,6,6, -1
  964. ChQChiusa:
  965.     dc.w    4,0,2,0, 4,0,4,6, 2,6,4,6, -1
  966.  
  967.  
  968.     cnop    0,4
  969.  
  970. CharsOffs:
  971.     dc.l    Ch
  972.     dc.l    ChEscl
  973.     dc.l    ChVirgtt
  974.     dc.l    ChNumb
  975.     dc.l    ChString
  976.     dc.l    ChPercent
  977.     dc.l    ChAnd
  978.     dc.l    ChApice
  979.     dc.l    ChAperta
  980.     dc.l    ChChiusa
  981.     dc.l    ChPer
  982.     dc.l    ChPiu
  983.     dc.l    ChVirgola
  984.     dc.l    ChMeno
  985.     dc.l    ChPunto
  986.     dc.l    ChSlash
  987.     dc.l    Ch0
  988.     dc.l    Ch1
  989.     dc.l    Ch2
  990.     dc.l    Ch3
  991.     dc.l    Ch4
  992.     dc.l    Ch5
  993.     dc.l    Ch6
  994.     dc.l    Ch7
  995.     dc.l    Ch8
  996.     dc.l    Ch9
  997.     dc.l    ChDueP
  998.     dc.l    ChPuntEV
  999.     dc.l    ChMin
  1000.     dc.l    ChUgual
  1001.     dc.l    ChMag
  1002.     dc.l    ChInterr
  1003.     dc.l    ChAt
  1004.     dc.l    ChA
  1005.     dc.l    ChB
  1006.     dc.l    ChC
  1007.     dc.l    ChD
  1008.     dc.l    ChE
  1009.     dc.l    ChF
  1010.     dc.l    ChG
  1011.     dc.l    ChH
  1012.     dc.l    ChI
  1013.     dc.l    ChJ
  1014.     dc.l    ChK
  1015.     dc.l    ChL
  1016.     dc.l    ChM
  1017.     dc.l    ChN
  1018.     dc.l    ChO
  1019.     dc.l    ChP
  1020.     dc.l    ChQ
  1021.     dc.l    ChR
  1022.     dc.l    ChS
  1023.     dc.l    ChT
  1024.     dc.l    ChU
  1025.     dc.l    ChV
  1026.     dc.l    ChW
  1027.     dc.l    ChX
  1028.     dc.l    ChY
  1029.     dc.l    ChZ
  1030.     dc.l    ChQAperta
  1031.     dc.l    ChBSlash
  1032.     dc.l    ChQChiusa
  1033.  
  1034. ;------------------------------------------------------
  1035. ;    0    : End Of Page
  1036. ;    1 to 9    : stretchvals
  1037. ;    10    : CR
  1038. ;    11,x,y    : Set cursor x,y pos (pixels)
  1039.  
  1040. ;------------------------------------------------------
  1041.  
  1042. Text:
  1043.     dc.b    11,0,0
  1044.     dc.b    2," MOST ORIGINAL BBS",10
  1045.     dc.b    11,0,200,2,"5 - PUBLIC ENEMY",10
  1046.     DC.B    11,64,220,1,"[INDEPENDENT]",10
  1047.     dc.b    11,0,160,2,"4 - STRANGELAND",10
  1048.     DC.B    11,64,180,1,"(HERESY)",10
  1049.     dc.b    11,0,120,2,"3 - HEART OF NOWHERE",10
  1050.     DC.B    11,64,140,1,"(MOTION)",10
  1051.     dc.b    11,0,80,2,"2 - ASYLUM",10
  1052.     DC.B    11,64,100,1,"(COPYRIGHT DESTROYERS INC.)",10
  1053.     dc.b    11,0,40,2,"1 - INFINTE DREAMS",10
  1054.     DC.B    11,64,60,1,"(HALF-BRAINS TEAM) ",10
  1055.     dc.b    0
  1056.  
  1057. Text1:
  1058.     dc.b    11,0,0
  1059.     dc.b    3," BEST BBS",10
  1060.     dc.b    11,0,200,2,"5 - ASYLUM",10
  1061.     DC.B    11,64,220,1,"(COPYRIGHT DESTROYERS INC.)",10
  1062.     dc.b    11,0,160,2,"4 - TEMPLE OF GURUS",10
  1063.     DC.B    11,64,180,1,"(TECHNOBRAINS)",10
  1064.     dc.b    11,0,120,2,"3 - STRANGE LAND",10
  1065.     DC.B    11,64,140,1,"(HERESY)",10
  1066.     dc.b    11,0,80,2,"2 - TEMPLE OF DESTR.",10
  1067.     DC.B    11,64,100,1,"(DIVINA)",10
  1068.     dc.b    11,0,40,2,"1 - THE HOUSE",10
  1069.     DC.B    11,64,60,1,"(ITALIAN BAD BOYS) ",10
  1070.     dc.b    0
  1071.  
  1072.     dc.b    -1
  1073.  
  1074.  
  1075.     cnop    0,4
  1076.  
  1077. LinesData:    ; dc.w    X0,Y0,X1,Y1,dX0,dY0,dX1,dY1,sX0,sY0,sX1,sY1
  1078.         dcb.w    12*(FRAMES+1),-1
  1079.  
  1080. *****************************************************************************
  1081.  
  1082.     Section    miacopper,data_C
  1083.  
  1084. NewCList:
  1085.     dc.w    $8e,$2c81    ; DiwStart
  1086.     dc.w    $90,$2cc1    ; DiwStop
  1087.     dc.w    $92,$38        ; DdfStart
  1088.     dc.w    $94,$d0        ; DdfStop
  1089.     dc.w    $102,0        ; BplCon1
  1090.     dc.w    $104,$24    ; BplCon2
  1091.     dc.w    $108,0        ; Bpl1Mod
  1092.     dc.w    $10a,0        ; Bpl2Mod
  1093.  
  1094.     dc.w    $100,$2200    ; bplcon0 - 5 BitPlanes
  1095.  
  1096. bplpointers:
  1097.     dc.w    $e0,0,$e2,0
  1098.     dc.w    $e4,0,$e6,0
  1099.  
  1100. ; Set color registers:
  1101.  
  1102.     dc.w    $0180,$0000    ; color0 - nero (sfondo)
  1103.     dc.w    $0182,$0ff0    ; color1 - giallo (cursore e gunwriter)
  1104.     dc.w    $0184,$0fff    ; color2 - bianco (lettere fermate)
  1105.     dc.w    $0186,$0ff0    ; color3 - giallo (gunwriter+lettere)
  1106.  
  1107.     dc.w    $ffff,$fffe        ;end of CList
  1108.  
  1109. *****************************************************************************
  1110.  
  1111.     section    straplane,bss_C
  1112.  
  1113. plane1:
  1114.     ds.b    40*256
  1115. plane2:
  1116.     ds.b    40*256
  1117. plane5:
  1118.     ds.b    40*256
  1119.  
  1120.  
  1121.     end
  1122.  
  1123.