; GAME-BOY EXAMPLE 1
; (c) 1995 by PENTAGON of ACT
; THIS LITTLE PIECE OF CODE INITIALZES
; THE HARDWARE OF THE GAMEBOY ON PUTS SOME TEXT ON THE SCREEN.
; ROATES SOME SPRITES AND DOES SOME STUFF.
; SORRY GUYS, THIS TEXT IS NOT WELL COMMENTED, BUT I THINK
; YOU CAN UNDERSTAND, IF NOT CONTACT ME... 8)

                 CPU Z80

rti              MACRO
                 exx
                 ENDM

ldab             MACRO adr
                 defb  0F0h
                 defb  adr             ; lda
                 ENDM

stab             MACRO adr
                 defb  0E0h
                 defb  adr             ; sta
                 ENDM

sta              MACRO adr
                 jp     PE,adr
                 ENDM

lda              MACRO adr
                 jp    M,adr
                 ENDM

ldHLI            MACRO
                 defb   022h
                 ENDM

ldHLD            MACRO
                 defb   032h
                 ENDM
swapa            Macro
                 defb   0cbh
                 defb   037h
                 ENDM

                 ORG 040h
                 jp     VBlank
                 ORG 048h
                 jp     LCDCStat

                 ORG 0100h

NintendoStartUp: defb 000h,0C3h,050h,001h,0CEh,0EDh,066h,066h,0CCh,00Dh,000h,00Bh,003h,073h,000h,083h
                 defb 000h,00Ch,000h,00Dh,000h,008h,011h,01Fh,088h,089h,000h,00Eh,0DCh,0CCh,06Eh,0E6h
                 defb 0DDh,0DDh,0D9h,099h,0BBh,0BBh,067h,063h,06Eh,00Eh,0ECh,0CCh,0DDh,0DCh,099h,09Fh
                 defb 0BBh,0B9h,033h,03Eh                      ;456789abcdef0123         ; $134-$143 =
Cartname:        defb "Develop V. 01   "        ; max 16 chars...
                 defb 000h,000h,000h            ; unused bytes
Carttype:        defb 000h                      ; rom only
Romsize:         defb 000h                      ; 256 kbit
Ramsize:         defb 000h                      ; none
Makercode:       defb 006h,066h                 ; maker code
Versionnumber:   defb 0FFh                      ; ...guess what!
Complementcheck: defb 000h                      ; however...
Checksum:        defb 000h,000h                 ; 2 bytes in Big Endian format
                                                ; (HI-LO order!)

; Okay, that's it for the Gameboy INFO header... Startaddress is $150.
; If you want to change this change the line $00,$C3,$yy,$xx --- (see manual)

delay            EQU    0A000h
joy              EQU    0A001h
joyo             EQU    0A002h
scrollpos        EQU    0A003h
angle            EQU    0A004h
count            EQU    0A005h

                 org 0150h

                 di                           ; disable IRQs
                 ld     SP,0DFFFh             ; stack to $DFFF
                 ld     A,000h
                 stab   042h                  ; clear scroll X
                                              ; stab 0xxh means that
                                              ; the content of A is loaded
                                              ; to FFxxh
                 stab   043h                  ; clear scroll Y

                 ld     A,093h                ; BG chr at $8000
                 stab   040h                  ; BG SC  at $9800

                 ld     A,003h
                 stab   0FFh               ; VBlank&LCDC enabled
                 stab   00Fh

                 ld     HL,0C000h
                 ld     BC,40*4
ClrSprTab:       xor    A
                 ldHLI                     ; Clear some RAM for SprTab
                 dec  BC
                 ld   A,B
                 or   C
                 jr   NZ,ClrSprTab

                 ei

                 call   ClrSpr
                 call   CircleScroll
                 call   ClrSpr
                 call   ClrSpr
                 call   EndPart

                 ret

VBlank:          rti

LCDCStat:        rti

MCarry:          jr     NC,MC_NoCarry
                 or     080h
MC_NoCarry:      ret

ClrSpr:          ld     HL,0FE00h          ; clear OAM
                 ld     B,40
CSP_Loop:        ldab   044h               ; wait for V-Blank
                 cp     090h
                 jr     C,CSP_Loop
                 xor    A
                 ldHLI                     ; X=0
                 ldHLI                     ; Y=0
                 ld     A,' '&03Fh
                 ldHLI                     ; CHR=' '
                 xor    A
                 ldHLI                     ; clear unwanted bits
                 dec    B
                 ld     A,B
                 jr     NZ,CSP_Loop        ; do it 40 times
                 ret

