Skip to content

Instantly share code, notes, and snippets.

@jammin77
Created October 19, 2014 09:31
Show Gist options
  • Save jammin77/20bf484f3beb09448d22 to your computer and use it in GitHub Desktop.
Save jammin77/20bf484f3beb09448d22 to your computer and use it in GitHub Desktop.
* ASM-ONE FORMAT
section aaa,code_c
AbsExecBase: equ $4
_LVOLoadView: equ -$DE
_LVOCloseLibrary: equ -$19E
_LVOOpenLibrary: equ -$228
_LVOWaitTOF: equ -$10E
_LVOCacheControl: equ -$288
_LVOSupervisor: equ -$1E
AttnFlags: equ $128
tv_UserIntVects: equ $100
tv_Lev3IntVect: equ $6C
intreq: equ $9C
cop1lch: equ $80
dmacon: equ $96
intenar: equ $1C
dmaconr: equ $2
copjmp1: equ $88
intena: equ $9A
spr0: equ $140
sd_dataa: equ $4
color0 equ $180
bltafwm: equ $44
ExecBase: equ $0
LIB_VERSION: equ $14
*-------------- OS Shutdown..
ProgStart: move.l (AbsExecBase).w,a6
moveq #0,d0
lea GfxName(pc),a1
jsr _LVOOpenLibrary(a6) ;open gfx library
lea GfxBase(pc),a0
move.l d0,(a0) ;save base
beq GfxError
*-------------- Do "LoadView" to Reset all Copperlist regs to 0..
move.l a6,a5
move.l d0,a6
lea _OurView(pc),a0
move.l 34(a6),(a0)
sub.l a1,a1
jsr _LVOLoadView(a6) ;get system copper
jsr _LVOWaitTOF(a6) ;(clears AGA Regs)
jsr _LVOWaitTOF(a6) ;wait for syslace
move.l a6,a1
move.l a5,a6
jsr _LVOCloseLibrary(a6) ;cloe gfxbase
*-------------- Determine what CPU we got...
move.l (AbsExecBase).w,a6
jsr -132(a6) ;forbid()
*-------------- Preserve OS DMA/Intena then turn it off
KillDMA: lea $DFF000,a6
move.w dmaconr(a6),OldDMA
move.w intenar(a6),OldINT
move.l #$7FFF7FFF,intena(a6)
move.w #$7FFF,dmacon(a6)
*-------------- setup screen
move.l #screen2,d0
lea planes,a0
move.w d0,6(a0)
swap d0
move.w d0,2(a0)
swap d0
move.l #copper,d0
lea adress,a0
move.w d0,6(a0)
swap d0
move.w d0,2(a0)
move.w #%1000001111000000,$dff096
move.w #%1100000000110000,$dff09a
*-------------- turn on new copperlist
move.l #copper,$dff080
*-------------- Main vbl
loop cmp.b #255,$dff006
bne.s loop
bsr.w clear
bsr.w vector
bsr.w flip_screen
btst #6,$bfe001
bne.b loop
*-------------- restore os...
lea $dff000,a5
move.l #$7FFF7FFF,intena(a5) ;kill interrupts
move.w #$7FFF,dmacon(a5) ;and screen
move.w OldINT(pc),d0
bset #15,d0
move.w d0,intena(a5) ;restore intena
move.w OldDMA(pc),d0
bset #15,d0
move.w d0,dmacon(a5) ;restore dma
move.l 4.w,a6
jsr -138(a6) ;forbid()
move.l GfxBase(pc),a6
move.l _OurView(pc),a1
jsr _LVOLoadView(a6) ;free system copview
move.l $26(a6),cop1lch(a5) ;restore system copper
GfxError: moveq #0,d0
rts ;exit back to OS...
GfxName: dc.b 'graphics.library',0,0
GfxBase: dc.l 0
_OurView: dc.l 0
OldDMA: dc.w 0
OldINT: dc.w 0
OldLev3: dc.l 0
_VBR: dc.l 0
even
** FILLED VECTOR **************************************************************
vector bsr.w angles ; calculate new view angle
lea.l points(pc),a1 ; point on next plane data
lea.l sin_table,a2 ; point at sinus table
lea.l cos_table,a3 ; point at cosinus table
obloop cmpi.w #$ffff,(a1) ; no more lines in this plane?
beq.w vecout
move.l screen_adress(pc),a0 ; lets work on this frame
move.w (a1)+,d0 ; x-normal
move.w (a1)+,d1 ; y-normal
move.w (a1)+,d2 ; z-normal
bsr.w normal ; rotate plane's vector-normal.
move.w (a1)+,d3 ; get z-coord limit
cmp.w d3,d2 ; front- or backside of plane?
bgt.s plane ; if front, then draw plane
move.w (a1)+,d0
move.w (a1)+,d0
lsl.w #3,d0 ; *4 *2 = delta-adress in bytes
ext.l d0
add.l d0,a1 ; point p≈ ny plan
bra.b obloop
plane move.w (a1)+,d0 ; selected colour (bitplan)
move.w #10240,d1
mulu d0,d1
add.l d1,a0
bsr.w light ; lightsource this coming plane
move.w (a1)+,counter ; antal linier i plan
linier move.w (a1)+,d0 ; get line coordinates
move.w (a1)+,d1
move.w (a1)+,d2
sub.w xcenter(pc),d0 ; object with center in origo
sub.w ycenter(pc),d1
sub.w zcenter(pc),d2
bsr.b rotate ; rotate 3d point
add.w zcenter(pc),d2
bsr.w convert ; convert from 3d to 2d
add.w xcenter(pc),d0
add.w ycenter(pc),d1
bsr.w extrem ; note plane max and min
bsr.w line ; draw line from last point
sub.w #1,counter
tst.w counter ; plane finished?
bne.b linier ; if not: work on next line
bsr.w fill ; fill plane
bsr.w global ; note global extremes (clear)
move.w #256,ymin ; reset for next plane
clr.w ymax
move.w #320,xmin
clr.w xmax
bra.w obloop
vecout rts
** ROTATE 3D POINT ************************************************************
rotate move.w xvinkel(pc),d5 ; x angle
add.w d5,d5 ; x angle *2
move.w (a3,d5.w),d3 ; cos(xgrad)
muls d1,d3 ; y*cos(xgrad)
move.w (a2,d5.w),d4 ; sin(xgrad)
muls d2,d4 ; z*sin(xgrad)
sub.l d4,d3 ; y*cos(xgrad) - z*sin(xgrad)
add.l d3,d3
add.l d3,d3 ; 4*(y*cos(xgrad)-z*sin(xgrad))
move.l d3,y1 ; y-coordinate around x axis
move.w (a2,d5.w),d3 ; sin(xgrad)
muls d1,d3 ; y*sin(xgrad)
move.w (a3,d5.w),d4 ; cos(xgrad)
muls d2,d4 ; z*cos(xgrad)
add.l d4,d3 ; y*sin(xgrad) + z*cos(xgrad)
add.l d3,d3
add.l d3,d3 ; 4*(y*sin(xgrad)+z*cos(xgrad))
move.l d3,z1 ; z-coordinate around x axis
move.w yvinkel(pc),d6 ; y angle
add.w d6,d6 ; y angle *2
move.w (a3,d6.w),d3 ; cos(ygrad)
muls d0,d3 ; x*cos(ygrad)
move.w (a2,d6.w),d4 ; sin(ygrad)
muls z1(pc),d4 ; z*sin(ygrad)
sub.l d4,d3 ; x*cos(ygrad) - z*sin(ygrad)
add.l d3,d3
add.l d3,d3 ; 4*(x*cos(ygrad)-z*sin(ygrad))
move.l d3,x2 ; x-coordinate around y axis
move.w (a2,d6.w),d2 ; sin(ygrad)
muls d0,d2 ; x*sin(ygrad)
move.w (a3,d6.w),d4 ; cos(ygrad)
muls z1(pc),d4 ; z*cos(ygrad)
add.l d4,d2 ; x*sin(ygrad) + z*cos(ygrad)
add.l d2,d2
add.l d2,d2 ; 4*(x*sin(ygrad)+z*cos(ygrad))
swap d2 ; fast division by 65535
ext.l d2 ; z-coordinate around y and x
move.w zvinkel(pc),d7 ; z angle
add.w d7,d7 ; z angle *2
move.w (a3,d7.w),d0 ; cos(zgrad)
muls x2(pc),d0 ; x*cos(zgrad)
move.w (a2,d7.w),d4 ; sin(zgrad)
muls y1(pc),d4 ; y*sin(zgrad)
sub.l d4,d0 ; x*cos(zgrad) - y*sin(zgrad)
add.l d0,d0
add.l d0,d0 ; 4*(x*cos(zgrad)-y*sin(zgrad))
swap d0 ; fast division by 65535
ext.l d0 ; x-coordinate around y and z
move.w (a2,d7.w),d1 ; sin(zgrad)
muls x2(pc),d1 ; x*sin(zgrad)
move.w (a3,d7.w),d3 ; cos(zgrad)
muls y1(pc),d3 ; y*cos(zgrad)
add.l d3,d1 ; x*sin(zgrad) + y*cos(zgrad)
add.l d1,d1
add.l d1,d1 ; 4*(x*sin(zgrad)+y*cos(zgrad))
swap d1 ; fast division by 65535
ext.l d1 ; y-coordinate around x and z
rts
** ROTATE PLANES VECTOR NORMAL ************************************************
normal move.w xvinkel(pc),d5
add.w d5,d5
move.w yvinkel(pc),d6
add.w d6,d6
move.w (a2,d5.w),d3
muls d1,d3
move.w (a3,d5.w),d4
muls d2,d4
add.l d4,d3
add.l d3,d3
add.l d3,d3
move.l d3,z1
move.w (a2,d6.w),d2
muls d0,d2
move.w (a3,d6.w),d4
muls z1(pc),d4
add.l d4,d2
add.l d2,d2
add.l d2,d2
swap d2
ext.l d2
rts
** CONVERT POINT FROM 3D TO 2D ************************************************
convert muls zoom(pc),d0
divs d2,d0
muls zoom(pc),d1
divs d2,d1
rts
** DRAW LINE ******************************************************************
line ext.l d0 ; rule out any crap!
ext.l d1
tst.w (a1)+ ; draw line from last point?
bne.b draw
move.w d0,lastx ; no! then just save this point
move.w d1,lasty
rts
draw move.w lastx(pc),d2
move.w d0,lastx
move.w lasty(pc),d3
move.w d1,lasty
exg d1,d2
cmp d2,d3
beq.w drawout
bpl.b bline
exg d0,d1
exg d2,d3
bline subq #1,d3
move d1,d6
sub d0,d6
bmi.s xl0
move.w d3,d7
sub.w d2,d7
bmi.s xg0yl0
move.w d7,d5
sub.w d6,d5
bmi.s o4
move.b #1,bltc1
bra.s octok
o4 move.b #17,bltc1
bra.s octok
xg0yl0 neg.w d7
move.w d7,d5
sub.w d6,d5
bmi.s o6
move.b #5,bltc1
bra.s octok
o6 move.b #25,bltc1
bra.s octok
xl0 neg.w d6
move.w d3,d7
sub.w d2,d7
bmi.s xl0yl0
move.w d7,d5
sub.w d6,d5
bmi.s o5
move.b #9,bltc1
bra.s octok
o5 move.b #21,bltc1
bra.s octok
xl0yl0 neg.w d7
move.w d7,d5
sub.w d6,d5
bmi.s o7
move.b #13,bltc1
bra.s octok
o7 move.b #29,bltc1
octok moveq #0,d4
move.w d0,d4
and.w #15,d4
swap d4
lsr.l #4,d4
or.w #$b4a,d4
moveq #0,d3
lsl #3,d2
move d2,d3
lsl #2,d2
add d2,d3
lsr #3,d0
and.b #$fe,d0
add d0,d3
add.l a0,d3
tst d5
bmi.s xmaxi
exg d6,d7
neg.w d5
xmaxi move.w d6,d1
add.w #1,d1
lsl.w #6,d1
add.w #2,d1
move.w d5,d0
add.w d7,d0
lsl.w #2,d7
move.w d0,d2
sub.w d6,d2
add.w d2,d2
tst.w d0
bpl.s plus
or.b #64,bltc1
plus add.w d0,d0
ext.l d0
wdraw btst #6,$dff002
bne.s wdraw
clr d6
move.b bltc1,d6
or.w #2,d6
move.w d6,$dff042
move.w d4,$dff040
clr $dff070
move.w #$8000,$dff074
move.w #$ffff,$dff072
move.l #$ffffffff,$dff044
move.w #40,$dff060
move.w #40,$dff066
move.w d7,$dff062
move.w d2,$dff064
move.l d3,$dff048
move.l d3,$dff054
move.l d0,$dff050
move.w d1,$dff058
drawout rts
** NOTE MIN AND MAX FOR THIS PLANE ********************************************
extrem cmp.w ymin(pc),d1
bhi.b noymin
move.w d1,ymin
noymin cmp.w ymax(pc),d1
blt.b noymax
move.w d1,ymax
noymax cmp.w xmin(pc),d0
bhi.b noxmin
move.w d0,xmin
noxmin cmp.w xmax(pc),d0
blt.b noxmax
move.w d0,xmax
noxmax rts
** NOTE MIN AND MAX FOR ALL PLANES ********************************************
global move.w xmin(pc),d0
cmp.w globalxmin(pc),d0
bhi.b noglobx
move.w d0,globalxmin
noglobx move.w xmax(pc),d0
cmp.w globalxmax(pc),d0
blt.b globoy1
move.w d0,globalxmax
globoy1 move.w ymin(pc),d0
cmp.w globalymin(pc),d0
bhi.b nogloby
move.w d0,globalymin
nogloby move.w ymax(pc),d0
cmp.w globalymax(pc),d0
blt.b globout
move.w d0,globalymax
globout rts
** CLACULATE NEW VIEW ANGLE ***************************************************
angles move.w ydelta(pc),d0
add.w d0,yvinkel ; new y angle
cmp.w #512,yvinkel
blt.b xangle
sub.w #512,yvinkel
xangle move.w xdelta(pc),d0
add.w d0,xvinkel ; new x angle
cmp.w #512,xvinkel
blt.b zangle
sub.w #512,xvinkel
zangle move.w zdelta(pc),d0
add.w d0,zvinkel ; new z angle
cmp.w #512,zvinkel
blt.b anglout
sub.w #512,zvinkel
anglout rts
** LIGHTSOURCE CURRENT PLANE **************************************************
light add.l d0,d0 ; d0 = offset in offset-table!
lea colour,a4
lea offset(pc),a5
lea colours(pc),a6
move.w (a5,d0.w),d1 ; d1 = offset from colour label
divu #7,d2 ; adjust to colourstable offset
add.l d2,d2
move.w (a6,d2.w),d0
move.w d0,(a4,d1.w)
rts
** FLIP BETWEEN FRAMESBUFFERS *************************************************
flip_screen
cmp.l #screen1,screen_adress
beq.s flip_to_screen2
lea.l planes,a0
move.l #screen2,d0
move.w d0,6(a0)
swap d0
move.w d0,2(a0)
move.l #screen2+[256*40],d0
move.w d0,14(a0)
swap d0
move.w d0,10(a0)
move.l #screen2+[512*40],d0
move.w d0,22(a0)
swap d0
move.w d0,18(a0)
move.l #screen1,screen_adress
rts
flip_to_screen2
lea.l planes,a0
move.l #screen1,d0
move.w d0,6(a0)
swap d0
move.w d0,2(a0)
move.l #screen1+[256*40],d0
move.w d0,14(a0)
swap d0
move.w d0,10(a0)
move.l #screen1+[512*40],d0
move.w d0,22(a0)
swap d0
move.w d0,18(a0)
move.l #screen2,screen_adress
rts
** CLEAR SCREEN ***************************************************************
clear moveq #0,d1
move.l d1,d2
move.l d1,d3
move.l screen_adress(pc),d0
move.w globalxmin(pc),d1
move.w globalxmax(pc),d2
sub.w d1,d2 ; d2 = clear width in pixels
lsr.w #3,d1 ; d1 = left pixels in bytes
ext.l d1
subq.w #1,d1
add.l d1,d0 ; d0 = start address
lsr.w #4,d2 ; d2 = clear width in words
add.w #3,d2 ; for safety
move.w d2,d1
mulu #2,d1 ; d1 = clear width in bytes
move.w #40,d3
sub.w d1,d3 ; d3 = clear modulo
move.w globalymin(pc),d4
sub.w safety(pc),d4
move.w globalymax(pc),d5
sub.w d4,d5 ; hight
add.w safety(pc),d5
mulu #40,d4
ext.l d4
add.l d4,d0
lsl.w #6,d5
or.w d5,d2 ; hight and width
wait1 btst #14,$dff002
bne.s wait1
move.w #$0100,$dff040
move.w #$0000,$dff042
move.l #$ffffffff,$dff044
move.l d0,$dff054
move.w d3,$dff066
move.w d2,$dff058
add.l #10240,d0 ; point on next plane
wait2 btst #14,$dff002
bne.s wait2
move.w #$0100,$dff040
move.w #$0000,$dff042
move.l d0,$dff054
move.w d3,$dff066
move.w d2,$dff058
add.l #10240,d0 ; point on next plane
wait3 btst #14,$dff002
bne.s wait3
move.w #$0100,$dff040
move.w #$0000,$dff042
move.l d0,$dff054
move.w d3,$dff066
move.w d2,$dff058
move.w #320,globalxmin ; reset globals
move.w #0,globalxmax
move.w #256,globalymin
move.w #0,globalymax
rts
** blitter fill (descending mode) *********************************************
fill move.l a0,d0 ; screen address
moveq #0,d1
move.l d1,d2
move.l d1,d3
move.w ymax(pc),d1
mulu #40,d1
add.l d1,d0 ; d0 = buttom vertical line
move.w #320,d2
sub.w xmax(pc),d2
lsr.w #3,d2 ; 16 pixel precision
ext.l d2
sub.l d2,d0 ; d0 = start address
move.w xmax(pc),d1
sub.w xmin(pc),d1 ; d1 = fill width in pixels
lsr.w #4,d1 ; d1 = fill width in words
addq.w #3,d1
move.w d1,d2
move.w #40,d3 ; full screen modulo
add.w d2,d2 ; d2 = fill width in bytes
sub.w d2,d3 ; d3 = fill modulo
move.w ymax(pc),d2
sub.w ymin(pc),d2 ; d2 = hight in pixels
lsl.w #6,d2 ; place hight on right bits
or.w d2,d1 ; d1 = fill hight and width
fready btst #14,$dff002
bne.b fready
move.l d0,$dff050
move.l d0,$dff054
move.w #$09f0,$dff040 ; minterm d=a
move.w #%0000000000010010,$dff042 ; exclusive fill (bit 4)
move.l #$ffffffff,$dff044 ; masks
move.w d3,$dff064 ; a modulo
move.w d3,$dff066 ; d modulo
move.w d1,$dff058 ; fill hight and start address
we3draw btst #6,$dff002
bne.s we3draw
rts
** DATA ***********************************************************************
screen_adress dc.l screen1
xcenter dc.w 159
ycenter dc.w 128
zcenter dc.w 460
zoom dc.w 210
safety dc.w 6 ; high safety takes more raster
counter dc.w 0
xvinkel dc.w 0
yvinkel dc.w 0
zvinkel dc.w 0
ydelta dc.w 2
xdelta dc.w 3
zdelta dc.w 1
y1 dc.l 0
z1 dc.l 0
x2 dc.l 0
lastx dc.w 0
lasty dc.w 0
ymin dc.w 256
ymax dc.w 0
xmin dc.w 320
xmax dc.w 0
globalymin dc.w 120
globalymax dc.w 140
globalxmin dc.w 150
globalxmax dc.w 170
offset dc.w 2,6,10,2,2,2,2,2
colours dc.w $000,$002,$013,$024,$035,$046,$057,$068
dc.w $079,$08a,$09b,$0ac,$0bd,$0ce,$0df,$fff
bltc1 dc.b 0
even
** OBJECT DATA ****************************************************************
**
** STRUCTURE: DC.W XN,YN,ZX,LIMIT,BITPLAN,COUNT
** DC.W X,Y,Z,S
**
** (XN,YN,ZN): PLANE NORMAL-VECTOR (MUST STAND IN AN 90∞ ANGLE ON PLANE).
** LIMIT: ZN LIMIT (TO DETERMINE WHEN WE ARE SEEING FRONT OR BACKSIDE).
** BITPLAN: SELECT COLOUR FOR THIS PLANE 0,1,2.
** COUNT: NUMBER OF POINTS THAT THIS PLANE CONSISTS OF.
** (X,Y,Z): POINT COORDINATES.
** S: 0:MOVE TO THIS POINT. 1:DRAW LINE FROM THIS POINT TO LAST ONE.
**
points dc.w 0,0,100,27,0,5
dc.w 29,-2,330,0
dc.w 29,258,330,1
dc.w 289,258,330,1
dc.w 289,-2,330,1
dc.w 29,-2,330,1
dc.w 100,0,0,27,1,5
dc.w 29,-2,590,0
dc.w 29,258,590,1
dc.w 29,258,330,1
dc.w 29,-2,330,1
dc.w 29,-2,590,1
dc.w -100,0,0,27,1,5
dc.w 289,-2,590,0
dc.w 289,258,590,1
dc.w 289,258,330,1
dc.w 289,-2,330,1
dc.w 289,-2,590,1
dc.w 0,0,-100,27,0,5
dc.w 29,-2,590,0
dc.w 29,258,590,1
dc.w 289,258,590,1
dc.w 289,-2,590,1
dc.w 29,-2,590,1
dc.w 0,-100,0,27,2,5
dc.w 29,258,330,0
dc.w 29,258,590,1
dc.w 289,258,590,1
dc.w 289,258,330,1
dc.w 29,258,330,1
dc.w 0,100,0,27,2,5
dc.w 29,-2,330,0
dc.w 29,-2,590,1
dc.w 289,-2,590,1
dc.w 289,-2,330,1
dc.w 29,-2,330,1
dc.w $ffff,$ffff ; signal: no more planes to draw!
even
section b,data_c
** copperlist *****************************************************************
copper dc.w $0106,$0000,$01fc,$0000
dc.w $008e,$2c81,$0090,$2cc1
dc.w $0092,$0038,$0094,$00d0
dc.w $0102,$0000,$0104,$0000
dc.w $0108,$0000,$010a,$0000
colour dc.w $0182,$0400 ; 2
dc.w $0184,$0600 ; 6
dc.w $0188,$0800 ; 10
dc.w $0186,$0999,$018a,$00f0
dc.w $018c,$00f0,$018e,$0813
planes dc.w $00e0,$0000,$00e2,$0000
dc.w $00e4,$0000,$00e6,$0000
dc.w $00e8,$0000,$00ea,$0000
dc.w $3001,$ff00,$0100,$3200
dc.w $ffe1,$fffe,$2901,$ff00
dc.w $0100,$0200
adress dc.w $0084,$0000
dc.w $0086,$0000
dc.w $008a,$0000 ; restart copperlist
dc.w $ffff,$fffe
** SCREEN *********************************************************************
even
screen1 ds.b [320/8*768]
screen2 ds.b [320/8*768]
even
sin_table
dc.w 0
dc.w 201
dc.w 402
dc.w 603
dc.w 803
dc.w 1004
dc.w 1205
dc.w 1405
dc.w 1605
dc.w 1805
dc.w 2005
dc.w 2204
dc.w 2404
dc.w 2602
dc.w 2801
dc.w 2998
dc.w 3196
dc.w 3393
dc.w 3589
dc.w 3785
dc.w 3980
dc.w 4175
dc.w 4369
dc.w 4563
dc.w 4756
dc.w 4948
dc.w 5139
dc.w 5329
dc.w 5519
dc.w 5708
dc.w 5896
dc.w 6083
dc.w 6269
dc.w 6455
dc.w 6639
dc.w 6822
dc.w 7005
dc.w 7186
dc.w 7366
dc.w 7545
dc.w 7723
dc.w 7900
dc.w 8075
dc.w 8249
dc.w 8423
dc.w 8594
dc.w 8765
dc.w 8934
dc.w 9102
dc.w 9268
dc.w 9434
dc.w 9597
dc.w 9759
dc.w 9920
dc.w 10079
dc.w 10237
dc.w 10393
dc.w 10548
dc.w 10701
dc.w 10853
dc.w 11002
dc.w 11150
dc.w 11297
dc.w 11442
dc.w 11585
dc.w 11726
dc.w 11866
dc.w 12003
dc.w 12139
dc.w 12273
dc.w 12406
dc.w 12536
dc.w 12665
dc.w 12791
dc.w 12916
dc.w 13038
dc.w 13159
dc.w 13278
dc.w 13395
dc.w 13510
dc.w 13622
dc.w 13733
dc.w 13842
dc.w 13948
dc.w 14053
dc.w 14155
dc.w 14255
dc.w 14353
dc.w 14449
dc.w 14543
dc.w 14634
dc.w 14723
dc.w 14810
dc.w 14895
dc.w 14978
dc.w 15058
dc.w 15136
dc.w 15212
dc.w 15286
dc.w 15357
dc.w 15426
dc.w 15492
dc.w 15557
dc.w 15618
dc.w 15678
dc.w 15735
dc.w 15790
dc.w 15842
dc.w 15892
dc.w 15940
dc.w 15985
dc.w 16028
dc.w 16069
dc.w 16107
dc.w 16142
dc.w 16175
dc.w 16206
dc.w 16234
dc.w 16260
dc.w 16284
dc.w 16305
dc.w 16323
dc.w 16339
dc.w 16353
dc.w 16364
dc.w 16372
dc.w 16379
cos_table
dc.w 16382
dc.w 16384
dc.w 16382
dc.w 16379
dc.w 16372
dc.w 16364
dc.w 16353
dc.w 16339
dc.w 16323
dc.w 16305
dc.w 16284
dc.w 16260
dc.w 16234
dc.w 16206
dc.w 16175
dc.w 16142
dc.w 16107
dc.w 16069
dc.w 16028
dc.w 15985
dc.w 15940
dc.w 15892
dc.w 15842
dc.w 15790
dc.w 15735
dc.w 15678
dc.w 15618
dc.w 15557
dc.w 15492
dc.w 15426
dc.w 15357
dc.w 15286
dc.w 15212
dc.w 15136
dc.w 15058
dc.w 14978
dc.w 14895
dc.w 14810
dc.w 14723
dc.w 14634
dc.w 14543
dc.w 14449
dc.w 14353
dc.w 14255
dc.w 14155
dc.w 14053
dc.w 13948
dc.w 13842
dc.w 13733
dc.w 13622
dc.w 13510
dc.w 13395
dc.w 13278
dc.w 13159
dc.w 13038
dc.w 12916
dc.w 12791
dc.w 12665
dc.w 12536
dc.w 12406
dc.w 12273
dc.w 12139
dc.w 12003
dc.w 11866
dc.w 11726
dc.w 11585
dc.w 11442
dc.w 11297
dc.w 11150
dc.w 11002
dc.w 10853
dc.w 10701
dc.w 10548
dc.w 10393
dc.w 10237
dc.w 10079
dc.w 9920
dc.w 9759
dc.w 9597
dc.w 9434
dc.w 9268
dc.w 9102
dc.w 8934
dc.w 8765
dc.w 8594
dc.w 8423
dc.w 8249
dc.w 8075
dc.w 7900
dc.w 7723
dc.w 7545
dc.w 7366
dc.w 7186
dc.w 7005
dc.w 6822
dc.w 6639
dc.w 6455
dc.w 6269
dc.w 6083
dc.w 5896
dc.w 5708
dc.w 5519
dc.w 5329
dc.w 5139
dc.w 4948
dc.w 4756
dc.w 4563
dc.w 4369
dc.w 4175
dc.w 3980
dc.w 3785
dc.w 3589
dc.w 3393
dc.w 3196
dc.w 2998
dc.w 2801
dc.w 2602
dc.w 2404
dc.w 2204
dc.w 2005
dc.w 1805
dc.w 1605
dc.w 1405
dc.w 1205
dc.w 1004
dc.w 803
dc.w 603
dc.w 402
dc.w 201
dc.w -1
dc.w -202
dc.w -403
dc.w -604
dc.w -804
dc.w -1005
dc.w -1206
dc.w -1406
dc.w -1606
dc.w -1806
dc.w -2006
dc.w -2205
dc.w -2405
dc.w -2603
dc.w -2802
dc.w -2999
dc.w -3197
dc.w -3394
dc.w -3590
dc.w -3786
dc.w -3981
dc.w -4176
dc.w -4370
dc.w -4564
dc.w -4757
dc.w -4949
dc.w -5140
dc.w -5330
dc.w -5520
dc.w -5709
dc.w -5897
dc.w -6084
dc.w -6270
dc.w -6456
dc.w -6640
dc.w -6823
dc.w -7006
dc.w -7187
dc.w -7367
dc.w -7546
dc.w -7724
dc.w -7901
dc.w -8076
dc.w -8250
dc.w -8424
dc.w -8595
dc.w -8766
dc.w -8935
dc.w -9103
dc.w -9269
dc.w -9435
dc.w -9598
dc.w -9760
dc.w -9921
dc.w -10080
dc.w -10238
dc.w -10394
dc.w -10549
dc.w -10702
dc.w -10854
dc.w -11003
dc.w -11151
dc.w -11298
dc.w -11443
dc.w -11586
dc.w -11727
dc.w -11867
dc.w -12004
dc.w -12140
dc.w -12274
dc.w -12407
dc.w -12537
dc.w -12666
dc.w -12792
dc.w -12917
dc.w -13039
dc.w -13160
dc.w -13279
dc.w -13396
dc.w -13511
dc.w -13623
dc.w -13734
dc.w -13843
dc.w -13949
dc.w -14054
dc.w -14156
dc.w -14256
dc.w -14354
dc.w -14450
dc.w -14544
dc.w -14635
dc.w -14724
dc.w -14811
dc.w -14896
dc.w -14979
dc.w -15059
dc.w -15137
dc.w -15213
dc.w -15287
dc.w -15358
dc.w -15427
dc.w -15493
dc.w -15558
dc.w -15619
dc.w -15679
dc.w -15736
dc.w -15791
dc.w -15843
dc.w -15893
dc.w -15941
dc.w -15986
dc.w -16029
dc.w -16070
dc.w -16108
dc.w -16143
dc.w -16176
dc.w -16207
dc.w -16235
dc.w -16261
dc.w -16285
dc.w -16306
dc.w -16324
dc.w -16340
dc.w -16354
dc.w -16365
dc.w -16373
dc.w -16380
dc.w -16383
dc.w -16384
dc.w -16383
dc.w -16380
dc.w -16373
dc.w -16365
dc.w -16354
dc.w -16340
dc.w -16324
dc.w -16306
dc.w -16285
dc.w -16261
dc.w -16235
dc.w -16207
dc.w -16176
dc.w -16143
dc.w -16108
dc.w -16070
dc.w -16029
dc.w -15986
dc.w -15941
dc.w -15893
dc.w -15843
dc.w -15791
dc.w -15736
dc.w -15679
dc.w -15619
dc.w -15558
dc.w -15493
dc.w -15427
dc.w -15358
dc.w -15287
dc.w -15213
dc.w -15137
dc.w -15059
dc.w -14979
dc.w -14896
dc.w -14811
dc.w -14724
dc.w -14635
dc.w -14544
dc.w -14450
dc.w -14354
dc.w -14256
dc.w -14156
dc.w -14054
dc.w -13949
dc.w -13843
dc.w -13734
dc.w -13623
dc.w -13511
dc.w -13396
dc.w -13279
dc.w -13160
dc.w -13039
dc.w -12917
dc.w -12792
dc.w -12666
dc.w -12537
dc.w -12407
dc.w -12274
dc.w -12140
dc.w -12004
dc.w -11867
dc.w -11727
dc.w -11586
dc.w -11443
dc.w -11298
dc.w -11151
dc.w -11003
dc.w -10854
dc.w -10702
dc.w -10549
dc.w -10394
dc.w -10238
dc.w -10080
dc.w -9921
dc.w -9760
dc.w -9598
dc.w -9435
dc.w -9269
dc.w -9103
dc.w -8935
dc.w -8766
dc.w -8595
dc.w -8424
dc.w -8250
dc.w -8076
dc.w -7901
dc.w -7724
dc.w -7546
dc.w -7367
dc.w -7187
dc.w -7006
dc.w -6823
dc.w -6640
dc.w -6456
dc.w -6270
dc.w -6084
dc.w -5897
dc.w -5709
dc.w -5520
dc.w -5330
dc.w -5140
dc.w -4949
dc.w -4757
dc.w -4564
dc.w -4370
dc.w -4176
dc.w -3981
dc.w -3786
dc.w -3590
dc.w -3394
dc.w -3197
dc.w -2999
dc.w -2802
dc.w -2603
dc.w -2405
dc.w -2205
dc.w -2006
dc.w -1806
dc.w -1606
dc.w -1406
dc.w -1206
dc.w -1005
dc.w -804
dc.w -604
dc.w -403
dc.w -202
dc.w -1
dc.w 201
dc.w 402
dc.w 603
dc.w 803
dc.w 1004
dc.w 1205
dc.w 1405
dc.w 1605
dc.w 1805
dc.w 2005
dc.w 2204
dc.w 2404
dc.w 2602
dc.w 2801
dc.w 2998
dc.w 3196
dc.w 3393
dc.w 3589
dc.w 3785
dc.w 3980
dc.w 4175
dc.w 4369
dc.w 4563
dc.w 4756
dc.w 4948
dc.w 5139
dc.w 5329
dc.w 5519
dc.w 5708
dc.w 5896
dc.w 6083
dc.w 6269
dc.w 6455
dc.w 6639
dc.w 6822
dc.w 7005
dc.w 7186
dc.w 7366
dc.w 7545
dc.w 7723
dc.w 7900
dc.w 8075
dc.w 8249
dc.w 8423
dc.w 8594
dc.w 8765
dc.w 8934
dc.w 9102
dc.w 9268
dc.w 9434
dc.w 9597
dc.w 9759
dc.w 9920
dc.w 10079
dc.w 10237
dc.w 10393
dc.w 10548
dc.w 10701
dc.w 10853
dc.w 11002
dc.w 11150
dc.w 11297
dc.w 11442
dc.w 11585
dc.w 11726
dc.w 11866
dc.w 12003
dc.w 12139
dc.w 12273
dc.w 12406
dc.w 12536
dc.w 12665
dc.w 12791
dc.w 12916
dc.w 13038
dc.w 13159
dc.w 13278
dc.w 13395
dc.w 13510
dc.w 13622
dc.w 13733
dc.w 13842
dc.w 13948
dc.w 14053
dc.w 14155
dc.w 14255
dc.w 14353
dc.w 14449
dc.w 14543
dc.w 14634
dc.w 14723
dc.w 14810
dc.w 14895
dc.w 14978
dc.w 15058
dc.w 15136
dc.w 15212
dc.w 15286
dc.w 15357
dc.w 15426
dc.w 15492
dc.w 15557
dc.w 15618
dc.w 15678
dc.w 15735
dc.w 15790
dc.w 15842
dc.w 15892
dc.w 15940
dc.w 15985
dc.w 16028
dc.w 16069
dc.w 16107
dc.w 16142
dc.w 16175
dc.w 16206
dc.w 16234
dc.w 16260
dc.w 16284
dc.w 16305
dc.w 16323
dc.w 16339
dc.w 16353
dc.w 16364
dc.w 16372
dc.w 16379
dc.w 16382
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment