[PATCH 3/8] wmdots: Move files up one directory.
Doug Torrance <[email protected]>
| Newsgroups | gmane.compw.window-managers.windowmaker.devel |
|---|---|
| Message-ID | <[email protected]> |
Since wmgeneral directory no longer exists, having wmdots/wmdots/* seems
pointless.
---
wmdots/Makefile | 23 +
wmdots/master.xpm | 87 ++++
wmdots/old_dos_demo/dow.a | 860 ++++++++++++++++++++++++++++++++++++
wmdots/old_dos_demo/dow.com | Bin 0 -> 12874 bytes
wmdots/old_dos_demo/sintab.s | 528 ++++++++++++++++++++++
wmdots/old_dos_demo/trig.s | 29 ++
wmdots/sintab.c | 75 ++++
wmdots/wmdots.c | 667 ++++++++++++++++++++++++++++
wmdots/wmdots/Makefile | 23 -
wmdots/wmdots/master.xpm | 87 ----
wmdots/wmdots/old_dos_demo/dow.a | 860 ------------------------------------
wmdots/wmdots/old_dos_demo/dow.com | Bin 12874 -> 0 bytes
wmdots/wmdots/old_dos_demo/sintab.s | 528 ----------------------
wmdots/wmdots/old_dos_demo/trig.s | 29 --
wmdots/wmdots/sintab.c | 75 ----
wmdots/wmdots/wmdots.c | 667 ----------------------------
16 files changed, 2269 insertions(+), 2269 deletions(-)
create mode 100755 wmdots/Makefile
create mode 100644 wmdots/master.xpm
create mode 100644 wmdots/old_dos_demo/dow.a
create mode 100644 wmdots/old_dos_demo/dow.com
create mode 100644 wmdots/old_dos_demo/sintab.s
create mode 100644 wmdots/old_dos_demo/trig.s
create mode 100644 wmdots/sintab.c
create mode 100644 wmdots/wmdots.c
delete mode 100755 wmdots/wmdots/Makefile
delete mode 100644 wmdots/wmdots/master.xpm
delete mode 100644 wmdots/wmdots/old_dos_demo/dow.a
delete mode 100644 wmdots/wmdots/old_dos_demo/dow.com
delete mode 100644 wmdots/wmdots/old_dos_demo/sintab.s
delete mode 100644 wmdots/wmdots/old_dos_demo/trig.s
delete mode 100644 wmdots/wmdots/sintab.c
delete mode 100644 wmdots/wmdots/wmdots.c
diff --git a/wmdots/Makefile b/wmdots/Makefile
new file mode 100755
index 0000000..46cea12
--- /dev/null
+++ b/wmdots/Makefile
@@ -0,0 +1,23 @@
+LIBDIR = -L/usr/X11R6/lib
+LIBS = -lXpm -lXext -lX11 -ldockapp
+OBJS = wmdots.o
+
+.c.o:
+ cc -c -g -O2 -Wall $< -o $*.o
+
+wmifs: $(OBJS)
+ cc -o wmdots $^ -lXext $(LIBDIR) $(LIBS)
+
+all:: wmdots
+
+clean::
+ for i in $(OBJS) ; do \
+ rm $$i ; \
+ done
+ rm wmdots
+
+install::
+ cp -f wmdots /usr/local/bin/
+ chmod 755 /usr/local/bin/wmdots
+ chown root:root /usr/local/bin/wmdots
+
diff --git a/wmdots/master.xpm b/wmdots/master.xpm
new file mode 100644
index 0000000..e1514ad
--- /dev/null
+++ b/wmdots/master.xpm
@@ -0,0 +1,87 @@
+/* XPM */
+static char * master_xpm[] = {
+"64 66 18 1",
+" c None",
+". c #000000",
+"+ c #C300FF",
+"@ c #B500F2",
+"# c #A800E5",
+"$ c #9E00D8",
+"% c #9200CC",
+"& c #8500BF",
+"* c #7900B2",
+"= c #6E00A5",
+"- c #660099",
+"; c #5D008C",
+"> c #52007F",
+", c #480072",
+"' c #3E0066",
+") c #37005B",
+"! c #2D004C",
+"~ c #25003F",
+" ",
+" ",
+" ",
+" ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ...................................................... ",
+" ",
+" ",
+" ",
+" ",
+" ",
+"++@@##$$%%&&**==--;;>>,,''))!!~~ ",
+"++@@##$$%%&&**==--;;>>,,''))!!~~ "};
diff --git a/wmdots/old_dos_demo/dow.a b/wmdots/old_dos_demo/dow.a
new file mode 100644
index 0000000..85bc6d9
--- /dev/null
+++ b/wmdots/old_dos_demo/dow.a
@@ -0,0 +1,860 @@
+;Dogs of war demo by OnlyMe (now called I440r :)
+;-------------------------------------------------------------------------
+
+ ;Assembles with A386.COM (Registered A86).
+
+;-------------------------------------------------------------------------
+;Equates
+
+MaxPoints equ 125 ;Maximum number of points in an object
+BumpMap equ Bumps+320 ;Pointer to second scan line of bump map
+SpotX equ 160 ;Position of static bump map spotlight
+SpotY equ 80
+
+;-------------------------------------------------------------------------
+;A based structure (See A86 documentation for explanation)
+
+ struc [bx] ;Structure does NOT need a name
+Counter dw ? ;Countdown to change
+Reset dw ? ;Counter reset value
+Position dw ? ;Points to item being modified
+Delta dw ? ;Speed of change (also direction)
+Upper dw ? ;Upper limit for position
+Lower dw ? ;Lower limit for position
+ ends
+
+;-------------------------------------------------------------------------
+;Un-Initialised data
+
+ data segment
+
+XAngle dw ? ;Angles of rotation for each axis
+YAngle dw ? ; higher numbers rotate faster
+ZAngle dw ?
+
+X dw ? ;Coordinates of point being calculated
+Y dw ?
+Z dw ?
+
+XSin dw ? ;Sin and Cos for each axis angle of rotation
+YSin dw ?
+ZSin dw ?
+XCos dw ?
+YCos dw ?
+ZCos dw ?
+
+NumPoints dw ? ;Number of points in current object
+
+; V---MaxPoints
+Trail1: dw 125 dup ? ;Display address of previous 8 positions for
+Trail2: dw 125 dup ? ; each point being rotated. We only erase a
+Trail3: dw 125 dup ? ; points 8'th previous position. This makes
+Trail4: dw 125 dup ? ; the points leave a trail 7 pixles long
+Trail5: dw 125 dup ?
+Trail6: dw 125 dup ?
+Trail7: dw 125 dup ?
+Trail8: dw 125 dup ?
+
+CharP dw ? ;Pointer to font def for scrollie char
+BumpX dw ? ;Bump map coordinates being calculated
+BumpY dw ?
+
+;-------------------------------------------------------------------------
+;A copy of the ROM font moved here so we can reference it using DS
+
+Font: db 256*8 dup ?
+
+;-------------------------------------------------------------------------
+;Note:
+;
+; The following buffer is the whole of the bump map. There is 1 scan
+;line of ZERO data above and below the area that will contain the bumps.
+;
+;Therefore the bumpmap is at Bumps+320 (See Equates Above)
+
+Bumps: db 320*18 dup ?
+
+;-------------------------------------------------------------------------
+;Da Beeph (moo)
+
+ code segment
+
+Start:
+ jmp Main ;Do it...
+
+;-------------------------------------------------------------------------
+;Pre initialised data...
+
+Shape dw Cube ;Pointer to current object
+
+HalfH dw 160 ;Screen coordinates for centre of object
+HalfV dw 100
+
+XOff dw 150 ;Position of object in world space
+YOff dw 150
+ZOff dw 800
+
+DeltaX dw 5 ;Rotational speeds on each axis
+DeltaY dw 4
+DeltaZ dw 7
+
+;-------------------------------------------------------------------------
+;Modifiers: Tables follows this format: (as per above based structure)
+;
+; Counter Count down to next speed/position change
+; Retet Value to reset counter to
+; Position Pointer to data item to modify
+; Delta Ammount to change item (also direction)
+; Upper Upper limit fot item
+; Lower Lower limit for item
+
+W1: dw 30,30,offset DeltaX,2,15,2 ;Modifies X Rotational speed
+W2: dw 20,20,offset DeltaY,-2,12,4 ;Modifies Y Rotational speed
+W3: dw 40,40,offset DeltaZ,2,10,7 ;Modifies Z Rotational speed
+W4: dw 02,02,offset ZOff,-3,800,180 ;Zooms object in and out of screen
+
+;-------------------------------------------------------------------------
+;Bump mapped scrollie banner text stuffz
+
+Bannerp dw Banner ;Points to next character
+CharColumn db 080 ;Mask for next colunn of font def
+
+Banner:
+ db ' *** The Dogs Of WAR demo by OnlyMe! *** '
+ db 'Begin! '
+
+Begin:
+ db 'Oh the dogs they had a meeting '
+ db 'They came from near and far '
+ db 'And some dogs came by motor bus '
+ db 'And some by motor car '
+
+ db 0
+ dw Flies,Hall
+
+Hall:
+ db 'On entering the meeting hall '
+ db 'Each dog could take a look '
+ db 'Where he had to hang his asshole '
+ db 'Up high upon a hook '
+
+ db 0
+ dw Cross,Fire
+
+Fire:
+ db 'And when they were assembled '
+ db 'Each canine son and sire '
+ db 'Some dirty bulldog son of a bitch '
+ db 'Jumped up and hollared FIRE '
+
+ db 0
+ dw Square,Panic
+
+Panic:
+ db 'All was in a panic '
+ db 'Twas hell upon to look '
+ db 'Each doggie grabbed at random '
+ db 'An asshole from a hook '
+
+ db 0
+ dw Cube,Sore
+
+Sore:
+ db 'Now the assholes were all mixed up '
+ db 'Which made each doggie sore '
+ db 'To have to wear another dogs ass '
+ db 'He''d never worn before '
+
+ db 0
+ dw Star,Bone
+
+Bone:
+ db 'And that is why until this day '
+ db 'A dog will drop a bone '
+ db 'To go and smell another dogs ass '
+ db 'To see if it''s his OWN! '
+
+ db '*** THE END *** ??? '
+ db 'Now what have i forgotz ???? '
+ db 'ERM..... Oh Yea.... '
+
+ db 'Greetings *** ROTATE *** Out To ~~~~~~ '
+
+ db 0
+ dw Heart,Catgirl
+
+Catgirl:
+ db 'Catgirl - Jeg Elsker DEG - Purrrrrrrrrrrrr :) '
+ db 'Myriaam - Cute Sexy BABE Princess DOLL :) - heheheheheh - '
+ db 'okokokokokokokokokokokokokokokokokokokokokokokokokok '
+ db 'LuvrsCrs - Manager''ess and savior''ess of UnderNUT #CODERS '
+ db '--> '
+
+ db 0
+ dw Square,Unf
+
+Unf:
+ db 'Unf - Fatar - Debonaire - Isomer - Hexsane & MrsHex - '
+ db 'nop - mole - oreo - RatKing - \hatred\ - KBerg - '
+ db 'RyanT - Mafia - Yosha - Jungle - Fid - Binary - '
+ db 'PRIM8 - IiTM - Topanga - Tig2 - deRanged - RuneStar - '
+ db '_RyAn_ - DaParasit - Spansh - CodeX - Wicked - '
+ db 'Likwid - KingTroll - tpanther - ED_Lead - Reptile - '
+
+ db 0
+ dw Cross,NoIdea
+
+NoIdea:
+ db 'Noidea - ^Para^ - Wh0is - Chiew - [QWORD] - LoneWolf - '
+ db 'DaveDavis - PsYkOtIk - ^Ion^ - Weathros - LittleLoc - '
+ db 'MissMilla - Centmo - Entlin - CreepGuy - eom - Xico - '
+ db '^Axe^ & Sturnella - Almighty - o - Zyklon - hammr - '
+ db '|Geo| - '
+ db 'MarkIII (Hi Dad) - Diamond1 & Mermaid1 (Hi Sis1 and Sis2 :) - '
+
+ db 0
+ dw Flies,Snoo
+
+Snoo:
+ db 'Snoo - Queen1 & Truely - Shama - Pink^Rose - Divebum - '
+ db 'DEWDROP - KaDaM2 - Freakmama - mr007 - SIOK - Alih - '
+ db 'Asterix - MoKie - Rats - RoadRoach - masdale - mystie - '
+
+ db 'e|ectricTom - Techa^ - TX-Cowboy - buch - luth - '
+
+ db 0
+ dw Cross,Eche
+
+Eche:
+ db 'BaBs - Ratty - Lexzy - PJ - Blondii - dew - Kittie - '
+ db '^Kristi - strawbery - grlafraid - Krystal1 - ortho - '
+ db 'Danni_ - Anne^ - brokngrl - keldog - AnGelDevo - '
+ db '^DE^ - Avantyful & Niece babe :) - mauddib - lil_miss - '
+ db 'Eche & Godis^ hehehehe - lowlife - X & W - '
+ db '******** And Everyone else OnlyMe! dun MISSED '
+ db '*** THE END IS NOT NEIGH *** '
+ db '---====*** Begin Again ---> ',0
+
+ dw Cube,Begin
+
+;-------------------------------------------------------------------------
+;Do IT!
+
+Main:
+ mov ax,013 ;VGA GFX mode = 320 x 200 x 256
+ int 010
+
+ mov cx,(320*18)/2 ;Erase bump map buffer
+ mov di,Bumps
+ xor ax,ax
+ rep stosw
+
+ call GetPalette ;Create shaded palette
+ call GetFont ;Read font data out of ROM into current DS
+ call InitScroll ;Point to font data for first char of banner
+
+ mov ax,0a000 ;Point ES at video segment
+ mov es,ax
+
+L0:
+ call ChangeAngles ;Get next angle of rotation for all axis
+ call GetSinCos ;Calculate Sin and Cos for all rotation angles
+ call DoFrame ;Rotate all points of shape and display
+ call DoScroll ;Scroll text through bump map buffer
+ call DoBump ;Bump map scrolly text and display it
+ call Retrace ;Wait for next raster frame
+ call ErasePoints ;Erase all pixles that are 8 frames old
+ call DoDeltas ;Modify rotational speeds etc
+
+ in al,060 ;Read keyboard port
+ cmp al,081 ;Escape key released?
+ jne L0
+
+;-------------------------------------------------------------------------
+;Exit nicely
+
+ mov ax,3 ;Back to textmode
+ int 010
+ mov ah,2 ;Place cursor at bottom left of display
+ mov dx,01700
+ xor bx,bx
+ int 010
+ mov dx,AuRevoir
+ mov ah,9
+ int 021
+ mov ah,04c ;Return control to dos
+ int 021
+
+;-------------------------------------------------------------------------
+;Do one frame of rotating object. Calculate and plot all points
+
+;DI points to first trail buffer. We store the address of every pixle
+;we write into this buffer. When it comes time to erase these pixles we
+;do not need to recalculat them. We just collect the address!
+
+DoFrame:
+ xor ch,ch ;Clear hi byte of loop counter
+ xor di,di ;Point to start of trail buffer
+ mov si,[Shape] ;Point to object to be rotated
+ mov cl,[si] ;Get number of points
+ mov NumPoints,cx ;We need this count later too...
+ inc si
+L0:
+ movsx ax,[si] ;Get X coordinate of point
+ mov [X],ax
+ movsx ax,[si+1] ;Get Y coordinate
+ mov [Y],ax
+ movsx ax,[si+2] ;Get Z coordinate
+ mov [Z],ax
+ call Rotate ;Rotate point in 3d
+ call Draw ;Draw this point
+ add si,3 ;Point to next point
+ add di,2 ;point to next slot of trail buffer
+ dec cx
+ jne L0
+ ret
+
+;-------------------------------------------------------------------------
+;Project a single XYZ point into 2D space on screen
+
+Draw:
+ mov ax,[YOff] ;YOff * Y / Z+ZOff = Screen Y
+ imul [Y]
+ mov bx,[Z]
+ add bx,[ZOff]
+ idiv bx
+ add ax,[HalfV] ;Centre object on screen
+
+ cmp dx,0 ;Clip this pixle if outside display area
+ jb short ret
+ cmp ax,200
+ ja short ret
+
+ mov bx,320 ;Calculate 320 * Y...
+ imul bx
+
+ mov bx,ax
+
+ mov ax,[XOff] ;XOff * X / Z+ ZOff = Screen X
+ mov bp,[X]
+ imul bp
+ mov bp,[Z]
+ add bp,[ZOff] ;Distance
+ idiv bp
+ add ax,[HalfH]
+
+ cmp dx,0 ;Clip pixle if outside display area
+ jb short ret
+ cmp ax,320
+ ja short ret
+
+ add bx,ax
+
+ mov ax,-1 ;Generate colour for point based on X Y and Z axis
+ sub ax,[Z] ; of dot
+ xor ax,[X] ;Divides cube into 8 smaller cubes and alternates
+ or ax,[Y] ; light/dark (opposite corners same shade)
+ shr ax,4
+ add ax,[X] ;This addition makes the cube stripey man :)
+ add ax,[Y]
+
+ es mov [bx],al ;Place a dot with color al
+ mov Trail8[di],bx ;Save address for erase
+ ret
+
+;-------------------------------------------------------------------------
+;Erase pixles that are 8 frames old.
+
+;Every time a pixles is drawn to the display we remember its video
+;offset (address). This saves time when we want to erase that dot
+;because we dont need to recalculate the address given an XYZ
+
+ErasePoints:
+ xor di,di
+ mov cx,MaxPoints
+L0:
+ mov bx,Trail8[di] ;Pixles added to display on THIS frame
+; es dec b[bx] ; Make them less bright
+ xchg bx,Trail7[di] ;Pixles one frame old
+; es dec b[bx] ; Make them less bright
+ xchg bx,Trail6[di] ;Etc...
+; es dec b[bx]
+ xchg bx,Trail5[di]
+; es dec b[bx]
+ xchg bx,Trail4[di]
+; es dec b[bx]
+ xchg bx,Trail3[di]
+; es dec b[bx]
+ xchg bx,Trail2[di]
+; es dec b[bx]
+ xchg bx,Trail1[di] ;Pixles 8 frames old
+ es mov b[bx],0 ;Erase them
+ inc di,2
+ dec cx
+ jne L0
+ ret
+
+;-------------------------------------------------------------------------
+;Rotate a single point in 3D space
+
+Rotate:
+ push cx ;Need to keep this....
+
+;Rotate object about X axis (changes Y and Z)
+;
+;Y' = Y * Cos(Xang) - Z. Sin(Xang)
+;Z' = Y * Sin(Xang) + Z. Cos(Xang)
+
+ movsx eax,[Z] ;Get Z * Sin(X)
+ movsx ebx,[XSin]
+ mul ebx
+ mov ecx,eax ;Save in cx...
+ movsx eax,[Y] ;Get Y * Cos(x)
+ movsx ebx,[XCos]
+ imul ebx
+ sub eax,ecx ;Get Y * Cos(X) - Z * Sin(X)
+ sar eax,14 ;Sin and Cos Table values are scaled up
+ mov bp,ax ; by 16384. SHR scales results back down
+
+;We just calculated our new Y coordinate. We cant yet overwrite the old
+;Y because we still need it to calculated the new Z
+
+ movsx eax,[Z] ;Get Z * Cos(X) Exact opposite of above!
+ movsx ebx,[XCos]
+ imul ebx
+ mov ecx,eax ;Save value...
+ movsx eax,[Y] ;Get Y * Sin(X)
+ movsx ebx,[XSin]
+ imul ebx
+ add eax,ecx ;Get Y * Sin(X) + Z * Cos(X)
+ sar eax,14 ;Scale results down by 16384
+
+ mov [Y],bp ;Set newly calculated Y and Z coordinates
+ mov [Z],ax
+
+;Rotate point in Y axis
+;
+;X' = X * Cos(Yang) - Z * Sin(Yang)
+;Z' = X * Sin(Yang) + Z * Cos(Yang)
+
+ movsx eax,[Z] ;Following code is very similar to above.
+ movsx ebx,[YSin] ;It rotates the point in the Y axis
+ imul ebx ;I.E. It calculates new X and Z
+ mov ecx,eax
+ movsx eax,[X]
+ movsx ebx,[YCos]
+ imul ebx
+ sub eax,ecx
+ sar eax,14
+ mov bp,ax ;Save new X coord
+
+ movsx eax,[Z] ;Calculate Z
+ movsx ebx,[YCos]
+ imul ebx
+ mov ecx,eax
+ movsx eax,[X]
+ movsx ebx,[YSin]
+ imul ebx
+ add eax,ecx
+ sar eax,14
+
+ mov [X],bp ;Set new X and Z for point
+ mov [Z],ax
+
+;Rotate objecct along Z axis
+;
+;X' = X * Cos(Zang) - Y * Sin(Zang)
+;Y' = X * Sin(Zang) + Y * Cos(Zang)
+
+ movsx eax,[Y] ;Hmmm isnt this... the same, arent we just
+ movsx ebx,[ZSin] ;doing the same, calculations on in exactly
+ imul ebx ;The same, way but using different
+ mov ecx,eax ;Variables? Couldnt we optimise here ???
+ movsx eax,[X]
+ movsx ebx,[ZCos] ;Answer...
+ imul ebx ;
+ sub eax,ecx ;Yes! But that is a space optimisation
+ sar eax,14 ;Not a speed optimisation. The INLINE
+ mov bp,ax ;method is faster
+
+ movsx eax,[Y] ;There is also a much better way to do this
+ movsx ebx,[ZCos] ;that is both smaller and faster.
+ imul ebx
+ mov ecx,eax ;I.E. Use a Matrix to rotates points
+ movsx eax,[X] ;This however is much easier to follow
+ movsx ebx,[ZSin] ;and MAFFZ wuzz never my strong suit :)
+ imul ebx
+ add eax,ecx ;Maybe if this gets too.. slow ill use
+ sar eax,14 ;matricies tho :)
+
+ mov [X],bp
+ mov [Y],ax
+ pop cx
+ ret
+
+;-------------------------------------------------------------------------
+;calculate new angles of rotation for all points (to angles)
+
+;We do NOT rotate a point by 1 degree on one frame and then rotate that
+;rotated point by 1 degree in the next. We rotate by 1 degree in the
+;first frame, by 2 in the next, by 3 in the next etc.
+
+;Every time a point is rotated there is a slight ammount of error in our
+;calculation. If we rotated previously rotated points we would accumulate
+;errors on each rotation of the point and our object would distort.
+
+;By rotating the SAME points (i.e the original shape) on every frame but
+;by different ammounts each time, we never distort our shape by more
+;than ONE rotations worth of error (which u cant see :)
+
+ChangeAngles:
+ mov ax,[DeltaX] ;Adjust X angles of rotation
+ add [XAngle],ax
+ mov ax,[DeltaY] ;And Y
+ add [YAngle],ax
+ mov ax,[DeltaZ] ;And Z
+ add [ZAngle],ax
+ ret
+
+;-------------------------------------------------------------------------
+;Get Sin and Cos of all 3 angles of rotation.
+
+GetSinCos:
+ mov ax,[XAngle] ;Get angle
+ call SinCos ;Get Sin and Cos
+ mov [XSin],ax ;Save em!
+ mov [XCos],bx
+
+ mov ax,[YAngle] ;Same but different :)
+ call SinCos
+ mov [YSin],ax
+ mov [YCos],bx
+
+ mov ax,[ZAngle] ;Same but different :)
+ call SinCos
+ mov [ZSin],ax
+ mov [ZCos],bx
+ ret
+
+;-------------------------------------------------------------------------
+;This moves a value between two limits at a specific rate.
+
+;This code uses the structure defined at the top of the source file.
+
+;The structure is defined as...
+;
+; struc [bx]
+;
+;This makes the address in BX the base of the structure. A86 now allows
+;us to just name the structure element without reference to BX, This makes
+;the code easier to read if you understand the mechanism but impossible to
+;follow if you dont :)
+
+;Where you see a something like
+;
+; dec Counter
+;
+;read....
+;
+; dec Counter[bx]
+;
+
+DoDeltas:
+ mov bx,W1 ;Modify X rotation
+ call >L0
+ mov bx,W2 ;Modify Y rotation
+ call >L0
+ mov bx,W3 ;Modify Z rotation
+ call >L0
+ mov bx,W4 ;Zoom in and out
+
+L0:
+ dec Counter ;Count down to next change
+ jne ret
+ mov ax,Reset ;Counter hit ZERO. Reset it
+ mov Counter,ax
+ mov ax,Delta ;Get rate. of change (also direction)
+ mov si,Position ;Get pointer to variable to modify
+ add ax,[si] ;Add delta to variable
+ mov [si],ax ;Store back
+ cmp ax,Upper ;Did variable reach upper limit?
+ jl >L2
+L1:
+ neg Delta ;Change direction!
+ ret
+L2:
+ cmp ax,Lower ;Did variable reach lower limit?
+ jl L1
+ ret
+
+;-------------------------------------------------------------------------
+;MOA's bump mapping routine. (Yea im uzing this again hehe I like it :)
+;-------------------------------------------------------------------------
+
+DoBump:
+ mov ax,0a000 ;Point to video
+ mov es,ax
+
+ mov si,BumpMap+320*16 ;Point to end of last line of bumpmap
+
+ mov di,16 ;16 scan lines
+ mov ax,di
+ sub ax,SpotY
+ mov BumpY,ax
+
+;-------------------------------------------------------------------------
+
+L0:
+ mov ax,320-2 ;320 Pels per scan
+ mov cx,ax
+ sub ax,SpotX
+ mov BumpX,ax
+
+L1:
+ mov ax,-1[si] ;Look... No spotlight :) (Addition by OnlyMe)
+ or al,1[si]
+ or ax,-321[si]
+ or al,321[si]
+ test ax
+ jz >L9
+
+ xor ah,ah ;Clear scratch registers
+ xor bh,bh
+ mov al,[si+1] ;Read bump heights to left and right of this bump
+ mov bl,[si-1]
+ sub ax,bx ;Compute differenct
+ sub ax,BumpX ;I think this gets a 2D normal (erm)
+ cwd
+ xor ax,dx
+ sub ax,dx ;But Maff izznt my strong suit
+ mov bx,07f
+ sub bx,ax
+ mov ax,bx
+ cwd
+ not dx
+ and bx,dx
+ push bx
+
+ xor ah,ah ;When i understand how this code actually
+ xor bh,bh ; works ill add propper comments. Maybe someone
+ mov al,[si+0141] ; can fill me in eh
+ mov bl,[si-0140]
+ sub ax,bx
+ sub ax,BumpY
+ cwd
+ xor ax,dx
+ sub ax,dx
+ mov bx,07F
+ sub bx,ax
+ mov ax,bx
+ cwd
+ not dx
+ and bx,dx
+
+ pop ax
+ mul bl
+ shr ax,6+2
+
+L9:
+; shr ax,2
+; add ax,5
+ es mov 0e600-BumpMap[si],al
+
+ dec BumpX
+ dec si
+ loop L1
+
+ dec BumpY
+ sub si,2
+ dec di
+ jnz L0
+ ret
+
+;-------------------------------------------------------------------------
+
+DoScroll:
+ xor si,si ;First pixle row in current column
+
+ mov bx,BumpMap ;Erm... Actually.... This is wrong... hehehe
+ mov bp,[CharP] ;Point to characters font data
+ mov dh,b[CharColumn] ;Get column mask
+L0:
+ xor cx,cx ;Assume no bumps (0 pixle)
+ mov al,[bp+si] ;Get character row from font
+ and al,dh ;Mask out all but current column
+ if nz mov cx,03030 ;Raise bumps
+ mov [bx],cx ;Write double width pixle
+ mov 320[bx],cx ;Double height too!
+ add bx,2*320
+ inc si ;Add 1 to row
+ cmp si,8 ;Font is 8 by 8
+ jne L0
+
+ mov ax,ds
+ mov es,ax
+
+ mov si,BumpMap ;Scroll bumpmap 2 pixles left
+ mov di,si ;pixles at far left move to far right hehehe
+ add si,2
+ mov cx,320*16/2
+ rep movsw
+
+ ror CharColumn,1 ;Shift row mask 1
+ jnc short ret ;Wrap round and compute next char
+
+InitScroll:
+ mov si,[BannerP] ;Get pointer to next char in banner
+ test b[si] ;End of text?
+ jnz >L0
+
+ inc si
+ lodsw
+ mov [Shape],ax
+ lodsw
+ mov si,ax
+
+L0:
+ xor ah,ah
+ lodsb ;Get text character
+ mov [BannerP],si
+ shl ax,3 ;Compute chars ROM offset
+ add ax,Font
+ mov CharP,ax ;Points to font data for character
+ ret
+
+;-------------------------------------------------------------------------
+;Get a copy of the font data out of ROM into default DS
+
+GetFont:
+ mov ax,0f000 ;Point to ROM
+ mov ds,ax
+ mov si,0fa6e ;Offset to font data in ROM
+ mov di,Font
+ mov cx,256*2
+ rep movsw
+ mov ax,cs
+ mov ds,ax
+ ret
+
+;-------------------------------------------------------------------------
+;Write a KEWL purple palette (Shut Up! I like PuRplE :P)
+
+GetPalette:
+ mov dx,03C8 ;Write new palette
+ xor cx,cx
+ xor ax,ax
+ out dx,al
+ inc dx
+L0:
+ mov al,cl ;Select colour number to updata
+ out dx,al ;Write Red
+ xchg ah,al
+ out dx,al ;Write Green (Zero)
+ xchg ah,al
+ out dx,al ;Write Blue
+ inc cl
+ jnz L0
+ ret
+
+;-------------------------------------------------------------------------
+;Shape structure defined as....
+;
+; db number-of-points
+; db x,y,z of first point
+; db x,y,z ... of rest
+
+Cube:
+ db 125
+ db -35,-35,-35,-35,-35,-15,-35,-35, 05,-35,-35, 25,-35,-35, 45
+ db -35,-15,-35,-35,-15,-15,-35,-15, 05,-35,-15, 25,-35,-15, 45
+ db -35, 05,-35,-35, 05,-15,-35, 05, 05,-35, 05, 25,-35, 05, 45
+ db -35, 25,-35,-35, 25,-15,-35, 25, 05,-35, 25, 25,-35, 25, 45
+ db -35, 45,-35,-35, 45,-15,-35, 45, 05,-35, 45, 25,-35, 45, 45
+ db -15,-35,-35,-15,-35,-15,-15,-35, 05,-15,-35, 25,-15,-35, 45
+ db -15,-15,-35,-15,-15,-15,-15,-15, 05,-15,-15, 25,-15,-15, 45
+ db -15, 05,-35,-15, 05,-15,-15, 05, 05,-15, 05, 25,-15, 05, 45
+ db -15, 25,-35,-15, 25,-15,-15, 25, 05,-15, 25, 25,-15, 25, 45
+ db -15, 45,-35,-15, 45,-15,-15, 45, 05,-15, 45, 25,-15, 45, 45
+ db 05,-35,-35, 05,-35,-15, 05,-35, 05, 05,-35, 25, 05,-35, 45
+ db 05,-15,-35, 05,-15,-15, 05,-15, 05, 05,-15, 25, 05,-15, 45
+ db 05, 05,-35, 05, 05,-15, 05, 05, 05, 05, 05, 25, 05, 05, 45
+ db 05, 25,-35, 05, 25,-15, 05, 25, 05, 05, 25, 25, 05, 25, 45
+ db 05, 45,-35, 05, 45,-15, 05, 45, 05, 05, 45, 25, 05, 45, 45
+ db 25,-35,-35, 25,-35,-15, 25,-35, 05, 25,-35, 25, 25,-35, 45
+ db 25,-15,-35, 25,-15,-15, 25,-15, 05, 25,-15, 25, 25,-15, 45
+ db 25, 05,-35, 25, 05,-15, 25, 05, 05, 25, 05, 25, 25, 05, 45
+ db 25, 25,-35, 25, 25,-15, 25, 25, 05, 25, 25, 25, 25, 25, 45
+ db 25, 45,-35, 25, 45,-15, 25, 45, 05, 25, 45, 25, 25, 45, 45
+ db 45,-35,-35, 45,-35,-15, 45,-35, 05, 45,-35, 25, 45,-35, 45
+ db 45,-15,-35, 45,-15,-15, 45,-15, 05, 45,-15, 25, 45,-15, 45
+ db 45, 05,-35, 45, 05,-15, 45, 05, 05, 45, 05, 25, 45, 05, 45
+ db 45, 25,-35, 45, 25,-15, 45, 25, 05, 45, 25, 25, 45, 25, 45
+ db 45, 45,-35, 45, 45,-15, 45, 45, 05, 45, 45, 25, 45, 45, 45
+
+Star:
+ db 65
+ db -35,-35, 05,-35,-15, 05,-35, 05, 05,-35, 25, 05,-35, 45, 05
+ db -15,-35, 05,-15,-15, 05,-15, 05, 05,-15, 25, 05,-15, 45, 05
+ db 05,-35, 05, 05,-15, 05, 05, 05, 05, 05, 25, 05, 05, 45, 05
+ db 25,-35, 05, 25,-15, 05, 25, 05, 05, 25, 25, 05, 25, 45, 05
+ db 45,-35, 05, 45,-15, 05, 45, 05, 05, 45, 25, 05, 45, 45, 05
+ db 05,-35,-35, 05,-35,-15, 05,-35, 25, 05,-35, 45,-35, 05,-35
+ db 05,-15,-35, 05,-15,-15, 05,-15, 25, 05,-15, 45,-15, 05,-35
+ db 05, 05,-35, 05, 05,-15, 05, 05, 25, 05, 05, 45, 05, 05,-35
+ db 05, 25,-35, 05, 25,-15, 05, 25, 25, 05, 25, 45, 25, 05,-35
+ db 05, 45,-35, 05, 45,-15, 05, 45, 25, 05, 45, 45, 45, 05,-35
+ db -35, 05,-15,-35, 05, 25,-35, 05, 45,-15, 05,-15,-15, 05, 25
+ db -15, 05, 45, 05, 05,-15, 05, 05, 25, 05, 05, 45, 25, 05,-15
+ db 25, 05, 25, 25, 05, 45, 45, 05,-15, 45, 05, 25, 45, 05, 45
+
+Flies:
+ db 6
+ db -35,-35,-35,-35,-35, 45, 45, 45,-35, 45, 45, 45, 5,-35, 5
+ db 5, 45, 5
+
+Square:
+ db 25
+ db -35,-35,-35,-35,-15,-35,-35, 05,-35,-35, 25,-35,-35, 45,-35
+ db -15,-35,-35,-15,-15,-35,-15, 05,-35,-15, 25,-35,-15, 45,-35
+ db 05,-35,-35, 05,-15,-35, 05, 05,-35, 05, 25,-35, 05, 45,-35
+ db 25,-35,-35, 25,-15,-35, 25, 05,-35, 25, 25,-35, 25, 45,-35
+ db 45,-35,-35, 45,-15,-35, 45, 05,-35, 45, 25,-35, 45, 45,-35
+
+Heart:
+ db 32
+ db -35,-15,-35,-35, 25,-35,-15,-35,-35,-15,-15,-35,-15, 05,-35
+ db -15, 25,-35,-15, 45,-35, 05,-35,-35, 05,-15,-35, 05, 05,-35
+ db 05, 25,-35, 05, 45,-35, 25,-15,-35, 25, 05,-35, 25, 25,-35
+ db 45, 05,-35
+ db -30,-10,-30,-30, 20,-30,-10,-30,-30,-10,-10,-30,-10, 00,-30
+ db -10, 20,-30,-10, 40,-30, 00,-30,-30, 00,-10,-30, 00, 00,-30
+ db 00, 20,-30, 00, 40,-30, 20,-10,-30, 20, 00,-30, 20, 20,-30
+ db 40, 00,-30
+
+;-------------------------------------------------------------------------
+;I discovered this one completely by accident. I moved a table from the
+;end of this file to somewhere up there... but forgot to move the label
+;(hehehe). I was therfor referencing a table that is INCLUDED here by my
+;assembler. It had lotsa junk in with it at first but i cleaned that out
+;and this was the result. I love this object :) its KEWKL hehehe!
+
+Cross:
+ db 75
+ db 000,000,019,000,005,019,000,014,001,000,032,000,000,07D,000
+ db 000,0C9,000,001,05F,001,001,0AB,001,001,0F6,001,002,041,002
+ db 002,08D,002,002,0D8,002,003,023,003,003,005,004,003,06F,003
+ db 003,0BA,003,004,051,004,004,09C,004,004,0E7,004,005,013,006
+ db 005,032,005,005,07D,005,005,0C8,005,006,05E,006,006,0A9,006
+ db 006,0F4,006,007,03F,007,007,08A,007,007,0D5,007,008,000,009
+ db 008,020,008,008,06B,008,008,0B5,008,009,04B,009,009,095,009
+ db 009,0E0,009,00A,009,00B,00A,02A,00A,00A,075,00A,00A,0BF,00A
+ db 00B,054,00B,00D,007,026,00F,002,028,019,009,032,01E,004,037
+ db 022,00B,03B,02C,006,045,02D,001,046,039,008,052,03D,003,056
+ db 043,00A,05C,04B,000,064,04B,005,064,058,007,071,05B,002,074
+ db 064,009,07C,084,008,09C,088,003,0A1,08D,00A,0A6,096,000,0AF
+ db 096,005,0AF,0A3,007,0BC,0A6,002,0BF,0AE,009,0C7,0B5,004,0CE
+ db 0C2,006,0DB,0C4,001,0DD,0CE,008,0E7,0D3,003,0EC,0D8,00A,0F1
+ db 0E1,005,0FA,0E2,000,0FB,0EE,007,007,0F1,002,00A,0F9,009,011
+
+;=========================================================================
+
diff --git a/wmdots/old_dos_demo/dow.com b/wmdots/old_dos_demo/dow.com
new file mode 100644
index 0000000000000000000000000000000000000000..056de4cd198af25a1dbdb2405351bff413f68aa3
GIT binary patch
literal 12874
zcmb_=30M>7+IB(+`wj|mfk6=v2wT`gGDSf}R1mR>YXb=o*))Jii`}5d1(%*`ZEdlq
z)T*bgwY9C)s?`Z$-**u~0T)1I2_PT{{P%>~)AOJIJJ<DJ*Eds{H#6`0EcbKY?TOHt
zXZR&U%s7RcV6hqM3{8e5ZbPOT!;qoIFvD%koSxCc7kk{Mc&~##YPj{8Q!@nX7se{)
zyM%*-0}&A?Ap(<QQ;5(QVpBjkA(kX26HysNXi`GPT8Xu)5Ao_+CW)0MS-<-A=QA{p
zNX0Z_dKxq`h&Yj$5D|$INvbp{R@Dv5WDwD!L<tciOHL$`BqA9hN)i(>c+yt@+9}ES
zteQmC5t~R%PED2(QE4gv-sjIR(SM9qeP+CFyg)59iI60vN@Vo9^qyYrAx@N#pz0MQ
zijJcfA)=Gh62wHRC|-iCCL|}vt3GdvlgK0l2GU1JO~wNg#Ys~LQA$c&a)LzFY2$9Z
zij5=Eb|)ucaNMiGv)h<!a#oE#PI{aqY1SO+^qiPLk{FdB5&vr&(V`@2k_6|*EcE%M
z=tf@~REChsQZsP&gamrGbf4rHEEXkA#R2GRbz0(X%$BxWH5i*q5Xta+MR0hK>bvR>
zLu%~C3c%UZMJa@o-tBHI8m;;kLBETW;G^mwIPITicx9znsf37?iK3z~u_%?0VVm$C
zeFb2yKTM+X=zo}Dp5eEwb;;=}FZ|Ing_yMjR!o%co83D-*QPir&Xgz;O9;sy?x7b>
zN&dqg5wsunN@#zi&jwC1d@Gxc70gY~L9CM4i4j+O@jg9SmPABJVqT3`eP?`R#8;>N
zk{XATz@zDL8AMuAsx$#_@KY?xQ1uH?MMt_6n-t5EVO%0A8BU@v>?1aL)>VnL*+fbI
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
literal 0
HcmV?d00001
diff --git a/wmdots/old_dos_demo/sintab.s b/wmdots/old_dos_demo/sintab.s
new file mode 100644
index 0000000..89d8d5e
--- /dev/null
+++ b/wmdots/old_dos_demo/sintab.s
@@ -0,0 +1,528 @@
+;Sin and Cos tables based on 4096 degree circle.
+;-------------------------------------------------------------------------
+
+;Does not extend table by a right angle to account for COS...
+; Code takes care of this!
+
+;-------------------------------------------------------------------------
+
+ even 2
+
+SinTab:
+ dw 00000,00019,00032,0004b,00064,0007d,00096,000af ;000
+ dw 000c9,000e2,000fb,00114,0012d,00146,0015f,00178 ;008
+ dw 00192,001ab,001c4,001dd,001f6,0020f,00228,00241 ;010
+ dw 0025b,00274,0028d,002a6,002bf,002d8,002f1,0030a ;018
+ dw 00323,0033d,00356,0036f,00388,003a1,003ba,003d3 ;020
+ dw 003ec,00405,0041e,00437,00451,0046a,00483,0049c ;028
+ dw 004b5,004ce,004e7,00500,00519,00532,0054b,00564 ;030
+ dw 0057d,00596,005af,005c8,005e1,005fa,00613,0062c ;038
+ dw 00645,0065e,00677,00690,006a9,006c2,006db,006f4 ;040
+ dw 0070d,00726,0073f,00758,00771,0078a,007a3,007bc ;048
+ dw 007d5,007ee,00807,00820,00839,00852,0086b,00884 ;050
+ dw 0089c,008b5,008ce,008e7,00900,00919,00932,0094b ;058
+ dw 00964,0097c,00995,009ae,009c7,009e0,009f9,00a11 ;060
+ dw 00a2a,00a43,00a5c,00a75,00a8d,00aa6,00abf,00ad8 ;068
+ dw 00af1,00b09,00b22,00b3b,00b54,00b6c,00b85,00b9e ;070
+ dw 00bb6,00bcf,00be8,00c01,00c19,00c32,00c4b,00c63 ;078
+ dw 00c7c,00c95,00cad,00cc6,00cde,00cf7,00d10,00d08 ;080
+ dw 00d41,00d59,00d72,00d8b,00da3,00dbc,00dd4,00ded ;088
+ dw 00e05,00e1e,00e36,00e4f,00e67,00e80,00e98,00eb1 ;090
+ dw 00ec9,00ee2,00efa,00f12,00f2b,00f43,00f5c,00f74 ;098
+ dw 00f8c,00fa5,00fbd,00fd6,00fee,01006,0101f,01037 ;0a0
+ dw 0104f,01068,01080,01098,010b0,010c9,010e1,010f9 ;0a8
+ dw 01111,0112a,01142,0115a,01172,0118a,011a2,011bb ;0b0
+ dw 011d3,011eb,01203,0121b,01233,0124b,01263,0127b ;0b8
+ dw 01294,012ac,012c4,012dc,012f4,0130c,01324,0133c ;0c0
+ dw 01354,0136c,01383,0139b,013b3,013cb,013e3,013fb ;0c8
+ dw 01413,0142b,01443,0145a,01472,0148a,014a2,014ba ;0d0
+ dw 014d1,014e9,01501,01519,01530,01548,01560,01577 ;0d8
+ dw 0158f,015a7,015be,015d6,015ee,01605,0161d,01634 ;0e0
+ dw 0164c,01664,0167b,01693,016aa,016c2,016d9,016f1 ;0e8
+ dw 01708,0171f,01737,0174e,01766,0177d,01794,017ac ;0f0
+ dw 017c3,017da,017f2,01809,01820,01838,0184f,01866 ;0f8
+ dw 0187d,01895,018ac,018c3,018da,018f1,01908,01920 ;100
+ dw 01937,0194e,01965,0197c,01993,019aa,019c1,019d8 ;108
+ dw 019ef,01a06,01a1d,01a34,01a4b,01a62,01a79,01a8f ;110
+ dw 01aa6,01abd,01ad4,01aeb,01b02,01b18,01b2f,01b46 ;118
+ dw 01b5d,01b73,01b8a,01ba1,01bb7,01bce,01be5,01bfb ;120
+ dw 01c12,01c28,01c3f,01c55,01c6c,01c83,01c99,01caf ;128
+ dw 01cc6,01cdc,01cf3,01d09,01d20,01d36,01d4c,01d63 ;130
+ dw 01d79,01d8f,01da6,01dbc,01dd2,01de8,01dfe,01e15 ;138
+ dw 01e2b,01e41,01e57,01e6d,01e83,01e99,01eb0,01ec6 ;140
+ dw 01edc,01ef2,01f08,01f1e,01f34,01f49,01f5f,01f75 ;148
+ dw 01f8b,01fa1,01fb7,01fcd,01fe2,01ff8,0200e,02024 ;150
+ dw 02039,0204f,02065,0207b,02090,020a6,020bb,020d1 ;158
+ dw 020e7,020fc,02112,02127,0213d,02152,02168,0217d ;160
+ dw 02192,021a8,021bd,021d2,021e8,021fd,02212,02228 ;168
+ dw 0223d,02252,02267,0227d,02292,022a7,022bc,022d1 ;170
+ dw 022e6,022fb,02310,02325,0233a,0234f,02364,02379 ;178
+ dw 0238e,023a3,023b8,023cd,023e1,023f6,0240b,02420 ;180
+ dw 02434,02449,0245e,02473,02487,0249c,024b0,024c5 ;188
+ dw 024da,024ee,02503,02517,0252c,02540,02554,02569 ;190
+ dw 0257d,02592,025a6,025ba,025cf,025e3,025f7,0260b ;198
+ dw 0261f,02634,02648,0265c,02670,02684,02698,026ac ;1a0
+ dw 026c0,026d4,026e8,026fc,02710,02724,02738,0274c ;1a8
+ dw 0275f,02773,02787,0279b,027af,027c2,027d6,027ea ;1b0
+ dw 027fd,02811,02824,02838,0284b,0285f,02872,02886 ;1b8
+ dw 02899,028ad,028c0,028d4,028e7,028fa,0290e,02921 ;1c0
+ dw 02934,02947,0295a,0296e,02981,02994,029a7,029ba ;1c8
+ dw 029cd,029e0,029f3,02a06,02a19,02a2c,02a3f,02a52 ;1d0
+ dw 02a65,02a77,02a8a,02a9d,02ab0,02ac2,02ad5,02ae8 ;1d8
+ dw 02afa,02b0d,02b20,02b32,02b45,02b57,02b6a,02b7c ;1e0
+ dw 02b8e,02ba1,02bb3,02bc6,02bd8,02bea,02bfc,02c0f ;1e8
+ dw 02c21,02c33,02c45,02c57,02c6a,02c7c,02c8e,02ca0 ;1f0
+ dw 02cb2,02cc4,02cd6,02ce8,02cf9,02d0b,02d1d,02d2f ;1f8
+ dw 02d41,02d52,02d64,02d76,02d88,02d99,02dab,02dbc ;200
+ dw 02dce,02de0,02df1,02e03,02e14,02e25,02e37,02e48 ;208
+ dw 02e5a,02e6b,02e7c,02e8d,02e9f,02eb0,02ec1,02ed2 ;210
+ dw 02ee3,02ef4,02f05,02f16,02f28,02f38,02f49,02f5a ;218
+ dw 02f6b,02f7c,02f8d,02f9e,02faf,02fbf,02fd0,02fe1 ;220
+ dw 02ff1,03002,03013,03023,03034,03044,03055,03065 ;228
+ dw 03076,03086,03096,030a7,030b7,030c7,030d8,030e8 ;230
+ dw 030f8,03108,03118,03128,03138,03149,03159,03169 ;238
+ dw 03179,03188,03198,031a8,031b8,031c8,031d8,031e7 ;240
+ dw 031f7,03207,03216,03226,03236,03245,03255,03264 ;248
+ dw 03274,03283,03293,032a2,032b1,032c1,032d0,032df ;250
+ dw 032ee,032fe,0330d,0331c,0332b,0333a,03349,03358 ;258
+ dw 03367,03376,03385,03394,033a3,033b2,033c1,033cf ;260
+ dw 033de,033ed,033fb,0340a,03419,03427,03436,03444 ;268
+ dw 03453,03461,03470,0347e,0348c,0349b,034a9,034b7 ;270
+ dw 034c6,034d4,034e2,034f0,034fe,0350c,0351a,03528 ;278
+ dw 03536,03544,03552,03560,0356e,0357c,03589,03597 ;280
+ dw 035a5,035b3,035c0,035ce,035dc,035e9,035f7,03604 ;288
+ dw 03612,0361f,0362c,0363a,03647,03654,03662,0366f ;290
+ dw 0367c,03689,03696,036a4,036b1,036be,036cb,036d8 ;298
+ dw 036e5,036f1,036fe,0370b,03718,03725,03731,0373e ;2a0
+ dw 0374b,03757,03764,03771,0377d,0378a,03796,037a3 ;2a8
+ dw 037af,037bb,037c8,037d4,037e0,037ed,037f9,03805 ;2b0
+ dw 03811,0381d,03829,03835,03841,0384d,03859,03865 ;2b8
+ dw 03871,0387d,03889,03894,038a0,038ac,038b7,038c3 ;2c0
+ dw 038cf,038da,038e6,038f1,038fd,03908,03913,0391f ;2c8
+ dw 0392a,03935,03941,0394c,03957,03962,0396d,03978 ;2d0
+ dw 03983,0398e,03999,039a4,039af,039ba,039c5,039d0 ;2d8
+ dw 039da,039e5,039f0,039fb,03a05,03a10,03a1a,03a25 ;2e0
+ dw 03a2f,03a3a,03a44,03a4f,03a59,03a63,03a6d,03a78 ;2e0
+ dw 03a82,03a8c,03a96,03aa0,03aaa,03ab4,03abe,03ac8 ;2f0
+ dw 03ad2,03adc,03ae6,03af0,03afa,03b03,03b0d,03b17 ;2f8
+ dw 03b20,03b2a,03b34,03b3d,03b47,03b50,03b59,03b63 ;300
+ dw 03b6c,03b75,03b7f,03b88,03b91,03b9a,03ba3,03bad ;308
+ dw 03bb6,03bbf,03bc8,03bd1,03bda,03be2,03beb,03bf4 ;310
+ dw 03bfd,03c06,03c0e,03c17,03c20,03c28,03c31,03c39 ;318
+ dw 03c42,03c4a,03c53,03c5b,03c63,03c6c,03c74,03c7c ;320
+ dw 03c84,03c8c,03c95,03c9d,03ca5,03cad,03cb5,03cbd ;328
+ dw 03cc5,03ccc,03cd4,03cdc,03ce4,03cec,03cf3,03cfb ;320
+ dw 03d02,03d0a,03d12,03d19,03d21,03d28,03d2f,03d37 ;338
+ dw 03d3e,03d45,03d4d,03d54,03d5b,03d62,03d69,03d70 ;340
+ dw 03d77,03d7e,03d85,03d8c,03d93,03d9a,03da1,03da7 ;348
+ dw 03dae,03db5,03dbb,03dc2,03dc9,03dcf,03dd6,03ddc ;350
+ dw 03de2,03de9,03def,03df5,03dfc,03e02,03e08,03e0e ;358
+ dw 03e14,03e1b,03e21,03e27,03e2d,03e33,03e38,03e3e ;360
+ dw 03e44,03e4a,03e50,03e55,03e5b,03e61,03e66,03e6c ;368
+ dw 03e71,03e77,03e7c,03e82,03e87,03e8c,03e92,03e97 ;370
+ dw 03e9c,03ea1,03ea7,03eac,03eb1,03eb6,03ebb,03ec0 ;378
+ dw 03ec5,03eca,03ece,03ed3,03ed8,03edd,03ee1,03ee6 ;380
+ dw 03eeb,03eef,03ef4,03ef8,03efd,03f01,03f06,03f0a ;388
+ dw 03f0e,03f13,03f17,03f1b,03f1f,03f23,03f27,03f2b ;390
+ dw 03f2f,03f33,03f37,03f3b,03f3f,03f43,03f47,03f4a ;398
+ dw 03f4e,03f52,03f55,03f59,03f5d,03f60,03f64,03f67 ;3a0
+ dw 03f6a,03f6e,03f71,03f74,03f78,03f7b,03f7e,03f81 ;3a8
+ dw 03f84,03f87,03f8a,03f8d,03f90,03f93,03f96,03f99 ;3b0
+ dw 03f9c,03f9e,03fa1,03fa4,03fa6,03fa9,03fac,03fae ;3b8
+ dw 03fb1,03fb3,03fb5,03fb8,03fba,03fbc,03fbf,03fc1 ;3c0
+ dw 03fc3,03fc5,03fc7,03fc9,03fcb,03fcd,03fcf,03fd1 ;3c8
+ dw 03fd3,03fd5,03fd7,03fd8,03fda,03fdc,03fde,03fdf ;3d0
+ dw 03fe1,03fe2,03fe4,03fe5,03fe7,03fe8,03fe9,03feb ;3d8
+ dw 03fec,03fed,03fee,03fef,03ff0,03ff1,03ff2,03ff3 ;3e0
+ dw 03ff4,03ff5,03ff6,03ff7,03ff8,03ff9,03ff9,03ffa ;3e8
+ dw 03ffb,03ffb,03ffc,03ffc,03ffd,03ffd,03ffe,03ffe ;3f0
+ dw 03ffe,03fff,03fff,03fff,03fff,03fff,03fff,03fff ;3f8
+
+ dw 03fff,03fff,03fff,03fff,03fff,03fff,03fff,03fff ;400
+ dw 03ffe,03ffe,03ffe,03ffd,03ffd,03ffc,03ffc,03ffb ;408
+ dw 03ffb,03ffa,03ff9,03ff9,03ff8,03ff7,03ff6,03ff5 ;410
+ dw 03ff4,03ff3,03ff2,03ff1,03ff0,03fef,03fee,03fed ;418
+ dw 03fec,03feb,03fe9,03fe8,03fe7,03fe5,03fe4,03fe2 ;420
+ dw 03fe1,03fdf,03fde,03fdc,03fda,03fd8,03fd7,03fd5 ;428
+ dw 03fd3,03fd1,03fcf,03fcd,03fcb,03fc9,03fc7,03fc5 ;430
+ dw 03fc3,03fc1,03fbf,03fbc,03fba,03fb8,03fb5,03fb3 ;438
+ dw 03fb1,03fae,03fac,03fa9,03fa6,03fa4,03fa1,03f9e ;440
+ dw 03f9c,03f99,03f96,03f93,03f90,03f8d,03f8a,03f87 ;448
+ dw 03f84,03f81,03f7e,03f7b,03f78,03f74,03f71,03f6e ;450
+ dw 03f6a,03f67,03f64,03f60,03f5d,03f59,03f55,03f52 ;458
+ dw 03f4e,03f4a,03f47,03f43,03f3f,03f3b,03f37,03f33 ;460
+ dw 03f2f,03f2b,03f27,03f23,03f1f,03f1b,03f17,03f13 ;468
+ dw 03f0e,03f0a,03f06,03f01,03efd,03ef8,03ef4,03eef ;470
+ dw 03eeb,03ee6,03ee1,03edd,03ed8,03ed3,03ece,03eca ;478
+ dw 03ec5,03ec0,03ebb,03eb6,03eb1,03eac,03ea7,03ea1 ;480
+ dw 03e9c,03e97,03e92,03e8c,03e87,03e82,03e7c,03e77 ;488
+ dw 03e71,03e6c,03e66,03e61,03e5b,03e55,03e50,03e4a ;490
+ dw 03e44,03e3e,03e38,03e33,03e2d,03e27,03e21,03e1b ;498
+ dw 03e14,03e0e,03e08,03e02,03dfc,03df5,03def,03de9 ;4a0
+ dw 03de2,03ddc,03dd6,03dcf,03dc9,03dc2,03dbb,03db5 ;4a8
+ dw 03dae,03da7,03da1,03d9a,03d93,03d8c,03d85,03d7e ;4b0
+ dw 03d77,03d70,03d69,03d62,03d5b,03d54,03d4d,03d45 ;4b8
+ dw 03d3e,03d37,03d2f,03d28,03d21,03d19,03d12,03d0a ;4c0
+ dw 03d02,03cfb,03cf3,03cec,03ce4,03cdc,03cd4,03ccc ;4c8
+ dw 03cc5,03cbd,03cb5,03cad,03ca5,03c9d,03c95,03c8c ;4d0
+ dw 03c84,03c7c,03c74,03c6c,03c63,03c5b,03c53,03c4a ;4d8
+ dw 03c42,03c39,03c31,03c28,03c20,03c17,03c0e,03c06 ;4e0
+ dw 03bfd,03bf4,03beb,03be2,03bda,03bd1,03bc8,03bbf ;4e8
+ dw 03bb6,03bad,03ba3,03b9a,03b91,03b88,03b7f,03b75 ;4f0
+ dw 03b6c,03b63,03b59,03b50,03b47,03b3d,03b34,03b2a ;4f8
+ dw 03b20,03b17,03b0d,03b03,03afa,03af0,03ae6,03adc ;500
+ dw 03ad2,03ac8,03abe,03ab4,03aaa,03aa0,03a96,03a8c ;508
+ dw 03a82,03a78,03a6d,03a63,03a59,03a4f,03a44,03a3a ;510
+ dw 03a2f,03a25,03a1a,03a10,03a05,039fb,039f0,039e5 ;518
+ dw 039da,039d0,039c5,039ba,039af,039a4,03999,0398e ;520
+ dw 03983,03978,0396d,03962,03957,0394c,03941,03935 ;528
+ dw 0392a,0391f,03913,03908,038fd,038f1,038e6,038da ;530
+ dw 038cf,038c3,038b7,038ac,038a0,03894,03889,0387d ;538
+ dw 03871,03865,03859,0384d,03841,03835,03829,0381d ;540
+ dw 03811,03805,037f9,037ed,037e0,037d4,037c8,037bb ;548
+ dw 037af,037a3,03796,0378a,0377d,03771,03764,03757 ;550
+ dw 0374b,0373e,03731,03725,03718,0370b,036fe,036f1 ;558
+ dw 036e5,036d8,036cb,036be,036b1,036a4,03696,03689 ;560
+ dw 0367c,0366f,03662,03654,03647,0363a,0362c,0361f ;568
+ dw 03612,03604,035f7,035e9,035dc,035ce,035c0,035b3 ;570
+ dw 035a5,03597,03589,0357c,0356e,03560,03552,03544 ;578
+ dw 03536,03528,0351a,0350c,034fe,034f0,034e2,034d4 ;580
+ dw 034c6,034b7,034a9,0349b,0348c,0347e,03470,03461 ;588
+ dw 03453,03444,03436,03427,03419,0340a,033fb,033ed ;590
+ dw 033de,033cf,033c1,033b2,033a3,03394,03385,03376 ;598
+ dw 03367,03358,03349,0333a,0332b,0331c,0330d,032fe ;5a0
+ dw 032ee,032df,032d0,032c1,032b1,032a2,03293,03283 ;5a8
+ dw 03274,03264,03255,03245,03236,03226,03216,03207 ;5b0
+ dw 031f7,031e7,031d8,031c8,031b8,031a8,03198,03188 ;5b8
+ dw 03179,03169,03159,03149,03138,03128,03118,03108 ;5c0
+ dw 030f8,030e8,030d8,030c7,030b7,030a7,03096,03086 ;5c8
+ dw 03076,03065,03055,03044,03034,03023,03013,03002 ;5d0
+ dw 02ff1,02fe1,02fd0,02fbf,02faf,02f9e,02f8d,02f7c ;5d8
+ dw 02f6b,02f5a,02f49,02f38,02f27,02f16,02f05,02ef4 ;5e0
+ dw 02ee3,02ed2,02ec1,02eb0,02e9f,02e8d,02e7c,02e6b ;5e8
+ dw 02e5a,02e48,02e37,02e25,02e14,02e03,02df1,02de0 ;5f0
+ dw 02dce,02dbc,02dab,02d99,02d88,02d76,02d64,02d52 ;5f8
+ dw 02d41,02d2f,02d1d,02d0b,02cf9,02ce8,02cd6,02cc4 ;600
+ dw 02cb2,02ca0,02c8e,02c7c,02c6a,02c57,02c45,02c33 ;608
+ dw 02c21,02c0f,02bfc,02bea,02bd8,02bc6,02bb3,02ba1 ;610
+ dw 02b8e,02b7c,02b6a,02b57,02b45,02b32,02b20,02b0d ;618
+ dw 02afa,02ae8,02ad5,02ac2,02ab0,02a9d,02a8a,02a77 ;620
+ dw 02a65,02a52,02a3f,02a2c,02a19,02a06,029f3,029e0 ;628
+ dw 029cd,029ba,029a7,02994,02981,0296e,0295a,02947 ;630
+ dw 02934,02921,0290e,028fa,028e7,028d4,028c0,028ad ;638
+ dw 02899,02886,02872,0285f,0284b,02838,02824,02811 ;640
+ dw 027fd,027ea,027d6,027c2,027af,0279b,02787,02773 ;648
+ dw 0275f,0274c,02738,02724,02710,026fc,026e8,026d4 ;650
+ dw 026c0,026ac,02698,02684,02670,0265c,02648,02634 ;658
+ dw 0261f,0260b,025f7,025e3,025cf,025ba,025a6,02592 ;660
+ dw 0257d,02569,02554,02540,0252c,02517,02503,024ee ;668
+ dw 024da,024c5,024b0,0249c,02487,02473,0245e,02449 ;670
+ dw 02434,02420,0240b,023f6,023e1,023cd,023b8,023a3 ;678
+ dw 0238e,02379,02364,0234f,0233a,02325,02310,022fb ;680
+ dw 022e6,022d1,022bc,022a7,02292,0227d,02267,02252 ;688
+ dw 0223d,02228,02212,021fd,021e8,021d2,021bd,021a8 ;690
+ dw 02192,0217d,02168,02152,0213d,02127,02112,020fc ;698
+ dw 020e7,020d1,020bb,020a6,02090,0207b,02065,0204f ;6a0
+ dw 02039,02024,0200e,01ff8,01fe2,01fcd,01fb7,01fa1 ;6a8
+ dw 01f8b,01f75,01f5f,01f49,01f34,01f1e,01f08,01ef2 ;6b0
+ dw 01edc,01ec6,01eb0,01e99,01e83,01e6d,01e57,01e41 ;6b8
+ dw 01e2b,01e15,01dfe,01de8,01dd2,01dbc,01da6,01d8f ;6c0
+ dw 01d79,01d63,01d4c,01d36,01d20,01d09,01cf3,01cdc ;6c8
+ dw 01cc6,01caf,01c99,01c83,01c6c,01c55,01c3f,01c28 ;6d0
+ dw 01c12,01bfb,01be5,01bce,01bb7,01ba1,01b8a,01b73 ;6d8
+ dw 01b5d,01b46,01b2f,01b18,01b02,01aeb,01ad4,01abd ;6e0
+ dw 01aa6,01a8f,01a79,01a62,01a4b,01a34,01a1d,01a06 ;6e8
+ dw 019ef,019d8,019c1,019aa,01993,0197c,01965,0194e ;6f0
+ dw 01937,01920,01908,018f1,018da,018c3,018ac,01895 ;6f8
+ dw 0187d,01866,0184f,01838,01820,01809,017f2,017da ;700
+ dw 017c3,017ac,01794,0177d,01766,0174e,01737,0171f ;708
+ dw 01708,016f1,016d9,016c2,016aa,01693,0167b,01664 ;710
+ dw 0164c,01634,0161d,01605,015ee,015d6,015be,015a7 ;718
+ dw 0158f,01577,01560,01548,01530,01519,01501,014e9 ;720
+ dw 014d1,014ba,014a2,0148a,01472,0145a,01443,0142b ;728
+ dw 01413,013fb,013e3,013cb,013b3,0139b,01383,0136c ;730
+ dw 01354,0133c,01324,0130c,012f4,012dc,012c4,012ac ;738
+ dw 01294,0127b,01263,0124b,01233,0121b,01203,011eb ;740
+ dw 011d3,011bb,011a2,0118a,01172,0115a,01142,0112a ;748
+ dw 01111,010f9,010e1,010c9,010b0,01098,01080,01068 ;750
+ dw 0104f,01037,0101f,01006,00fee,00fd6,00fbd,00fa5 ;758
+ dw 00f8c,00f74,00f5c,00f43,00f2b,00f12,00efa,00ee2 ;760
+ dw 00ec9,00eb1,00e98,00e80,00e67,00e4f,00e36,00e1e ;768
+ dw 00e05,00ded,00dd4,00dbc,00da3,00d8b,00d72,00d59 ;770
+ dw 00d41,00d28,00d10,00cf7,00cde,00cc6,00cad,00c94 ;778
+ dw 00c7c,00c63,00c4b,00c32,00c19,00c01,00be8,00bcf ;780
+ dw 00bb6,00b9e,00b85,00b6c,00b54,00b3b,00b22,00b09 ;788
+ dw 00af1,00ad8,00abf,00aa6,00a8d,00a75,00a5c,00a43 ;790
+ dw 00a2a,00a11,009f9,009e0,009c7,009ae,00995,0097c ;798
+ dw 00964,0094b,00932,00919,00900,008e7,008ce,008b5 ;7a0
+ dw 0089c,00884,0086b,00852,00839,00820,00807,007ee ;7a8
+ dw 007d5,007bc,007a3,0078a,00771,00758,0073f,00726 ;7b0
+ dw 0070d,006f4,006db,006c2,006a9,00690,00677,0065e ;7b8
+ dw 00645,0062c,00613,005fa,005e1,005c8,005af,00596 ;7c0
+ dw 0057d,00564,0054b,00532,00519,00500,004e7,004ce ;7c8
+ dw 004b5,0049c,00483,0046a,00450,00437,0041e,00405 ;7d0
+ dw 003ec,003d3,003ba,003a1,00388,0036f,00356,0033d ;7d8
+ dw 00323,0030a,002f1,002d8,002bf,002a6,0028d,00274 ;7e0
+ dw 0025b,00241,00228,0020f,001f6,001dd,001c4,001ab ;7e8
+ dw 00192,00178,0015f,00146,0012d,00114,000fb,000e2 ;7f0
+ dw 000c9,000af,00096,0007d,00064,0004b,00032,00019 ;7f8
+
+ dw 00000,0ffe7,0ffce,0ffb5,0ff9c,0ff83,0ff6a,0ff51 ;800
+ dw 0ff37,0ff1e,0ff05,0feec,0fed3,0feba,0fea1,0fe88 ;808
+ dw 0fe6e,0fe55,0fe3c,0fe23,0fe0a,0fdf1,0fdd8,0fdbf ;810
+ dw 0fda5,0fd8c,0fd73,0fd5a,0fd41,0fd28,0fd0f,0fcf6 ;818
+ dw 0fcdd,0fcc3,0fcaa,0fc91,0fc78,0fc5f,0fc46,0fc2d ;820
+ dw 0fc14,0fbfb,0fbe2,0fbc9,0fbaf,0fb96,0fb7d,0fb64 ;828
+ dw 0fb4b,0fb32,0fb19,0fb00,0fae7,0face,0fab5,0fa9c ;830
+ dw 0fa83,0fa6a,0fa51,0fa38,0fa1f,0fa06,0f9ed,0f9d4 ;838
+ dw 0f9bb,0f9a2,0f989,0f970,0f957,0f93e,0f925,0f90c ;840
+ dw 0f8f3,0f8da,0f8c1,0f8a8,0f88f,0f876,0f85d,0f844 ;848
+ dw 0f82b,0f812,0f7f9,0f7e0,0f7c7,0f7ae,0f795,0f77c ;850
+ dw 0f764,0f74b,0f732,0f719,0f700,0f6e7,0f6ce,0f6b5 ;858
+ dw 0f69c,0f684,0f66b,0f652,0f639,0f620,0f607,0f5ef ;860
+ dw 0f5d6,0f5bd,0f5a4,0f58b,0f573,0f55a,0f541,0f528 ;868
+ dw 0f50f,0f4f7,0f4de,0f4c5,0f4ac,0f494,0f47b,0f462 ;870
+ dw 0f44a,0f431,0f418,0f3ff,0f3e7,0f3ce,0f3b5,0f39d ;878
+ dw 0f384,0f36b,0f353,0f33a,0f322,0f309,0f2f0,0f2d8 ;880
+ dw 0f2bf,0f2a7,0f28e,0f275,0f25d,0f244,0f22c,0f213 ;888
+ dw 0f1fb,0f1e2,0f1ca,0f1b1,0f199,0f180,0f168,0f14f ;890
+ dw 0f137,0f11e,0f106,0f0ee,0f0d5,0f0bd,0f0a4,0f08c ;898
+ dw 0f074,0f05b,0f043,0f02a,0f012,0effa,0efe1,0efc9 ;8a0
+ dw 0efb1,0ef98,0ef80,0ef68,0ef50,0ef37,0ef1f,0ef07 ;8a8
+ dw 0eeef,0eed6,0eebe,0eea6,0ee8e,0ee76,0ee5e,0ee45 ;8b0
+ dw 0ee2d,0ee15,0edfd,0ede5,0edcd,0edb5,0ed9d,0ed85 ;8b8
+ dw 0ed6c,0ed54,0ed3c,0ed24,0ed0c,0ecf4,0ecdc,0ecc4 ;8c0
+ dw 0ecac,0ec94,0ec7d,0ec65,0ec4d,0ec35,0ec1d,0ec05 ;8c8
+ dw 0ebed,0ebd5,0ebbd,0eba6,0eb8e,0eb76,0eb5e,0eb46 ;8d0
+ dw 0eb2f,0eb17,0eaff,0eae7,0ead0,0eab8,0eaa0,0ea89 ;8d8
+ dw 0ea71,0ea59,0ea42,0ea2a,0ea12,0e9fb,0e9e3,0e9cc ;8e0
+ dw 0e9b4,0e99c,0e985,0e96d,0e956,0e93e,0e927,0e90f ;8e8
+ dw 0e8f8,0e8e1,0e8c9,0e8b2,0e89a,0e883,0e86c,0e854 ;8f0
+ dw 0e83d,0e826,0e80e,0e7f7,0e7e0,0e7c8,0e7b1,0e79a ;8f8
+ dw 0e783,0e76b,0e754,0e73d,0e726,0e70f,0e6f8,0e6e0 ;900
+ dw 0e6c9,0e6b2,0e69b,0e684,0e66d,0e656,0e63f,0e628 ;908
+ dw 0e611,0e5fa,0e5e3,0e5cc,0e5b5,0e59e,0e587,0e571 ;910
+ dw 0e55a,0e543,0e52c,0e515,0e4fe,0e4e8,0e4d1,0e4ba ;918
+ dw 0e4a3,0e48d,0e476,0e45f,0e449,0e432,0e41b,0e405 ;920
+ dw 0e3ee,0e3d8,0e3c1,0e3ab,0e394,0e37d,0e367,0e351 ;928
+ dw 0e33a,0e324,0e30d,0e2f7,0e2e0,0e2ca,0e2b4,0e29d ;930
+ dw 0e287,0e271,0e25a,0e244,0e22e,0e218,0e201,0e1eb ;938
+ dw 0e1d5,0e1bf,0e1a9,0e193,0e17d,0e167,0e150,0e13a ;940
+ dw 0e124,0e10e,0e0f8,0e0e2,0e0cc,0e0b7,0e0a1,0e08b ;948
+ dw 0e075,0e05f,0e049,0e033,0e01e,0e008,0dff2,0dfdc ;950
+ dw 0dfc7,0dfb1,0df9b,0df85,0df70,0df5a,0df45,0df2f ;958
+ dw 0df19,0df04,0deee,0ded9,0dec3,0deae,0de98,0de83 ;960
+ dw 0de6e,0de58,0de43,0de2e,0de18,0de03,0ddee,0ddd8 ;968
+ dw 0ddc3,0ddae,0dd99,0dd83,0dd6e,0dd59,0dd44,0dd2f ;970
+ dw 0dd1a,0dd05,0dcf0,0dcdb,0dcc6,0dcb1,0dc9c,0dc87 ;978
+ dw 0dc72,0dc5d,0dc48,0dc33,0dc1f,0dc0a,0dbf5,0dbe0 ;980
+ dw 0dbcc,0dbb7,0dba2,0db8d,0db79,0db64,0db50,0db3b ;988
+ dw 0db26,0db12,0dafd,0dae9,0dad4,0dac0,0daac,0da97 ;990
+ dw 0da83,0da6e,0da5a,0da46,0da31,0da1d,0da09,0d9f5 ;998
+ dw 0d9e1,0d9cc,0d9b8,0d9a4,0d990,0d97c,0d968,0d954 ;9a0
+ dw 0d940,0d92c,0d918,0d904,0d8f0,0d8dc,0d8c8,0d8b4 ;9a8
+ dw 0d8a1,0d88d,0d879,0d865,0d851,0d83e,0d82a,0d816 ;9b0
+ dw 0d803,0d7ef,0d7dc,0d7c8,0d7b5,0d7a1,0d78d,0d77a ;9b8
+ dw 0d767,0d753,0d740,0d72c,0d719,0d706,0d6f2,0d6df ;9c0
+ dw 0d6cc,0d6b9,0d6a6,0d692,0d67f,0d66c,0d659,0d646 ;9c8
+ dw 0d633,0d620,0d60d,0d5fa,0d5e7,0d5d4,0d5c1,0d5ae ;9d0
+ dw 0d59b,0d589,0d576,0d563,0d550,0d53e,0d52b,0d518 ;9d8
+ dw 0d506,0d4f3,0d4e0,0d4ce,0d4bb,0d4a9,0d496,0d484 ;9e0
+ dw 0d472,0d45f,0d44d,0d43a,0d428,0d416,0d404,0d3f1 ;9e8
+ dw 0d3df,0d3cd,0d3bb,0d3a9,0d396,0d384,0d372,0d360 ;9f0
+ dw 0d34e,0d33c,0d32a,0d318,0d307,0d2f5,0d2e3,0d2d1 ;9f8
+ dw 0d2bf,0d2ad,0d29c,0d28a,0d278,0d267,0d255,0d244 ;a00
+ dw 0d232,0d220,0d20f,0d1fd,0d1ec,0d1db,0d1c9,0d1b8 ;a08
+ dw 0d1a6,0d195,0d184,0d173,0d161,0d150,0d13f,0d12e ;a10
+ dw 0d11d,0d10c,0d0fb,0d0e9,0d0d8,0d0c8,0d0b7,0d0a6 ;a18
+ dw 0d095,0d084,0d073,0d062,0d051,0d041,0d030,0d01f ;a20
+ dw 0d00f,0cffe,0cfed,0cfdd,0cfcc,0cfbc,0cfab,0cf9b ;a28
+ dw 0cf8a,0cf7a,0cf6a,0cf59,0cf49,0cf39,0cf28,0cf18 ;a30
+ dw 0cf08,0cef8,0cee8,0ced8,0cec8,0ceb7,0cea7,0ce97 ;a38
+ dw 0ce87,0ce78,0ce68,0ce58,0ce48,0ce38,0ce28,0ce19 ;a40
+ dw 0ce09,0cdf9,0cdea,0cdda,0cdca,0cdbb,0cdab,0cd9c ;a48
+ dw 0cd8c,0cd7d,0cd6d,0cd5e,0cd4f,0cd3f,0cd30,0cd21 ;a50
+ dw 0cd12,0cd02,0ccf3,0cce4,0ccd5,0ccc6,0ccb7,0cca8 ;a58
+ dw 0cc99,0cc8a,0cc7b,0cc6c,0cc5d,0cc4e,0cc3f,0cc31 ;a60
+ dw 0cc22,0cc13,0cc05,0cbf6,0cbe7,0cbd9,0cbca,0cbbc ;a68
+ dw 0cbad,0cb9f,0cb90,0cb82,0cb74,0cb65,0cb57,0cb49 ;a70
+ dw 0cb3a,0cb2c,0cb1e,0cb10,0cb02,0caf4,0cae6,0cad8 ;a78
+ dw 0caca,0cabc,0caae,0caa0,0ca92,0ca84,0ca76,0ca69 ;a80
+ dw 0ca5b,0ca4d,0ca40,0ca32,0ca24,0ca17,0ca09,0c9fc ;a88
+ dw 0c9ee,0c9e1,0c9d4,0c9c6,0c9b9,0c9ac,0c99e,0c991 ;a90
+ dw 0c984,0c977,0c96a,0c95c,0c94f,0c942,0c935,0c928 ;a98
+ dw 0c91b,0c90f,0c902,0c8f5,0c8e8,0c8db,0c8cf,0c8c2 ;aa0
+ dw 0c8b5,0c8a9,0c89c,0c88f,0c883,0c876,0c86a,0c85d ;aa8
+ dw 0c851,0c845,0c838,0c82c,0c820,0c813,0c807,0c7fb ;ab0
+ dw 0c7ef,0c7e3,0c7d7,0c7cb,0c7bf,0c7b3,0c7a7,0c79b ;ab8
+ dw 0c78f,0c783,0c777,0c76c,0c760,0c754,0c749,0c73d ;ac0
+ dw 0c731,0c726,0c71a,0c70f,0c703,0c6f8,0c6ed,0c6e1 ;ac8
+ dw 0c6d6,0c6cb,0c6bf,0c6b4,0c6a9,0c69e,0c693,0c688 ;ad0
+ dw 0c67d,0c672,0c667,0c65c,0c651,0c646,0c63b,0c630 ;ad8
+ dw 0c626,0c61b,0c610,0c605,0c5fb,0c5f0,0c5e6,0c5db ;ae0
+ dw 0c5d1,0c5c6,0c5bc,0c5b1,0c5a7,0c59d,0c593,0c588 ;ae8
+ dw 0c57e,0c574,0c56a,0c560,0c556,0c54c,0c542,0c538 ;af0
+ dw 0c52e,0c524,0c51a,0c510,0c506,0c4fd,0c4f3,0c4e9 ;af8
+ dw 0c4e0,0c4d6,0c4cc,0c4c3,0c4b9,0c4b0,0c4a7,0c49d ;b00
+ dw 0c494,0c48b,0c481,0c478,0c46f,0c466,0c45d,0c453 ;b08
+ dw 0c44a,0c441,0c438,0c42f,0c426,0c41e,0c415,0c40c ;b10
+ dw 0c403,0c3fa,0c3f2,0c3e9,0c3e0,0c3d8,0c3cf,0c3c7 ;b18
+ dw 0c3be,0c3b6,0c3ad,0c3a5,0c39d,0c394,0c38c,0c384 ;b20
+ dw 0c37c,0c374,0c36b,0c363,0c35b,0c353,0c34b,0c343 ;b28
+ dw 0c33b,0c334,0c32c,0c324,0c31c,0c314,0c30d,0c305 ;b30
+ dw 0c2fe,0c2f6,0c2ee,0c2e7,0c2df,0c2d8,0c2d1,0c2c9 ;b38
+ dw 0c2c2,0c2bb,0c2b3,0c2ac,0c2a5,0c29e,0c297,0c290 ;b40
+ dw 0c289,0c282,0c27b,0c274,0c26d,0c266,0c25f,0c259 ;b48
+ dw 0c252,0c24b,0c245,0c23e,0c237,0c231,0c22a,0c224 ;b50
+ dw 0c21e,0c217,0c211,0c20b,0c204,0c1fe,0c1f8,0c1f2 ;b58
+ dw 0c1ec,0c1e5,0c1df,0c1d9,0c1d3,0c1cd,0c1c8,0c1c2 ;b60
+ dw 0c1bc,0c1b6,0c1b0,0c1ab,0c1a5,0c19f,0c19a,0c194 ;b68
+ dw 0c18f,0c189,0c184,0c17e,0c179,0c174,0c16e,0c169 ;b70
+ dw 0c164,0c15f,0c159,0c154,0c14f,0c14a,0c145,0c140 ;b78
+ dw 0c13b,0c136,0c132,0c12d,0c128,0c123,0c11f,0c11a ;b80
+ dw 0c115,0c111,0c10c,0c108,0c103,0c0ff,0c0fa,0c0f6 ;b88
+ dw 0c0f2,0c0ed,0c0e9,0c0e5,0c0e1,0c0dd,0c0d9,0c0d5 ;b90
+ dw 0c0d1,0c0cd,0c0c9,0c0c5,0c0c1,0c0bd,0c0b9,0c0b6 ;b98
+ dw 0c0b2,0c0ae,0c0ab,0c0a7,0c0a3,0c0a0,0c09c,0c099 ;ba0
+ dw 0c096,0c092,0c08f,0c08c,0c088,0c085,0c082,0c07f ;ba8
+ dw 0c07c,0c079,0c076,0c073,0c070,0c06d,0c06a,0c067 ;bb0
+ dw 0c064,0c062,0c05f,0c05c,0c05a,0c057,0c054,0c052 ;bb8
+ dw 0c04f,0c04d,0c04b,0c048,0c046,0c044,0c041,0c03f ;bc0
+ dw 0c03d,0c03b,0c039,0c037,0c035,0c033,0c031,0c02f ;bc8
+ dw 0c02d,0c02b,0c029,0c028,0c026,0c024,0c022,0c021 ;bd0
+ dw 0c01f,0c01e,0c01c,0c01b,0c019,0c018,0c017,0c015 ;bd8
+ dw 0c014,0c013,0c012,0c011,0c010,0c00f,0c00e,0c00d ;be0
+ dw 0c00c,0c00b,0c00a,0c009,0c008,0c007,0c007,0c006 ;be8
+ dw 0c005,0c005,0c004,0c004,0c003,0c003,0c002,0c002 ;bf0
+ dw 0c002,0c001,0c001,0c001,0c001,0c001,0c001,0c001 ;bf8
+
+ dw 0c001,0c001,0c001,0c001,0c001,0c001,0c001,0c001 ;c00
+ dw 0c002,0c002,0c002,0c003,0c003,0c004,0c004,0c005 ;c08
+ dw 0c005,0c006,0c007,0c007,0c008,0c009,0c00a,0c00b ;c10
+ dw 0c00c,0c00d,0c00e,0c00f,0c010,0c011,0c012,0c013 ;c18
+ dw 0c014,0c015,0c017,0c018,0c019,0c01b,0c01c,0c01e ;c20
+ dw 0c01f,0c021,0c022,0c024,0c026,0c028,0c029,0c02b ;c28
+ dw 0c02d,0c02f,0c031,0c033,0c035,0c037,0c039,0c03b ;c30
+ dw 0c03d,0c03f,0c041,0c044,0c046,0c048,0c04b,0c04d ;c38
+ dw 0c04f,0c052,0c054,0c057,0c05a,0c05c,0c05f,0c062 ;c40
+ dw 0c064,0c067,0c06a,0c06d,0c070,0c073,0c076,0c079 ;c48
+ dw 0c07c,0c07f,0c082,0c085,0c088,0c08c,0c08f,0c092 ;c50
+ dw 0c096,0c099,0c09c,0c0a0,0c0a3,0c0a7,0c0ab,0c0ae ;c58
+ dw 0c0b2,0c0b6,0c0b9,0c0bd,0c0c1,0c0c5,0c0c9,0c0cd ;c60
+ dw 0c0d1,0c0d5,0c0d9,0c0dd,0c0e1,0c0e5,0c0e9,0c0ed ;c68
+ dw 0c0f2,0c0f6,0c0fa,0c0ff,0c103,0c108,0c10c,0c111 ;c70
+ dw 0c115,0c11a,0c11f,0c123,0c128,0c12d,0c132,0c136 ;c78
+ dw 0c13b,0c140,0c145,0c14a,0c14f,0c154,0c159,0c15f ;c80
+ dw 0c164,0c169,0c16e,0c174,0c179,0c17e,0c184,0c189 ;c88
+ dw 0c18f,0c194,0c19a,0c19f,0c1a5,0c1ab,0c1b0,0c1b6 ;c90
+ dw 0c1bc,0c1c2,0c1c8,0c1cd,0c1d3,0c1d9,0c1df,0c1e5 ;c98
+ dw 0c1ec,0c1f2,0c1f8,0c1fe,0c204,0c20b,0c211,0c217 ;ca0
+ dw 0c21e,0c224,0c22a,0c231,0c237,0c23e,0c245,0c24b ;ca8
+ dw 0c252,0c259,0c25f,0c266,0c26d,0c274,0c27b,0c282 ;cb0
+ dw 0c289,0c290,0c297,0c29e,0c2a5,0c2ac,0c2b3,0c2bb ;cb8
+ dw 0c2c2,0c2c9,0c2d1,0c2d8,0c2df,0c2e7,0c2ee,0c2f6 ;cc0
+ dw 0c2fe,0c305,0c30d,0c314,0c31c,0c324,0c32c,0c334 ;cc8
+ dw 0c33b,0c343,0c34b,0c353,0c35b,0c363,0c36b,0c374 ;cd0
+ dw 0c37c,0c384,0c38c,0c394,0c39d,0c3a5,0c3ad,0c3b6 ;cd8
+ dw 0c3be,0c3c7,0c3cf,0c3d8,0c3e0,0c3e9,0c3f2,0c3fa ;ce0
+ dw 0c403,0c40c,0c415,0c41e,0c426,0c42f,0c438,0c441 ;ce8
+ dw 0c44a,0c453,0c45d,0c466,0c46f,0c478,0c481,0c48b ;cf0
+ dw 0c494,0c49d,0c4a7,0c4b0,0c4b9,0c4c3,0c4cc,0c4d6 ;cf8
+ dw 0c4e0,0c4e9,0c4f3,0c4fd,0c506,0c510,0c51a,0c524 ;d00
+ dw 0c52e,0c538,0c542,0c54c,0c556,0c560,0c56a,0c574 ;d08
+ dw 0c57e,0c588,0c593,0c59d,0c5a7,0c5b1,0c5bc,0c5c6 ;d10
+ dw 0c5d1,0c5db,0c5e6,0c5f0,0c5fb,0c605,0c610,0c61b ;d18
+ dw 0c626,0c630,0c63b,0c646,0c651,0c65c,0c667,0c672 ;d20
+ dw 0c67d,0c688,0c693,0c69e,0c6a9,0c6b4,0c6bf,0c6cb ;d28
+ dw 0c6d6,0c6e1,0c6ed,0c6f8,0c703,0c70f,0c71a,0c726 ;d30
+ dw 0c731,0c73d,0c749,0c754,0c760,0c76c,0c777,0c783 ;d38
+ dw 0c78f,0c79b,0c7a7,0c7b3,0c7bf,0c7cb,0c7d7,0c7e3 ;d40
+ dw 0c7ef,0c7fb,0c807,0c813,0c820,0c82c,0c838,0c845 ;d48
+ dw 0c851,0c85d,0c86a,0c876,0c883,0c88f,0c89c,0c8a9 ;d50
+ dw 0c8b5,0c8c2,0c8cf,0c8db,0c8e8,0c8f5,0c902,0c90f ;d58
+ dw 0c91b,0c928,0c935,0c942,0c94f,0c95c,0c96a,0c977 ;d60
+ dw 0c984,0c991,0c99e,0c9ac,0c9b9,0c9c6,0c9d4,0c9e1 ;d68
+ dw 0c9ee,0c9fc,0ca09,0ca17,0ca24,0ca32,0ca40,0ca4d ;d70
+ dw 0ca5b,0ca69,0ca77,0ca84,0ca92,0caa0,0caae,0cabc ;d78
+ dw 0caca,0cad8,0cae6,0caf4,0cb02,0cb10,0cb1e,0cb2c ;d80
+ dw 0cb3a,0cb49,0cb57,0cb65,0cb74,0cb82,0cb90,0cb9f ;d88
+ dw 0cbad,0cbbc,0cbca,0cbd9,0cbe7,0cbf6,0cc05,0cc13 ;d90
+ dw 0cc22,0cc31,0cc3f,0cc4e,0cc5d,0cc6c,0cc7b,0cc8a ;d98
+ dw 0cc99,0cca8,0ccb7,0ccc6,0ccd5,0cce4,0ccf3,0cd02 ;da0
+ dw 0cd12,0cd21,0cd30,0cd3f,0cd4f,0cd5e,0cd6d,0cd7d ;da8
+ dw 0cd8c,0cd9c,0cdab,0cdbb,0cdca,0cdda,0cdea,0cdf9 ;db0
+ dw 0ce09,0ce19,0ce28,0ce38,0ce48,0ce58,0ce68,0ce78 ;db8
+ dw 0ce88,0ce97,0cea7,0ceb7,0cec8,0ced8,0cee8,0cef8 ;dc0
+ dw 0cf08,0cf18,0cf28,0cf39,0cf49,0cf59,0cf6a,0cf7a ;dc8
+ dw 0cf8a,0cf9b,0cfab,0cfbc,0cfcc,0cfdd,0cfed,0cffe ;dd0
+ dw 0d00f,0d01f,0d030,0d041,0d051,0d062,0d073,0d084 ;dd8
+ dw 0d095,0d0a6,0d0b7,0d0c8,0d0d9,0d0ea,0d0fb,0d10c ;de0
+ dw 0d11d,0d12e,0d13f,0d150,0d161,0d173,0d184,0d195 ;de8
+ dw 0d1a6,0d1b8,0d1c9,0d1db,0d1ec,0d1fd,0d20f,0d220 ;df0
+ dw 0d232,0d244,0d255,0d267,0d278,0d28a,0d29c,0d2ae ;df8
+ dw 0d2bf,0d2d1,0d2e3,0d2f5,0d307,0d318,0d32a,0d33c ;e00
+ dw 0d34e,0d360,0d372,0d384,0d396,0d3a9,0d3bb,0d3cd ;e08
+ dw 0d3df,0d3f1,0d404,0d416,0d428,0d43a,0d44d,0d45f ;e10
+ dw 0d472,0d484,0d496,0d4a9,0d4bb,0d4ce,0d4e0,0d4f3 ;e18
+ dw 0d506,0d518,0d52b,0d53e,0d550,0d563,0d576,0d589 ;e20
+ dw 0d59b,0d5ae,0d5c1,0d5d4,0d5e7,0d5fa,0d60d,0d620 ;e28
+ dw 0d633,0d646,0d659,0d66c,0d67f,0d692,0d6a6,0d6b9 ;e30
+ dw 0d6cc,0d6df,0d6f2,0d706,0d719,0d72c,0d740,0d753 ;e38
+ dw 0d767,0d77a,0d78e,0d7a1,0d7b5,0d7c8,0d7dc,0d7ef ;e40
+ dw 0d803,0d816,0d82a,0d83e,0d851,0d865,0d879,0d88d ;e48
+ dw 0d8a1,0d8b4,0d8c8,0d8dc,0d8f0,0d904,0d918,0d92c ;e50
+ dw 0d940,0d954,0d968,0d97c,0d990,0d9a4,0d9b8,0d9cc ;e58
+ dw 0d9e1,0d9f5,0da09,0da1d,0da32,0da46,0da5a,0da6e ;e60
+ dw 0da83,0da97,0daac,0dac0,0dad4,0dae9,0dafd,0db12 ;e68
+ dw 0db26,0db3b,0db50,0db64,0db79,0db8d,0dba2,0dbb7 ;e70
+ dw 0dbcc,0dbe0,0dbf5,0dc0a,0dc1f,0dc33,0dc48,0dc5d ;e78
+ dw 0dc72,0dc87,0dc9c,0dcb1,0dcc6,0dcdb,0dcf0,0dd05 ;e80
+ dw 0dd1a,0dd2f,0dd44,0dd59,0dd6e,0dd84,0dd99,0ddae ;e88
+ dw 0ddc3,0ddd8,0ddee,0de03,0de18,0de2e,0de43,0de58 ;e90
+ dw 0de6e,0de83,0de98,0deae,0dec3,0ded9,0deee,0df04 ;e98
+ dw 0df19,0df2f,0df45,0df5a,0df70,0df85,0df9b,0dfb1 ;ea0
+ dw 0dfc7,0dfdc,0dff2,0e008,0e01e,0e033,0e049,0e05f ;ea8
+ dw 0e075,0e08b,0e0a1,0e0b7,0e0cc,0e0e2,0e0f8,0e10e ;eb0
+ dw 0e124,0e13a,0e150,0e167,0e17d,0e193,0e1a9,0e1bf ;eb8
+ dw 0e1d5,0e1eb,0e202,0e218,0e22e,0e244,0e25a,0e271 ;ec0
+ dw 0e287,0e29d,0e2b4,0e2ca,0e2e0,0e2f7,0e30d,0e324 ;ec8
+ dw 0e33a,0e351,0e367,0e37e,0e394,0e3ab,0e3c1,0e3d8 ;ed0
+ dw 0e3ee,0e405,0e41b,0e432,0e449,0e45f,0e476,0e48d ;ed8
+ dw 0e4a3,0e4ba,0e4d1,0e4e8,0e4fe,0e515,0e52c,0e543 ;ee0
+ dw 0e55a,0e571,0e587,0e59e,0e5b5,0e5cc,0e5e3,0e5fa ;ee8
+ dw 0e611,0e628,0e63f,0e656,0e66d,0e684,0e69b,0e6b2 ;ef0
+ dw 0e6c9,0e6e0,0e6f8,0e70f,0e726,0e73d,0e754,0e76b ;ef8
+ dw 0e783,0e79a,0e7b1,0e7c8,0e7e0,0e7f7,0e80e,0e826 ;f00
+ dw 0e83d,0e854,0e86c,0e883,0e89a,0e8b2,0e8c9,0e8e1 ;f08
+ dw 0e8f8,0e90f,0e927,0e93e,0e956,0e96d,0e985,0e99c ;f10
+ dw 0e9b4,0e9cc,0e9e3,0e9fb,0ea12,0ea2a,0ea42,0ea59 ;f18
+ dw 0ea71,0ea89,0eaa0,0eab8,0ead0,0eae7,0eaff,0eb17 ;f20
+ dw 0eb2f,0eb46,0eb5e,0eb76,0eb8e,0eba6,0ebbd,0ebd5 ;f28
+ dw 0ebed,0ec05,0ec1d,0ec35,0ec4d,0ec65,0ec7d,0ec94 ;f30
+ dw 0ecac,0ecc4,0ecdc,0ecf4,0ed0c,0ed24,0ed3c,0ed54 ;f38
+ dw 0ed6c,0ed85,0ed9d,0edb5,0edcd,0ede5,0edfd,0ee15 ;f40
+ dw 0ee2d,0ee45,0ee5e,0ee76,0ee8e,0eea6,0eebe,0eed6 ;f48
+ dw 0eeef,0ef07,0ef1f,0ef37,0ef50,0ef68,0ef80,0ef98 ;f50
+ dw 0efb1,0efc9,0efe1,0effa,0f012,0f02a,0f043,0f05b ;f58
+ dw 0f074,0f08c,0f0a4,0f0bd,0f0d5,0f0ee,0f106,0f11e ;f60
+ dw 0f137,0f14f,0f168,0f180,0f199,0f1b1,0f1ca,0f1e2 ;f68
+ dw 0f1fb,0f213,0f22c,0f244,0f25d,0f275,0f28e,0f2a7 ;f70
+ dw 0f2bf,0f2d8,0f2f0,0f309,0f322,0f33a,0f353,0f36c ;f78
+ dw 0f384,0f39d,0f3b5,0f3ce,0f3e7,0f3ff,0f418,0f431 ;f80
+ dw 0f44a,0f462,0f47b,0f494,0f4ac,0f4c5,0f4de,0f4f7 ;f88
+ dw 0f50f,0f528,0f541,0f55a,0f573,0f58b,0f5a4,0f5bd ;f90
+ dw 0f5d6,0f5ef,0f607,0f620,0f639,0f652,0f66b,0f684 ;f98
+ dw 0f69c,0f6b5,0f6ce,0f6e7,0f700,0f719,0f732,0f74b ;fa0
+ dw 0f764,0f77c,0f795,0f7ae,0f7c7,0f7e0,0f7f9,0f812 ;fa8
+ dw 0f82b,0f844,0f85d,0f876,0f88f,0f8a8,0f8c1,0f8da ;fb0
+ dw 0f8f3,0f90c,0f925,0f93e,0f957,0f970,0f989,0f9a2 ;fb8
+ dw 0f9bb,0f9d4,0f9ed,0fa06,0fa1f,0fa38,0fa51,0fa6a ;fc0
+ dw 0fa83,0fa9c,0fab5,0face,0fae7,0fb00,0fb19,0fb32 ;fc8
+ dw 0fb4b,0fb64,0fb7d,0fb96,0fbb0,0fbc9,0fbe2,0fbfb ;fd0
+ dw 0fc14,0fc2d,0fc46,0fc5f,0fc78,0fc91,0fcaa,0fcc3 ;fd8
+ dw 0fcdd,0fcf6,0fd0f,0fd28,0fd41,0fd5a,0fd73,0fd8c ;fe0
+ dw 0fda5,0fdbf,0fdd8,0fdf1,0fe0a,0fe23,0fe3c,0fe55 ;fe8
+ dw 0fe6e,0fe88,0fea1,0feba,0fed3,0feec,0ff05,0ff1e ;ff0
+ dw 0ff37,0ff51,0ff6a,0ff83,0ff9c,0ffb5,0ffce,0ffe7 ;ff8
+
+;=========================================================================
diff --git a/wmdots/old_dos_demo/trig.s b/wmdots/old_dos_demo/trig.s
new file mode 100644
index 0000000..0917017
--- /dev/null
+++ b/wmdots/old_dos_demo/trig.s
@@ -0,0 +1,29 @@
+;=========================================================================
+;Trig functions for GFX routines Copyright (c) 1995 by Mark I Manning IV
+;=========================================================================
+
+CosTab equ SinTab+0800 ;A Right angle foreward in table!
+
+;-------------------------------------------------------------------------
+
+;Return Sin and Cos of angle AX in variables of same name
+
+SinCos:
+ and ax,0fff ;4096 degrees = 0 degrees
+ mov bx,ax ;Put into an indexing reg
+ add bx,bx
+ mov ax,SinTab[bx] ;Get Sin(N)
+ mov Sin,ax ;Bah no MOV Sin,[BX]... Crap processor!
+
+;Note.
+; Can NOT use mov ax,SinTab[2*ebx] because in following code BX may go
+; negative and 2* a negative number = DOUBLY NEGATIVE!
+
+ cmp bx,01800 ;Was Sin(N) in last quadrant of circle?
+ if nl sub bx,02000 ;Cos(N) must be in first quadrant then
+ mov bx,CosTab[bx] ;Get Cos(n)
+ mov Cos,bx ;Exits with Sin in AX and Cos in BX too!
+ ret
+
+;=========================================================================
+
diff --git a/wmdots/sintab.c b/wmdots/sintab.c
new file mode 100644
index 0000000..945d1c5
--- /dev/null
+++ b/wmdots/sintab.c
@@ -0,0 +1,75 @@
+// Sin and Cos tables based on 512 degree circle.
+// -----------------------------------------------------------------------
+
+short sin_tab[]=
+{
+ 0x0000, 0x00c9, 0x0192, 0x025b, 0x0323, 0x03ec, 0x04b5, 0x057d,
+ 0x0645, 0x070d, 0x07d5, 0x089c, 0x0964, 0x0a2a, 0x0af1, 0x0bb6,
+ 0x0c7c, 0x0d41, 0x0e05, 0x0ec9, 0x0f8c, 0x104f, 0x1111, 0x11d3,
+ 0x1294, 0x1354, 0x1413, 0x14d1, 0x158f, 0x164c, 0x1708, 0x17c3,
+ 0x187d, 0x1937, 0x19ef, 0x1aa6, 0x1b5d, 0x1c12, 0x1cc6, 0x1d79,
+ 0x1e2b, 0x1edc, 0x1f8b, 0x2039, 0x20e7, 0x2192, 0x223d, 0x22e6,
+ 0x238e, 0x2434, 0x24da, 0x257d, 0x261f, 0x26c0, 0x275f, 0x27fd,
+ 0x2899, 0x2934, 0x29cd, 0x2a65, 0x2afa, 0x2b8e, 0x2c21, 0x2cb2,
+ 0x2d41, 0x2dce, 0x2e5a, 0x2ee3, 0x2f6b, 0x2ff1, 0x3076, 0x30f8,
+ 0x3179, 0x31f7, 0x3274, 0x32ee, 0x3367, 0x33de, 0x3453, 0x34c6,
+ 0x3536, 0x35a5, 0x3612, 0x367c, 0x36e5, 0x374b, 0x37af, 0x3811,
+ 0x3871, 0x38cf, 0x392a, 0x3983, 0x39da, 0x3a2f, 0x3a82, 0x3ad2,
+ 0x3b20, 0x3b6c, 0x3bb6, 0x3bfd, 0x3c42, 0x3c84, 0x3cc5, 0x3d02,
+ 0x3d3e, 0x3d77, 0x3dae, 0x3de2, 0x3e14, 0x3e44, 0x3e71, 0x3e9c,
+ 0x3ec5, 0x3eeb, 0x3f0e, 0x3f2f, 0x3f4e, 0x3f6a, 0x3f84, 0x3f9c,
+ 0x3fb1, 0x3fc3, 0x3fd3, 0x3fe1, 0x3fec, 0x3ff4, 0x3ffb, 0x3ffe,
+
+ 0x3fff, 0x3ffe, 0x3ffb, 0x3ff4, 0x3fec, 0x3fe1, 0x3fd3, 0x3fc3,
+ 0x3fb1, 0x3f9c, 0x3f84, 0x3f6a, 0x3f4e, 0x3f2f, 0x3f0e, 0x3eeb,
+ 0x3ec5, 0x3e9c, 0x3e71, 0x3e44, 0x3e14, 0x3de2, 0x3dae, 0x3d77,
+ 0x3d3e, 0x3d02, 0x3cc5, 0x3c84, 0x3c42, 0x3bfd, 0x3bb6, 0x3b6c,
+ 0x3b20, 0x3ad2, 0x3a82, 0x3a2f, 0x39da, 0x3983, 0x392a, 0x38cf,
+ 0x3871, 0x3811, 0x37af, 0x374b, 0x36e5, 0x367c, 0x3612, 0x35a5,
+ 0x3536, 0x34c6, 0x3453, 0x33de, 0x3367, 0x32ee, 0x3274, 0x31f7,
+ 0x3179, 0x30f8, 0x3076, 0x2ff1, 0x2f6b, 0x2ee3, 0x2e5a, 0x2dce,
+ 0x2d41, 0x2cb2, 0x2c21, 0x2b8e, 0x2afa, 0x2a65, 0x29cd, 0x2934,
+ 0x2899, 0x27fd, 0x275f, 0x26c0, 0x261f, 0x257d, 0x24da, 0x2434,
+ 0x238e, 0x22e6, 0x223d, 0x2192, 0x20e7, 0x2039, 0x1f8b, 0x1edc,
+ 0x1e2b, 0x1d79, 0x1cc6, 0x1c12, 0x1b5d, 0x1aa6, 0x19ef, 0x1937,
+ 0x187d, 0x17c3, 0x1708, 0x164c, 0x158f, 0x14d1, 0x1413, 0x1354,
+ 0x1294, 0x11d3, 0x1111, 0x104f, 0x0f8c, 0x0ec9, 0x0e05, 0x0d41,
+ 0x0c7c, 0x0bb6, 0x0af1, 0x0a2a, 0x0964, 0x089c, 0x07d5, 0x070d,
+ 0x0645, 0x057d, 0x04b5, 0x03ec, 0x0323, 0x025b, 0x0192, 0x00c9,
+
+ 0x0000, 0xff37, 0xfe6e, 0xfda5, 0xfcdd, 0xfc14, 0xfb4b, 0xfa83,
+ 0xf9bb, 0xf8f3, 0xf82b, 0xf764, 0xf69c, 0xf5d6, 0xf50f, 0xf44a,
+ 0xf384, 0xf2bf, 0xf1fb, 0xf137, 0xf074, 0xefb1, 0xeeef, 0xee2d,
+ 0xed6c, 0xecac, 0xebed, 0xeb2f, 0xea71, 0xe9b4, 0xe8f8, 0xe83d,
+ 0xe783, 0xe6c9, 0xe611, 0xe55a, 0xe4a3, 0xe3ee, 0xe33a, 0xe287,
+ 0xe1d5, 0xe124, 0xe075, 0xdfc7, 0xdf19, 0xde6e, 0xddc3, 0xdd1a,
+ 0xdc72, 0xdbcc, 0xdb26, 0xda83, 0xd9e1, 0xd940, 0xd8a1, 0xd803,
+ 0xd767, 0xd6cc, 0xd633, 0xd59b, 0xd506, 0xd472, 0xd3df, 0xd34e,
+ 0xd2bf, 0xd232, 0xd1a6, 0xd11d, 0xd095, 0xd00f, 0xcf8a, 0xcf08,
+ 0xce87, 0xce09, 0xcd8c, 0xcd12, 0xcc99, 0xcc22, 0xcbad, 0xcb3a,
+ 0xcaca, 0xca5b, 0xc9ee, 0xc984, 0xc91b, 0xc8b5, 0xc851, 0xc7ef,
+ 0xc78f, 0xc731, 0xc6d6, 0xc67d, 0xc626, 0xc5d1, 0xc57e, 0xc52e,
+ 0xc4e0, 0xc494, 0xc44a, 0xc403, 0xc3be, 0xc37c, 0xc33b, 0xc2fe,
+ 0xc2c2, 0xc289, 0xc252, 0xc21e, 0xc1ec, 0xc1bc, 0xc18f, 0xc164,
+ 0xc13b, 0xc115, 0xc0f2, 0xc0d1, 0xc0b2, 0xc096, 0xc07c, 0xc064,
+ 0xc04f, 0xc03d, 0xc02d, 0xc01f, 0xc014, 0xc00c, 0xc005, 0xc002,
+
+ 0xc001, 0xc002, 0xc005, 0xc00c, 0xc014, 0xc01f, 0xc02d, 0xc03d,
+ 0xc04f, 0xc064, 0xc07c, 0xc096, 0xc0b2, 0xc0d1, 0xc0f2, 0xc115,
+ 0xc13b, 0xc164, 0xc18f, 0xc1bc, 0xc1ec, 0xc21e, 0xc252, 0xc289,
+ 0xc2c2, 0xc2fe, 0xc33b, 0xc37c, 0xc3be, 0xc403, 0xc44a, 0xc494,
+ 0xc4e0, 0xc52e, 0xc57e, 0xc5d1, 0xc626, 0xc67d, 0xc6d6, 0xc731,
+ 0xc78f, 0xc7ef, 0xc851, 0xc8b5, 0xc91b, 0xc984, 0xc9ee, 0xca5b,
+ 0xcaca, 0xcb3a, 0xcbad, 0xcc22, 0xcc99, 0xcd12, 0xcd8c, 0xce09,
+ 0xce88, 0xcf08, 0xcf8a, 0xd00f, 0xd095, 0xd11d, 0xd1a6, 0xd232,
+ 0xd2bf, 0xd34e, 0xd3df, 0xd472, 0xd506, 0xd59b, 0xd633, 0xd6cc,
+ 0xd767, 0xd803, 0xd8a1, 0xd940, 0xd9e1, 0xda83, 0xdb26, 0xdbcc,
+ 0xdc72, 0xdd1a, 0xddc3, 0xde6e, 0xdf19, 0xdfc7, 0xe075, 0xe124,
+ 0xe1d5, 0xe287, 0xe33a, 0xe3ee, 0xe4a3, 0xe55a, 0xe611, 0xe6c9,
+ 0xe783, 0xe83d, 0xe8f8, 0xe9b4, 0xea71, 0xeb2f, 0xebed, 0xecac,
+ 0xed6c, 0xee2d, 0xeeef, 0xefb1, 0xf074, 0xf137, 0xf1fb, 0xf2bf,
+ 0xf384, 0xf44a, 0xf50f, 0xf5d6, 0xf69c, 0xf764, 0xf82b, 0xf8f3,
+ 0xf9bb, 0xfa83, 0xfb4b, 0xfc14, 0xfcdd, 0xfda5, 0xfe6e, 0xff37
+};
+
+// =======================================================================
diff --git a/wmdots/wmdots.c b/wmdots/wmdots.c
new file mode 100644
index 0000000..f664209
--- /dev/null
+++ b/wmdots/wmdots.c
@@ -0,0 +1,667 @@
+// WM-Dots the Window Maker 3d Rotating Dots Demo by Mark I Manning IV
+// =======================================================================
+
+// This demo is based on an old DOS demo I did a number of years ago. The
+// trick was to get it to work in an 64 x 64 window instead of the
+// 320 x 200 of the original. (and in 16 instead of 256 colours :)
+
+// Much of these sources are based on other dockable application sources.
+// For this reason, and because it is the right thing to do, this file is
+// distributed under the GPL. Use it and abuse it as you will.
+
+// Flames, critisizm and general nukings can be sent to....
+
+// [email protected]
+
+// I have included the sources (in 100% pure ASM) to the afore mentioned
+// original demo. These you can also consider covered by the GPL.
+
+// Maybe someone can help me convert the bump mapping in the original to
+// use only 16 colours :) (actually, I have space in the master.xpm for
+// 32 colours if I retain a 2 x 2 pixle size. If i go to 1 x 1 i can
+// fit 64 colours in there :)
+
+// Yea... I know... Im supposed to be sparing of system resources like
+// colour allocations but come on guys... this IS a demo after all :)
+// Demos are supposed to be abusive of system resources eh??? :)
+
+// This source file is 100% TAB FREE. Use any editor/viewer you want
+// to view it with and set ANY size tabs and it will STILL look right.
+// TABS ARE EVIL!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+// Also Linus T is wrong. Indentations of 8 are an abomination and so is
+// k&r source formatting. So There!
+
+// Apart from that... Linus for president :)
+// or George W. Bush!!!
+
+// -----------------------------------------------------------------------
+// blah :)
+
+// Version 0.1 beta Released Saturday October 9 1999
+//
+// To do... Fix bug that causes core dump when the "cross" object
+// rotates outside window (its not a clipping problem).
+// Find out why the "cross" object is not cross shaped in
+// this demo when it is in the dos version.
+// Change pixle sizes to 1 x 1 for objects that are in
+// the distance.
+// Move all object definitions out of this file and into
+// some kind of rc file and allow user defined objects
+// Add greets to the credits display :)
+// Impliment better light shading (in object space?)
+// Prevent dark pixles overwriting light ones
+//
+// Done... Scrapped idea about different pixle sizez, it didn't look
+// as good as i thunked it would :)
+// Fixed adjust_angle() to be angle +128 not angle +127
+// Fixed cross by defining xyz as char instead of int
+// Fixed core dump problem with cross: Oopts it was a
+// clipping problem, z clipping points behind camera! :)
+// Added size macro (prolly a bad name for it tho :)
+// Implimented better light shading but its still not
+// quite right yet...
+// Removed math.h from includes as im not using any
+// functions therein. Saved a whopping 4 bytes :)
+// Added code to draw_point() to prevent dark pels from
+// being drawn over lighter pels. Dark pels are further
+// away and should be BEHIND the lighter ones. There is
+// almost no cpu bash here and I dont need to z sort pels
+//
+//
+// Version 0.2 beta Released Saturday October 9 1999
+//
+// To do.. Still gotta move objects to rc file....
+//
+//
+//
+// Done...
+
+// -----------------------------------------------------------------------
+// includes
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <X11/xpm.h>
+#include <libdockapp/wmgeneral.h>
+#include "master.xpm"
+#include "sintab.c" // sin() and cos() are crap!
+
+// -----------------------------------------------------------------------
+// defines
+
+#define PEL_SIZE 2 // 1 or 2 only
+
+#define MAX_POINTS 125 // max # pels in an object
+
+#define MASK_WIDTH 64 // window bitmap mask dimentions
+#define MASK_HEIGHT 64
+#define MASK_SIZE MASK_WIDTH * MASK_HEIGHT
+
+// adjust angle for cos table lookup. cos = right angle further
+// on in sin table, circle = 512 degrees...
+
+#define adjust(angle) ((angle + 128) & 0x1ff)
+#define size(array) ((sizeof(array) / sizeof(array[0])))
+
+// -----------------------------------------------------------------------
+// typedefs...
+
+typedef struct // a point in 3d space
+{
+ char x, y, z;
+}xyz;
+
+typedef struct // a point in 2d space
+{
+ int x, y;
+}xy;
+
+typedef struct
+{
+ int counter; // count down to next speed/shape change
+ int reset; // initial value of counter
+ int *ptr; // pointer to item to modify
+ int delta; // ammount to change item by
+ int upper; // upper limit for item
+ int lower; // lower limit for item
+}modifier;
+
+// -----------------------------------------------------------------------
+// object structures...
+
+xyz cube[]=
+{
+ {-35,-35,-35},{-35,-35,-15},{-35,-35, 05},{-35,-35, 25},{-35,-35, 45},
+ {-35,-15,-35},{-35,-15,-15},{-35,-15, 05},{-35,-15, 25},{-35,-15, 45},
+ {-35, 05,-35},{-35, 05,-15},{-35, 05, 05},{-35, 05, 25},{-35, 05, 45},
+ {-35, 25,-35},{-35, 25,-15},{-35, 25, 05},{-35, 25, 25},{-35, 25, 45},
+ {-35, 45,-35},{-35, 45,-15},{-35, 45, 05},{-35, 45, 25},{-35, 45, 45},
+ {-15,-35,-35},{-15,-35,-15},{-15,-35, 05},{-15,-35, 25},{-15,-35, 45},
+ {-15,-15,-35},{-15,-15,-15},{-15,-15, 05},{-15,-15, 25},{-15,-15, 45},
+ {-15, 05,-35},{-15, 05,-15},{-15, 05, 05},{-15, 05, 25},{-15, 05, 45},
+ {-15, 25,-35},{-15, 25,-15},{-15, 25, 05},{-15, 25, 25},{-15, 25, 45},
+ {-15, 45,-35},{-15, 45,-15},{-15, 45, 05},{-15, 45, 25},{-15, 45, 45},
+ { 05,-35,-35},{ 05,-35,-15},{ 05,-35, 05},{ 05,-35, 25},{ 05,-35, 45},
+ { 05,-15,-35},{ 05,-15,-15},{ 05,-15, 05},{ 05,-15, 25},{ 05,-15, 45},
+ { 05, 05,-35},{ 05, 05,-15},{ 05, 05, 05},{ 05, 05, 25},{ 05, 05, 45},
+ { 05, 25,-35},{ 05, 25,-15},{ 05, 25, 05},{ 05, 25, 25},{ 05, 25, 45},
+ { 05, 45,-35},{ 05, 45,-15},{ 05, 45, 05},{ 05, 45, 25},{ 05, 45, 45},
+ { 25,-35,-35},{ 25,-35,-15},{ 25,-35, 05},{ 25,-35, 25},{ 25,-35, 45},
+ { 25,-15,-35},{ 25,-15,-15},{ 25,-15, 05},{ 25,-15, 25},{ 25,-15, 45},
+ { 25, 05,-35},{ 25, 05,-15},{ 25, 05, 05},{ 25, 05, 25},{ 25, 05, 45},
+ { 25, 25,-35},{ 25, 25,-15},{ 25, 25, 05},{ 25, 25, 25},{ 25, 25, 45},
+ { 25, 45,-35},{ 25, 45,-15},{ 25, 45, 05},{ 25, 45, 25},{ 25, 45, 45},
+ { 45,-35,-35},{ 45,-35,-15},{ 45,-35, 05},{ 45,-35, 25},{ 45,-35, 45},
+ { 45,-15,-35},{ 45,-15,-15},{ 45,-15, 05},{ 45,-15, 25},{ 45,-15, 45},
+ { 45, 05,-35},{ 45, 05,-15},{ 45, 05, 05},{ 45, 05, 25},{ 45, 05, 45},
+ { 45, 25,-35},{ 45, 25,-15},{ 45, 25, 05},{ 45, 25, 25},{ 45, 25, 45},
+ { 45, 45,-35},{ 45, 45,-15},{ 45, 45, 05},{ 45, 45, 25},{ 45, 45, 45}
+};
+
+xyz star[]=
+{
+ {-35,-35, 05},{-35,-15, 05},{-35, 05, 05},{-35, 25, 05},{-35, 45, 05},
+ {-15,-35, 05},{-15,-15, 05},{-15, 05, 05},{-15, 25, 05},{-15, 45, 05},
+ { 05,-35, 05},{ 05,-15, 05},{ 05, 05, 05},{ 05, 25, 05},{ 05, 45, 05},
+ { 25,-35, 05},{ 25,-15, 05},{ 25, 05, 05},{ 25, 25, 05},{ 25, 45, 05},
+ { 45,-35, 05},{ 45,-15, 05},{ 45, 05, 05},{ 45, 25, 05},{ 45, 45, 05},
+ { 05,-35,-35},{ 05,-35,-15},{ 05,-35, 25},{ 05,-35, 45},{-35, 05,-35},
+ { 05,-15,-35},{ 05,-15,-15},{ 05,-15, 25},{ 05,-15, 45},{-15, 05,-35},
+ { 05, 05,-35},{ 05, 05,-15},{ 05, 05, 25},{ 05, 05, 45},{ 05, 05,-35},
+ { 05, 25,-35},{ 05, 25,-15},{ 05, 25, 25},{ 05, 25, 45},{ 25, 05,-35},
+ { 05, 45,-35},{ 05, 45,-15},{ 05, 45, 25},{ 05, 45, 45},{ 45, 05,-35},
+ {-35, 05,-15},{-35, 05, 25},{-35, 05, 45},{-15, 05,-15},{-15, 05, 25},
+ {-15, 05, 45},{ 05, 05,-15},{ 05, 05, 25},{ 05, 05, 45},{ 25, 05,-15},
+ { 25, 05, 25},{ 25, 05, 45},{ 45, 05,-15},{ 45, 05, 25},{ 45, 05, 45}
+};
+
+xyz dots[]=
+{
+ {-35,-35,-35},{-35,-35, 45},{ 45, 45,-35},{ 45, 45, 45},{ 5,-35, 5},
+ { 5, 45, 5}
+};
+
+xyz square[]=
+{
+ {-35,-35,-35},{-35,-15,-35},{-35, 05,-35},{-35, 25,-35},{-35, 45,-35},
+ {-15,-35,-35},{-15,-15,-35},{-15, 05,-35},{-15, 25,-35},{-15, 45,-35},
+ { 05,-35,-35},{ 05,-15,-35},{ 05, 05,-35},{ 05, 25,-35},{ 05, 45,-35},
+ { 25,-35,-35},{ 25,-15,-35},{ 25, 05,-35},{ 25, 25,-35},{ 25, 45,-35},
+ { 45,-35,-35},{ 45,-15,-35},{ 45, 05,-35},{ 45, 25,-35},{ 45, 45,-35}
+};
+
+xyz cross[]=
+{
+ {0x00,0x00,0x19}, {0x00,0x05,0x19}, {0x00,0x14,0x01}, {0x00,0x32,0x00},
+ {0x00,0x7D,0x00}, {0x00,0xC9,0x00}, {0x01,0x5F,0x01}, {0x01,0xAB,0x01},
+ {0x01,0xF6,0x01}, {0x02,0x41,0x02}, {0x02,0x8D,0x02}, {0x02,0xD8,0x02},
+ {0x03,0x23,0x03}, {0x03,0x05,0x04}, {0x03,0x6F,0x03}, {0x03,0xBA,0x03},
+ {0x04,0x51,0x04}, {0x04,0x9C,0x04}, {0x04,0xE7,0x04}, {0x05,0x13,0x06},
+ {0x05,0x32,0x05}, {0x05,0x7D,0x05}, {0x05,0xC8,0x05}, {0x06,0x5E,0x06},
+ {0x06,0xA9,0x06}, {0x06,0xF4,0x06}, {0x07,0x3F,0x07}, {0x07,0x8A,0x07},
+ {0x07,0xD5,0x07}, {0x08,0x00,0x09}, {0x08,0x20,0x08}, {0x08,0x6B,0x08},
+ {0x08,0xB5,0x08}, {0x09,0x4B,0x09}, {0x09,0x95,0x09}, {0x09,0xE0,0x09},
+ {0x0A,0x09,0x0B}, {0x0A,0x2A,0x0A}, {0x0A,0x75,0x0A}, {0x0A,0xBF,0x0A},
+ {0x0B,0x54,0x0B}, {0x0D,0x07,0x26}, {0x0F,0x02,0x28}, {0x19,0x09,0x32},
+ {0x1E,0x04,0x37}, {0x22,0x0B,0x3B}, {0x2C,0x06,0x45}, {0x2D,0x01,0x46},
+ {0x39,0x08,0x52}, {0x3D,0x03,0x56}, {0x43,0x0A,0x5C}, {0x4B,0x00,0x64},
+ {0x4B,0x05,0x64}, {0x58,0x07,0x71}, {0x5B,0x02,0x74}, {0x64,0x09,0x7C},
+ {0x84,0x08,0x9C}, {0x88,0x03,0xA1}, {0x8D,0x0A,0xA6}, {0x96,0x00,0xAF},
+ {0x96,0x05,0xAF}, {0xA3,0x07,0xBC}, {0xA6,0x02,0xBF}, {0xAE,0x09,0xC7},
+ {0xB5,0x04,0xCE}, {0xC2,0x06,0xDB}, {0xC4,0x01,0xDD}, {0xCE,0x08,0xE7},
+ {0xD3,0x03,0xEC}, {0xD8,0x0A,0xF1}, {0xE1,0x05,0xFA}, {0xE2,0x00,0xFB},
+ {0xEE,0x07,0x07}, {0xF1,0x02,0x0A}, {0xF9,0x09,0x11}
+};
+
+// -----------------------------------------------------------------------
+// object lists...
+
+xyz *obj_list[]= // pointers to each object
+{
+ (xyz *) &cube,
+ (xyz *) &dots,
+ (xyz *) &star,
+ (xyz *) &square,
+ (xyz *) &cross
+};
+
+int point_counts[]= // number of points in each object
+{
+ size(cube),
+ size(dots),
+ size(star),
+ size(square),
+ size(cross)
+};
+
+#define NUM_OBJECTS size(obj_list)
+
+// -----------------------------------------------------------------------
+// i love global variables :)
+
+// I hate 40 page functions with 50 levels if,and and but loop nesting
+
+char *ProgName = NULL;
+char *Version = "0.2 Beta";
+
+int x_angle = 0; // angles of rotation in each axis
+int y_angle = 0;
+int z_angle = 0;
+
+short cos_x = 0; // trig stuff
+short cos_y = 0;
+short cos_z = 0;
+short sin_x = 0;
+short sin_y = 0;
+short sin_z = 0;
+
+int x_off = 30; // world space position of object
+int y_off = 30;
+int z_off = 150;
+
+int delta_x = 1; // rotational speed of object
+int delta_y = 1;
+int delta_z = 1;
+
+int itters = 1; // number of frames till shape change
+int num_points = 0; // number of points in object
+int obj_number = 0;
+xyz *object = NULL; // pointer to current object
+
+xy trail_1[125]; // frame histories
+xy trail_2[125];
+xy trail_3[125];
+
+char *p_buff; // addr of pel buffer ( see draw_point() )
+
+// -----------------------------------------------------------------------
+//
+
+modifier w1 = // changes x rotation speed
+{
+ 30, // count down counter
+ 34, // reset value for countdown counter
+ &delta_x, // item to modify on count = 0
+ 2, // ammount to add to item
+ 8, // upper limit for item
+ 0, // lower limit for item
+};
+
+modifier w2 = // changes y rotation speed
+{
+ 20, 20, &delta_y, -1, 6, 0
+};
+
+modifier w3 = // changes z rotation speed
+{
+ 30, 30, &delta_z, 1, 7, 0
+};
+
+modifier w4 = // zooms object in / out of window
+{
+ 4, 4, &z_off, -2, 200, 90
+};
+
+// modifier w5 = // these two do some funky things with
+// { // object space but they tend to make
+// 10,10,&x_off,-3,30,10 // the objects small and look further
+// }; // away so im not using them
+//
+// modifier w6 = // but go ahead and take a look at what
+// { // they do :)
+// 10,30,&y_off,-5,30,10
+// };
+
+// -----------------------------------------------------------------------
+// draw a point at x/y in specified colour
+
+void draw_point(int x, int y, int c)
+{
+ char *p;
+
+ if(x != -1) // is point clipped ?
+ {
+ c <<= 1; // adjust c for xpm lookup of colour
+ p = p_buff + (x + (MASK_WIDTH * y));
+
+ if (*p > c) // if pel at *p is higher its darker so
+ { // its ok to overwrite it
+ *p = c; // remember pel colour at this position
+ copyXPMArea(c, 65, PEL_SIZE, PEL_SIZE, x, y);
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+// Erase previously drawn point (draw again in BLACK!!!)
+
+void erase_point(int x, int y)
+{
+ if(x != -1) // is point clipped?
+ {
+ copyXPMArea(34, 65, PEL_SIZE, PEL_SIZE, x, y);
+ }
+}
+
+// -----------------------------------------------------------------------
+// Process pending X events
+
+void do_pending(void)
+{
+ XEvent Event;
+
+ while (XPending(display)) // for all pending events do...
+ {
+ XNextEvent(display, &Event); // get event type
+
+ switch (Event.type) // we are only interested in...
+ {
+ case Expose: // expose events and...
+ RedrawWindow();
+ break;
+
+ case DestroyNotify: // our own "pending" demise :)
+ XCloseDisplay(display);
+ exit(0);
+ break;
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+// clear frame history buffers
+
+void clear_histories(void)
+{
+ int i = MAX_POINTS;
+
+ while (i--) // for loops suck
+ {
+ trail_1[i].x = trail_1[i].y = -1; // -1 = invalid coordinate
+ trail_2[i].x = trail_2[i].y = -1; // draw_point() ignores -1
+ trail_3[i].x = trail_3[i].y = -1;
+ }
+}
+
+// -----------------------------------------------------------------------
+// erase points that are 3 frames old. shift frame histories
+
+void do_trails(void)
+{
+ int i = MAX_POINTS;
+
+ while (i--)
+ {
+ erase_point(trail_3[i].x, trail_3[i].y);
+
+ trail_3[i].x = trail_2[i].x; // shift points within history
+ trail_2[i].x = trail_1[i].x; // buffers
+ trail_1[i].x = -1;
+
+ trail_3[i].y = trail_2[i].y;
+ trail_2[i].y = trail_1[i].y;
+ trail_1[i].y = -1;
+ }
+}
+
+// -----------------------------------------------------------------------
+// pre calculate sin and cosine values for x y and z angles of rotation
+
+void sincos(void)
+{
+ sin_x = sin_tab[x_angle];
+ sin_y = sin_tab[y_angle];
+ sin_z = sin_tab[z_angle];
+
+ cos_x = sin_tab[adjust(x_angle)];
+ cos_y = sin_tab[adjust(y_angle)];
+ cos_z = sin_tab[adjust(z_angle)];
+}
+
+// -----------------------------------------------------------------------
+// roatate object about x y and z axis (in object space)
+
+void rotate(int *px, int *py, int *pz)
+{
+ int tx, ty, tz; // temp store
+
+ if (x_angle) // rotate point about x axis...
+ {
+ ty = (*py * cos_x) - (*pz * sin_x);
+ tz = (*py * sin_x) + (*pz * cos_x);
+
+ *py = (ty >> 14); // sin table is scaled up so we
+ *pz = (tz >> 14); // must re scale all results down
+ }
+
+ if (y_angle) // rotate point about y axis
+ {
+ tx = (*px * cos_y) - (*pz * sin_y);
+ tz = (*px * sin_y) + (*pz * cos_y);
+
+ *px = (tx >> 14);
+ *pz = (tz >> 14);
+ }
+
+ if (z_angle) // rotate point about z axis
+ {
+ tx = (*px * cos_z) - (*py * sin_z);
+ ty = (*px * sin_z) + (*py * cos_z);
+
+ *px = (tx >> 14);
+ *py = (ty >> 14);
+ }
+}
+
+// -----------------------------------------------------------------------
+// project point in 3d space onto plane in 2d space
+
+void project(int px, int py, int pz, int *x, int *y)
+{
+ int tx, ty; // temp store...
+
+ *x = *y = -1; // assume point is clipped
+
+ if ((z_off + pz - 5) < 0)
+ {
+ return;
+ }
+
+ ty = ((y_off * py) / (z_off + pz)) + 30;
+
+ if ((ty > 5) && (ty < 59))
+ {
+ tx = ((x_off * px) / (z_off + pz)) + 30;
+
+ if ((tx > 5) && (tx < 59))
+ {
+ *x = tx;
+ *y = ty;
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+// draw one frame of object...
+
+void do_frame(void)
+{
+ int px, py, pz; // 3d coordinates to rotate
+ int x, y, c; // 2d coordiantes of point and colour
+ int i = num_points; // loop counter
+ int j = MASK_SIZE;
+ char pel_buff[MASK_SIZE]; // frame buffer ( see draw_point() )
+ p_buff = &pel_buff[0];
+
+ while (j--) // erase pel buffer
+ {
+ pel_buff[j] = 32;
+ }
+
+ do_trails(); // clear pels that are 3 frames old
+ sincos(); // calculate all sin/cos values
+
+ while(i--)
+ {
+ px = object[i].x; // collect point from object
+ py = object[i].y;
+ pz = object[i].z;
+
+ rotate(&px, &py, &pz); // rotate this point about x/y and z axis
+ project(px, py, pz, &x, &y); // projection = convert xyz to xy
+
+ trail_1[i].x = x; // store frame history for all pels
+ trail_1[i].y = y; // of this frame
+
+ c = (((z_off - 90) / 14) & 15) < 1;
+ c -= ((-pz / 5) - 10);
+
+ draw_point(x, y, c);
+ }
+}
+
+// -----------------------------------------------------------------------
+// adjust rotational speeds / distance between min and max for each
+
+void modify(modifier *mod)
+{
+ mod->counter--;
+
+ if (!mod->counter)
+ {
+ mod->counter = mod->reset;
+
+ *mod->ptr += mod->delta;
+
+ if (*mod->ptr >= mod->upper || *mod->ptr <= mod->lower)
+ {
+ mod->delta = -(mod->delta);
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+// do the above on each of the 4 modifiers
+
+void do_deltas(void)
+{
+ modify(&w1); // modify x rotational speed
+ modify(&w2); // modify y rotational speed
+ modify(&w3); // modify z rotational speed
+ modify(&w4); // zoom object in and out
+// modify(&w5); // not used because they make objects
+// modify(&w6); // stay in the distance
+}
+
+// -----------------------------------------------------------------------
+// adjust x y and z angles of ritation for next frame
+
+void change_angles(void)
+{
+ x_angle += delta_x;
+ y_angle += delta_y;
+ z_angle += delta_z;
+
+ x_angle &= 0x1ff;
+ y_angle &= 0x1ff;
+ z_angle &= 0x1ff;
+}
+
+// -----------------------------------------------------------------------
+
+void do_demo(void)
+{
+ while (1) // only way out is to die
+ {
+ while(--itters) // countdown to next shape change...
+ { // shape change FORCED on entry
+ change_angles(); // adjust angles of rotation
+ do_frame(); // draw object
+ do_deltas(); // modify rotation speeds etc
+
+ RedrawWindow(); // lets see what weve drawn...
+ do_pending(); // quit / expose
+ usleep(50000); // erm... coders never sleep :)
+ }
+
+ itters = 2500; // should randomise this
+
+ object = obj_list[obj_number];
+ num_points = point_counts[obj_number++];
+
+ if (obj_number == NUM_OBJECTS)
+ {
+ obj_number = 0;
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+// display version info and credits
+
+void credits(void)
+{
+ printf("\n");
+ printf("WM-Dots DEMO? version %s\n",Version);
+ printf(" by Mark I Manning IV\n\n");
+ printf("greets to follow soon....\n\n");
+}
+
+// sgore for helping me get star office :)
+
+// -----------------------------------------------------------------------
+// scan command line args
+
+void scan_args(int argc,char **argv)
+{
+ int i;
+
+ for (i = 0; i < argc; i++)
+ {
+ char *arg = argv[i];
+
+ if (*arg == '-')
+ {
+ switch (arg[1])
+ {
+ case 'v':
+ credits();
+ exit(0);
+ break;
+
+ default:
+ ;
+ break;
+ }
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+// main at BOTTOM of source so we have no EVIL forward refs!!
+
+int main(int argc, char *argv[])
+{
+ char mask[MASK_SIZE];
+
+ ProgName = argv[0];
+ if (strlen(ProgName) >= 5)
+ {
+ ProgName += (strlen(ProgName) - 5);
+ }
+
+ scan_args(argc, argv);
+
+ createXBMfromXPM(mask, master_xpm, MASK_WIDTH, MASK_HEIGHT);
+ openXwindow(argc, argv, master_xpm, mask, MASK_WIDTH, MASK_HEIGHT);
+
+ clear_histories(); // clear frame history buffers
+ do_demo(); // main = short and sweet :)
+
+ return(0); // never gets executed but lets get rid
+} // of that stupid warning :)
+
+// =======================================================================
diff --git a/wmdots/wmdots/Makefile b/wmdots/wmdots/Makefile
deleted file mode 100755
index 46cea12..0000000
--- a/wmdots/wmdots/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-LIBDIR = -L/usr/X11R6/lib
-LIBS = -lXpm -lXext -lX11 -ldockapp
-OBJS = wmdots.o
-
-.c.o:
- cc -c -g -O2 -Wall $< -o $*.o
-
-wmifs: $(OBJS)
- cc -o wmdots $^ -lXext $(LIBDIR) $(LIBS)
-
-all:: wmdots
-
-clean::
- for i in $(OBJS) ; do \
- rm $$i ; \
- done
- rm wmdots
-
-install::
- cp -f wmdots /usr/local/bin/
- chmod 755 /usr/local/bin/wmdots
- chown root:root /usr/local/bin/wmdots
-
diff --git a/wmdots/wmdots/master.xpm b/wmdots/wmdots/master.xpm
deleted file mode 100644
index e1514ad..0000000
--- a/wmdots/wmdots/master.xpm
+++ /dev/null
@@ -1,87 +0,0 @@
-/* XPM */
-static char * master_xpm[] = {
-"64 66 18 1",
-" c None",
-". c #000000",
-"+ c #C300FF",
-"@ c #B500F2",
-"# c #A800E5",
-"$ c #9E00D8",
-"% c #9200CC",
-"& c #8500BF",
-"* c #7900B2",
-"= c #6E00A5",
-"- c #660099",
-"; c #5D008C",
-"> c #52007F",
-", c #480072",
-"' c #3E0066",
-") c #37005B",
-"! c #2D004C",
-"~ c #25003F",
-" ",
-" ",
-" ",
-" ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ...................................................... ",
-" ",
-" ",
-" ",
-" ",
-" ",
-"++@@##$$%%&&**==--;;>>,,''))!!~~ ",
-"++@@##$$%%&&**==--;;>>,,''))!!~~ "};
diff --git a/wmdots/wmdots/old_dos_demo/dow.a b/wmdots/wmdots/old_dos_demo/dow.a
deleted file mode 100644
index 85bc6d9..0000000
--- a/wmdots/wmdots/old_dos_demo/dow.a
+++ /dev/null
@@ -1,860 +0,0 @@
-;Dogs of war demo by OnlyMe (now called I440r :)
-;-------------------------------------------------------------------------
-
- ;Assembles with A386.COM (Registered A86).
-
-;-------------------------------------------------------------------------
-;Equates
-
-MaxPoints equ 125 ;Maximum number of points in an object
-BumpMap equ Bumps+320 ;Pointer to second scan line of bump map
-SpotX equ 160 ;Position of static bump map spotlight
-SpotY equ 80
-
-;-------------------------------------------------------------------------
-;A based structure (See A86 documentation for explanation)
-
- struc [bx] ;Structure does NOT need a name
-Counter dw ? ;Countdown to change
-Reset dw ? ;Counter reset value
-Position dw ? ;Points to item being modified
-Delta dw ? ;Speed of change (also direction)
-Upper dw ? ;Upper limit for position
-Lower dw ? ;Lower limit for position
- ends
-
-;-------------------------------------------------------------------------
-;Un-Initialised data
-
- data segment
-
-XAngle dw ? ;Angles of rotation for each axis
-YAngle dw ? ; higher numbers rotate faster
-ZAngle dw ?
-
-X dw ? ;Coordinates of point being calculated
-Y dw ?
-Z dw ?
-
-XSin dw ? ;Sin and Cos for each axis angle of rotation
-YSin dw ?
-ZSin dw ?
-XCos dw ?
-YCos dw ?
-ZCos dw ?
-
-NumPoints dw ? ;Number of points in current object
-
-; V---MaxPoints
-Trail1: dw 125 dup ? ;Display address of previous 8 positions for
-Trail2: dw 125 dup ? ; each point being rotated. We only erase a
-Trail3: dw 125 dup ? ; points 8'th previous position. This makes
-Trail4: dw 125 dup ? ; the points leave a trail 7 pixles long
-Trail5: dw 125 dup ?
-Trail6: dw 125 dup ?
-Trail7: dw 125 dup ?
-Trail8: dw 125 dup ?
-
-CharP dw ? ;Pointer to font def for scrollie char
-BumpX dw ? ;Bump map coordinates being calculated
-BumpY dw ?
-
-;-------------------------------------------------------------------------
-;A copy of the ROM font moved here so we can reference it using DS
-
-Font: db 256*8 dup ?
-
-;-------------------------------------------------------------------------
-;Note:
-;
-; The following buffer is the whole of the bump map. There is 1 scan
-;line of ZERO data above and below the area that will contain the bumps.
-;
-;Therefore the bumpmap is at Bumps+320 (See Equates Above)
-
-Bumps: db 320*18 dup ?
-
-;-------------------------------------------------------------------------
-;Da Beeph (moo)
-
- code segment
-
-Start:
- jmp Main ;Do it...
-
-;-------------------------------------------------------------------------
-;Pre initialised data...
-
-Shape dw Cube ;Pointer to current object
-
-HalfH dw 160 ;Screen coordinates for centre of object
-HalfV dw 100
-
-XOff dw 150 ;Position of object in world space
-YOff dw 150
-ZOff dw 800
-
-DeltaX dw 5 ;Rotational speeds on each axis
-DeltaY dw 4
-DeltaZ dw 7
-
-;-------------------------------------------------------------------------
-;Modifiers: Tables follows this format: (as per above based structure)
-;
-; Counter Count down to next speed/position change
-; Retet Value to reset counter to
-; Position Pointer to data item to modify
-; Delta Ammount to change item (also direction)
-; Upper Upper limit fot item
-; Lower Lower limit for item
-
-W1: dw 30,30,offset DeltaX,2,15,2 ;Modifies X Rotational speed
-W2: dw 20,20,offset DeltaY,-2,12,4 ;Modifies Y Rotational speed
-W3: dw 40,40,offset DeltaZ,2,10,7 ;Modifies Z Rotational speed
-W4: dw 02,02,offset ZOff,-3,800,180 ;Zooms object in and out of screen
-
-;-------------------------------------------------------------------------
-;Bump mapped scrollie banner text stuffz
-
-Bannerp dw Banner ;Points to next character
-CharColumn db 080 ;Mask for next colunn of font def
-
-Banner:
- db ' *** The Dogs Of WAR demo by OnlyMe! *** '
- db 'Begin! '
-
-Begin:
- db 'Oh the dogs they had a meeting '
- db 'They came from near and far '
- db 'And some dogs came by motor bus '
- db 'And some by motor car '
-
- db 0
- dw Flies,Hall
-
-Hall:
- db 'On entering the meeting hall '
- db 'Each dog could take a look '
- db 'Where he had to hang his asshole '
- db 'Up high upon a hook '
-
- db 0
- dw Cross,Fire
-
-Fire:
- db 'And when they were assembled '
- db 'Each canine son and sire '
- db 'Some dirty bulldog son of a bitch '
- db 'Jumped up and hollared FIRE '
-
- db 0
- dw Square,Panic
-
-Panic:
- db 'All was in a panic '
- db 'Twas hell upon to look '
- db 'Each doggie grabbed at random '
- db 'An asshole from a hook '
-
- db 0
- dw Cube,Sore
-
-Sore:
- db 'Now the assholes were all mixed up '
- db 'Which made each doggie sore '
- db 'To have to wear another dogs ass '
- db 'He''d never worn before '
-
- db 0
- dw Star,Bone
-
-Bone:
- db 'And that is why until this day '
- db 'A dog will drop a bone '
- db 'To go and smell another dogs ass '
- db 'To see if it''s his OWN! '
-
- db '*** THE END *** ??? '
- db 'Now what have i forgotz ???? '
- db 'ERM..... Oh Yea.... '
-
- db 'Greetings *** ROTATE *** Out To ~~~~~~ '
-
- db 0
- dw Heart,Catgirl
-
-Catgirl:
- db 'Catgirl - Jeg Elsker DEG - Purrrrrrrrrrrrr :) '
- db 'Myriaam - Cute Sexy BABE Princess DOLL :) - heheheheheh - '
- db 'okokokokokokokokokokokokokokokokokokokokokokokokokok '
- db 'LuvrsCrs - Manager''ess and savior''ess of UnderNUT #CODERS '
- db '--> '
-
- db 0
- dw Square,Unf
-
-Unf:
- db 'Unf - Fatar - Debonaire - Isomer - Hexsane & MrsHex - '
- db 'nop - mole - oreo - RatKing - \hatred\ - KBerg - '
- db 'RyanT - Mafia - Yosha - Jungle - Fid - Binary - '
- db 'PRIM8 - IiTM - Topanga - Tig2 - deRanged - RuneStar - '
- db '_RyAn_ - DaParasit - Spansh - CodeX - Wicked - '
- db 'Likwid - KingTroll - tpanther - ED_Lead - Reptile - '
-
- db 0
- dw Cross,NoIdea
-
-NoIdea:
- db 'Noidea - ^Para^ - Wh0is - Chiew - [QWORD] - LoneWolf - '
- db 'DaveDavis - PsYkOtIk - ^Ion^ - Weathros - LittleLoc - '
- db 'MissMilla - Centmo - Entlin - CreepGuy - eom - Xico - '
- db '^Axe^ & Sturnella - Almighty - o - Zyklon - hammr - '
- db '|Geo| - '
- db 'MarkIII (Hi Dad) - Diamond1 & Mermaid1 (Hi Sis1 and Sis2 :) - '
-
- db 0
- dw Flies,Snoo
-
-Snoo:
- db 'Snoo - Queen1 & Truely - Shama - Pink^Rose - Divebum - '
- db 'DEWDROP - KaDaM2 - Freakmama - mr007 - SIOK - Alih - '
- db 'Asterix - MoKie - Rats - RoadRoach - masdale - mystie - '
-
- db 'e|ectricTom - Techa^ - TX-Cowboy - buch - luth - '
-
- db 0
- dw Cross,Eche
-
-Eche:
- db 'BaBs - Ratty - Lexzy - PJ - Blondii - dew - Kittie - '
- db '^Kristi - strawbery - grlafraid - Krystal1 - ortho - '
- db 'Danni_ - Anne^ - brokngrl - keldog - AnGelDevo - '
- db '^DE^ - Avantyful & Niece babe :) - mauddib - lil_miss - '
- db 'Eche & Godis^ hehehehe - lowlife - X & W - '
- db '******** And Everyone else OnlyMe! dun MISSED '
- db '*** THE END IS NOT NEIGH *** '
- db '---====*** Begin Again ---> ',0
-
- dw Cube,Begin
-
-;-------------------------------------------------------------------------
-;Do IT!
-
-Main:
- mov ax,013 ;VGA GFX mode = 320 x 200 x 256
- int 010
-
- mov cx,(320*18)/2 ;Erase bump map buffer
- mov di,Bumps
- xor ax,ax
- rep stosw
-
- call GetPalette ;Create shaded palette
- call GetFont ;Read font data out of ROM into current DS
- call InitScroll ;Point to font data for first char of banner
-
- mov ax,0a000 ;Point ES at video segment
- mov es,ax
-
-L0:
- call ChangeAngles ;Get next angle of rotation for all axis
- call GetSinCos ;Calculate Sin and Cos for all rotation angles
- call DoFrame ;Rotate all points of shape and display
- call DoScroll ;Scroll text through bump map buffer
- call DoBump ;Bump map scrolly text and display it
- call Retrace ;Wait for next raster frame
- call ErasePoints ;Erase all pixles that are 8 frames old
- call DoDeltas ;Modify rotational speeds etc
-
- in al,060 ;Read keyboard port
- cmp al,081 ;Escape key released?
- jne L0
-
-;-------------------------------------------------------------------------
-;Exit nicely
-
- mov ax,3 ;Back to textmode
- int 010
- mov ah,2 ;Place cursor at bottom left of display
- mov dx,01700
- xor bx,bx
- int 010
- mov dx,AuRevoir
- mov ah,9
- int 021
- mov ah,04c ;Return control to dos
- int 021
-
-;-------------------------------------------------------------------------
-;Do one frame of rotating object. Calculate and plot all points
-
-;DI points to first trail buffer. We store the address of every pixle
-;we write into this buffer. When it comes time to erase these pixles we
-;do not need to recalculat them. We just collect the address!
-
-DoFrame:
- xor ch,ch ;Clear hi byte of loop counter
- xor di,di ;Point to start of trail buffer
- mov si,[Shape] ;Point to object to be rotated
- mov cl,[si] ;Get number of points
- mov NumPoints,cx ;We need this count later too...
- inc si
-L0:
- movsx ax,[si] ;Get X coordinate of point
- mov [X],ax
- movsx ax,[si+1] ;Get Y coordinate
- mov [Y],ax
- movsx ax,[si+2] ;Get Z coordinate
- mov [Z],ax
- call Rotate ;Rotate point in 3d
- call Draw ;Draw this point
- add si,3 ;Point to next point
- add di,2 ;point to next slot of trail buffer
- dec cx
- jne L0
- ret
-
-;-------------------------------------------------------------------------
-;Project a single XYZ point into 2D space on screen
-
-Draw:
- mov ax,[YOff] ;YOff * Y / Z+ZOff = Screen Y
- imul [Y]
- mov bx,[Z]
- add bx,[ZOff]
- idiv bx
- add ax,[HalfV] ;Centre object on screen
-
- cmp dx,0 ;Clip this pixle if outside display area
- jb short ret
- cmp ax,200
- ja short ret
-
- mov bx,320 ;Calculate 320 * Y...
- imul bx
-
- mov bx,ax
-
- mov ax,[XOff] ;XOff * X / Z+ ZOff = Screen X
- mov bp,[X]
- imul bp
- mov bp,[Z]
- add bp,[ZOff] ;Distance
- idiv bp
- add ax,[HalfH]
-
- cmp dx,0 ;Clip pixle if outside display area
- jb short ret
- cmp ax,320
- ja short ret
-
- add bx,ax
-
- mov ax,-1 ;Generate colour for point based on X Y and Z axis
- sub ax,[Z] ; of dot
- xor ax,[X] ;Divides cube into 8 smaller cubes and alternates
- or ax,[Y] ; light/dark (opposite corners same shade)
- shr ax,4
- add ax,[X] ;This addition makes the cube stripey man :)
- add ax,[Y]
-
- es mov [bx],al ;Place a dot with color al
- mov Trail8[di],bx ;Save address for erase
- ret
-
-;-------------------------------------------------------------------------
-;Erase pixles that are 8 frames old.
-
-;Every time a pixles is drawn to the display we remember its video
-;offset (address). This saves time when we want to erase that dot
-;because we dont need to recalculate the address given an XYZ
-
-ErasePoints:
- xor di,di
- mov cx,MaxPoints
-L0:
- mov bx,Trail8[di] ;Pixles added to display on THIS frame
-; es dec b[bx] ; Make them less bright
- xchg bx,Trail7[di] ;Pixles one frame old
-; es dec b[bx] ; Make them less bright
- xchg bx,Trail6[di] ;Etc...
-; es dec b[bx]
- xchg bx,Trail5[di]
-; es dec b[bx]
- xchg bx,Trail4[di]
-; es dec b[bx]
- xchg bx,Trail3[di]
-; es dec b[bx]
- xchg bx,Trail2[di]
-; es dec b[bx]
- xchg bx,Trail1[di] ;Pixles 8 frames old
- es mov b[bx],0 ;Erase them
- inc di,2
- dec cx
- jne L0
- ret
-
-;-------------------------------------------------------------------------
-;Rotate a single point in 3D space
-
-Rotate:
- push cx ;Need to keep this....
-
-;Rotate object about X axis (changes Y and Z)
-;
-;Y' = Y * Cos(Xang) - Z. Sin(Xang)
-;Z' = Y * Sin(Xang) + Z. Cos(Xang)
-
- movsx eax,[Z] ;Get Z * Sin(X)
- movsx ebx,[XSin]
- mul ebx
- mov ecx,eax ;Save in cx...
- movsx eax,[Y] ;Get Y * Cos(x)
- movsx ebx,[XCos]
- imul ebx
- sub eax,ecx ;Get Y * Cos(X) - Z * Sin(X)
- sar eax,14 ;Sin and Cos Table values are scaled up
- mov bp,ax ; by 16384. SHR scales results back down
-
-;We just calculated our new Y coordinate. We cant yet overwrite the old
-;Y because we still need it to calculated the new Z
-
- movsx eax,[Z] ;Get Z * Cos(X) Exact opposite of above!
- movsx ebx,[XCos]
- imul ebx
- mov ecx,eax ;Save value...
- movsx eax,[Y] ;Get Y * Sin(X)
- movsx ebx,[XSin]
- imul ebx
- add eax,ecx ;Get Y * Sin(X) + Z * Cos(X)
- sar eax,14 ;Scale results down by 16384
-
- mov [Y],bp ;Set newly calculated Y and Z coordinates
- mov [Z],ax
-
-;Rotate point in Y axis
-;
-;X' = X * Cos(Yang) - Z * Sin(Yang)
-;Z' = X * Sin(Yang) + Z * Cos(Yang)
-
- movsx eax,[Z] ;Following code is very similar to above.
- movsx ebx,[YSin] ;It rotates the point in the Y axis
- imul ebx ;I.E. It calculates new X and Z
- mov ecx,eax
- movsx eax,[X]
- movsx ebx,[YCos]
- imul ebx
- sub eax,ecx
- sar eax,14
- mov bp,ax ;Save new X coord
-
- movsx eax,[Z] ;Calculate Z
- movsx ebx,[YCos]
- imul ebx
- mov ecx,eax
- movsx eax,[X]
- movsx ebx,[YSin]
- imul ebx
- add eax,ecx
- sar eax,14
-
- mov [X],bp ;Set new X and Z for point
- mov [Z],ax
-
-;Rotate objecct along Z axis
-;
-;X' = X * Cos(Zang) - Y * Sin(Zang)
-;Y' = X * Sin(Zang) + Y * Cos(Zang)
-
- movsx eax,[Y] ;Hmmm isnt this... the same, arent we just
- movsx ebx,[ZSin] ;doing the same, calculations on in exactly
- imul ebx ;The same, way but using different
- mov ecx,eax ;Variables? Couldnt we optimise here ???
- movsx eax,[X]
- movsx ebx,[ZCos] ;Answer...
- imul ebx ;
- sub eax,ecx ;Yes! But that is a space optimisation
- sar eax,14 ;Not a speed optimisation. The INLINE
- mov bp,ax ;method is faster
-
- movsx eax,[Y] ;There is also a much better way to do this
- movsx ebx,[ZCos] ;that is both smaller and faster.
- imul ebx
- mov ecx,eax ;I.E. Use a Matrix to rotates points
- movsx eax,[X] ;This however is much easier to follow
- movsx ebx,[ZSin] ;and MAFFZ wuzz never my strong suit :)
- imul ebx
- add eax,ecx ;Maybe if this gets too.. slow ill use
- sar eax,14 ;matricies tho :)
-
- mov [X],bp
- mov [Y],ax
- pop cx
- ret
-
-;-------------------------------------------------------------------------
-;calculate new angles of rotation for all points (to angles)
-
-;We do NOT rotate a point by 1 degree on one frame and then rotate that
-;rotated point by 1 degree in the next. We rotate by 1 degree in the
-;first frame, by 2 in the next, by 3 in the next etc.
-
-;Every time a point is rotated there is a slight ammount of error in our
-;calculation. If we rotated previously rotated points we would accumulate
-;errors on each rotation of the point and our object would distort.
-
-;By rotating the SAME points (i.e the original shape) on every frame but
-;by different ammounts each time, we never distort our shape by more
-;than ONE rotations worth of error (which u cant see :)
-
-ChangeAngles:
- mov ax,[DeltaX] ;Adjust X angles of rotation
- add [XAngle],ax
- mov ax,[DeltaY] ;And Y
- add [YAngle],ax
- mov ax,[DeltaZ] ;And Z
- add [ZAngle],ax
- ret
-
-;-------------------------------------------------------------------------
-;Get Sin and Cos of all 3 angles of rotation.
-
-GetSinCos:
- mov ax,[XAngle] ;Get angle
- call SinCos ;Get Sin and Cos
- mov [XSin],ax ;Save em!
- mov [XCos],bx
-
- mov ax,[YAngle] ;Same but different :)
- call SinCos
- mov [YSin],ax
- mov [YCos],bx
-
- mov ax,[ZAngle] ;Same but different :)
- call SinCos
- mov [ZSin],ax
- mov [ZCos],bx
- ret
-
-;-------------------------------------------------------------------------
-;This moves a value between two limits at a specific rate.
-
-;This code uses the structure defined at the top of the source file.
-
-;The structure is defined as...
-;
-; struc [bx]
-;
-;This makes the address in BX the base of the structure. A86 now allows
-;us to just name the structure element without reference to BX, This makes
-;the code easier to read if you understand the mechanism but impossible to
-;follow if you dont :)
-
-;Where you see a something like
-;
-; dec Counter
-;
-;read....
-;
-; dec Counter[bx]
-;
-
-DoDeltas:
- mov bx,W1 ;Modify X rotation
- call >L0
- mov bx,W2 ;Modify Y rotation
- call >L0
- mov bx,W3 ;Modify Z rotation
- call >L0
- mov bx,W4 ;Zoom in and out
-
-L0:
- dec Counter ;Count down to next change
- jne ret
- mov ax,Reset ;Counter hit ZERO. Reset it
- mov Counter,ax
- mov ax,Delta ;Get rate. of change (also direction)
- mov si,Position ;Get pointer to variable to modify
- add ax,[si] ;Add delta to variable
- mov [si],ax ;Store back
- cmp ax,Upper ;Did variable reach upper limit?
- jl >L2
-L1:
- neg Delta ;Change direction!
- ret
-L2:
- cmp ax,Lower ;Did variable reach lower limit?
- jl L1
- ret
-
-;-------------------------------------------------------------------------
-;MOA's bump mapping routine. (Yea im uzing this again hehe I like it :)
-;-------------------------------------------------------------------------
-
-DoBump:
- mov ax,0a000 ;Point to video
- mov es,ax
-
- mov si,BumpMap+320*16 ;Point to end of last line of bumpmap
-
- mov di,16 ;16 scan lines
- mov ax,di
- sub ax,SpotY
- mov BumpY,ax
-
-;-------------------------------------------------------------------------
-
-L0:
- mov ax,320-2 ;320 Pels per scan
- mov cx,ax
- sub ax,SpotX
- mov BumpX,ax
-
-L1:
- mov ax,-1[si] ;Look... No spotlight :) (Addition by OnlyMe)
- or al,1[si]
- or ax,-321[si]
- or al,321[si]
- test ax
- jz >L9
-
- xor ah,ah ;Clear scratch registers
- xor bh,bh
- mov al,[si+1] ;Read bump heights to left and right of this bump
- mov bl,[si-1]
- sub ax,bx ;Compute differenct
- sub ax,BumpX ;I think this gets a 2D normal (erm)
- cwd
- xor ax,dx
- sub ax,dx ;But Maff izznt my strong suit
- mov bx,07f
- sub bx,ax
- mov ax,bx
- cwd
- not dx
- and bx,dx
- push bx
-
- xor ah,ah ;When i understand how this code actually
- xor bh,bh ; works ill add propper comments. Maybe someone
- mov al,[si+0141] ; can fill me in eh
- mov bl,[si-0140]
- sub ax,bx
- sub ax,BumpY
- cwd
- xor ax,dx
- sub ax,dx
- mov bx,07F
- sub bx,ax
- mov ax,bx
- cwd
- not dx
- and bx,dx
-
- pop ax
- mul bl
- shr ax,6+2
-
-L9:
-; shr ax,2
-; add ax,5
- es mov 0e600-BumpMap[si],al
-
- dec BumpX
- dec si
- loop L1
-
- dec BumpY
- sub si,2
- dec di
- jnz L0
- ret
-
-;-------------------------------------------------------------------------
-
-DoScroll:
- xor si,si ;First pixle row in current column
-
- mov bx,BumpMap ;Erm... Actually.... This is wrong... hehehe
- mov bp,[CharP] ;Point to characters font data
- mov dh,b[CharColumn] ;Get column mask
-L0:
- xor cx,cx ;Assume no bumps (0 pixle)
- mov al,[bp+si] ;Get character row from font
- and al,dh ;Mask out all but current column
- if nz mov cx,03030 ;Raise bumps
- mov [bx],cx ;Write double width pixle
- mov 320[bx],cx ;Double height too!
- add bx,2*320
- inc si ;Add 1 to row
- cmp si,8 ;Font is 8 by 8
- jne L0
-
- mov ax,ds
- mov es,ax
-
- mov si,BumpMap ;Scroll bumpmap 2 pixles left
- mov di,si ;pixles at far left move to far right hehehe
- add si,2
- mov cx,320*16/2
- rep movsw
-
- ror CharColumn,1 ;Shift row mask 1
- jnc short ret ;Wrap round and compute next char
-
-InitScroll:
- mov si,[BannerP] ;Get pointer to next char in banner
- test b[si] ;End of text?
- jnz >L0
-
- inc si
- lodsw
- mov [Shape],ax
- lodsw
- mov si,ax
-
-L0:
- xor ah,ah
- lodsb ;Get text character
- mov [BannerP],si
- shl ax,3 ;Compute chars ROM offset
- add ax,Font
- mov CharP,ax ;Points to font data for character
- ret
-
-;-------------------------------------------------------------------------
-;Get a copy of the font data out of ROM into default DS
-
-GetFont:
- mov ax,0f000 ;Point to ROM
- mov ds,ax
- mov si,0fa6e ;Offset to font data in ROM
- mov di,Font
- mov cx,256*2
- rep movsw
- mov ax,cs
- mov ds,ax
- ret
-
-;-------------------------------------------------------------------------
-;Write a KEWL purple palette (Shut Up! I like PuRplE :P)
-
-GetPalette:
- mov dx,03C8 ;Write new palette
- xor cx,cx
- xor ax,ax
- out dx,al
- inc dx
-L0:
- mov al,cl ;Select colour number to updata
- out dx,al ;Write Red
- xchg ah,al
- out dx,al ;Write Green (Zero)
- xchg ah,al
- out dx,al ;Write Blue
- inc cl
- jnz L0
- ret
-
-;-------------------------------------------------------------------------
-;Shape structure defined as....
-;
-; db number-of-points
-; db x,y,z of first point
-; db x,y,z ... of rest
-
-Cube:
- db 125
- db -35,-35,-35,-35,-35,-15,-35,-35, 05,-35,-35, 25,-35,-35, 45
- db -35,-15,-35,-35,-15,-15,-35,-15, 05,-35,-15, 25,-35,-15, 45
- db -35, 05,-35,-35, 05,-15,-35, 05, 05,-35, 05, 25,-35, 05, 45
- db -35, 25,-35,-35, 25,-15,-35, 25, 05,-35, 25, 25,-35, 25, 45
- db -35, 45,-35,-35, 45,-15,-35, 45, 05,-35, 45, 25,-35, 45, 45
- db -15,-35,-35,-15,-35,-15,-15,-35, 05,-15,-35, 25,-15,-35, 45
- db -15,-15,-35,-15,-15,-15,-15,-15, 05,-15,-15, 25,-15,-15, 45
- db -15, 05,-35,-15, 05,-15,-15, 05, 05,-15, 05, 25,-15, 05, 45
- db -15, 25,-35,-15, 25,-15,-15, 25, 05,-15, 25, 25,-15, 25, 45
- db -15, 45,-35,-15, 45,-15,-15, 45, 05,-15, 45, 25,-15, 45, 45
- db 05,-35,-35, 05,-35,-15, 05,-35, 05, 05,-35, 25, 05,-35, 45
- db 05,-15,-35, 05,-15,-15, 05,-15, 05, 05,-15, 25, 05,-15, 45
- db 05, 05,-35, 05, 05,-15, 05, 05, 05, 05, 05, 25, 05, 05, 45
- db 05, 25,-35, 05, 25,-15, 05, 25, 05, 05, 25, 25, 05, 25, 45
- db 05, 45,-35, 05, 45,-15, 05, 45, 05, 05, 45, 25, 05, 45, 45
- db 25,-35,-35, 25,-35,-15, 25,-35, 05, 25,-35, 25, 25,-35, 45
- db 25,-15,-35, 25,-15,-15, 25,-15, 05, 25,-15, 25, 25,-15, 45
- db 25, 05,-35, 25, 05,-15, 25, 05, 05, 25, 05, 25, 25, 05, 45
- db 25, 25,-35, 25, 25,-15, 25, 25, 05, 25, 25, 25, 25, 25, 45
- db 25, 45,-35, 25, 45,-15, 25, 45, 05, 25, 45, 25, 25, 45, 45
- db 45,-35,-35, 45,-35,-15, 45,-35, 05, 45,-35, 25, 45,-35, 45
- db 45,-15,-35, 45,-15,-15, 45,-15, 05, 45,-15, 25, 45,-15, 45
- db 45, 05,-35, 45, 05,-15, 45, 05, 05, 45, 05, 25, 45, 05, 45
- db 45, 25,-35, 45, 25,-15, 45, 25, 05, 45, 25, 25, 45, 25, 45
- db 45, 45,-35, 45, 45,-15, 45, 45, 05, 45, 45, 25, 45, 45, 45
-
-Star:
- db 65
- db -35,-35, 05,-35,-15, 05,-35, 05, 05,-35, 25, 05,-35, 45, 05
- db -15,-35, 05,-15,-15, 05,-15, 05, 05,-15, 25, 05,-15, 45, 05
- db 05,-35, 05, 05,-15, 05, 05, 05, 05, 05, 25, 05, 05, 45, 05
- db 25,-35, 05, 25,-15, 05, 25, 05, 05, 25, 25, 05, 25, 45, 05
- db 45,-35, 05, 45,-15, 05, 45, 05, 05, 45, 25, 05, 45, 45, 05
- db 05,-35,-35, 05,-35,-15, 05,-35, 25, 05,-35, 45,-35, 05,-35
- db 05,-15,-35, 05,-15,-15, 05,-15, 25, 05,-15, 45,-15, 05,-35
- db 05, 05,-35, 05, 05,-15, 05, 05, 25, 05, 05, 45, 05, 05,-35
- db 05, 25,-35, 05, 25,-15, 05, 25, 25, 05, 25, 45, 25, 05,-35
- db 05, 45,-35, 05, 45,-15, 05, 45, 25, 05, 45, 45, 45, 05,-35
- db -35, 05,-15,-35, 05, 25,-35, 05, 45,-15, 05,-15,-15, 05, 25
- db -15, 05, 45, 05, 05,-15, 05, 05, 25, 05, 05, 45, 25, 05,-15
- db 25, 05, 25, 25, 05, 45, 45, 05,-15, 45, 05, 25, 45, 05, 45
-
-Flies:
- db 6
- db -35,-35,-35,-35,-35, 45, 45, 45,-35, 45, 45, 45, 5,-35, 5
- db 5, 45, 5
-
-Square:
- db 25
- db -35,-35,-35,-35,-15,-35,-35, 05,-35,-35, 25,-35,-35, 45,-35
- db -15,-35,-35,-15,-15,-35,-15, 05,-35,-15, 25,-35,-15, 45,-35
- db 05,-35,-35, 05,-15,-35, 05, 05,-35, 05, 25,-35, 05, 45,-35
- db 25,-35,-35, 25,-15,-35, 25, 05,-35, 25, 25,-35, 25, 45,-35
- db 45,-35,-35, 45,-15,-35, 45, 05,-35, 45, 25,-35, 45, 45,-35
-
-Heart:
- db 32
- db -35,-15,-35,-35, 25,-35,-15,-35,-35,-15,-15,-35,-15, 05,-35
- db -15, 25,-35,-15, 45,-35, 05,-35,-35, 05,-15,-35, 05, 05,-35
- db 05, 25,-35, 05, 45,-35, 25,-15,-35, 25, 05,-35, 25, 25,-35
- db 45, 05,-35
- db -30,-10,-30,-30, 20,-30,-10,-30,-30,-10,-10,-30,-10, 00,-30
- db -10, 20,-30,-10, 40,-30, 00,-30,-30, 00,-10,-30, 00, 00,-30
- db 00, 20,-30, 00, 40,-30, 20,-10,-30, 20, 00,-30, 20, 20,-30
- db 40, 00,-30
-
-;-------------------------------------------------------------------------
-;I discovered this one completely by accident. I moved a table from the
-;end of this file to somewhere up there... but forgot to move the label
-;(hehehe). I was therfor referencing a table that is INCLUDED here by my
-;assembler. It had lotsa junk in with it at first but i cleaned that out
-;and this was the result. I love this object :) its KEWKL hehehe!
-
-Cross:
- db 75
- db 000,000,019,000,005,019,000,014,001,000,032,000,000,07D,000
- db 000,0C9,000,001,05F,001,001,0AB,001,001,0F6,001,002,041,002
- db 002,08D,002,002,0D8,002,003,023,003,003,005,004,003,06F,003
- db 003,0BA,003,004,051,004,004,09C,004,004,0E7,004,005,013,006
- db 005,032,005,005,07D,005,005,0C8,005,006,05E,006,006,0A9,006
- db 006,0F4,006,007,03F,007,007,08A,007,007,0D5,007,008,000,009
- db 008,020,008,008,06B,008,008,0B5,008,009,04B,009,009,095,009
- db 009,0E0,009,00A,009,00B,00A,02A,00A,00A,075,00A,00A,0BF,00A
- db 00B,054,00B,00D,007,026,00F,002,028,019,009,032,01E,004,037
- db 022,00B,03B,02C,006,045,02D,001,046,039,008,052,03D,003,056
- db 043,00A,05C,04B,000,064,04B,005,064,058,007,071,05B,002,074
- db 064,009,07C,084,008,09C,088,003,0A1,08D,00A,0A6,096,000,0AF
- db 096,005,0AF,0A3,007,0BC,0A6,002,0BF,0AE,009,0C7,0B5,004,0CE
- db 0C2,006,0DB,0C4,001,0DD,0CE,008,0E7,0D3,003,0EC,0D8,00A,0F1
- db 0E1,005,0FA,0E2,000,0FB,0EE,007,007,0F1,002,00A,0F9,009,011
-
-;=========================================================================
-
diff --git a/wmdots/wmdots/old_dos_demo/dow.com b/wmdots/wmdots/old_dos_demo/dow.com
deleted file mode 100644
index 056de4cd198af25a1dbdb2405351bff413f68aa3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 12874
zcmb_=30M>7+IB(+`wj|mfk6=v2wT`gGDSf}R1mR>YXb=o*))Jii`}5d1(%*`ZEdlq
z)T*bgwY9C)s?`Z$-**u~0T)1I2_PT{{P%>~)AOJIJJ<DJ*Eds{H#6`0EcbKY?TOHt
zXZR&U%s7RcV6hqM3{8e5ZbPOT!;qoIFvD%koSxCc7kk{Mc&~##YPj{8Q!@nX7se{)
zyM%*-0}&A?Ap(<QQ;5(QVpBjkA(kX26HysNXi`GPT8Xu)5Ao_+CW)0MS-<-A=QA{p
zNX0Z_dKxq`h&Yj$5D|$INvbp{R@Dv5WDwD!L<tciOHL$`BqA9hN)i(>c+yt@+9}ES
zteQmC5t~R%PED2(QE4gv-sjIR(SM9qeP+CFyg)59iI60vN@Vo9^qyYrAx@N#pz0MQ
zijJcfA)=Gh62wHRC|-iCCL|}vt3GdvlgK0l2GU1JO~wNg#Ys~LQA$c&a)LzFY2$9Z
zij5=Eb|)ucaNMiGv)h<!a#oE#PI{aqY1SO+^qiPLk{FdB5&vr&(V`@2k_6|*EcE%M
z=tf@~REChsQZsP&gamrGbf4rHEEXkA#R2GRbz0(X%$BxWH5i*q5Xta+MR0hK>bvR>
zLu%~C3c%UZMJa@o-tBHI8m;;kLBETW;G^mwIPITicx9znsf37?iK3z~u_%?0VVm$C
zeFb2yKTM+X=zo}Dp5eEwb;;=}FZ|Ing_yMjR!o%co83D-*QPir&Xgz;O9;sy?x7b>
zN&dqg5wsunN@#zi&jwC1d@Gxc70gY~L9CM4i4j+O@jg9SmPABJVqT3`eP?`R#8;>N
zk{XATz@zDL8AMuAsx$#_@KY?xQ1uH?MMt_6n-t5EVO%0A8BU@v>?1aL)>VnL*+fbI
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
diff --git a/wmdots/wmdots/old_dos_demo/sintab.s b/wmdots/wmdots/old_dos_demo/sintab.s
deleted file mode 100644
index 89d8d5e..0000000
--- a/wmdots/wmdots/old_dos_demo/sintab.s
+++ /dev/null
@@ -1,528 +0,0 @@
-;Sin and Cos tables based on 4096 degree circle.
-;-------------------------------------------------------------------------
-
-;Does not extend table by a right angle to account for COS...
-; Code takes care of this!
-
-;-------------------------------------------------------------------------
-
- even 2
-
-SinTab:
- dw 00000,00019,00032,0004b,00064,0007d,00096,000af ;000
- dw 000c9,000e2,000fb,00114,0012d,00146,0015f,00178 ;008
- dw 00192,001ab,001c4,001dd,001f6,0020f,00228,00241 ;010
- dw 0025b,00274,0028d,002a6,002bf,002d8,002f1,0030a ;018
- dw 00323,0033d,00356,0036f,00388,003a1,003ba,003d3 ;020
- dw 003ec,00405,0041e,00437,00451,0046a,00483,0049c ;028
- dw 004b5,004ce,004e7,00500,00519,00532,0054b,00564 ;030
- dw 0057d,00596,005af,005c8,005e1,005fa,00613,0062c ;038
- dw 00645,0065e,00677,00690,006a9,006c2,006db,006f4 ;040
- dw 0070d,00726,0073f,00758,00771,0078a,007a3,007bc ;048
- dw 007d5,007ee,00807,00820,00839,00852,0086b,00884 ;050
- dw 0089c,008b5,008ce,008e7,00900,00919,00932,0094b ;058
- dw 00964,0097c,00995,009ae,009c7,009e0,009f9,00a11 ;060
- dw 00a2a,00a43,00a5c,00a75,00a8d,00aa6,00abf,00ad8 ;068
- dw 00af1,00b09,00b22,00b3b,00b54,00b6c,00b85,00b9e ;070
- dw 00bb6,00bcf,00be8,00c01,00c19,00c32,00c4b,00c63 ;078
- dw 00c7c,00c95,00cad,00cc6,00cde,00cf7,00d10,00d08 ;080
- dw 00d41,00d59,00d72,00d8b,00da3,00dbc,00dd4,00ded ;088
- dw 00e05,00e1e,00e36,00e4f,00e67,00e80,00e98,00eb1 ;090
- dw 00ec9,00ee2,00efa,00f12,00f2b,00f43,00f5c,00f74 ;098
- dw 00f8c,00fa5,00fbd,00fd6,00fee,01006,0101f,01037 ;0a0
- dw 0104f,01068,01080,01098,010b0,010c9,010e1,010f9 ;0a8
- dw 01111,0112a,01142,0115a,01172,0118a,011a2,011bb ;0b0
- dw 011d3,011eb,01203,0121b,01233,0124b,01263,0127b ;0b8
- dw 01294,012ac,012c4,012dc,012f4,0130c,01324,0133c ;0c0
- dw 01354,0136c,01383,0139b,013b3,013cb,013e3,013fb ;0c8
- dw 01413,0142b,01443,0145a,01472,0148a,014a2,014ba ;0d0
- dw 014d1,014e9,01501,01519,01530,01548,01560,01577 ;0d8
- dw 0158f,015a7,015be,015d6,015ee,01605,0161d,01634 ;0e0
- dw 0164c,01664,0167b,01693,016aa,016c2,016d9,016f1 ;0e8
- dw 01708,0171f,01737,0174e,01766,0177d,01794,017ac ;0f0
- dw 017c3,017da,017f2,01809,01820,01838,0184f,01866 ;0f8
- dw 0187d,01895,018ac,018c3,018da,018f1,01908,01920 ;100
- dw 01937,0194e,01965,0197c,01993,019aa,019c1,019d8 ;108
- dw 019ef,01a06,01a1d,01a34,01a4b,01a62,01a79,01a8f ;110
- dw 01aa6,01abd,01ad4,01aeb,01b02,01b18,01b2f,01b46 ;118
- dw 01b5d,01b73,01b8a,01ba1,01bb7,01bce,01be5,01bfb ;120
- dw 01c12,01c28,01c3f,01c55,01c6c,01c83,01c99,01caf ;128
- dw 01cc6,01cdc,01cf3,01d09,01d20,01d36,01d4c,01d63 ;130
- dw 01d79,01d8f,01da6,01dbc,01dd2,01de8,01dfe,01e15 ;138
- dw 01e2b,01e41,01e57,01e6d,01e83,01e99,01eb0,01ec6 ;140
- dw 01edc,01ef2,01f08,01f1e,01f34,01f49,01f5f,01f75 ;148
- dw 01f8b,01fa1,01fb7,01fcd,01fe2,01ff8,0200e,02024 ;150
- dw 02039,0204f,02065,0207b,02090,020a6,020bb,020d1 ;158
- dw 020e7,020fc,02112,02127,0213d,02152,02168,0217d ;160
- dw 02192,021a8,021bd,021d2,021e8,021fd,02212,02228 ;168
- dw 0223d,02252,02267,0227d,02292,022a7,022bc,022d1 ;170
- dw 022e6,022fb,02310,02325,0233a,0234f,02364,02379 ;178
- dw 0238e,023a3,023b8,023cd,023e1,023f6,0240b,02420 ;180
- dw 02434,02449,0245e,02473,02487,0249c,024b0,024c5 ;188
- dw 024da,024ee,02503,02517,0252c,02540,02554,02569 ;190
- dw 0257d,02592,025a6,025ba,025cf,025e3,025f7,0260b ;198
- dw 0261f,02634,02648,0265c,02670,02684,02698,026ac ;1a0
- dw 026c0,026d4,026e8,026fc,02710,02724,02738,0274c ;1a8
- dw 0275f,02773,02787,0279b,027af,027c2,027d6,027ea ;1b0
- dw 027fd,02811,02824,02838,0284b,0285f,02872,02886 ;1b8
- dw 02899,028ad,028c0,028d4,028e7,028fa,0290e,02921 ;1c0
- dw 02934,02947,0295a,0296e,02981,02994,029a7,029ba ;1c8
- dw 029cd,029e0,029f3,02a06,02a19,02a2c,02a3f,02a52 ;1d0
- dw 02a65,02a77,02a8a,02a9d,02ab0,02ac2,02ad5,02ae8 ;1d8
- dw 02afa,02b0d,02b20,02b32,02b45,02b57,02b6a,02b7c ;1e0
- dw 02b8e,02ba1,02bb3,02bc6,02bd8,02bea,02bfc,02c0f ;1e8
- dw 02c21,02c33,02c45,02c57,02c6a,02c7c,02c8e,02ca0 ;1f0
- dw 02cb2,02cc4,02cd6,02ce8,02cf9,02d0b,02d1d,02d2f ;1f8
- dw 02d41,02d52,02d64,02d76,02d88,02d99,02dab,02dbc ;200
- dw 02dce,02de0,02df1,02e03,02e14,02e25,02e37,02e48 ;208
- dw 02e5a,02e6b,02e7c,02e8d,02e9f,02eb0,02ec1,02ed2 ;210
- dw 02ee3,02ef4,02f05,02f16,02f28,02f38,02f49,02f5a ;218
- dw 02f6b,02f7c,02f8d,02f9e,02faf,02fbf,02fd0,02fe1 ;220
- dw 02ff1,03002,03013,03023,03034,03044,03055,03065 ;228
- dw 03076,03086,03096,030a7,030b7,030c7,030d8,030e8 ;230
- dw 030f8,03108,03118,03128,03138,03149,03159,03169 ;238
- dw 03179,03188,03198,031a8,031b8,031c8,031d8,031e7 ;240
- dw 031f7,03207,03216,03226,03236,03245,03255,03264 ;248
- dw 03274,03283,03293,032a2,032b1,032c1,032d0,032df ;250
- dw 032ee,032fe,0330d,0331c,0332b,0333a,03349,03358 ;258
- dw 03367,03376,03385,03394,033a3,033b2,033c1,033cf ;260
- dw 033de,033ed,033fb,0340a,03419,03427,03436,03444 ;268
- dw 03453,03461,03470,0347e,0348c,0349b,034a9,034b7 ;270
- dw 034c6,034d4,034e2,034f0,034fe,0350c,0351a,03528 ;278
- dw 03536,03544,03552,03560,0356e,0357c,03589,03597 ;280
- dw 035a5,035b3,035c0,035ce,035dc,035e9,035f7,03604 ;288
- dw 03612,0361f,0362c,0363a,03647,03654,03662,0366f ;290
- dw 0367c,03689,03696,036a4,036b1,036be,036cb,036d8 ;298
- dw 036e5,036f1,036fe,0370b,03718,03725,03731,0373e ;2a0
- dw 0374b,03757,03764,03771,0377d,0378a,03796,037a3 ;2a8
- dw 037af,037bb,037c8,037d4,037e0,037ed,037f9,03805 ;2b0
- dw 03811,0381d,03829,03835,03841,0384d,03859,03865 ;2b8
- dw 03871,0387d,03889,03894,038a0,038ac,038b7,038c3 ;2c0
- dw 038cf,038da,038e6,038f1,038fd,03908,03913,0391f ;2c8
- dw 0392a,03935,03941,0394c,03957,03962,0396d,03978 ;2d0
- dw 03983,0398e,03999,039a4,039af,039ba,039c5,039d0 ;2d8
- dw 039da,039e5,039f0,039fb,03a05,03a10,03a1a,03a25 ;2e0
- dw 03a2f,03a3a,03a44,03a4f,03a59,03a63,03a6d,03a78 ;2e0
- dw 03a82,03a8c,03a96,03aa0,03aaa,03ab4,03abe,03ac8 ;2f0
- dw 03ad2,03adc,03ae6,03af0,03afa,03b03,03b0d,03b17 ;2f8
- dw 03b20,03b2a,03b34,03b3d,03b47,03b50,03b59,03b63 ;300
- dw 03b6c,03b75,03b7f,03b88,03b91,03b9a,03ba3,03bad ;308
- dw 03bb6,03bbf,03bc8,03bd1,03bda,03be2,03beb,03bf4 ;310
- dw 03bfd,03c06,03c0e,03c17,03c20,03c28,03c31,03c39 ;318
- dw 03c42,03c4a,03c53,03c5b,03c63,03c6c,03c74,03c7c ;320
- dw 03c84,03c8c,03c95,03c9d,03ca5,03cad,03cb5,03cbd ;328
- dw 03cc5,03ccc,03cd4,03cdc,03ce4,03cec,03cf3,03cfb ;320
- dw 03d02,03d0a,03d12,03d19,03d21,03d28,03d2f,03d37 ;338
- dw 03d3e,03d45,03d4d,03d54,03d5b,03d62,03d69,03d70 ;340
- dw 03d77,03d7e,03d85,03d8c,03d93,03d9a,03da1,03da7 ;348
- dw 03dae,03db5,03dbb,03dc2,03dc9,03dcf,03dd6,03ddc ;350
- dw 03de2,03de9,03def,03df5,03dfc,03e02,03e08,03e0e ;358
- dw 03e14,03e1b,03e21,03e27,03e2d,03e33,03e38,03e3e ;360
- dw 03e44,03e4a,03e50,03e55,03e5b,03e61,03e66,03e6c ;368
- dw 03e71,03e77,03e7c,03e82,03e87,03e8c,03e92,03e97 ;370
- dw 03e9c,03ea1,03ea7,03eac,03eb1,03eb6,03ebb,03ec0 ;378
- dw 03ec5,03eca,03ece,03ed3,03ed8,03edd,03ee1,03ee6 ;380
- dw 03eeb,03eef,03ef4,03ef8,03efd,03f01,03f06,03f0a ;388
- dw 03f0e,03f13,03f17,03f1b,03f1f,03f23,03f27,03f2b ;390
- dw 03f2f,03f33,03f37,03f3b,03f3f,03f43,03f47,03f4a ;398
- dw 03f4e,03f52,03f55,03f59,03f5d,03f60,03f64,03f67 ;3a0
- dw 03f6a,03f6e,03f71,03f74,03f78,03f7b,03f7e,03f81 ;3a8
- dw 03f84,03f87,03f8a,03f8d,03f90,03f93,03f96,03f99 ;3b0
- dw 03f9c,03f9e,03fa1,03fa4,03fa6,03fa9,03fac,03fae ;3b8
- dw 03fb1,03fb3,03fb5,03fb8,03fba,03fbc,03fbf,03fc1 ;3c0
- dw 03fc3,03fc5,03fc7,03fc9,03fcb,03fcd,03fcf,03fd1 ;3c8
- dw 03fd3,03fd5,03fd7,03fd8,03fda,03fdc,03fde,03fdf ;3d0
- dw 03fe1,03fe2,03fe4,03fe5,03fe7,03fe8,03fe9,03feb ;3d8
- dw 03fec,03fed,03fee,03fef,03ff0,03ff1,03ff2,03ff3 ;3e0
- dw 03ff4,03ff5,03ff6,03ff7,03ff8,03ff9,03ff9,03ffa ;3e8
- dw 03ffb,03ffb,03ffc,03ffc,03ffd,03ffd,03ffe,03ffe ;3f0
- dw 03ffe,03fff,03fff,03fff,03fff,03fff,03fff,03fff ;3f8
-
- dw 03fff,03fff,03fff,03fff,03fff,03fff,03fff,03fff ;400
- dw 03ffe,03ffe,03ffe,03ffd,03ffd,03ffc,03ffc,03ffb ;408
- dw 03ffb,03ffa,03ff9,03ff9,03ff8,03ff7,03ff6,03ff5 ;410
- dw 03ff4,03ff3,03ff2,03ff1,03ff0,03fef,03fee,03fed ;418
- dw 03fec,03feb,03fe9,03fe8,03fe7,03fe5,03fe4,03fe2 ;420
- dw 03fe1,03fdf,03fde,03fdc,03fda,03fd8,03fd7,03fd5 ;428
- dw 03fd3,03fd1,03fcf,03fcd,03fcb,03fc9,03fc7,03fc5 ;430
- dw 03fc3,03fc1,03fbf,03fbc,03fba,03fb8,03fb5,03fb3 ;438
- dw 03fb1,03fae,03fac,03fa9,03fa6,03fa4,03fa1,03f9e ;440
- dw 03f9c,03f99,03f96,03f93,03f90,03f8d,03f8a,03f87 ;448
- dw 03f84,03f81,03f7e,03f7b,03f78,03f74,03f71,03f6e ;450
- dw 03f6a,03f67,03f64,03f60,03f5d,03f59,03f55,03f52 ;458
- dw 03f4e,03f4a,03f47,03f43,03f3f,03f3b,03f37,03f33 ;460
- dw 03f2f,03f2b,03f27,03f23,03f1f,03f1b,03f17,03f13 ;468
- dw 03f0e,03f0a,03f06,03f01,03efd,03ef8,03ef4,03eef ;470
- dw 03eeb,03ee6,03ee1,03edd,03ed8,03ed3,03ece,03eca ;478
- dw 03ec5,03ec0,03ebb,03eb6,03eb1,03eac,03ea7,03ea1 ;480
- dw 03e9c,03e97,03e92,03e8c,03e87,03e82,03e7c,03e77 ;488
- dw 03e71,03e6c,03e66,03e61,03e5b,03e55,03e50,03e4a ;490
- dw 03e44,03e3e,03e38,03e33,03e2d,03e27,03e21,03e1b ;498
- dw 03e14,03e0e,03e08,03e02,03dfc,03df5,03def,03de9 ;4a0
- dw 03de2,03ddc,03dd6,03dcf,03dc9,03dc2,03dbb,03db5 ;4a8
- dw 03dae,03da7,03da1,03d9a,03d93,03d8c,03d85,03d7e ;4b0
- dw 03d77,03d70,03d69,03d62,03d5b,03d54,03d4d,03d45 ;4b8
- dw 03d3e,03d37,03d2f,03d28,03d21,03d19,03d12,03d0a ;4c0
- dw 03d02,03cfb,03cf3,03cec,03ce4,03cdc,03cd4,03ccc ;4c8
- dw 03cc5,03cbd,03cb5,03cad,03ca5,03c9d,03c95,03c8c ;4d0
- dw 03c84,03c7c,03c74,03c6c,03c63,03c5b,03c53,03c4a ;4d8
- dw 03c42,03c39,03c31,03c28,03c20,03c17,03c0e,03c06 ;4e0
- dw 03bfd,03bf4,03beb,03be2,03bda,03bd1,03bc8,03bbf ;4e8
- dw 03bb6,03bad,03ba3,03b9a,03b91,03b88,03b7f,03b75 ;4f0
- dw 03b6c,03b63,03b59,03b50,03b47,03b3d,03b34,03b2a ;4f8
- dw 03b20,03b17,03b0d,03b03,03afa,03af0,03ae6,03adc ;500
- dw 03ad2,03ac8,03abe,03ab4,03aaa,03aa0,03a96,03a8c ;508
- dw 03a82,03a78,03a6d,03a63,03a59,03a4f,03a44,03a3a ;510
- dw 03a2f,03a25,03a1a,03a10,03a05,039fb,039f0,039e5 ;518
- dw 039da,039d0,039c5,039ba,039af,039a4,03999,0398e ;520
- dw 03983,03978,0396d,03962,03957,0394c,03941,03935 ;528
- dw 0392a,0391f,03913,03908,038fd,038f1,038e6,038da ;530
- dw 038cf,038c3,038b7,038ac,038a0,03894,03889,0387d ;538
- dw 03871,03865,03859,0384d,03841,03835,03829,0381d ;540
- dw 03811,03805,037f9,037ed,037e0,037d4,037c8,037bb ;548
- dw 037af,037a3,03796,0378a,0377d,03771,03764,03757 ;550
- dw 0374b,0373e,03731,03725,03718,0370b,036fe,036f1 ;558
- dw 036e5,036d8,036cb,036be,036b1,036a4,03696,03689 ;560
- dw 0367c,0366f,03662,03654,03647,0363a,0362c,0361f ;568
- dw 03612,03604,035f7,035e9,035dc,035ce,035c0,035b3 ;570
- dw 035a5,03597,03589,0357c,0356e,03560,03552,03544 ;578
- dw 03536,03528,0351a,0350c,034fe,034f0,034e2,034d4 ;580
- dw 034c6,034b7,034a9,0349b,0348c,0347e,03470,03461 ;588
- dw 03453,03444,03436,03427,03419,0340a,033fb,033ed ;590
- dw 033de,033cf,033c1,033b2,033a3,03394,03385,03376 ;598
- dw 03367,03358,03349,0333a,0332b,0331c,0330d,032fe ;5a0
- dw 032ee,032df,032d0,032c1,032b1,032a2,03293,03283 ;5a8
- dw 03274,03264,03255,03245,03236,03226,03216,03207 ;5b0
- dw 031f7,031e7,031d8,031c8,031b8,031a8,03198,03188 ;5b8
- dw 03179,03169,03159,03149,03138,03128,03118,03108 ;5c0
- dw 030f8,030e8,030d8,030c7,030b7,030a7,03096,03086 ;5c8
- dw 03076,03065,03055,03044,03034,03023,03013,03002 ;5d0
- dw 02ff1,02fe1,02fd0,02fbf,02faf,02f9e,02f8d,02f7c ;5d8
- dw 02f6b,02f5a,02f49,02f38,02f27,02f16,02f05,02ef4 ;5e0
- dw 02ee3,02ed2,02ec1,02eb0,02e9f,02e8d,02e7c,02e6b ;5e8
- dw 02e5a,02e48,02e37,02e25,02e14,02e03,02df1,02de0 ;5f0
- dw 02dce,02dbc,02dab,02d99,02d88,02d76,02d64,02d52 ;5f8
- dw 02d41,02d2f,02d1d,02d0b,02cf9,02ce8,02cd6,02cc4 ;600
- dw 02cb2,02ca0,02c8e,02c7c,02c6a,02c57,02c45,02c33 ;608
- dw 02c21,02c0f,02bfc,02bea,02bd8,02bc6,02bb3,02ba1 ;610
- dw 02b8e,02b7c,02b6a,02b57,02b45,02b32,02b20,02b0d ;618
- dw 02afa,02ae8,02ad5,02ac2,02ab0,02a9d,02a8a,02a77 ;620
- dw 02a65,02a52,02a3f,02a2c,02a19,02a06,029f3,029e0 ;628
- dw 029cd,029ba,029a7,02994,02981,0296e,0295a,02947 ;630
- dw 02934,02921,0290e,028fa,028e7,028d4,028c0,028ad ;638
- dw 02899,02886,02872,0285f,0284b,02838,02824,02811 ;640
- dw 027fd,027ea,027d6,027c2,027af,0279b,02787,02773 ;648
- dw 0275f,0274c,02738,02724,02710,026fc,026e8,026d4 ;650
- dw 026c0,026ac,02698,02684,02670,0265c,02648,02634 ;658
- dw 0261f,0260b,025f7,025e3,025cf,025ba,025a6,02592 ;660
- dw 0257d,02569,02554,02540,0252c,02517,02503,024ee ;668
- dw 024da,024c5,024b0,0249c,02487,02473,0245e,02449 ;670
- dw 02434,02420,0240b,023f6,023e1,023cd,023b8,023a3 ;678
- dw 0238e,02379,02364,0234f,0233a,02325,02310,022fb ;680
- dw 022e6,022d1,022bc,022a7,02292,0227d,02267,02252 ;688
- dw 0223d,02228,02212,021fd,021e8,021d2,021bd,021a8 ;690
- dw 02192,0217d,02168,02152,0213d,02127,02112,020fc ;698
- dw 020e7,020d1,020bb,020a6,02090,0207b,02065,0204f ;6a0
- dw 02039,02024,0200e,01ff8,01fe2,01fcd,01fb7,01fa1 ;6a8
- dw 01f8b,01f75,01f5f,01f49,01f34,01f1e,01f08,01ef2 ;6b0
- dw 01edc,01ec6,01eb0,01e99,01e83,01e6d,01e57,01e41 ;6b8
- dw 01e2b,01e15,01dfe,01de8,01dd2,01dbc,01da6,01d8f ;6c0
- dw 01d79,01d63,01d4c,01d36,01d20,01d09,01cf3,01cdc ;6c8
- dw 01cc6,01caf,01c99,01c83,01c6c,01c55,01c3f,01c28 ;6d0
- dw 01c12,01bfb,01be5,01bce,01bb7,01ba1,01b8a,01b73 ;6d8
- dw 01b5d,01b46,01b2f,01b18,01b02,01aeb,01ad4,01abd ;6e0
- dw 01aa6,01a8f,01a79,01a62,01a4b,01a34,01a1d,01a06 ;6e8
- dw 019ef,019d8,019c1,019aa,01993,0197c,01965,0194e ;6f0
- dw 01937,01920,01908,018f1,018da,018c3,018ac,01895 ;6f8
- dw 0187d,01866,0184f,01838,01820,01809,017f2,017da ;700
- dw 017c3,017ac,01794,0177d,01766,0174e,01737,0171f ;708
- dw 01708,016f1,016d9,016c2,016aa,01693,0167b,01664 ;710
- dw 0164c,01634,0161d,01605,015ee,015d6,015be,015a7 ;718
- dw 0158f,01577,01560,01548,01530,01519,01501,014e9 ;720
- dw 014d1,014ba,014a2,0148a,01472,0145a,01443,0142b ;728
- dw 01413,013fb,013e3,013cb,013b3,0139b,01383,0136c ;730
- dw 01354,0133c,01324,0130c,012f4,012dc,012c4,012ac ;738
- dw 01294,0127b,01263,0124b,01233,0121b,01203,011eb ;740
- dw 011d3,011bb,011a2,0118a,01172,0115a,01142,0112a ;748
- dw 01111,010f9,010e1,010c9,010b0,01098,01080,01068 ;750
- dw 0104f,01037,0101f,01006,00fee,00fd6,00fbd,00fa5 ;758
- dw 00f8c,00f74,00f5c,00f43,00f2b,00f12,00efa,00ee2 ;760
- dw 00ec9,00eb1,00e98,00e80,00e67,00e4f,00e36,00e1e ;768
- dw 00e05,00ded,00dd4,00dbc,00da3,00d8b,00d72,00d59 ;770
- dw 00d41,00d28,00d10,00cf7,00cde,00cc6,00cad,00c94 ;778
- dw 00c7c,00c63,00c4b,00c32,00c19,00c01,00be8,00bcf ;780
- dw 00bb6,00b9e,00b85,00b6c,00b54,00b3b,00b22,00b09 ;788
- dw 00af1,00ad8,00abf,00aa6,00a8d,00a75,00a5c,00a43 ;790
- dw 00a2a,00a11,009f9,009e0,009c7,009ae,00995,0097c ;798
- dw 00964,0094b,00932,00919,00900,008e7,008ce,008b5 ;7a0
- dw 0089c,00884,0086b,00852,00839,00820,00807,007ee ;7a8
- dw 007d5,007bc,007a3,0078a,00771,00758,0073f,00726 ;7b0
- dw 0070d,006f4,006db,006c2,006a9,00690,00677,0065e ;7b8
- dw 00645,0062c,00613,005fa,005e1,005c8,005af,00596 ;7c0
- dw 0057d,00564,0054b,00532,00519,00500,004e7,004ce ;7c8
- dw 004b5,0049c,00483,0046a,00450,00437,0041e,00405 ;7d0
- dw 003ec,003d3,003ba,003a1,00388,0036f,00356,0033d ;7d8
- dw 00323,0030a,002f1,002d8,002bf,002a6,0028d,00274 ;7e0
- dw 0025b,00241,00228,0020f,001f6,001dd,001c4,001ab ;7e8
- dw 00192,00178,0015f,00146,0012d,00114,000fb,000e2 ;7f0
- dw 000c9,000af,00096,0007d,00064,0004b,00032,00019 ;7f8
-
- dw 00000,0ffe7,0ffce,0ffb5,0ff9c,0ff83,0ff6a,0ff51 ;800
- dw 0ff37,0ff1e,0ff05,0feec,0fed3,0feba,0fea1,0fe88 ;808
- dw 0fe6e,0fe55,0fe3c,0fe23,0fe0a,0fdf1,0fdd8,0fdbf ;810
- dw 0fda5,0fd8c,0fd73,0fd5a,0fd41,0fd28,0fd0f,0fcf6 ;818
- dw 0fcdd,0fcc3,0fcaa,0fc91,0fc78,0fc5f,0fc46,0fc2d ;820
- dw 0fc14,0fbfb,0fbe2,0fbc9,0fbaf,0fb96,0fb7d,0fb64 ;828
- dw 0fb4b,0fb32,0fb19,0fb00,0fae7,0face,0fab5,0fa9c ;830
- dw 0fa83,0fa6a,0fa51,0fa38,0fa1f,0fa06,0f9ed,0f9d4 ;838
- dw 0f9bb,0f9a2,0f989,0f970,0f957,0f93e,0f925,0f90c ;840
- dw 0f8f3,0f8da,0f8c1,0f8a8,0f88f,0f876,0f85d,0f844 ;848
- dw 0f82b,0f812,0f7f9,0f7e0,0f7c7,0f7ae,0f795,0f77c ;850
- dw 0f764,0f74b,0f732,0f719,0f700,0f6e7,0f6ce,0f6b5 ;858
- dw 0f69c,0f684,0f66b,0f652,0f639,0f620,0f607,0f5ef ;860
- dw 0f5d6,0f5bd,0f5a4,0f58b,0f573,0f55a,0f541,0f528 ;868
- dw 0f50f,0f4f7,0f4de,0f4c5,0f4ac,0f494,0f47b,0f462 ;870
- dw 0f44a,0f431,0f418,0f3ff,0f3e7,0f3ce,0f3b5,0f39d ;878
- dw 0f384,0f36b,0f353,0f33a,0f322,0f309,0f2f0,0f2d8 ;880
- dw 0f2bf,0f2a7,0f28e,0f275,0f25d,0f244,0f22c,0f213 ;888
- dw 0f1fb,0f1e2,0f1ca,0f1b1,0f199,0f180,0f168,0f14f ;890
- dw 0f137,0f11e,0f106,0f0ee,0f0d5,0f0bd,0f0a4,0f08c ;898
- dw 0f074,0f05b,0f043,0f02a,0f012,0effa,0efe1,0efc9 ;8a0
- dw 0efb1,0ef98,0ef80,0ef68,0ef50,0ef37,0ef1f,0ef07 ;8a8
- dw 0eeef,0eed6,0eebe,0eea6,0ee8e,0ee76,0ee5e,0ee45 ;8b0
- dw 0ee2d,0ee15,0edfd,0ede5,0edcd,0edb5,0ed9d,0ed85 ;8b8
- dw 0ed6c,0ed54,0ed3c,0ed24,0ed0c,0ecf4,0ecdc,0ecc4 ;8c0
- dw 0ecac,0ec94,0ec7d,0ec65,0ec4d,0ec35,0ec1d,0ec05 ;8c8
- dw 0ebed,0ebd5,0ebbd,0eba6,0eb8e,0eb76,0eb5e,0eb46 ;8d0
- dw 0eb2f,0eb17,0eaff,0eae7,0ead0,0eab8,0eaa0,0ea89 ;8d8
- dw 0ea71,0ea59,0ea42,0ea2a,0ea12,0e9fb,0e9e3,0e9cc ;8e0
- dw 0e9b4,0e99c,0e985,0e96d,0e956,0e93e,0e927,0e90f ;8e8
- dw 0e8f8,0e8e1,0e8c9,0e8b2,0e89a,0e883,0e86c,0e854 ;8f0
- dw 0e83d,0e826,0e80e,0e7f7,0e7e0,0e7c8,0e7b1,0e79a ;8f8
- dw 0e783,0e76b,0e754,0e73d,0e726,0e70f,0e6f8,0e6e0 ;900
- dw 0e6c9,0e6b2,0e69b,0e684,0e66d,0e656,0e63f,0e628 ;908
- dw 0e611,0e5fa,0e5e3,0e5cc,0e5b5,0e59e,0e587,0e571 ;910
- dw 0e55a,0e543,0e52c,0e515,0e4fe,0e4e8,0e4d1,0e4ba ;918
- dw 0e4a3,0e48d,0e476,0e45f,0e449,0e432,0e41b,0e405 ;920
- dw 0e3ee,0e3d8,0e3c1,0e3ab,0e394,0e37d,0e367,0e351 ;928
- dw 0e33a,0e324,0e30d,0e2f7,0e2e0,0e2ca,0e2b4,0e29d ;930
- dw 0e287,0e271,0e25a,0e244,0e22e,0e218,0e201,0e1eb ;938
- dw 0e1d5,0e1bf,0e1a9,0e193,0e17d,0e167,0e150,0e13a ;940
- dw 0e124,0e10e,0e0f8,0e0e2,0e0cc,0e0b7,0e0a1,0e08b ;948
- dw 0e075,0e05f,0e049,0e033,0e01e,0e008,0dff2,0dfdc ;950
- dw 0dfc7,0dfb1,0df9b,0df85,0df70,0df5a,0df45,0df2f ;958
- dw 0df19,0df04,0deee,0ded9,0dec3,0deae,0de98,0de83 ;960
- dw 0de6e,0de58,0de43,0de2e,0de18,0de03,0ddee,0ddd8 ;968
- dw 0ddc3,0ddae,0dd99,0dd83,0dd6e,0dd59,0dd44,0dd2f ;970
- dw 0dd1a,0dd05,0dcf0,0dcdb,0dcc6,0dcb1,0dc9c,0dc87 ;978
- dw 0dc72,0dc5d,0dc48,0dc33,0dc1f,0dc0a,0dbf5,0dbe0 ;980
- dw 0dbcc,0dbb7,0dba2,0db8d,0db79,0db64,0db50,0db3b ;988
- dw 0db26,0db12,0dafd,0dae9,0dad4,0dac0,0daac,0da97 ;990
- dw 0da83,0da6e,0da5a,0da46,0da31,0da1d,0da09,0d9f5 ;998
- dw 0d9e1,0d9cc,0d9b8,0d9a4,0d990,0d97c,0d968,0d954 ;9a0
- dw 0d940,0d92c,0d918,0d904,0d8f0,0d8dc,0d8c8,0d8b4 ;9a8
- dw 0d8a1,0d88d,0d879,0d865,0d851,0d83e,0d82a,0d816 ;9b0
- dw 0d803,0d7ef,0d7dc,0d7c8,0d7b5,0d7a1,0d78d,0d77a ;9b8
- dw 0d767,0d753,0d740,0d72c,0d719,0d706,0d6f2,0d6df ;9c0
- dw 0d6cc,0d6b9,0d6a6,0d692,0d67f,0d66c,0d659,0d646 ;9c8
- dw 0d633,0d620,0d60d,0d5fa,0d5e7,0d5d4,0d5c1,0d5ae ;9d0
- dw 0d59b,0d589,0d576,0d563,0d550,0d53e,0d52b,0d518 ;9d8
- dw 0d506,0d4f3,0d4e0,0d4ce,0d4bb,0d4a9,0d496,0d484 ;9e0
- dw 0d472,0d45f,0d44d,0d43a,0d428,0d416,0d404,0d3f1 ;9e8
- dw 0d3df,0d3cd,0d3bb,0d3a9,0d396,0d384,0d372,0d360 ;9f0
- dw 0d34e,0d33c,0d32a,0d318,0d307,0d2f5,0d2e3,0d2d1 ;9f8
- dw 0d2bf,0d2ad,0d29c,0d28a,0d278,0d267,0d255,0d244 ;a00
- dw 0d232,0d220,0d20f,0d1fd,0d1ec,0d1db,0d1c9,0d1b8 ;a08
- dw 0d1a6,0d195,0d184,0d173,0d161,0d150,0d13f,0d12e ;a10
- dw 0d11d,0d10c,0d0fb,0d0e9,0d0d8,0d0c8,0d0b7,0d0a6 ;a18
- dw 0d095,0d084,0d073,0d062,0d051,0d041,0d030,0d01f ;a20
- dw 0d00f,0cffe,0cfed,0cfdd,0cfcc,0cfbc,0cfab,0cf9b ;a28
- dw 0cf8a,0cf7a,0cf6a,0cf59,0cf49,0cf39,0cf28,0cf18 ;a30
- dw 0cf08,0cef8,0cee8,0ced8,0cec8,0ceb7,0cea7,0ce97 ;a38
- dw 0ce87,0ce78,0ce68,0ce58,0ce48,0ce38,0ce28,0ce19 ;a40
- dw 0ce09,0cdf9,0cdea,0cdda,0cdca,0cdbb,0cdab,0cd9c ;a48
- dw 0cd8c,0cd7d,0cd6d,0cd5e,0cd4f,0cd3f,0cd30,0cd21 ;a50
- dw 0cd12,0cd02,0ccf3,0cce4,0ccd5,0ccc6,0ccb7,0cca8 ;a58
- dw 0cc99,0cc8a,0cc7b,0cc6c,0cc5d,0cc4e,0cc3f,0cc31 ;a60
- dw 0cc22,0cc13,0cc05,0cbf6,0cbe7,0cbd9,0cbca,0cbbc ;a68
- dw 0cbad,0cb9f,0cb90,0cb82,0cb74,0cb65,0cb57,0cb49 ;a70
- dw 0cb3a,0cb2c,0cb1e,0cb10,0cb02,0caf4,0cae6,0cad8 ;a78
- dw 0caca,0cabc,0caae,0caa0,0ca92,0ca84,0ca76,0ca69 ;a80
- dw 0ca5b,0ca4d,0ca40,0ca32,0ca24,0ca17,0ca09,0c9fc ;a88
- dw 0c9ee,0c9e1,0c9d4,0c9c6,0c9b9,0c9ac,0c99e,0c991 ;a90
- dw 0c984,0c977,0c96a,0c95c,0c94f,0c942,0c935,0c928 ;a98
- dw 0c91b,0c90f,0c902,0c8f5,0c8e8,0c8db,0c8cf,0c8c2 ;aa0
- dw 0c8b5,0c8a9,0c89c,0c88f,0c883,0c876,0c86a,0c85d ;aa8
- dw 0c851,0c845,0c838,0c82c,0c820,0c813,0c807,0c7fb ;ab0
- dw 0c7ef,0c7e3,0c7d7,0c7cb,0c7bf,0c7b3,0c7a7,0c79b ;ab8
- dw 0c78f,0c783,0c777,0c76c,0c760,0c754,0c749,0c73d ;ac0
- dw 0c731,0c726,0c71a,0c70f,0c703,0c6f8,0c6ed,0c6e1 ;ac8
- dw 0c6d6,0c6cb,0c6bf,0c6b4,0c6a9,0c69e,0c693,0c688 ;ad0
- dw 0c67d,0c672,0c667,0c65c,0c651,0c646,0c63b,0c630 ;ad8
- dw 0c626,0c61b,0c610,0c605,0c5fb,0c5f0,0c5e6,0c5db ;ae0
- dw 0c5d1,0c5c6,0c5bc,0c5b1,0c5a7,0c59d,0c593,0c588 ;ae8
- dw 0c57e,0c574,0c56a,0c560,0c556,0c54c,0c542,0c538 ;af0
- dw 0c52e,0c524,0c51a,0c510,0c506,0c4fd,0c4f3,0c4e9 ;af8
- dw 0c4e0,0c4d6,0c4cc,0c4c3,0c4b9,0c4b0,0c4a7,0c49d ;b00
- dw 0c494,0c48b,0c481,0c478,0c46f,0c466,0c45d,0c453 ;b08
- dw 0c44a,0c441,0c438,0c42f,0c426,0c41e,0c415,0c40c ;b10
- dw 0c403,0c3fa,0c3f2,0c3e9,0c3e0,0c3d8,0c3cf,0c3c7 ;b18
- dw 0c3be,0c3b6,0c3ad,0c3a5,0c39d,0c394,0c38c,0c384 ;b20
- dw 0c37c,0c374,0c36b,0c363,0c35b,0c353,0c34b,0c343 ;b28
- dw 0c33b,0c334,0c32c,0c324,0c31c,0c314,0c30d,0c305 ;b30
- dw 0c2fe,0c2f6,0c2ee,0c2e7,0c2df,0c2d8,0c2d1,0c2c9 ;b38
- dw 0c2c2,0c2bb,0c2b3,0c2ac,0c2a5,0c29e,0c297,0c290 ;b40
- dw 0c289,0c282,0c27b,0c274,0c26d,0c266,0c25f,0c259 ;b48
- dw 0c252,0c24b,0c245,0c23e,0c237,0c231,0c22a,0c224 ;b50
- dw 0c21e,0c217,0c211,0c20b,0c204,0c1fe,0c1f8,0c1f2 ;b58
- dw 0c1ec,0c1e5,0c1df,0c1d9,0c1d3,0c1cd,0c1c8,0c1c2 ;b60
- dw 0c1bc,0c1b6,0c1b0,0c1ab,0c1a5,0c19f,0c19a,0c194 ;b68
- dw 0c18f,0c189,0c184,0c17e,0c179,0c174,0c16e,0c169 ;b70
- dw 0c164,0c15f,0c159,0c154,0c14f,0c14a,0c145,0c140 ;b78
- dw 0c13b,0c136,0c132,0c12d,0c128,0c123,0c11f,0c11a ;b80
- dw 0c115,0c111,0c10c,0c108,0c103,0c0ff,0c0fa,0c0f6 ;b88
- dw 0c0f2,0c0ed,0c0e9,0c0e5,0c0e1,0c0dd,0c0d9,0c0d5 ;b90
- dw 0c0d1,0c0cd,0c0c9,0c0c5,0c0c1,0c0bd,0c0b9,0c0b6 ;b98
- dw 0c0b2,0c0ae,0c0ab,0c0a7,0c0a3,0c0a0,0c09c,0c099 ;ba0
- dw 0c096,0c092,0c08f,0c08c,0c088,0c085,0c082,0c07f ;ba8
- dw 0c07c,0c079,0c076,0c073,0c070,0c06d,0c06a,0c067 ;bb0
- dw 0c064,0c062,0c05f,0c05c,0c05a,0c057,0c054,0c052 ;bb8
- dw 0c04f,0c04d,0c04b,0c048,0c046,0c044,0c041,0c03f ;bc0
- dw 0c03d,0c03b,0c039,0c037,0c035,0c033,0c031,0c02f ;bc8
- dw 0c02d,0c02b,0c029,0c028,0c026,0c024,0c022,0c021 ;bd0
- dw 0c01f,0c01e,0c01c,0c01b,0c019,0c018,0c017,0c015 ;bd8
- dw 0c014,0c013,0c012,0c011,0c010,0c00f,0c00e,0c00d ;be0
- dw 0c00c,0c00b,0c00a,0c009,0c008,0c007,0c007,0c006 ;be8
- dw 0c005,0c005,0c004,0c004,0c003,0c003,0c002,0c002 ;bf0
- dw 0c002,0c001,0c001,0c001,0c001,0c001,0c001,0c001 ;bf8
-
- dw 0c001,0c001,0c001,0c001,0c001,0c001,0c001,0c001 ;c00
- dw 0c002,0c002,0c002,0c003,0c003,0c004,0c004,0c005 ;c08
- dw 0c005,0c006,0c007,0c007,0c008,0c009,0c00a,0c00b ;c10
- dw 0c00c,0c00d,0c00e,0c00f,0c010,0c011,0c012,0c013 ;c18
- dw 0c014,0c015,0c017,0c018,0c019,0c01b,0c01c,0c01e ;c20
- dw 0c01f,0c021,0c022,0c024,0c026,0c028,0c029,0c02b ;c28
- dw 0c02d,0c02f,0c031,0c033,0c035,0c037,0c039,0c03b ;c30
- dw 0c03d,0c03f,0c041,0c044,0c046,0c048,0c04b,0c04d ;c38
- dw 0c04f,0c052,0c054,0c057,0c05a,0c05c,0c05f,0c062 ;c40
- dw 0c064,0c067,0c06a,0c06d,0c070,0c073,0c076,0c079 ;c48
- dw 0c07c,0c07f,0c082,0c085,0c088,0c08c,0c08f,0c092 ;c50
- dw 0c096,0c099,0c09c,0c0a0,0c0a3,0c0a7,0c0ab,0c0ae ;c58
- dw 0c0b2,0c0b6,0c0b9,0c0bd,0c0c1,0c0c5,0c0c9,0c0cd ;c60
- dw 0c0d1,0c0d5,0c0d9,0c0dd,0c0e1,0c0e5,0c0e9,0c0ed ;c68
- dw 0c0f2,0c0f6,0c0fa,0c0ff,0c103,0c108,0c10c,0c111 ;c70
- dw 0c115,0c11a,0c11f,0c123,0c128,0c12d,0c132,0c136 ;c78
- dw 0c13b,0c140,0c145,0c14a,0c14f,0c154,0c159,0c15f ;c80
- dw 0c164,0c169,0c16e,0c174,0c179,0c17e,0c184,0c189 ;c88
- dw 0c18f,0c194,0c19a,0c19f,0c1a5,0c1ab,0c1b0,0c1b6 ;c90
- dw 0c1bc,0c1c2,0c1c8,0c1cd,0c1d3,0c1d9,0c1df,0c1e5 ;c98
- dw 0c1ec,0c1f2,0c1f8,0c1fe,0c204,0c20b,0c211,0c217 ;ca0
- dw 0c21e,0c224,0c22a,0c231,0c237,0c23e,0c245,0c24b ;ca8
- dw 0c252,0c259,0c25f,0c266,0c26d,0c274,0c27b,0c282 ;cb0
- dw 0c289,0c290,0c297,0c29e,0c2a5,0c2ac,0c2b3,0c2bb ;cb8
- dw 0c2c2,0c2c9,0c2d1,0c2d8,0c2df,0c2e7,0c2ee,0c2f6 ;cc0
- dw 0c2fe,0c305,0c30d,0c314,0c31c,0c324,0c32c,0c334 ;cc8
- dw 0c33b,0c343,0c34b,0c353,0c35b,0c363,0c36b,0c374 ;cd0
- dw 0c37c,0c384,0c38c,0c394,0c39d,0c3a5,0c3ad,0c3b6 ;cd8
- dw 0c3be,0c3c7,0c3cf,0c3d8,0c3e0,0c3e9,0c3f2,0c3fa ;ce0
- dw 0c403,0c40c,0c415,0c41e,0c426,0c42f,0c438,0c441 ;ce8
- dw 0c44a,0c453,0c45d,0c466,0c46f,0c478,0c481,0c48b ;cf0
- dw 0c494,0c49d,0c4a7,0c4b0,0c4b9,0c4c3,0c4cc,0c4d6 ;cf8
- dw 0c4e0,0c4e9,0c4f3,0c4fd,0c506,0c510,0c51a,0c524 ;d00
- dw 0c52e,0c538,0c542,0c54c,0c556,0c560,0c56a,0c574 ;d08
- dw 0c57e,0c588,0c593,0c59d,0c5a7,0c5b1,0c5bc,0c5c6 ;d10
- dw 0c5d1,0c5db,0c5e6,0c5f0,0c5fb,0c605,0c610,0c61b ;d18
- dw 0c626,0c630,0c63b,0c646,0c651,0c65c,0c667,0c672 ;d20
- dw 0c67d,0c688,0c693,0c69e,0c6a9,0c6b4,0c6bf,0c6cb ;d28
- dw 0c6d6,0c6e1,0c6ed,0c6f8,0c703,0c70f,0c71a,0c726 ;d30
- dw 0c731,0c73d,0c749,0c754,0c760,0c76c,0c777,0c783 ;d38
- dw 0c78f,0c79b,0c7a7,0c7b3,0c7bf,0c7cb,0c7d7,0c7e3 ;d40
- dw 0c7ef,0c7fb,0c807,0c813,0c820,0c82c,0c838,0c845 ;d48
- dw 0c851,0c85d,0c86a,0c876,0c883,0c88f,0c89c,0c8a9 ;d50
- dw 0c8b5,0c8c2,0c8cf,0c8db,0c8e8,0c8f5,0c902,0c90f ;d58
- dw 0c91b,0c928,0c935,0c942,0c94f,0c95c,0c96a,0c977 ;d60
- dw 0c984,0c991,0c99e,0c9ac,0c9b9,0c9c6,0c9d4,0c9e1 ;d68
- dw 0c9ee,0c9fc,0ca09,0ca17,0ca24,0ca32,0ca40,0ca4d ;d70
- dw 0ca5b,0ca69,0ca77,0ca84,0ca92,0caa0,0caae,0cabc ;d78
- dw 0caca,0cad8,0cae6,0caf4,0cb02,0cb10,0cb1e,0cb2c ;d80
- dw 0cb3a,0cb49,0cb57,0cb65,0cb74,0cb82,0cb90,0cb9f ;d88
- dw 0cbad,0cbbc,0cbca,0cbd9,0cbe7,0cbf6,0cc05,0cc13 ;d90
- dw 0cc22,0cc31,0cc3f,0cc4e,0cc5d,0cc6c,0cc7b,0cc8a ;d98
- dw 0cc99,0cca8,0ccb7,0ccc6,0ccd5,0cce4,0ccf3,0cd02 ;da0
- dw 0cd12,0cd21,0cd30,0cd3f,0cd4f,0cd5e,0cd6d,0cd7d ;da8
- dw 0cd8c,0cd9c,0cdab,0cdbb,0cdca,0cdda,0cdea,0cdf9 ;db0
- dw 0ce09,0ce19,0ce28,0ce38,0ce48,0ce58,0ce68,0ce78 ;db8
- dw 0ce88,0ce97,0cea7,0ceb7,0cec8,0ced8,0cee8,0cef8 ;dc0
- dw 0cf08,0cf18,0cf28,0cf39,0cf49,0cf59,0cf6a,0cf7a ;dc8
- dw 0cf8a,0cf9b,0cfab,0cfbc,0cfcc,0cfdd,0cfed,0cffe ;dd0
- dw 0d00f,0d01f,0d030,0d041,0d051,0d062,0d073,0d084 ;dd8
- dw 0d095,0d0a6,0d0b7,0d0c8,0d0d9,0d0ea,0d0fb,0d10c ;de0
- dw 0d11d,0d12e,0d13f,0d150,0d161,0d173,0d184,0d195 ;de8
- dw 0d1a6,0d1b8,0d1c9,0d1db,0d1ec,0d1fd,0d20f,0d220 ;df0
- dw 0d232,0d244,0d255,0d267,0d278,0d28a,0d29c,0d2ae ;df8
- dw 0d2bf,0d2d1,0d2e3,0d2f5,0d307,0d318,0d32a,0d33c ;e00
- dw 0d34e,0d360,0d372,0d384,0d396,0d3a9,0d3bb,0d3cd ;e08
- dw 0d3df,0d3f1,0d404,0d416,0d428,0d43a,0d44d,0d45f ;e10
- dw 0d472,0d484,0d496,0d4a9,0d4bb,0d4ce,0d4e0,0d4f3 ;e18
- dw 0d506,0d518,0d52b,0d53e,0d550,0d563,0d576,0d589 ;e20
- dw 0d59b,0d5ae,0d5c1,0d5d4,0d5e7,0d5fa,0d60d,0d620 ;e28
- dw 0d633,0d646,0d659,0d66c,0d67f,0d692,0d6a6,0d6b9 ;e30
- dw 0d6cc,0d6df,0d6f2,0d706,0d719,0d72c,0d740,0d753 ;e38
- dw 0d767,0d77a,0d78e,0d7a1,0d7b5,0d7c8,0d7dc,0d7ef ;e40
- dw 0d803,0d816,0d82a,0d83e,0d851,0d865,0d879,0d88d ;e48
- dw 0d8a1,0d8b4,0d8c8,0d8dc,0d8f0,0d904,0d918,0d92c ;e50
- dw 0d940,0d954,0d968,0d97c,0d990,0d9a4,0d9b8,0d9cc ;e58
- dw 0d9e1,0d9f5,0da09,0da1d,0da32,0da46,0da5a,0da6e ;e60
- dw 0da83,0da97,0daac,0dac0,0dad4,0dae9,0dafd,0db12 ;e68
- dw 0db26,0db3b,0db50,0db64,0db79,0db8d,0dba2,0dbb7 ;e70
- dw 0dbcc,0dbe0,0dbf5,0dc0a,0dc1f,0dc33,0dc48,0dc5d ;e78
- dw 0dc72,0dc87,0dc9c,0dcb1,0dcc6,0dcdb,0dcf0,0dd05 ;e80
- dw 0dd1a,0dd2f,0dd44,0dd59,0dd6e,0dd84,0dd99,0ddae ;e88
- dw 0ddc3,0ddd8,0ddee,0de03,0de18,0de2e,0de43,0de58 ;e90
- dw 0de6e,0de83,0de98,0deae,0dec3,0ded9,0deee,0df04 ;e98
- dw 0df19,0df2f,0df45,0df5a,0df70,0df85,0df9b,0dfb1 ;ea0
- dw 0dfc7,0dfdc,0dff2,0e008,0e01e,0e033,0e049,0e05f ;ea8
- dw 0e075,0e08b,0e0a1,0e0b7,0e0cc,0e0e2,0e0f8,0e10e ;eb0
- dw 0e124,0e13a,0e150,0e167,0e17d,0e193,0e1a9,0e1bf ;eb8
- dw 0e1d5,0e1eb,0e202,0e218,0e22e,0e244,0e25a,0e271 ;ec0
- dw 0e287,0e29d,0e2b4,0e2ca,0e2e0,0e2f7,0e30d,0e324 ;ec8
- dw 0e33a,0e351,0e367,0e37e,0e394,0e3ab,0e3c1,0e3d8 ;ed0
- dw 0e3ee,0e405,0e41b,0e432,0e449,0e45f,0e476,0e48d ;ed8
- dw 0e4a3,0e4ba,0e4d1,0e4e8,0e4fe,0e515,0e52c,0e543 ;ee0
- dw 0e55a,0e571,0e587,0e59e,0e5b5,0e5cc,0e5e3,0e5fa ;ee8
- dw 0e611,0e628,0e63f,0e656,0e66d,0e684,0e69b,0e6b2 ;ef0
- dw 0e6c9,0e6e0,0e6f8,0e70f,0e726,0e73d,0e754,0e76b ;ef8
- dw 0e783,0e79a,0e7b1,0e7c8,0e7e0,0e7f7,0e80e,0e826 ;f00
- dw 0e83d,0e854,0e86c,0e883,0e89a,0e8b2,0e8c9,0e8e1 ;f08
- dw 0e8f8,0e90f,0e927,0e93e,0e956,0e96d,0e985,0e99c ;f10
- dw 0e9b4,0e9cc,0e9e3,0e9fb,0ea12,0ea2a,0ea42,0ea59 ;f18
- dw 0ea71,0ea89,0eaa0,0eab8,0ead0,0eae7,0eaff,0eb17 ;f20
- dw 0eb2f,0eb46,0eb5e,0eb76,0eb8e,0eba6,0ebbd,0ebd5 ;f28
- dw 0ebed,0ec05,0ec1d,0ec35,0ec4d,0ec65,0ec7d,0ec94 ;f30
- dw 0ecac,0ecc4,0ecdc,0ecf4,0ed0c,0ed24,0ed3c,0ed54 ;f38
- dw 0ed6c,0ed85,0ed9d,0edb5,0edcd,0ede5,0edfd,0ee15 ;f40
- dw 0ee2d,0ee45,0ee5e,0ee76,0ee8e,0eea6,0eebe,0eed6 ;f48
- dw 0eeef,0ef07,0ef1f,0ef37,0ef50,0ef68,0ef80,0ef98 ;f50
- dw 0efb1,0efc9,0efe1,0effa,0f012,0f02a,0f043,0f05b ;f58
- dw 0f074,0f08c,0f0a4,0f0bd,0f0d5,0f0ee,0f106,0f11e ;f60
- dw 0f137,0f14f,0f168,0f180,0f199,0f1b1,0f1ca,0f1e2 ;f68
- dw 0f1fb,0f213,0f22c,0f244,0f25d,0f275,0f28e,0f2a7 ;f70
- dw 0f2bf,0f2d8,0f2f0,0f309,0f322,0f33a,0f353,0f36c ;f78
- dw 0f384,0f39d,0f3b5,0f3ce,0f3e7,0f3ff,0f418,0f431 ;f80
- dw 0f44a,0f462,0f47b,0f494,0f4ac,0f4c5,0f4de,0f4f7 ;f88
- dw 0f50f,0f528,0f541,0f55a,0f573,0f58b,0f5a4,0f5bd ;f90
- dw 0f5d6,0f5ef,0f607,0f620,0f639,0f652,0f66b,0f684 ;f98
- dw 0f69c,0f6b5,0f6ce,0f6e7,0f700,0f719,0f732,0f74b ;fa0
- dw 0f764,0f77c,0f795,0f7ae,0f7c7,0f7e0,0f7f9,0f812 ;fa8
- dw 0f82b,0f844,0f85d,0f876,0f88f,0f8a8,0f8c1,0f8da ;fb0
- dw 0f8f3,0f90c,0f925,0f93e,0f957,0f970,0f989,0f9a2 ;fb8
- dw 0f9bb,0f9d4,0f9ed,0fa06,0fa1f,0fa38,0fa51,0fa6a ;fc0
- dw 0fa83,0fa9c,0fab5,0face,0fae7,0fb00,0fb19,0fb32 ;fc8
- dw 0fb4b,0fb64,0fb7d,0fb96,0fbb0,0fbc9,0fbe2,0fbfb ;fd0
- dw 0fc14,0fc2d,0fc46,0fc5f,0fc78,0fc91,0fcaa,0fcc3 ;fd8
- dw 0fcdd,0fcf6,0fd0f,0fd28,0fd41,0fd5a,0fd73,0fd8c ;fe0
- dw 0fda5,0fdbf,0fdd8,0fdf1,0fe0a,0fe23,0fe3c,0fe55 ;fe8
- dw 0fe6e,0fe88,0fea1,0feba,0fed3,0feec,0ff05,0ff1e ;ff0
- dw 0ff37,0ff51,0ff6a,0ff83,0ff9c,0ffb5,0ffce,0ffe7 ;ff8
-
-;=========================================================================
diff --git a/wmdots/wmdots/old_dos_demo/trig.s b/wmdots/wmdots/old_dos_demo/trig.s
deleted file mode 100644
index 0917017..0000000
--- a/wmdots/wmdots/old_dos_demo/trig.s
+++ /dev/null
@@ -1,29 +0,0 @@
-;=========================================================================
-;Trig functions for GFX routines Copyright (c) 1995 by Mark I Manning IV
-;=========================================================================
-
-CosTab equ SinTab+0800 ;A Right angle foreward in table!
-
-;-------------------------------------------------------------------------
-
-;Return Sin and Cos of angle AX in variables of same name
-
-SinCos:
- and ax,0fff ;4096 degrees = 0 degrees
- mov bx,ax ;Put into an indexing reg
- add bx,bx
- mov ax,SinTab[bx] ;Get Sin(N)
- mov Sin,ax ;Bah no MOV Sin,[BX]... Crap processor!
-
-;Note.
-; Can NOT use mov ax,SinTab[2*ebx] because in following code BX may go
-; negative and 2* a negative number = DOUBLY NEGATIVE!
-
- cmp bx,01800 ;Was Sin(N) in last quadrant of circle?
- if nl sub bx,02000 ;Cos(N) must be in first quadrant then
- mov bx,CosTab[bx] ;Get Cos(n)
- mov Cos,bx ;Exits with Sin in AX and Cos in BX too!
- ret
-
-;=========================================================================
-
diff --git a/wmdots/wmdots/sintab.c b/wmdots/wmdots/sintab.c
deleted file mode 100644
index 945d1c5..0000000
--- a/wmdots/wmdots/sintab.c
+++ /dev/null
@@ -1,75 +0,0 @@
-// Sin and Cos tables based on 512 degree circle.
-// -----------------------------------------------------------------------
-
-short sin_tab[]=
-{
- 0x0000, 0x00c9, 0x0192, 0x025b, 0x0323, 0x03ec, 0x04b5, 0x057d,
- 0x0645, 0x070d, 0x07d5, 0x089c, 0x0964, 0x0a2a, 0x0af1, 0x0bb6,
- 0x0c7c, 0x0d41, 0x0e05, 0x0ec9, 0x0f8c, 0x104f, 0x1111, 0x11d3,
- 0x1294, 0x1354, 0x1413, 0x14d1, 0x158f, 0x164c, 0x1708, 0x17c3,
- 0x187d, 0x1937, 0x19ef, 0x1aa6, 0x1b5d, 0x1c12, 0x1cc6, 0x1d79,
- 0x1e2b, 0x1edc, 0x1f8b, 0x2039, 0x20e7, 0x2192, 0x223d, 0x22e6,
- 0x238e, 0x2434, 0x24da, 0x257d, 0x261f, 0x26c0, 0x275f, 0x27fd,
- 0x2899, 0x2934, 0x29cd, 0x2a65, 0x2afa, 0x2b8e, 0x2c21, 0x2cb2,
- 0x2d41, 0x2dce, 0x2e5a, 0x2ee3, 0x2f6b, 0x2ff1, 0x3076, 0x30f8,
- 0x3179, 0x31f7, 0x3274, 0x32ee, 0x3367, 0x33de, 0x3453, 0x34c6,
- 0x3536, 0x35a5, 0x3612, 0x367c, 0x36e5, 0x374b, 0x37af, 0x3811,
- 0x3871, 0x38cf, 0x392a, 0x3983, 0x39da, 0x3a2f, 0x3a82, 0x3ad2,
- 0x3b20, 0x3b6c, 0x3bb6, 0x3bfd, 0x3c42, 0x3c84, 0x3cc5, 0x3d02,
- 0x3d3e, 0x3d77, 0x3dae, 0x3de2, 0x3e14, 0x3e44, 0x3e71, 0x3e9c,
- 0x3ec5, 0x3eeb, 0x3f0e, 0x3f2f, 0x3f4e, 0x3f6a, 0x3f84, 0x3f9c,
- 0x3fb1, 0x3fc3, 0x3fd3, 0x3fe1, 0x3fec, 0x3ff4, 0x3ffb, 0x3ffe,
-
- 0x3fff, 0x3ffe, 0x3ffb, 0x3ff4, 0x3fec, 0x3fe1, 0x3fd3, 0x3fc3,
- 0x3fb1, 0x3f9c, 0x3f84, 0x3f6a, 0x3f4e, 0x3f2f, 0x3f0e, 0x3eeb,
- 0x3ec5, 0x3e9c, 0x3e71, 0x3e44, 0x3e14, 0x3de2, 0x3dae, 0x3d77,
- 0x3d3e, 0x3d02, 0x3cc5, 0x3c84, 0x3c42, 0x3bfd, 0x3bb6, 0x3b6c,
- 0x3b20, 0x3ad2, 0x3a82, 0x3a2f, 0x39da, 0x3983, 0x392a, 0x38cf,
- 0x3871, 0x3811, 0x37af, 0x374b, 0x36e5, 0x367c, 0x3612, 0x35a5,
- 0x3536, 0x34c6, 0x3453, 0x33de, 0x3367, 0x32ee, 0x3274, 0x31f7,
- 0x3179, 0x30f8, 0x3076, 0x2ff1, 0x2f6b, 0x2ee3, 0x2e5a, 0x2dce,
- 0x2d41, 0x2cb2, 0x2c21, 0x2b8e, 0x2afa, 0x2a65, 0x29cd, 0x2934,
- 0x2899, 0x27fd, 0x275f, 0x26c0, 0x261f, 0x257d, 0x24da, 0x2434,
- 0x238e, 0x22e6, 0x223d, 0x2192, 0x20e7, 0x2039, 0x1f8b, 0x1edc,
- 0x1e2b, 0x1d79, 0x1cc6, 0x1c12, 0x1b5d, 0x1aa6, 0x19ef, 0x1937,
- 0x187d, 0x17c3, 0x1708, 0x164c, 0x158f, 0x14d1, 0x1413, 0x1354,
- 0x1294, 0x11d3, 0x1111, 0x104f, 0x0f8c, 0x0ec9, 0x0e05, 0x0d41,
- 0x0c7c, 0x0bb6, 0x0af1, 0x0a2a, 0x0964, 0x089c, 0x07d5, 0x070d,
- 0x0645, 0x057d, 0x04b5, 0x03ec, 0x0323, 0x025b, 0x0192, 0x00c9,
-
- 0x0000, 0xff37, 0xfe6e, 0xfda5, 0xfcdd, 0xfc14, 0xfb4b, 0xfa83,
- 0xf9bb, 0xf8f3, 0xf82b, 0xf764, 0xf69c, 0xf5d6, 0xf50f, 0xf44a,
- 0xf384, 0xf2bf, 0xf1fb, 0xf137, 0xf074, 0xefb1, 0xeeef, 0xee2d,
- 0xed6c, 0xecac, 0xebed, 0xeb2f, 0xea71, 0xe9b4, 0xe8f8, 0xe83d,
- 0xe783, 0xe6c9, 0xe611, 0xe55a, 0xe4a3, 0xe3ee, 0xe33a, 0xe287,
- 0xe1d5, 0xe124, 0xe075, 0xdfc7, 0xdf19, 0xde6e, 0xddc3, 0xdd1a,
- 0xdc72, 0xdbcc, 0xdb26, 0xda83, 0xd9e1, 0xd940, 0xd8a1, 0xd803,
- 0xd767, 0xd6cc, 0xd633, 0xd59b, 0xd506, 0xd472, 0xd3df, 0xd34e,
- 0xd2bf, 0xd232, 0xd1a6, 0xd11d, 0xd095, 0xd00f, 0xcf8a, 0xcf08,
- 0xce87, 0xce09, 0xcd8c, 0xcd12, 0xcc99, 0xcc22, 0xcbad, 0xcb3a,
- 0xcaca, 0xca5b, 0xc9ee, 0xc984, 0xc91b, 0xc8b5, 0xc851, 0xc7ef,
- 0xc78f, 0xc731, 0xc6d6, 0xc67d, 0xc626, 0xc5d1, 0xc57e, 0xc52e,
- 0xc4e0, 0xc494, 0xc44a, 0xc403, 0xc3be, 0xc37c, 0xc33b, 0xc2fe,
- 0xc2c2, 0xc289, 0xc252, 0xc21e, 0xc1ec, 0xc1bc, 0xc18f, 0xc164,
- 0xc13b, 0xc115, 0xc0f2, 0xc0d1, 0xc0b2, 0xc096, 0xc07c, 0xc064,
- 0xc04f, 0xc03d, 0xc02d, 0xc01f, 0xc014, 0xc00c, 0xc005, 0xc002,
-
- 0xc001, 0xc002, 0xc005, 0xc00c, 0xc014, 0xc01f, 0xc02d, 0xc03d,
- 0xc04f, 0xc064, 0xc07c, 0xc096, 0xc0b2, 0xc0d1, 0xc0f2, 0xc115,
- 0xc13b, 0xc164, 0xc18f, 0xc1bc, 0xc1ec, 0xc21e, 0xc252, 0xc289,
- 0xc2c2, 0xc2fe, 0xc33b, 0xc37c, 0xc3be, 0xc403, 0xc44a, 0xc494,
- 0xc4e0, 0xc52e, 0xc57e, 0xc5d1, 0xc626, 0xc67d, 0xc6d6, 0xc731,
- 0xc78f, 0xc7ef, 0xc851, 0xc8b5, 0xc91b, 0xc984, 0xc9ee, 0xca5b,
- 0xcaca, 0xcb3a, 0xcbad, 0xcc22, 0xcc99, 0xcd12, 0xcd8c, 0xce09,
- 0xce88, 0xcf08, 0xcf8a, 0xd00f, 0xd095, 0xd11d, 0xd1a6, 0xd232,
- 0xd2bf, 0xd34e, 0xd3df, 0xd472, 0xd506, 0xd59b, 0xd633, 0xd6cc,
- 0xd767, 0xd803, 0xd8a1, 0xd940, 0xd9e1, 0xda83, 0xdb26, 0xdbcc,
- 0xdc72, 0xdd1a, 0xddc3, 0xde6e, 0xdf19, 0xdfc7, 0xe075, 0xe124,
- 0xe1d5, 0xe287, 0xe33a, 0xe3ee, 0xe4a3, 0xe55a, 0xe611, 0xe6c9,
- 0xe783, 0xe83d, 0xe8f8, 0xe9b4, 0xea71, 0xeb2f, 0xebed, 0xecac,
- 0xed6c, 0xee2d, 0xeeef, 0xefb1, 0xf074, 0xf137, 0xf1fb, 0xf2bf,
- 0xf384, 0xf44a, 0xf50f, 0xf5d6, 0xf69c, 0xf764, 0xf82b, 0xf8f3,
- 0xf9bb, 0xfa83, 0xfb4b, 0xfc14, 0xfcdd, 0xfda5, 0xfe6e, 0xff37
-};
-
-// =======================================================================
diff --git a/wmdots/wmdots/wmdots.c b/wmdots/wmdots/wmdots.c
deleted file mode 100644
index f664209..0000000
--- a/wmdots/wmdots/wmdots.c
+++ /dev/null
@@ -1,667 +0,0 @@
-// WM-Dots the Window Maker 3d Rotating Dots Demo by Mark I Manning IV
-// =======================================================================
-
-// This demo is based on an old DOS demo I did a number of years ago. The
-// trick was to get it to work in an 64 x 64 window instead of the
-// 320 x 200 of the original. (and in 16 instead of 256 colours :)
-
-// Much of these sources are based on other dockable application sources.
-// For this reason, and because it is the right thing to do, this file is
-// distributed under the GPL. Use it and abuse it as you will.
-
-// Flames, critisizm and general nukings can be sent to....
-
-// [email protected]
-
-// I have included the sources (in 100% pure ASM) to the afore mentioned
-// original demo. These you can also consider covered by the GPL.
-
-// Maybe someone can help me convert the bump mapping in the original to
-// use only 16 colours :) (actually, I have space in the master.xpm for
-// 32 colours if I retain a 2 x 2 pixle size. If i go to 1 x 1 i can
-// fit 64 colours in there :)
-
-// Yea... I know... Im supposed to be sparing of system resources like
-// colour allocations but come on guys... this IS a demo after all :)
-// Demos are supposed to be abusive of system resources eh??? :)
-
-// This source file is 100% TAB FREE. Use any editor/viewer you want
-// to view it with and set ANY size tabs and it will STILL look right.
-// TABS ARE EVIL!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-// Also Linus T is wrong. Indentations of 8 are an abomination and so is
-// k&r source formatting. So There!
-
-// Apart from that... Linus for president :)
-// or George W. Bush!!!
-
-// -----------------------------------------------------------------------
-// blah :)
-
-// Version 0.1 beta Released Saturday October 9 1999
-//
-// To do... Fix bug that causes core dump when the "cross" object
-// rotates outside window (its not a clipping problem).
-// Find out why the "cross" object is not cross shaped in
-// this demo when it is in the dos version.
-// Change pixle sizes to 1 x 1 for objects that are in
-// the distance.
-// Move all object definitions out of this file and into
-// some kind of rc file and allow user defined objects
-// Add greets to the credits display :)
-// Impliment better light shading (in object space?)
-// Prevent dark pixles overwriting light ones
-//
-// Done... Scrapped idea about different pixle sizez, it didn't look
-// as good as i thunked it would :)
-// Fixed adjust_angle() to be angle +128 not angle +127
-// Fixed cross by defining xyz as char instead of int
-// Fixed core dump problem with cross: Oopts it was a
-// clipping problem, z clipping points behind camera! :)
-// Added size macro (prolly a bad name for it tho :)
-// Implimented better light shading but its still not
-// quite right yet...
-// Removed math.h from includes as im not using any
-// functions therein. Saved a whopping 4 bytes :)
-// Added code to draw_point() to prevent dark pels from
-// being drawn over lighter pels. Dark pels are further
-// away and should be BEHIND the lighter ones. There is
-// almost no cpu bash here and I dont need to z sort pels
-//
-//
-// Version 0.2 beta Released Saturday October 9 1999
-//
-// To do.. Still gotta move objects to rc file....
-//
-//
-//
-// Done...
-
-// -----------------------------------------------------------------------
-// includes
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-
-#include <X11/xpm.h>
-#include <libdockapp/wmgeneral.h>
-#include "master.xpm"
-#include "sintab.c" // sin() and cos() are crap!
-
-// -----------------------------------------------------------------------
-// defines
-
-#define PEL_SIZE 2 // 1 or 2 only
-
-#define MAX_POINTS 125 // max # pels in an object
-
-#define MASK_WIDTH 64 // window bitmap mask dimentions
-#define MASK_HEIGHT 64
-#define MASK_SIZE MASK_WIDTH * MASK_HEIGHT
-
-// adjust angle for cos table lookup. cos = right angle further
-// on in sin table, circle = 512 degrees...
-
-#define adjust(angle) ((angle + 128) & 0x1ff)
-#define size(array) ((sizeof(array) / sizeof(array[0])))
-
-// -----------------------------------------------------------------------
-// typedefs...
-
-typedef struct // a point in 3d space
-{
- char x, y, z;
-}xyz;
-
-typedef struct // a point in 2d space
-{
- int x, y;
-}xy;
-
-typedef struct
-{
- int counter; // count down to next speed/shape change
- int reset; // initial value of counter
- int *ptr; // pointer to item to modify
- int delta; // ammount to change item by
- int upper; // upper limit for item
- int lower; // lower limit for item
-}modifier;
-
-// -----------------------------------------------------------------------
-// object structures...
-
-xyz cube[]=
-{
- {-35,-35,-35},{-35,-35,-15},{-35,-35, 05},{-35,-35, 25},{-35,-35, 45},
- {-35,-15,-35},{-35,-15,-15},{-35,-15, 05},{-35,-15, 25},{-35,-15, 45},
- {-35, 05,-35},{-35, 05,-15},{-35, 05, 05},{-35, 05, 25},{-35, 05, 45},
- {-35, 25,-35},{-35, 25,-15},{-35, 25, 05},{-35, 25, 25},{-35, 25, 45},
- {-35, 45,-35},{-35, 45,-15},{-35, 45, 05},{-35, 45, 25},{-35, 45, 45},
- {-15,-35,-35},{-15,-35,-15},{-15,-35, 05},{-15,-35, 25},{-15,-35, 45},
- {-15,-15,-35},{-15,-15,-15},{-15,-15, 05},{-15,-15, 25},{-15,-15, 45},
- {-15, 05,-35},{-15, 05,-15},{-15, 05, 05},{-15, 05, 25},{-15, 05, 45},
- {-15, 25,-35},{-15, 25,-15},{-15, 25, 05},{-15, 25, 25},{-15, 25, 45},
- {-15, 45,-35},{-15, 45,-15},{-15, 45, 05},{-15, 45, 25},{-15, 45, 45},
- { 05,-35,-35},{ 05,-35,-15},{ 05,-35, 05},{ 05,-35, 25},{ 05,-35, 45},
- { 05,-15,-35},{ 05,-15,-15},{ 05,-15, 05},{ 05,-15, 25},{ 05,-15, 45},
- { 05, 05,-35},{ 05, 05,-15},{ 05, 05, 05},{ 05, 05, 25},{ 05, 05, 45},
- { 05, 25,-35},{ 05, 25,-15},{ 05, 25, 05},{ 05, 25, 25},{ 05, 25, 45},
- { 05, 45,-35},{ 05, 45,-15},{ 05, 45, 05},{ 05, 45, 25},{ 05, 45, 45},
- { 25,-35,-35},{ 25,-35,-15},{ 25,-35, 05},{ 25,-35, 25},{ 25,-35, 45},
- { 25,-15,-35},{ 25,-15,-15},{ 25,-15, 05},{ 25,-15, 25},{ 25,-15, 45},
- { 25, 05,-35},{ 25, 05,-15},{ 25, 05, 05},{ 25, 05, 25},{ 25, 05, 45},
- { 25, 25,-35},{ 25, 25,-15},{ 25, 25, 05},{ 25, 25, 25},{ 25, 25, 45},
- { 25, 45,-35},{ 25, 45,-15},{ 25, 45, 05},{ 25, 45, 25},{ 25, 45, 45},
- { 45,-35,-35},{ 45,-35,-15},{ 45,-35, 05},{ 45,-35, 25},{ 45,-35, 45},
- { 45,-15,-35},{ 45,-15,-15},{ 45,-15, 05},{ 45,-15, 25},{ 45,-15, 45},
- { 45, 05,-35},{ 45, 05,-15},{ 45, 05, 05},{ 45, 05, 25},{ 45, 05, 45},
- { 45, 25,-35},{ 45, 25,-15},{ 45, 25, 05},{ 45, 25, 25},{ 45, 25, 45},
- { 45, 45,-35},{ 45, 45,-15},{ 45, 45, 05},{ 45, 45, 25},{ 45, 45, 45}
-};
-
-xyz star[]=
-{
- {-35,-35, 05},{-35,-15, 05},{-35, 05, 05},{-35, 25, 05},{-35, 45, 05},
- {-15,-35, 05},{-15,-15, 05},{-15, 05, 05},{-15, 25, 05},{-15, 45, 05},
- { 05,-35, 05},{ 05,-15, 05},{ 05, 05, 05},{ 05, 25, 05},{ 05, 45, 05},
- { 25,-35, 05},{ 25,-15, 05},{ 25, 05, 05},{ 25, 25, 05},{ 25, 45, 05},
- { 45,-35, 05},{ 45,-15, 05},{ 45, 05, 05},{ 45, 25, 05},{ 45, 45, 05},
- { 05,-35,-35},{ 05,-35,-15},{ 05,-35, 25},{ 05,-35, 45},{-35, 05,-35},
- { 05,-15,-35},{ 05,-15,-15},{ 05,-15, 25},{ 05,-15, 45},{-15, 05,-35},
- { 05, 05,-35},{ 05, 05,-15},{ 05, 05, 25},{ 05, 05, 45},{ 05, 05,-35},
- { 05, 25,-35},{ 05, 25,-15},{ 05, 25, 25},{ 05, 25, 45},{ 25, 05,-35},
- { 05, 45,-35},{ 05, 45,-15},{ 05, 45, 25},{ 05, 45, 45},{ 45, 05,-35},
- {-35, 05,-15},{-35, 05, 25},{-35, 05, 45},{-15, 05,-15},{-15, 05, 25},
- {-15, 05, 45},{ 05, 05,-15},{ 05, 05, 25},{ 05, 05, 45},{ 25, 05,-15},
- { 25, 05, 25},{ 25, 05, 45},{ 45, 05,-15},{ 45, 05, 25},{ 45, 05, 45}
-};
-
-xyz dots[]=
-{
- {-35,-35,-35},{-35,-35, 45},{ 45, 45,-35},{ 45, 45, 45},{ 5,-35, 5},
- { 5, 45, 5}
-};
-
-xyz square[]=
-{
- {-35,-35,-35},{-35,-15,-35},{-35, 05,-35},{-35, 25,-35},{-35, 45,-35},
- {-15,-35,-35},{-15,-15,-35},{-15, 05,-35},{-15, 25,-35},{-15, 45,-35},
- { 05,-35,-35},{ 05,-15,-35},{ 05, 05,-35},{ 05, 25,-35},{ 05, 45,-35},
- { 25,-35,-35},{ 25,-15,-35},{ 25, 05,-35},{ 25, 25,-35},{ 25, 45,-35},
- { 45,-35,-35},{ 45,-15,-35},{ 45, 05,-35},{ 45, 25,-35},{ 45, 45,-35}
-};
-
-xyz cross[]=
-{
- {0x00,0x00,0x19}, {0x00,0x05,0x19}, {0x00,0x14,0x01}, {0x00,0x32,0x00},
- {0x00,0x7D,0x00}, {0x00,0xC9,0x00}, {0x01,0x5F,0x01}, {0x01,0xAB,0x01},
- {0x01,0xF6,0x01}, {0x02,0x41,0x02}, {0x02,0x8D,0x02}, {0x02,0xD8,0x02},
- {0x03,0x23,0x03}, {0x03,0x05,0x04}, {0x03,0x6F,0x03}, {0x03,0xBA,0x03},
- {0x04,0x51,0x04}, {0x04,0x9C,0x04}, {0x04,0xE7,0x04}, {0x05,0x13,0x06},
- {0x05,0x32,0x05}, {0x05,0x7D,0x05}, {0x05,0xC8,0x05}, {0x06,0x5E,0x06},
- {0x06,0xA9,0x06}, {0x06,0xF4,0x06}, {0x07,0x3F,0x07}, {0x07,0x8A,0x07},
- {0x07,0xD5,0x07}, {0x08,0x00,0x09}, {0x08,0x20,0x08}, {0x08,0x6B,0x08},
- {0x08,0xB5,0x08}, {0x09,0x4B,0x09}, {0x09,0x95,0x09}, {0x09,0xE0,0x09},
- {0x0A,0x09,0x0B}, {0x0A,0x2A,0x0A}, {0x0A,0x75,0x0A}, {0x0A,0xBF,0x0A},
- {0x0B,0x54,0x0B}, {0x0D,0x07,0x26}, {0x0F,0x02,0x28}, {0x19,0x09,0x32},
- {0x1E,0x04,0x37}, {0x22,0x0B,0x3B}, {0x2C,0x06,0x45}, {0x2D,0x01,0x46},
- {0x39,0x08,0x52}, {0x3D,0x03,0x56}, {0x43,0x0A,0x5C}, {0x4B,0x00,0x64},
- {0x4B,0x05,0x64}, {0x58,0x07,0x71}, {0x5B,0x02,0x74}, {0x64,0x09,0x7C},
- {0x84,0x08,0x9C}, {0x88,0x03,0xA1}, {0x8D,0x0A,0xA6}, {0x96,0x00,0xAF},
- {0x96,0x05,0xAF}, {0xA3,0x07,0xBC}, {0xA6,0x02,0xBF}, {0xAE,0x09,0xC7},
- {0xB5,0x04,0xCE}, {0xC2,0x06,0xDB}, {0xC4,0x01,0xDD}, {0xCE,0x08,0xE7},
- {0xD3,0x03,0xEC}, {0xD8,0x0A,0xF1}, {0xE1,0x05,0xFA}, {0xE2,0x00,0xFB},
- {0xEE,0x07,0x07}, {0xF1,0x02,0x0A}, {0xF9,0x09,0x11}
-};
-
-// -----------------------------------------------------------------------
-// object lists...
-
-xyz *obj_list[]= // pointers to each object
-{
- (xyz *) &cube,
- (xyz *) &dots,
- (xyz *) &star,
- (xyz *) &square,
- (xyz *) &cross
-};
-
-int point_counts[]= // number of points in each object
-{
- size(cube),
- size(dots),
- size(star),
- size(square),
- size(cross)
-};
-
-#define NUM_OBJECTS size(obj_list)
-
-// -----------------------------------------------------------------------
-// i love global variables :)
-
-// I hate 40 page functions with 50 levels if,and and but loop nesting
-
-char *ProgName = NULL;
-char *Version = "0.2 Beta";
-
-int x_angle = 0; // angles of rotation in each axis
-int y_angle = 0;
-int z_angle = 0;
-
-short cos_x = 0; // trig stuff
-short cos_y = 0;
-short cos_z = 0;
-short sin_x = 0;
-short sin_y = 0;
-short sin_z = 0;
-
-int x_off = 30; // world space position of object
-int y_off = 30;
-int z_off = 150;
-
-int delta_x = 1; // rotational speed of object
-int delta_y = 1;
-int delta_z = 1;
-
-int itters = 1; // number of frames till shape change
-int num_points = 0; // number of points in object
-int obj_number = 0;
-xyz *object = NULL; // pointer to current object
-
-xy trail_1[125]; // frame histories
-xy trail_2[125];
-xy trail_3[125];
-
-char *p_buff; // addr of pel buffer ( see draw_point() )
-
-// -----------------------------------------------------------------------
-//
-
-modifier w1 = // changes x rotation speed
-{
- 30, // count down counter
- 34, // reset value for countdown counter
- &delta_x, // item to modify on count = 0
- 2, // ammount to add to item
- 8, // upper limit for item
- 0, // lower limit for item
-};
-
-modifier w2 = // changes y rotation speed
-{
- 20, 20, &delta_y, -1, 6, 0
-};
-
-modifier w3 = // changes z rotation speed
-{
- 30, 30, &delta_z, 1, 7, 0
-};
-
-modifier w4 = // zooms object in / out of window
-{
- 4, 4, &z_off, -2, 200, 90
-};
-
-// modifier w5 = // these two do some funky things with
-// { // object space but they tend to make
-// 10,10,&x_off,-3,30,10 // the objects small and look further
-// }; // away so im not using them
-//
-// modifier w6 = // but go ahead and take a look at what
-// { // they do :)
-// 10,30,&y_off,-5,30,10
-// };
-
-// -----------------------------------------------------------------------
-// draw a point at x/y in specified colour
-
-void draw_point(int x, int y, int c)
-{
- char *p;
-
- if(x != -1) // is point clipped ?
- {
- c <<= 1; // adjust c for xpm lookup of colour
- p = p_buff + (x + (MASK_WIDTH * y));
-
- if (*p > c) // if pel at *p is higher its darker so
- { // its ok to overwrite it
- *p = c; // remember pel colour at this position
- copyXPMArea(c, 65, PEL_SIZE, PEL_SIZE, x, y);
- }
- }
-}
-
-// -----------------------------------------------------------------------
-// Erase previously drawn point (draw again in BLACK!!!)
-
-void erase_point(int x, int y)
-{
- if(x != -1) // is point clipped?
- {
- copyXPMArea(34, 65, PEL_SIZE, PEL_SIZE, x, y);
- }
-}
-
-// -----------------------------------------------------------------------
-// Process pending X events
-
-void do_pending(void)
-{
- XEvent Event;
-
- while (XPending(display)) // for all pending events do...
- {
- XNextEvent(display, &Event); // get event type
-
- switch (Event.type) // we are only interested in...
- {
- case Expose: // expose events and...
- RedrawWindow();
- break;
-
- case DestroyNotify: // our own "pending" demise :)
- XCloseDisplay(display);
- exit(0);
- break;
- }
- }
-}
-
-// -----------------------------------------------------------------------
-// clear frame history buffers
-
-void clear_histories(void)
-{
- int i = MAX_POINTS;
-
- while (i--) // for loops suck
- {
- trail_1[i].x = trail_1[i].y = -1; // -1 = invalid coordinate
- trail_2[i].x = trail_2[i].y = -1; // draw_point() ignores -1
- trail_3[i].x = trail_3[i].y = -1;
- }
-}
-
-// -----------------------------------------------------------------------
-// erase points that are 3 frames old. shift frame histories
-
-void do_trails(void)
-{
- int i = MAX_POINTS;
-
- while (i--)
- {
- erase_point(trail_3[i].x, trail_3[i].y);
-
- trail_3[i].x = trail_2[i].x; // shift points within history
- trail_2[i].x = trail_1[i].x; // buffers
- trail_1[i].x = -1;
-
- trail_3[i].y = trail_2[i].y;
- trail_2[i].y = trail_1[i].y;
- trail_1[i].y = -1;
- }
-}
-
-// -----------------------------------------------------------------------
-// pre calculate sin and cosine values for x y and z angles of rotation
-
-void sincos(void)
-{
- sin_x = sin_tab[x_angle];
- sin_y = sin_tab[y_angle];
- sin_z = sin_tab[z_angle];
-
- cos_x = sin_tab[adjust(x_angle)];
- cos_y = sin_tab[adjust(y_angle)];
- cos_z = sin_tab[adjust(z_angle)];
-}
-
-// -----------------------------------------------------------------------
-// roatate object about x y and z axis (in object space)
-
-void rotate(int *px, int *py, int *pz)
-{
- int tx, ty, tz; // temp store
-
- if (x_angle) // rotate point about x axis...
- {
- ty = (*py * cos_x) - (*pz * sin_x);
- tz = (*py * sin_x) + (*pz * cos_x);
-
- *py = (ty >> 14); // sin table is scaled up so we
- *pz = (tz >> 14); // must re scale all results down
- }
-
- if (y_angle) // rotate point about y axis
- {
- tx = (*px * cos_y) - (*pz * sin_y);
- tz = (*px * sin_y) + (*pz * cos_y);
-
- *px = (tx >> 14);
- *pz = (tz >> 14);
- }
-
- if (z_angle) // rotate point about z axis
- {
- tx = (*px * cos_z) - (*py * sin_z);
- ty = (*px * sin_z) + (*py * cos_z);
-
- *px = (tx >> 14);
- *py = (ty >> 14);
- }
-}
-
-// -----------------------------------------------------------------------
-// project point in 3d space onto plane in 2d space
-
-void project(int px, int py, int pz, int *x, int *y)
-{
- int tx, ty; // temp store...
-
- *x = *y = -1; // assume point is clipped
-
- if ((z_off + pz - 5) < 0)
- {
- return;
- }
-
- ty = ((y_off * py) / (z_off + pz)) + 30;
-
- if ((ty > 5) && (ty < 59))
- {
- tx = ((x_off * px) / (z_off + pz)) + 30;
-
- if ((tx > 5) && (tx < 59))
- {
- *x = tx;
- *y = ty;
- }
- }
-}
-
-// -----------------------------------------------------------------------
-// draw one frame of object...
-
-void do_frame(void)
-{
- int px, py, pz; // 3d coordinates to rotate
- int x, y, c; // 2d coordiantes of point and colour
- int i = num_points; // loop counter
- int j = MASK_SIZE;
- char pel_buff[MASK_SIZE]; // frame buffer ( see draw_point() )
- p_buff = &pel_buff[0];
-
- while (j--) // erase pel buffer
- {
- pel_buff[j] = 32;
- }
-
- do_trails(); // clear pels that are 3 frames old
- sincos(); // calculate all sin/cos values
-
- while(i--)
- {
- px = object[i].x; // collect point from object
- py = object[i].y;
- pz = object[i].z;
-
- rotate(&px, &py, &pz); // rotate this point about x/y and z axis
- project(px, py, pz, &x, &y); // projection = convert xyz to xy
-
- trail_1[i].x = x; // store frame history for all pels
- trail_1[i].y = y; // of this frame
-
- c = (((z_off - 90) / 14) & 15) < 1;
- c -= ((-pz / 5) - 10);
-
- draw_point(x, y, c);
- }
-}
-
-// -----------------------------------------------------------------------
-// adjust rotational speeds / distance between min and max for each
-
-void modify(modifier *mod)
-{
- mod->counter--;
-
- if (!mod->counter)
- {
- mod->counter = mod->reset;
-
- *mod->ptr += mod->delta;
-
- if (*mod->ptr >= mod->upper || *mod->ptr <= mod->lower)
- {
- mod->delta = -(mod->delta);
- }
- }
-}
-
-// -----------------------------------------------------------------------
-// do the above on each of the 4 modifiers
-
-void do_deltas(void)
-{
- modify(&w1); // modify x rotational speed
- modify(&w2); // modify y rotational speed
- modify(&w3); // modify z rotational speed
- modify(&w4); // zoom object in and out
-// modify(&w5); // not used because they make objects
-// modify(&w6); // stay in the distance
-}
-
-// -----------------------------------------------------------------------
-// adjust x y and z angles of ritation for next frame
-
-void change_angles(void)
-{
- x_angle += delta_x;
- y_angle += delta_y;
- z_angle += delta_z;
-
- x_angle &= 0x1ff;
- y_angle &= 0x1ff;
- z_angle &= 0x1ff;
-}
-
-// -----------------------------------------------------------------------
-
-void do_demo(void)
-{
- while (1) // only way out is to die
- {
- while(--itters) // countdown to next shape change...
- { // shape change FORCED on entry
- change_angles(); // adjust angles of rotation
- do_frame(); // draw object
- do_deltas(); // modify rotation speeds etc
-
- RedrawWindow(); // lets see what weve drawn...
- do_pending(); // quit / expose
- usleep(50000); // erm... coders never sleep :)
- }
-
- itters = 2500; // should randomise this
-
- object = obj_list[obj_number];
- num_points = point_counts[obj_number++];
-
- if (obj_number == NUM_OBJECTS)
- {
- obj_number = 0;
- }
- }
-}
-
-// -----------------------------------------------------------------------
-// display version info and credits
-
-void credits(void)
-{
- printf("\n");
- printf("WM-Dots DEMO? version %s\n",Version);
- printf(" by Mark I Manning IV\n\n");
- printf("greets to follow soon....\n\n");
-}
-
-// sgore for helping me get star office :)
-
-// -----------------------------------------------------------------------
-// scan command line args
-
-void scan_args(int argc,char **argv)
-{
- int i;
-
- for (i = 0; i < argc; i++)
- {
- char *arg = argv[i];
-
- if (*arg == '-')
- {
- switch (arg[1])
- {
- case 'v':
- credits();
- exit(0);
- break;
-
- default:
- ;
- break;
- }
- }
- }
-}
-
-// -----------------------------------------------------------------------
-// main at BOTTOM of source so we have no EVIL forward refs!!
-
-int main(int argc, char *argv[])
-{
- char mask[MASK_SIZE];
-
- ProgName = argv[0];
- if (strlen(ProgName) >= 5)
- {
- ProgName += (strlen(ProgName) - 5);
- }
-
- scan_args(argc, argv);
-
- createXBMfromXPM(mask, master_xpm, MASK_WIDTH, MASK_HEIGHT);
- openXwindow(argc, argv, master_xpm, mask, MASK_WIDTH, MASK_HEIGHT);
-
- clear_histories(); // clear frame history buffers
- do_demo(); // main = short and sweet :)
-
- return(0); // never gets executed but lets get rid
-} // of that stupid warning :)
-
-// =======================================================================
--
2.7.4
--
To unsubscribe, send mail to [email protected].