; This routine clears the MAP RAM
ClrScr:          ld     HL,09800h
                 ld     BC,0400h              ; length of text
CS_ClearMap:     ldab   044h                  ; wait for V-Blank
                 cp     090h
                 jr     C,CS_ClearMap
                 ld     A,' '
                 and    03Fh                  ; just want the lower bits
                 ldHLI
                 inc    DE
                 dec    BC
                 ld     A,B
                 or     C
                 jr     NZ,CS_ClearMap
                 ret

LoadFont:        ld     DE,charset
                 ld     HL,08000h
                 ld     BC,0400h              ; length of charset
LF_CopyTiles:    ldab   044h
                 cp     090h
                 jr     C,LF_CopyTiles
                 ld     A,(DE)
                 ldHLI                        ; plane 0 - INTERLEAVED
                 ldHLI                        ; plane 1
                 inc    DE
                 dec    BC
                 ld     A,B
                 or     C                     ; 16 bit counter to zero
                 jr     NZ,LF_CopyTiles
                 ret

JoyPad:          ld     A,020h
                 stab   000h
                 ldab   000h
                 ldab   000h
                 cpl
                 and    00Fh
                 ld     B,A
                 ld     A,010h
                 stab   000h
                 ldab   000h
                 ldab   000h
                 ldab   000h
                 ldab   000h
                 ldab   000h
                 ldab   000h
                 cpl
                 and    00Fh
                 swapA
                 or     B
                 ld     D,A
                 lda    joy
                 xor    D
                 and    D
                 sta    joyo
                 ld     A,D
                 sta    joy

                 ld     A,030h
                 stab   000h
                 ret                          ; ripped from Bubble Bobble
                                              ; (see manual or PANs manual)
CircTable        EQU    0B000h

CircleScroll:    ld     A,000h
                 stab   047h
                 stab   048h
                 stab   049h                  ; no colors (fade out)

                 call   LoadFont
                 call   ClrScr

                 ld     HL,CircTable          ; init angles in Circle tab
                 ld     B,0
                 ld     C,16
CSC_ICTab:       ld     A,B                   ; 16 chars
                 ldHLI                        ; angle
                 ld     A,0
                 ldHLI                        ; chr data
                 ld     A,B
                 adc    A,16                  ; divided in 16 degree of 256
                 ld     B,A
                 dec    C
                 jr     NZ,CSC_ICTab

                 ld     A,0E4h
                 stab   047h                  ; BG Palette
                 stab   048h                  ; Obj 0 Palette
                 stab   049h                  ; Obj 1 Palette

                 ld     HL,ScrollText1
                 push   HL

CSC_Loop:        ldab   044h
                 cp     090h
                 jr     NZ,CSC_Loop

                 ld     HL,0FE00h
                 ld     DE,0C000h             ; copy sprtab during V-Blank
                 ld     BC,16*4
CSC_CopySpr:     ld     A,(DE)
                 ldHLI
                 inc    DE
                 dec    BC
                 ld     A,B
                 or     C
                 jr     NZ,CSC_CopySpr

                 call   joypad                ; call JoyPad during V-Blank

                 ld     HL,0C000h
                 ld     DE,CircTable
                 ld     B,16
CSC_Calc:        push   BC                     ; calculate new positions
                 ld     A,(DE)
                 inc    A
                 ld     (DE),A
                 ld     BC,SinTab              ; load sinus
                 adc    A,C                    ; from tab
                 jr     NC,CSC_AddSinNC
                 inc    B
CSC_AddSinNC:    ld     C,A

                 ld     A,(BC)                 ; get it...
                 sra    A
                 add    A,160/2                ; add mid Y
                 ldHLI                         ; store it


                 ld     A,(DE)
                 ld     BC,CosTab              ; load cosinus
                 adc    A,C
                 jr     NC,CSC_AddCosNC
                 inc    B
CSC_AddCosNC:    ld     C,A
                 ld     A,(BC)                 ; get it...
                 sra    A

                 add    A,160/2
                 ldHLI                         ; store it
                 inc    DE

                 ld     A,(DE)
                 inc    DE
                 ldHLI

                 ld     A,0
                 ldHLI

                 pop    BC
                 dec    B
                 jr     NZ,CSC_Calc

                 pop    HL                      ; change scrolltext
                 ld     DE,CircTable
                 ld     B,16
CSC_TextChg:     ld     A,(DE)
                 inc    DE
                 or     000h                    ; just to get the Z-flag
                 jr     NZ,CSC_NoNewChar
                 ld     A,(HL)
                 or     000h                    ; text finished???
                 jr     NZ,CSC_NewScroll
                 ld     HL,ScrollText1
                 ld     A,(HL)
CSC_NewScroll:   inc    HL
                 and    03Fh
                 ld     (DE),A
CSC_NoNewChar:   inc    DE
                 dec    B
                 jr     NZ,CSC_TextChg
                 push   HL


                 lda    joyo
                 and    080h                ; start pressed???
                 jr     NZ,CSC_Out
                 jp     CSC_Loop
CSC_Out:         pop    HL
                 ret


                        ;12345678901234567
ScrollText1:     defb   " GAME BOY RULEZ... THIS IS A PRITTY COOL "
                 defb   "ROUND SCROLLER ISN'T IT??? I THINK THE CODE "
                 defb   "IS FUCKING UNOPTIMIZED, BUT WHO CARES - NOT ME!!! "
                 defb   "THIS ROUTINE WAS WRITTEN IN MY SPAIN HOLIDAYS... "
                 defb   "SURE THERE ARE BETTER THINGS TO DO, BUT THIS IS "
                 defb   "ANOTHER STORY... SO SOME NICE GREETINX TO THE "
                 defb   "WHOLE SPAIN POSSE: ARNOLD (YES, I LL HELP U WITH THE "
                 defb   "SOUND), DOMMI, HENNING, ANNE, SARAH, LAURA, JANNA, "
                 defb   "BABSI, EVA, BJIOERN, ARNDT, MANUEL AND ALL THE OTHERS I VE "
                 defb   "FORGOTTEN... --- THESE HOLIDAYS ARE VEEERRRYYY COMPLICATED "
                 defb   "--- AND TO CODE THE GAMEBOY WAS ONE OF THE EASIEST THINGS... "
                 defb   "SOUNDS SNOBISHED, BUT IF YOU KNOW THE SITUATION YOU WOULD "
                 defb   "UNDERSTAND ME... "
                 defb   0


EndPart:         ld     A,000h                ; clear vars
                 sta    delay

                 ld     A,000h
                 stab   047h
                 stab   048h
                 stab   049h                  ; no colors (fade out)

                 call   LoadFont
                 call   ClrScr

                 ld     A,0E4h
                 stab   047h                  ; BG Palette
                 stab   048h                  ; Obj 0 Palette
                 stab   049h                  ; Obj 1 Palette

REP:             ld     DE,Page1              ; actual text
                 ld     HL,09800h
                 ld     BC,18*32              ; length of text
                 call   ShowPage

                 ld     DE,Page2              ; actual text
                 ld     HL,09800h
                 ld     BC,18*32              ; length of text
                 call   ShowPage

                 ld     DE,Page3              ; actual text
                 ld     HL,09800h
                 ld     BC,18*32              ; length of text
                 call   ShowPage

                 jp     REP
                 ret

ShowPage:        push   BC
                 push   HL
                 push   DE

Loop:            ldab   044h                   ; wait for V-Blank
                 cp     090h
                 jr     NZ,Loop

                 ld     HL,0FE00h
                 ld     DE,0C000h              ; copy sprtab
                 ld     BC,16*4
CopySpr:         ld     A,(DE)
                 ldHLI
                 inc    DE
                 dec    BC
                 ld     A,B
                 or     C
                 jr     NZ,CopySpr

                 call   joypad

                 lda    delay
                 inc    A
                 and    011h
                 sta    delay
                 jr     NZ,NoNewChar

                 pop    DE
                 pop    HL
                 pop    BC

                 ld     A,(DE)
                 and    03Fh                  ; just want the lower bits
                 ldHLI
                 inc    DE
                 dec    BC
                 ld     A,B
                 or     C
                 jr     NZ,NoFin

                 lda    delay
                 or     0FFh
                 sta    delay

NoFin:           push   BC
                 push   HL
                 push   DE

NoNewChar:       lda    angle
                 inc    A
                 sta    angle

                 ld     E,16
SprLoop:         ld     A,E
                 sta    count
                 push   DE
                 ld     D,0C0h
                 lda    count
                 add    A,A
                 add    A,A
                 ld     E,A

                 lda    count
                 ld     B,A
                 lda    angle
                 add    A,B
                 ld     HL,SinTab
                 add    A,L
                 ld     L,A
                 jr     NC,Add_NoCarryY
                 inc    H
Add_NoCarryY:

                 ld     A,(HL)
                 sra    A
                 add    A,160/2
                 ld     (DE),A
                 inc    DE

                 lda    count
                 sla    A
                 sla    A
                 sla    A
                 ld     B,A
                 lda    angle
                 add    A,B
                 ld     HL,CosTab
                 adc    A,L
                 ld     L,A
                 jr     NC,Add_NoCarryX
                 inc    H
Add_NoCarryX:

                 ld     A,(HL)
                 sra    A
                 add    A,160/2
                 ld     (DE),A
                 inc    DE

                 ld     A,0
                 ld     (DE),A
                 inc    DE

                 ld     A,0
                 ld     (DE),A

                 pop    DE
                 dec    E
                 ld     A,E
                 jr     NZ,SprLoop



                 lda    joyo
                 and    080h
                 jr     NZ,Out
                 jp     Loop
Out:
                 pop    DE
                 pop    HL
                 pop    BC
                 ret




                          ;12345678901234567890123456789012
Page1:           defb     "OK... THAT S IT...              " ; 1
                 defb     "                                " ; 2
                 defb     "   T H E   E N D                " ; 3
                 defb     "                                " ; 4
                 defb     "  IF YOU WANT TO                " ; 5
                 defb     "CONTACT ME WRITE TO             " ; 6
                 defb     "                                " ; 7
                 defb     " SEBASTIAN DEUTSCH              " ; 8
                 defb     "    ROTTELAND 39                " ; 9
                 defb     "    44797 BOCHUM                " ; 10
                 defb     "      GERMANY                   " ; 11
                 defb     "                                " ; 12
                 defb     "  OR CALL (VOICE)               " ; 13
                 defb     "                                " ; 14
                 defb     " +49(0)234 799218               " ; 15
                 defb     "                                " ; 16
                 defb     "PRESS START TO READ             " ; 17
                 defb     "THE NEXT PAGES.....             " ; 18

                          ;12345678901234567890123456789012
Page2:           defb     "THIS HOW2CODE ON THE            " ; 1
                 defb     "GAMEBOY IS PRESENTED            " ; 2
                 defb     "        BY                      " ; 3
                 defb     "                                " ; 4
                 defb     "    THE RIDDLER                 " ; 5
                 defb     "      OF -ACT-                  " ; 6
                 defb     "                                " ; 7
                 defb     "- ACT - FOREVER                 " ; 8
                 defb     "    NUMBER ONE                  " ; 9
                 defb     " BUT NEVER NUMBER               " ; 10
                 defb     "      TWO!!!                    " ; 11
                 defb     "                                " ; 12
                 defb     "SPECIAL GREETINX TO:            " ; 13
                 defb     "  PAN AND HEROZERO              " ; 14
                 defb     "                                " ; 15
                 defb     "MONSUN,SUNNY,CHAOS,             " ; 16
                 defb     "CHIPSY,REBEL,FATHER             " ; 17
                 defb     " AND ALL I FORGOT!              " ; 18

                          ;12345678901234567890123456789012
Page3:           defb     "THIS CODE WAS                   " ; 1
                 defb     "  CREATED DURING                " ; 2
                 defb     "MY SPAIN HOLIDAYS.              " ; 3
                 defb     "                                " ; 4
                 defb     "IF YOU WANT MORE                " ; 5
                 defb     "  INFORMATION THEN              " ; 6
                 defb     "CALL OR WRITE...                " ; 7
                 defb     "                                " ; 8
                 defb     "IM SEARCHING FOR                " ; 9
                 defb     "    CONTACTS                    " ; 10
                 defb     "(JUST LEGAL STUFF)              " ; 11
                 defb     "                                " ; 12
                 defb     "ACTUALLY IM CODING              " ; 13
                 defb     "AN ASSEMBLER FOR                " ; 14
                 defb     " THE GAMEBOY, SO                " ; 15
                 defb     "                                " ; 16
                 defb     " C YA                           " ; 17
                 defb     "         THE RIDDLER            " ; 18

charset:         defb     03Ch,042h,042h,081h,081h,042h,042h,03Ch ;'x'
                 defb     000h,03ch,066h,07eh,066h,066h,066h,000h ;'A'
               	 defb     000h,07ch,066h,07ch,066h,066h,07ch,000h ;'B'
               	 defb     000h,03ch,066h,060h,060h,066h,03ch,000h ;'C'
	         defb     000h,078h,06ch,066h,066h,06ch,078h,000h ;'D'
	         defb     000h,07eh,060h,078h,060h,060h,07eh,000h ;'E'
	         defb     000h,07eh,060h,078h,060h,060h,060h,000h ;'F'
	         defb     000h,03ch,066h,060h,06eh,066h,03ch,000h ;'G'
	         defb     000h,066h,066h,07eh,066h,066h,066h,000h ;'H'
	         defb     000h,03ch,018h,018h,018h,018h,03ch,000h ;'I'
	         defb     000h,01eh,00ch,00ch,00ch,06ch,038h,000h ;'J'
	         defb     000h,06ch,078h,070h,078h,06ch,066h,000h ;'K'
	         defb     000h,060h,060h,060h,060h,060h,07eh,000h ;'L'
	         defb     000h,063h,077h,07fh,06bh,063h,063h,000h ;'M'
	         defb     000h,066h,076h,07eh,07eh,06eh,066h,000h ;'N'
	         defb     000h,03ch,066h,066h,066h,066h,03ch,000h ;'O'
	         defb     000h,07ch,066h,066h,07ch,060h,060h,000h ;'P'
	         defb     000h,03ch,066h,066h,066h,03ch,00eh,000h ;'Q'
	         defb     000h,07ch,066h,066h,07ch,06ch,066h,000h ;'R'
	         defb     000h,03eh,060h,03ch,006h,066h,03ch,000h ;'S'
	         defb     000h,07eh,018h,018h,018h,018h,018h,000h ;'T'
	         defb     000h,066h,066h,066h,066h,066h,03ch,000h ;'U'
	         defb     000h,066h,066h,066h,066h,03ch,018h,000h ;'V'
	         defb     000h,063h,063h,06bh,07fh,077h,063h,000h ;'W'
	         defb     000h,066h,03ch,018h,03ch,066h,066h,000h ;'X'
	         defb     000h,066h,066h,03ch,018h,018h,018h,000h ;'Y'
	         defb     000h,07eh,00ch,018h,030h,060h,07eh,000h ;'Z'
	         defb     008h,000h,000h,000h,000h,000h,000h,000h ;'['
	         defb     000h,000h,000h,000h,000h,000h,000h,000h ;'\'
	         defb     000h,000h,000h,000h,000h,000h,000h,000h ;']'
	         defb     000h,000h,000h,000h,000h,000h,000h,000h ;'^'
	         defb     000h,008h,000h,000h,000h,000h,000h,000h ;'_'
	         defb     000h,000h,000h,000h,000h,000h,000h,000h ;' '
	         defb     000h,07Eh,07Eh,03Ch,018h,000h,018h,000h ;'!'
	         defb     000h,000h,000h,000h,000h,000h,000h,000h ;'"'
	         defb     080h,080h,080h,080h,080h,080h,080h,080h ;'#'
	         defb     0FCh,0FEh,0FFh,0F7h,0F7h,0FFh,0FEh,0FCh ;'0'
	         defb     03Eh,042h,04Eh,05Ch,05Ch,04Eh,042h,03Eh ;'%'
	         defb     000h,000h,000h,000h,000h,000h,000h,001h ;'&'
	         defb     000h,000h,000h,007h,000h,000h,000h,000h ;'''
	         defb     000h,004h,008h,008h,008h,008h,004h,000h ;'('
	         defb     000h,020h,010h,010h,010h,010h,020h,000h ;')'
	         defb     008h,008h,008h,0F8h,008h,008h,008h,008h ;'*'
	         defb     010h,010h,010h,01Fh,010h,010h,010h,010h ;'+'
	         defb     000h,000h,000h,000h,030h,030h,010h,060h ;','
	         defb     000h,000h,000h,0FFh,000h,000h,000h,000h ;'-'
	         defb     000h,000h,000h,000h,000h,018h,018h,000h ;'.'
	         defb     000h,000h,000h,0FFh,080h,080h,080h,080h ;'/'
	         defb     000h,03ch,066h,06eh,076h,066h,03ch,000h ;'0'
	         defb     000h,018h,038h,018h,018h,018h,07eh,000h ;'1'
	         defb     000h,07ch,006h,00ch,030h,060h,07eh,000h ;'2'
	         defb     000h,07eh,006h,01ch,006h,066h,03ch,000h ;'3'
	         defb     000h,00eh,01eh,036h,07fh,006h,006h,000h ;'4'
	         defb     000h,07eh,060h,07ch,006h,066h,03ch,000h ;'5'
                 defb     000h,03eh,060h,07ch,066h,066h,03ch,000h ;'6'
                 defb     000h,07eh,006h,00ch,00ch,00ch,00ch,000h ;'7'
                 defb     000h,03ch,066h,03ch,066h,066h,03ch,000h ;'8'
                 defb     000h,03ch,066h,03eh,006h,066h,03ch,000h ;'9'
                 defb     000h,000h,030h,030h,000h,030h,030h,000h ;':'
                 defb     000h,080h,080h,0F0h,080h,080h,000h,000h ;';'
                 defb     080h,080h,080h,0FFh,000h,000h,000h,000h ;'<'
                 defb     000h,000h,000h,0C0h,020h,010h,010h,010h ;'='
                 defb     008h,008h,004h,003h,000h,000h,000h,000h ;'>'
                 defb     000h,000h,000h,000h,000h,000h,000h,000h ;'?'

SinTab:
 defb 0,3,6,9,12,15,18,21,24,28,31,34,37,40,43,46
 defb 48,51,54,57,60,63,65,68,71,73,76,78,81,83,85,88
 defb 90,92,94,96,98,100,102,104,106,108,109,111,112,114,115,117
 defb 118,119,120,121,122,123,124,124,125,126,126,127,127,127,127,127
 defb 127,127,127,127,127,127,126,126,125,124,124,123,122,121,120,119
 defb 118,117,115,114,112,111,109,108,106,104,102,100,98,96,94,92
 defb 90,88,85,83,81,78,76,73,71,68,65,63,60,57,54,51
 defb 48,46,43,40,37,34,31,28,24,21,18,15,12,9,6,3
 defb 0,-3,-6,-9,-12,-15,-18,-21,-24,-28,-31,-34,-37,-40,-43,-46
 defb -48,-51,-54,-57,-60,-63,-65,-68,-71,-73,-76,-78,-81,-83,-85,-88
 defb -90,-92,-94,-96,-98,-100,-102,-104,-106,-108,-109,-111,-112,-114,-115,-117
 defb -118,-119,-120,-121,-122,-123,-124,-124,-125,-126,-126,-127,-127,-127,-127,-127
 defb -127,-127,-127,-127,-127,-127,-126,-126,-125,-124,-124,-123,-122,-121,-120,-119
 defb -118,-117,-115,-114,-112,-111,-109,-108,-106,-104,-102,-100,-98,-96,-94,-92
 defb -90,-88,-85,-83,-81,-78,-76,-73,-71,-68,-65,-63,-60,-57,-54,-51
 defb -48,-46,-43,-40,-37,-34,-31,-28,-24,-21,-18,-15,-12,-9,-6,-3

CosTab:
 defb 127,127,127,127,127,127,126,126,125,124,124,123,122,121,120,119
 defb 118,117,115,114,112,111,109,108,106,104,102,100,98,96,94,92
 defb 90,88,85,83,81,78,76,73,71,68,65,63,60,57,54,51
 defb 48,46,43,40,37,34,31,28,24,21,18,15,12,9,6,3
 defb 0,-3,-6,-9,-12,-15,-18,-21,-24,-28,-31,-34,-37,-40,-43,-46
 defb -48,-51,-54,-57,-60,-63,-65,-68,-71,-73,-76,-78,-81,-83,-85,-88
 defb -90,-92,-94,-96,-98,-100,-102,-104,-106,-108,-109,-111,-112,-114,-115,-117
 defb -118,-119,-120,-121,-122,-123,-124,-124,-125,-126,-126,-127,-127,-127,-127,-127
 defb -127,-127,-127,-127,-127,-127,-126,-126,-125,-124,-124,-123,-122,-121,-120,-119
 defb -118,-117,-115,-114,-112,-111,-109,-108,-106,-104,-102,-100,-98,-96,-94,-92
 defb -90,-88,-85,-83,-81,-78,-76,-73,-71,-68,-65,-63,-60,-57,-54,-51
 defb -48,-46,-43,-40,-37,-34,-31,-28,-24,-21,-18,-15,-12,-9,-6,-3
 defb 0,3,6,9,12,15,18,21,24,28,31,34,37,40,43,46
 defb 48,51,54,57,60,63,65,68,71,73,76,78,81,83,85,88
 defb 90,92,94,96,98,100,102,104,106,108,109,111,112,114,115,117
 defb 118,119,120,121,122,123,124,124,125,126,126,127,127,127,127,127

                 END
