; Mad Pascal Compiler version 1.6.0 [2019/11/03] for 6502

STACKWIDTH	= 16
CODEORIGIN	= $2000

TRUE		= 1
FALSE		= 0

	org $80

fxptr	.ds 2

eax	.ds 4						;8 bytes (aex + edx) -> divREAL
edx	.ds 4
ecx	.ds 4
bp	.ds 2
bp2	.ds 2

ztmp
ztmp8	.ds 1
ztmp9	.ds 1
ztmp10	.ds 1
ztmp11	.ds 1

TMP	.ds 2

STACKORIGIN	.ds STACKWIDTH*4

	.print 'ZPFREE: $0000..',fxptr-1,' ; ',*,'..',$ff

ax	= eax
al	= eax
ah	= eax+1

cx	= ecx
cl	= ecx
ch	= ecx+1

dx	= edx
dl	= edx
dh	= edx+1

	org eax

FP1MAN0	.ds 1
FP1MAN1	.ds 1
FP1MAN2	.ds 1
FP1MAN3	.ds 1

	org ztmp8

FP1SGN	.ds 1
FP1EXP	.ds 1

	org edx

FP2MAN0	.ds 1
FP2MAN1	.ds 1
FP2MAN2	.ds 1
FP2MAN3	.ds 1

	org ztmp10

FP2SGN	.ds 1
FP2EXP	.ds 1

	org ecx

FPMAN0	.ds 1
FPMAN1	.ds 1
FPMAN2	.ds 1
FPMAN3	.ds 1

	org bp2

FPSGN	.ds 1
FPEXP	.ds 1

; -----------------------------------------------------------

	org CODEORIGIN

	STATICDATA

START
	tsx
	stx MAIN.@halt+1

	.ifdef fmulinit
	fmulinit
	eif

	ift DATAORIGIN+VARINITSIZE > $BFFF
	ert 'Invalid memory address range ',DATAORIGIN+VARINITSIZE
	els
	@fill #DATAORIGIN+VARINITSIZE #VARDATASIZE-VARINITSIZE #0
	eif

	ldx #$0f
	mva:rpl $340,x MAIN.IOCB@COPY,x-

	inx		; X = 0 !!!
	stx bp		; lo BP = 0

	UNITINITIALIZATION

.local	MAIN						; PROCEDURE

	ift l_04F1-*>3
	jmp l_04F1
	eif

; -----------------------------------------------------------

.local	SYSTEM						; UNIT

.local	DPEEK						; FUNCTION | ASSEMBLER | REGISTER

; -----------------------------------------------------------

; Generate Assignment for WORD / SMALLINT / SHORTREAL / POINTER
; as Pointer
	mva :STACKORIGIN,x A
	mva :STACKORIGIN+STACKWIDTH,x A+1
	dex						; sub bx, 1


; ---------------------  ASM Block 005  ---------------------

	ldy #0
	mva (edx),y Result
	iny
	mva (edx),y Result+1


@exit

; -----------------------------------------------------------

; Push WORD / SMALLINT / SHORTREAL / POINTER
; as Pointer

	inx						; add bx, 1
	mva RESULT :STACKORIGIN,x
	mva RESULT+1 :STACKORIGIN+STACKWIDTH,x

	.ifdef @new
	@FreeMem #@VarData #@VarDataSize
	eif

; -----------------------------------------------------------

A	= edx
RESULT	= DATAORIGIN+$000B

@VarData	= RESULT
@VarDataSize	= 2

	rts						; ret
.endl

; -----------------------------------------------------------

M_PI_2	= $0648
D_PI_2	= $0192
D_PI_180	= $0004
MGTIA	= $0000
MVBXE	= $0080
VBXE_XDLADR	= $0000
VBXE_BCBADR	= $0100
VBXE_MAPADR	= $1000
VBXE_OVRADR	= $5000
VBXE_WINDOW	= $B000
IDLI	= $0000
IVBL	= $0001
CH_DELCHR	= $00FE
CH_ENTER	= $009B
CH_ESC	= $001B
CH_CURS_UP	= $001C
CH_CURS_DOWN	= $001D
CH_CURS_LEFT	= $001E
CH_CURS_RIGHT	= $001F
CH_TAB	= $007F
CH_EOL	= $009B
CH_CLR	= $007D
CH_BELL	= $00FD
CH_DEL	= $007E
CH_DELLINE	= $009C
CH_INSLINE	= $009D
COLOR_BLACK	= $0000
COLOR_WHITE	= $000E
COLOR_RED	= $0032
COLOR_CYAN	= $0096
COLOR_VIOLET	= $0068
COLOR_GREEN	= $00C4
COLOR_BLUE	= $0074
COLOR_YELLOW	= $00EE
COLOR_ORANGE	= $004A
COLOR_BROWN	= $00E4
COLOR_LIGHTRED	= $003C
COLOR_GRAY1	= $0004
COLOR_GRAY2	= $0006
COLOR_GRAY3	= $000A
COLOR_LIGHTGREEN	= $00CC
COLOR_LIGHTBLUE	= $007C
FMOPENREAD	= $0004
FMOPENWRITE	= $0008
FMOPENAPPEND	= $0009
FMOPENREADWRITE	= $000C
SCREENWIDTH	= DATAORIGIN+$0000
SCREENHEIGHT	= DATAORIGIN+$0002
DATESEPARATOR	= DATAORIGIN+$0004
FILEMODE	= DATAORIGIN+$0005
SCREENMODE	= DATAORIGIN+$0006
IORESULT	= DATAORIGIN+$0007
EOLN	= DATAORIGIN+$0008
RNDSEED	= DATAORIGIN+$0009

.endl							; UNIT SYSTEM

; -----------------------------------------------------------

.local	ATARI						; UNIT

; -----------------------------------------------------------

RTCLOK	= $0012
ATRACT	= $004D
LMARGIN	= $0052
RMARGIN	= $0053
ROWCRS	= $0054
COLCRS	= $0055
DINDEX	= $0057
SAVMSC	= $0058
VDSLST	= $0200
SDLSTL	= $0230
TXTROW	= $0290
TXTCOL	= $0291
TINDEX	= $0293
TXTMSC	= $0294
SDMCTL	= $022F
GPRIOR	= $026F
CRSINH	= $02F0
CHACT	= $02F3
CHBAS	= $02F4
CH	= $02FC
PCOLR0	= $02C0
PCOLR1	= $02C1
PCOLR2	= $02C2
PCOLR3	= $02C3
COLOR0	= $02C4
COLOR1	= $02C5
COLOR2	= $02C6
COLOR3	= $02C7
COLOR4	= $02C8
COLBAKS	= $02C8
HPOSP0	= $D000
HPOSP1	= $D001
HPOSP2	= $D002
HPOSP3	= $D003
HPOSM0	= $D004
HPOSM1	= $D005
HPOSM2	= $D006
HPOSM3	= $D007
SIZEP0	= $D008
SIZEP1	= $D009
SIZEP2	= $D00A
SIZEP3	= $D00B
SIZEM	= $D00C
GRAFP0	= $D00D
GRAFP1	= $D00E
GRAFP2	= $D00F
GRAFP3	= $D010
GRAFM	= $D011
P0PF	= $D004
PAL	= $D014
COLPM0	= $D012
COLPM1	= $D013
COLPM2	= $D014
COLPM3	= $D015
COLPF0	= $D016
COLPF1	= $D017
COLPF2	= $D018
COLPF3	= $D019
COLBK	= $D01A
PRIOR	= $D01B
GRACTL	= $D01D
HITCLR	= $D01E
AUDF1	= $D200
AUDC1	= $D201
AUDF2	= $D202
AUDC2	= $D203
AUDF3	= $D204
AUDC3	= $D205
AUDF4	= $D206
AUDC4	= $D207
AUDCTL	= $D208
SKSTAT	= $D20F
PORTB	= $D301
DMACTL	= $D400
CHACTL	= $D401
DLISTL	= $D402
HSCROL	= $D404
VSCROL	= $D405
PMBASE	= $D407
CHBASE	= $D409
WSYNC	= $D40A
VCOUNT	= $D40B
PENH	= $D40C
PENV	= $D40D
NMIEN	= $D40E

.endl							; UNIT ATARI

; -----------------------------------------------------------

.local	CRT						; UNIT

.local	READKEY						; FUNCTION | ASSEMBLER


; ---------------------  ASM Block 046  ---------------------

	txa:pha

	@GetKey

	sta Result

	pla:tax


@exit

; -----------------------------------------------------------

; Push BYTE / CHAR / SHORTINT / BOOLEAN
; as Pointer

	inx						; add bx, 1
	mva RESULT :STACKORIGIN,x

	.ifdef @new
	@FreeMem #@VarData #@VarDataSize
	eif

; -----------------------------------------------------------

RESULT	= DATAORIGIN+$000E

@VarData	= RESULT
@VarDataSize	= 1

	rts						; ret
.endl

.local	TEXTBACKGROUND					; PROCEDURE | ASSEMBLER

; -----------------------------------------------------------

; Generate Assignment for BYTE / CHAR / SHORTINT / BOOLEAN
; as Pointer
	mva :STACKORIGIN,x A
	dex						; sub bx, 1


; ---------------------  ASM Block 047  ---------------------

	mwa a colpf2s


; -----------------------------------------------------------

A	= DATAORIGIN+$000F

@VarData	= A
@VarDataSize	= 1


@exit
	.ifdef @new
	@FreeMem #@VarData #@VarDataSize
	eif
	rts						; ret
.endl

; -----------------------------------------------------------

TEXTATTR	= DATAORIGIN+$000D
CONSOL	= $D01F
CN_START_SELECT_OPTION	= $0000
CN_SELECT_OPTION	= $0001
CN_START_OPTION	= $0002
CN_OPTION	= $0003
CN_START_SELECT	= $0004
CN_SELECT	= $0005
CN_START	= $0006
CN_NONE	= $0007
BW40	= $0000
CO40	= $0001
BW80	= $0002
CO80	= $0003
MONO	= $0007
C40	= $0001
C80	= $0003
BLACK	= $0000
BLUE	= $0001
GREEN	= $0002
CYAN	= $0003
RED	= $0004
MAGENTA	= $0005
BROWN	= $0006
LIGHTGRAY	= $0007
DARKGRAY	= $0008
LIGHTBLUE	= $0009
LIGHTGREEN	= $000A
LIGHTCYAN	= $000B
LIGHTRED	= $000C
LIGHTMAGENTA	= $000D
YELLOW	= $000E
WHITE	= $000F
BLINK	= $0080

.endl							; UNIT CRT

; -----------------------------------------------------------

.local	TYPES						; UNIT

; -----------------------------------------------------------


.endl							; UNIT TYPES

; -----------------------------------------------------------

.local	FASTGRAPH					; UNIT

.local	SETCOLOR					; PROCEDURE | ASSEMBLER

; -----------------------------------------------------------

; Generate Assignment for BYTE / CHAR / SHORTINT / BOOLEAN
; as Pointer
	mva :STACKORIGIN,x COLOR
	dex						; sub bx, 1


; ---------------------  ASM Block 058  ---------------------

	jmp gr8
mode	equ *-2

gr15	lda color
	and #3
	tay

	jmp toend

gr9	txa:pha

	lda color
	and #$0f
	sta c9+1
	:4 asl @
	sta c9

	ldy #0
lp	tya
	and #1
	tax
	lda c9_,x
	sta adr.color_bits,y
	lda c9,x
	sta adr.color_bits+$100,y
	iny
	bne lp

	pla:tax

	ldy color
	beq toend

	ldy #1
	jmp toend

c9	dta 0,0
c9_	dta $0f, $f0

colorHi	dta h(adr.color_bits, adr.color_bits+$100, adr.color_bits+$200, adr.color_bits+$300)

gr8	lda color
	and #1
	tay

toend
	.ifdef fLine
	lda colorHi,y
	sta fLine.urr_color+2
	sta fLine.uur_color+2
	sta fLine.drr_color+2
	sta fLine.ddr_color+2

	lda #$1d		; ora *,x
	cpy #0
	sne
	lda #$3d		; and *,x

	sta fLine.urr_color
	sta fLine.uur_color
	sta fLine.drr_color
	sta fLine.ddr_color
	.endif

	.ifdef PutPixel
	mva colorHi,y PutPixel.acol+2

	lda #$1d		; ora *,x
	cpy #0
	sne
	lda #$3d		; and *,x

	sta PutPixel.acol
	.endif


; -----------------------------------------------------------

COLOR	= DATAORIGIN+$0729

@VarData	= COLOR
@VarDataSize	= 1


@exit
	.ifdef @new
	@FreeMem #@VarData #@VarDataSize
	eif
	rts						; ret
.endl

.local	PUTPIXEL					; PROCEDURE | ASSEMBLER | REGISTER

; -----------------------------------------------------------

; Generate Assignment for WORD / SMALLINT / SHORTREAL / POINTER
; as Pointer
	mva :STACKORIGIN,x Y
	mva :STACKORIGIN+STACKWIDTH,x Y+1
	dex						; sub bx, 1

; -----------------------------------------------------------

; Generate Assignment for WORD / SMALLINT / SHORTREAL / POINTER
; as Pointer
	mva :STACKORIGIN,x X
	mva :STACKORIGIN+STACKWIDTH,x X+1
	dex						; sub bx, 1


; ---------------------  ASM Block 059  ---------------------

	stx @sp

	lda y+1
	bmi stop
	cmp MAIN.SYSTEM.ScreenHeight+1
	bne sk0
	lda y
	cmp MAIN.SYSTEM.ScreenHeight
sk0
	bcs stop

	lda x+1
	bmi stop
	cmp MAIN.SYSTEM.ScreenWidth+1
	bne sk1
	lda x
	cmp MAIN.SYSTEM.ScreenWidth
sk1
	bcs stop

	ldy y
	lda adr.lineLo,y
	add #0
lfb	equ *-1
	sta :bp2

	lda adr.lineHi,y
;	beq stop
	adc #0
hfb	equ *-1
	sta :bp2+1

	jmp gr8
mode	equ *-2

; ----------------------------

gr15	ldx x
	ldy adr.div4,x

	jmp plot

; ----------------------------

gr9	lda x
	lsr @
	tay
	lda x
	and #1
	tax

	jmp plot

; ----------------------------

gr8	lda x
	tax

	lsr x+1
	ror @

	tay
	lda adr.div4,y
	tay

plot	lda (:bp2),y
acol	and adr.color_bits,x
	sta (:bp2),y

stop	ldx #0
@sp	equ *-1


; -----------------------------------------------------------

X	= edx
Y	= ecx

@exit
	.ifdef @new
	@FreeMem #@VarData #@VarDataSize
	eif
	rts						; ret
.endl

.local	FRAMEBUFFER					; PROCEDURE | ASSEMBLER

; -----------------------------------------------------------

; Generate Assignment for WORD / SMALLINT / SHORTREAL / POINTER
; as Pointer
	mva :STACKORIGIN,x A
	mva :STACKORIGIN+STACKWIDTH,x A+1
	dex						; sub bx, 1


; ---------------------  ASM Block 064  ---------------------

	.ifdef PutPixel
	mva a	PutPixel.lfb
	mva a+1	PutPixel.hfb
	eif

	.ifdef fLine
	mva a	fLine.lfb
	mva a+1	fLine.hfb
	eif


; -----------------------------------------------------------

A	= DATAORIGIN+$072A

@VarData	= A
@VarDataSize	= 2


@exit
	.ifdef @new
	@FreeMem #@VarData #@VarDataSize
	eif
	rts						; ret
.endl

.local	INITGRAPH_0551					; PROCEDURE | OVERLOAD

; -----------------------------------------------------------

; Generate Assignment for BYTE / CHAR / SHORTINT / BOOLEAN
; as Pointer
	mva :STACKORIGIN,x MODE
	dex						; sub bx, 1

	ift l_0557-*>3
	jmp l_0557
	eif

; IfThenEpilog
l_0557

; optimize OK (FASTGRAPH), line = 620

	lda MODE
	ldy #1
	and #$20
	bne @+
	dey
@
	.ifdef IFTMP_52
	sty IFTMP_52
	eif
	tya
	bne *+5
	jmp l_056D

; optimize OK (FASTGRAPH), line = 621

	mva #$20 WIDTH

; IfThenEpilog
l_056D

; Restore conditional expression
	lda IFTMP_52

; else condition
	beq *+5						; je
	jmp l_057B

; optimize OK (FASTGRAPH), line = 623

	mva #$28 WIDTH

; IfThenEpilog
l_057B

; optimize OK (FASTGRAPH), line = 625

	lda MODE
	and #$10
	sta WINDOW

; optimize OK (FASTGRAPH), line = 627

	mva MODE SYSTEM.SCREENMODE

; optimize OK (FASTGRAPH), line = 629

	lda MODE
	and #$0F
	sta MODE

; optimize OK (FASTGRAPH), line = 631

	mva #$C0 SYSTEM.SCREENHEIGHT
	mva #$00 SYSTEM.SCREENHEIGHT+1

; -----------------------------------------------------------

; Push BYTE / CHAR / SHORTINT / BOOLEAN
; as Pointer

	inx						; add bx, 1
	mva MODE :STACKORIGIN,x

; GenerateCaseProlog
	dex						; sub bx, 1

; GenerateCaseEqualityCheck
	lda :STACKORIGIN+1,x
	cmp #3
	beq @+

; GenerateCaseStatementProlog
	jmp l_05AB
@

; ---------------------  ASM Block 065  ---------------------

	mwa #40 MAIN.SYSTEM.ScreenWidth
	mwa #24 MAIN.SYSTEM.ScreenHeight

	mva #10 width

	.ifdef SetColor
	mwa #SetColor.gr15 SetColor.mode
	.endif

	.ifdef PutPixel
	mwa #PutPixel.gr15 PutPixel.mode
	.endif


; GenerateCaseStatementEpilog
	jmp a_0002
l_05AB

; GenerateIfElseEpilog

; GenerateCaseEqualityCheck
	lda :STACKORIGIN+1,x
	cmp #5
	beq @+

; GenerateCaseStatementProlog
	jmp l_05B6
@

; ---------------------  ASM Block 066  ---------------------

	mwa #80 MAIN.SYSTEM.ScreenWidth
	mwa #48 MAIN.SYSTEM.ScreenHeight

	mva #20 width

	.ifdef SetColor
	mwa #SetColor.gr15 SetColor.mode
	.endif

	.ifdef PutPixel
	mwa #PutPixel.gr15 PutPixel.mode
	.endif


; GenerateCaseStatementEpilog
	jmp a_0002
l_05B6

; GenerateIfElseEpilog

; GenerateCaseEqualityCheck
	lda :STACKORIGIN+1,x
	cmp #7
	beq @+

; GenerateCaseStatementProlog
	jmp l_05C1
@

; ---------------------  ASM Block 067  ---------------------

	mwa #160 MAIN.SYSTEM.ScreenWidth
	mwa #96 MAIN.SYSTEM.ScreenHeight

	.ifdef SetColor
	mwa #SetColor.gr15 SetColor.mode
	.endif

	.ifdef PutPixel
	mwa #PutPixel.gr15 PutPixel.mode
	.endif


; GenerateCaseStatementEpilog
	jmp a_0002
l_05C1

; GenerateIfElseEpilog

; GenerateCaseEqualityCheck
	lda :STACKORIGIN+1,x
	cmp #8
	beq @+

; GenerateCaseStatementProlog
	jmp l_05CC
@

; ---------------------  ASM Block 068  ---------------------

	mwa #320 MAIN.SYSTEM.ScreenWidth
;	mwa #192 MAIN.SYSTEM.ScreenHeight

	.ifdef SetColor
	mwa #SetColor.gr8 SetColor.mode
	.endif

	.ifdef PutPixel
	mwa #PutPixel.gr8 PutPixel.mode
	.endif


; GenerateCaseStatementEpilog
	jmp a_0002
l_05CC

; GenerateIfElseEpilog

	lda :STACKORIGIN+1,x
	clc						; clear carry for add
	adc #$FF-11					; make m = $FF
	adc #11-9+1					; carry set if in range n to m
	bcs @+

; GenerateCaseStatementProlog
	jmp l_05D7
@

; ---------------------  ASM Block 069  ---------------------

	mwa #80 MAIN.SYSTEM.ScreenWidth
;	mwa #192 MAIN.SYSTEM.ScreenHeight

	.ifdef SetColor
	mwa #SetColor.gr9 SetColor.mode
	.endif

	.ifdef PutPixel
	mwa #PutPixel.gr9 PutPixel.mode
	.endif

	.ifdef fLine
	mva #$ea _nop
	.endif


; GenerateCaseStatementEpilog
	jmp a_0002
l_05D7

; GenerateIfElseEpilog

; GenerateCaseEqualityCheck
	lda :STACKORIGIN+1,x
	cmp #15
	beq @+

; GenerateCaseStatementProlog
	jmp l_05E2
@

; ---------------------  ASM Block 070  ---------------------

	mwa #160 MAIN.SYSTEM.ScreenWidth
;	mwa #192 MAIN.SYSTEM.ScreenHeight

	.ifdef SetColor
	mwa #SetColor.gr15 SetColor.mode
	.endif

	.ifdef PutPixel
	mwa #PutPixel.gr15 PutPixel.mode
	.endif


; GenerateCaseStatementEpilog
	jmp a_0002
l_05E2

; GenerateIfElseEpilog

; GenerateCaseEpilog

; GenerateIfElseEpilog

; GenerateIfElseEpilog

; GenerateIfElseEpilog

; GenerateIfElseEpilog

; GenerateIfElseEpilog

; GenerateIfElseEpilog
a_0002

; ---------------------  ASM Block 071  ---------------------

	txa:pha

	.ifdef fLine
	lda width
	sta fLine.w0
	sta fLine.w1
	sta fLine.w2
	sta fLine.w3
	.endif


	ldy mode

	ldx #$60	; 6*16
	lda window	; %00010000 with text window
	eor #$10
	ora #2		; read

	.nowarn @graphics

; ---	init_tabs

	ldy #0
	sty :bp2
	sty :bp2+1
it1
	lda :bp2+1
	sta adr.lineHi,y
	lda :bp2
	sta adr.lineLo,y
	clc
	adc width
	sta :bp2
	scc
	inc :bp2+1

	iny
	bne it1

	mva #$55 _col+1

	ldx #3
	stx _and+1
	txa
l0	sta __oras,x
	asl @
	asl @
	dex
	bpl l0

	lda mode
	cmp #8
	bne it2

	mva #$ff _col+1

	ldx #7
	stx _and+1
	lda #1
l1	sta __oras,x
	asl @
	dex
	bpl l1

it2	tya
_and	and #3
	tax
	lda __oras,x
	eor #$ff
	sta adr.color_bits+$000,y ; color0
	lda __oras,x
_col	and #$55
	sta adr.color_bits+$100,y ; color1
	lda __oras,x
	and #$aa
	sta adr.color_bits+$200,y ; color2
	lda __oras,x
	and #$ff
	sta adr.color_bits+$300,y ; color3
	tya
	lsr @
_nop	lsr @
	sta adr.div4,y
	iny
	bne it2

	jmp stop

__oras	dta $c0,$30,$0c,$03
	dta 0,0,0,0

stop	pla:tax


; optimize FAIL ('FRAMEBUFFER', FASTGRAPH), line = 822
	inx
	mva #$58 :STACKORIGIN,x
	mva #$00 :STACKORIGIN+STACKWIDTH,x
	jsr SYSTEM.DPEEK
	jsr FRAMEBUFFER

; -----------------------------------------------------------

MODE	= DATAORIGIN+$072C
WINDOW	= DATAORIGIN+$072D
I	= DATAORIGIN+$072E
WIDTH	= DATAORIGIN+$072F
IFTMP_52	= DATAORIGIN+$0730

@VarData	= MODE
@VarDataSize	= 5


@exit
	.ifdef @new
	@FreeMem #@VarData #@VarDataSize
	eif
	rts						; ret
.endl

; -----------------------------------------------------------

CURRENTDRIVER	= $FFFFFF80
DETECT	= $0000
CGA	= $0001
MCGA	= $0002
EGA	= $0003
EGA64	= $0004
EGAMONO	= $0005
LOWRES	= $0006
HERCMONO	= $0007
VGA	= $0009
VESA	= $000A
D1BIT	= $000B
D2BIT	= $000C
D4BIT	= $000D
D6BIT	= $000E
D8BIT	= $000F
D12BIT	= $0010
M640X400	= $0018
M640X480	= $0018
GROK	= $0000
GRNOINITGRAPH	= $FFFFFFFF
GRNOTDETECTED	= $FFFFFFFE
GRFILENOTFOUND	= $FFFFFFFD
GRINVALIDDRIVER	= $FFFFFFFC
GRNOLOADMEM	= $FFFFFFFB
GRNOSCANMEM	= $FFFFFFFA
GRNOFLOODMEM	= $FFFFFFF9
GRFONTNOTFOUND	= $FFFFFFF8
GRNOFONTMEM	= $FFFFFFF7
GRINVALIDMODE	= $FFFFFFF6
GRERROR	= $FFFFFFF5
GRIOERROR	= $FFFFFFF4
GRINVALIDFONT	= $FFFFFFF3
GRINVALIDFONTNUM	= $FFFFFFF2
GRINVALIDVERSION	= $FFFFFFEE
CGAC0	= $0000
CGAC1	= $0001
CGAC2	= $0002
CGAC3	= $0003
CGAHI	= $0004
MCGAC0	= $0000
MCGAC1	= $0001
MCGAC2	= $0002
MCGAC3	= $0003
MCGAMED	= $0004
MCGAHI	= $0005
EGALO	= $0000
EGAHI	= $0001
EGA64LO	= $0000
EGA64HI	= $0001
EGAMONOHI	= $0003
VGALO	= $000A
VGAMED	= $001F
VGAHI	= $0018
WIN_LEFT	= DATAORIGIN+$0010
WIN_RIGHT	= DATAORIGIN+$0012
WIN_TOP	= DATAORIGIN+$0014
WIN_BOTTOM	= DATAORIGIN+$0016
GRAPHRESULT	= DATAORIGIN+$0018
adr.LASTARCCOORDS	= DATAORIGIN+$0019
.var LASTARCCOORDS	= adr.LASTARCCOORDS .word
LASTARCCOORDS.X	= DATAORIGIN+$0019
LASTARCCOORDS.Y	= DATAORIGIN+$001B
LASTARCCOORDS.XSTART	= DATAORIGIN+$001D
LASTARCCOORDS.YSTART	= DATAORIGIN+$001F
LASTARCCOORDS.XEND	= DATAORIGIN+$0021
LASTARCCOORDS.YEND	= DATAORIGIN+$0023
adr.COLOR_BITS	= DATAORIGIN+$0025
.var COLOR_BITS	= adr.COLOR_BITS .word
adr.LINELO	= DATAORIGIN+$0425
.var LINELO	= adr.LINELO .word
adr.LINEHI	= DATAORIGIN+$0525
.var LINEHI	= adr.LINEHI .word
adr.DIV4	= DATAORIGIN+$0625
.var DIV4	= adr.DIV4 .word
CURRENTX	= DATAORIGIN+$0725
CURRENTY	= DATAORIGIN+$0727

.endl							; UNIT FASTGRAPH

; IfThenEpilog
l_04F1

; optimize FAIL ('FASTGRAPH.INITGRAPH_0551', hello_qr_v2.pas), line = 45
	inx
	mva #$05 :STACKORIGIN,x
	jsr FASTGRAPH.INITGRAPH_0551

; optimize FAIL ('CRT.TEXTBACKGROUND', hello_qr_v2.pas), line = 46
	inx
	mva #$00 :STACKORIGIN,x
	jsr CRT.TEXTBACKGROUND

; optimize FAIL ('FASTGRAPH.SETCOLOR', hello_qr_v2.pas), line = 47
	inx
	mva #$01 :STACKORIGIN,x
	jsr FASTGRAPH.SETCOLOR
; For

; optimize OK (hello_qr_v2.pas), line = 49

	mva #$00 Y

; optimize OK (hello_qr_v2.pas), line = 49

; To
l_0632

; ForToDoCondition

; optimize OK (hello_qr_v2.pas), line = 49

	lda Y
	cmp #$22
	bcc *+7
	beq *+5

; ForToDoProlog
	jmp l_0640

; Array index QR[0..34]

; -----------------------------------------------------------

; Push BYTE / CHAR / SHORTINT / BOOLEAN
; as Pointer

	inx						; add bx, 1
	mva Y :STACKORIGIN,x
	mva #$00 :STACKORIGIN+STACKWIDTH,x		; expand to WORD

	m@index2 0

; -----------------------------------------------------------

; Push WORD / SMALLINT / SHORTREAL / POINTER
; as Pointer to Array Origin


	ldy :STACKORIGIN,x				; si
	mva adr.QR,y :STACKORIGIN,x
	mva adr.QR+1,y :STACKORIGIN+STACKWIDTH,x

	@moveSTRING BINLINE
	dex						; sub bx, 1
; For

; optimize OK (hello_qr_v2.pas), line = 51

	mva #$01 X

; optimize OK (hello_qr_v2.pas), line = 51

; To
l_064E

; ForToDoCondition

; optimize OK (hello_qr_v2.pas), line = 51

	lda X
	cmp #$23
	bcc *+7
	beq *+5

; ForToDoProlog
	jmp l_065C

; optimize OK (hello_qr_v2.pas), line = 52

	ldy X
	lda adr.BINLINE,y
	ldy #1
	cmp #$31
	beq @+
	dey
@
	.ifdef IFTMP_90
	sty IFTMP_90
	eif
	tya
	bne *+5
	jmp l_0671

; optimize FAIL ('FASTGRAPH.PUTPIXEL', hello_qr_v2.pas), line = 53
	inx
	mva X :STACKORIGIN,x
	mva #$00 :STACKORIGIN+STACKWIDTH,x
	inx
	mva Y :STACKORIGIN,x
	mva #$00 :STACKORIGIN+STACKWIDTH,x
	jsr FASTGRAPH.PUTPIXEL

; IfThenEpilog
l_0671

; ForToDoEpilog
c_064E
	inc X						; inc ptr byte [CounterAddress]

	seq

; WhileDoEpilog
	jmp l_064E
l_065C
b_064E

; ForToDoEpilog
c_0632
	inc Y						; inc ptr byte [CounterAddress]

	seq

; WhileDoEpilog
	jmp l_0632
l_0640
b_0632

	jsr CRT.READKEY					; call Entry

	dex						; sub bx, 1

; -----------------------------------------------------------

X	= DATAORIGIN+$0731
Y	= DATAORIGIN+$0732
adr.BINLINE	= DATAORIGIN+$0733
.var BINLINE	= adr.BINLINE .word
adr.QR	= DATAORIGIN+$0833
.var QR	= adr.QR .word
@FORTMP_1583	= $0022
@FORTMP_1611	= $0023

@exit

@halt	ldx #0
	txs

	rts

IOCB@COPY	:16 brk

.local	@DEFINES
ATARI
.endl

.endl

; -----------------------------------------------------------

	icl 'cpu6502.asm'

; -----------------------------------------------------------

.macro UNITINITIALIZATION

	.ifdef MAIN.SYSTEM.@UnitInit
	jsr MAIN.SYSTEM.@UnitInit
	eif

	.ifdef MAIN.ATARI.@UnitInit
	jsr MAIN.ATARI.@UnitInit
	eif

	.ifdef MAIN.CRT.@UnitInit
	jsr MAIN.CRT.@UnitInit
	eif

	.ifdef MAIN.TYPES.@UnitInit
	jsr MAIN.TYPES.@UnitInit
	eif

	.ifdef MAIN.FASTGRAPH.@UnitInit
	jsr MAIN.FASTGRAPH.@UnitInit
	eif
.endm

	ift .SIZEOF(MAIN.SYSTEM) > 0
	.print 'SYSTEM: ',MAIN.SYSTEM,'..',MAIN.SYSTEM+.SIZEOF(MAIN.SYSTEM)-1
	eif

	ift .SIZEOF(MAIN.ATARI) > 0
	.print 'ATARI: ',MAIN.ATARI,'..',MAIN.ATARI+.SIZEOF(MAIN.ATARI)-1
	eif

	ift .SIZEOF(MAIN.CRT) > 0
	.print 'CRT: ',MAIN.CRT,'..',MAIN.CRT+.SIZEOF(MAIN.CRT)-1
	eif

	ift .SIZEOF(MAIN.TYPES) > 0
	.print 'TYPES: ',MAIN.TYPES,'..',MAIN.TYPES+.SIZEOF(MAIN.TYPES)-1
	eif

	ift .SIZEOF(MAIN.FASTGRAPH) > 0
	.print 'FASTGRAPH: ',MAIN.FASTGRAPH,'..',MAIN.FASTGRAPH+.SIZEOF(MAIN.FASTGRAPH)-1
	eif

	.print 'CODE: ',CODEORIGIN,'..',*-1

DATAORIGIN

.by  $28 $00 $18 $00 $2D $0C $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $9F $00 $00 $00 $BF $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $00 $00 $00 $00
.by  $00 $00 $00 $00 $00 $00 $00 $00  $00 $00 $00 $00 $20 $25 $20 $4A  $20 $6F $20 $94 $20 $B9 $20 $DE
.by  $20 $03 $21 $28 $21 $4D $21 $72  $21 $97 $21 $BC $21 $E1 $21 $06  $22 $2B $22 $50 $22 $75 $22 $9A
.by  $22 $BF $22 $E4 $22 $09 $23 $2E  $23 $53 $23 $78 $23 $9D $23 $C2  $23 $E7 $23 $0C $24 $31 $24 $56
.by  $24 $7B $24 $A0 $24 $C5 $24 $00  $20

VARINITSIZE	= *-DATAORIGIN
VARDATASIZE	= 2169

PROGRAMSTACK	= DATAORIGIN+VARDATASIZE

	.print 'DATA: ',DATAORIGIN,'..',PROGRAMSTACK

	run START

; -----------------------------------------------------------

.macro	STATICDATA
.by  $23 $31 $31 $31 $31 $31 $31 $31  $31 $31 $31 $31 $31 $31 $31 $31  $31 $31 $31 $31 $31 $31 $31 $31
.by  $31 $31 $31 $31 $31 $31 $31 $31  $31 $31 $31 $31 $00 $23 $31 $30  $30 $30 $30 $30 $30 $30 $31 $30
.by  $30 $30 $31 $30 $31 $30 $30 $31  $31 $31 $31 $31 $31 $31 $30 $30  $31 $30 $30 $30 $30 $30 $30 $30
.by  $31 $00 $23 $31 $30 $31 $31 $31  $31 $31 $30 $31 $30 $30 $30 $31  $31 $30 $31 $30 $30 $30 $30 $30
.by  $31 $31 $31 $31 $31 $31 $30 $31  $31 $31 $31 $31 $30 $31 $00 $23  $31 $30 $31 $30 $30 $30 $31 $30
.by  $31 $30 $31 $30 $30 $31 $30 $30  $30 $31 $30 $30 $31 $31 $31 $30  $30 $31 $31 $30 $31 $30 $30 $30
.by  $31 $30 $31 $00 $23 $31 $30 $31  $30 $30 $30 $31 $30 $31 $30 $30  $31 $30 $31 $30 $30 $30 $31 $31
.by  $30 $31 $31 $30 $31 $30 $31 $31  $30 $31 $30 $30 $30 $31 $30 $31  $00 $23 $31 $30 $31 $30 $30 $30
.by  $31 $30 $31 $31 $31 $31 $31 $31  $30 $30 $31 $31 $31 $30 $31 $31  $30 $31 $30 $30 $31 $30 $31 $30
.by  $30 $30 $31 $30 $31 $00 $23 $31  $30 $31 $31 $31 $31 $31 $30 $31  $30 $31 $31 $30 $30 $31 $30 $30
.by  $31 $30 $30 $30 $30 $31 $30 $30  $31 $31 $30 $31 $31 $31 $31 $31  $30 $31 $00 $23 $31 $30 $30 $30
.by  $30 $30 $30 $30 $31 $30 $31 $30  $31 $30 $31 $30 $31 $30 $31 $30  $31 $30 $31 $30 $31 $30 $31 $30
.by  $30 $30 $30 $30 $30 $30 $31 $00  $23 $31 $31 $31 $31 $31 $31 $31  $31 $31 $31 $30 $31 $31 $30 $30
.by  $31 $31 $30 $30 $30 $31 $31 $31  $31 $30 $30 $31 $31 $31 $31 $31  $31 $31 $31 $31 $00 $23 $31 $30
.by  $30 $31 $31 $30 $30 $30 $31 $31  $31 $31 $30 $31 $30 $30 $31 $31  $30 $31 $30 $31 $30 $31 $30 $30
.by  $31 $31 $30 $31 $30 $30 $30 $30  $31 $00 $23 $31 $30 $30 $31 $31  $30 $30 $31 $30 $31 $30 $30 $31
.by  $30 $31 $31 $30 $30 $31 $30 $30  $31 $31 $31 $31 $31 $30 $31 $31  $30 $30 $31 $31 $30 $31 $00 $23
.by  $31 $30 $31 $30 $30 $30 $31 $30  $31 $30 $31 $31 $30 $30 $31 $31  $31 $30 $30 $31 $31 $31 $30 $30
.by  $31 $31 $31 $31 $31 $30 $31 $30  $30 $31 $31 $00 $23 $31 $30 $31  $30 $31 $31 $31 $31 $30 $31 $31
.by  $30 $30 $31 $30 $31 $30 $31 $30  $30 $31 $31 $31 $31 $30 $31 $30  $31 $31 $31 $31 $31 $30 $30 $31
.by  $00 $23 $31 $31 $31 $30 $31 $30  $30 $30 $30 $30 $31 $30 $31 $30  $30 $30 $30 $30 $30 $31 $30 $30
.by  $31 $30 $31 $30 $31 $31 $31 $31  $30 $30 $31 $31 $31 $00 $23 $31  $30 $31 $30 $30 $30 $31 $31 $31
.by  $30 $30 $31 $31 $31 $31 $31 $31  $30 $30 $30 $31 $30 $31 $31 $30  $30 $30 $30 $30 $30 $30 $31 $31
.by  $30 $31 $00 $23 $31 $30 $31 $31  $30 $30 $30 $30 $31 $30 $31 $30  $31 $31 $30 $30 $30 $30 $30 $30
.by  $31 $31 $31 $30 $30 $31 $31 $31  $30 $30 $31 $30 $30 $31 $31 $00  $23 $31 $30 $30 $31 $31 $30 $30
.by  $31 $30 $30 $31 $30 $31 $30 $31  $31 $31 $30 $30 $31 $31 $31 $31  $30 $31 $30 $31 $30 $30 $30 $30
.by  $31 $30 $30 $31 $00 $23 $31 $30  $31 $31 $30 $31 $31 $30 $30 $30  $31 $31 $30 $30 $31 $30 $30 $31
.by  $30 $30 $30 $30 $30 $31 $31 $31  $30 $31 $31 $30 $31 $31 $31 $31  $31 $00 $23 $31 $30 $31 $31 $30
.by  $31 $31 $31 $30 $31 $30 $31 $31  $30 $30 $30 $31 $31 $31 $30 $31  $30 $31 $30 $31 $30 $31 $31 $31
.by  $31 $30 $31 $31 $30 $31 $00 $23  $31 $30 $31 $31 $31 $31 $30 $30  $30 $30 $31 $30 $30 $31 $31 $31
.by  $30 $31 $30 $31 $31 $31 $30 $30  $31 $31 $31 $31 $31 $30 $31 $30  $30 $31 $31 $00 $23 $31 $30 $30
.by  $31 $30 $30 $30 $31 $30 $31 $31  $31 $31 $30 $31 $31 $30 $31 $30  $31 $31 $30 $30 $30 $31 $31 $31
.by  $31 $30 $30 $30 $31 $31 $31 $31  $00 $23 $31 $31 $31 $30 $30 $30  $31 $30 $31 $30 $30 $31 $30 $31
.by  $30 $31 $31 $31 $30 $31 $30 $30  $30 $31 $30 $30 $30 $30 $31 $30  $31 $31 $31 $31 $31 $00 $23 $31
.by  $30 $30 $31 $30 $31 $30 $31 $30  $31 $30 $30 $31 $30 $31 $31 $30  $30 $31 $30 $31 $31 $30 $31 $31
.by  $31 $30 $31 $31 $30 $31 $31 $31  $30 $31 $00 $23 $31 $31 $31 $30  $31 $31 $30 $30 $31 $30 $30 $31
.by  $31 $31 $31 $30 $30 $30 $31 $31  $31 $30 $30 $30 $31 $31 $31 $31  $31 $30 $31 $31 $30 $31 $31 $00
.by  $23 $31 $31 $31 $31 $30 $31 $31  $31 $31 $30 $31 $30 $30 $31 $30  $31 $31 $30 $30 $31 $31 $31 $30
.by  $31 $30 $31 $31 $31 $31 $31 $30  $31 $31 $31 $31 $00 $23 $31 $30  $30 $30 $31 $30 $31 $30 $31 $31
.by  $30 $30 $30 $31 $31 $31 $31 $31  $30 $31 $30 $30 $30 $31 $31 $30  $30 $30 $30 $30 $31 $30 $30 $31
.by  $31 $00 $23 $31 $31 $31 $31 $31  $31 $31 $31 $31 $30 $30 $31 $31  $30 $30 $30 $31 $30 $30 $31 $31
.by  $31 $31 $31 $31 $30 $31 $31 $31  $30 $31 $31 $30 $31 $31 $00 $23  $31 $30 $30 $30 $30 $30 $30 $30
.by  $31 $31 $30 $31 $31 $31 $30 $31  $30 $31 $30 $31 $31 $30 $30 $30  $31 $30 $31 $30 $31 $30 $30 $30
.by  $31 $31 $31 $00 $23 $31 $30 $31  $31 $31 $31 $31 $30 $31 $30 $31  $31 $31 $31 $30 $31 $30 $31 $30
.by  $30 $31 $30 $30 $30 $30 $30 $31  $31 $31 $30 $30 $31 $30 $30 $31  $00 $23 $31 $30 $31 $30 $30 $30
.by  $31 $30 $31 $30 $30 $30 $31 $30  $30 $30 $31 $31 $30 $30 $31 $30  $30 $31 $31 $30 $30 $30 $30 $30
.by  $31 $31 $31 $30 $31 $00 $23 $31  $30 $31 $30 $30 $30 $31 $30 $31  $31 $30 $31 $30 $31 $30 $31 $30
.by  $30 $31 $30 $30 $31 $31 $31 $31  $30 $31 $31 $31 $31 $31 $31 $30  $30 $31 $00 $23 $31 $30 $31 $30
.by  $30 $30 $31 $30 $31 $31 $31 $30  $31 $30 $31 $30 $30 $30 $30 $31  $31 $31 $30 $30 $31 $30 $31 $31
.by  $31 $31 $30 $31 $30 $31 $31 $00  $23 $31 $30 $31 $31 $31 $31 $31  $30 $31 $30 $30 $31 $30 $30 $30
.by  $30 $30 $31 $30 $31 $31 $31 $30  $30 $31 $31 $30 $30 $30 $30 $30  $31 $31 $31 $31 $00 $23 $31 $30
.by  $30 $30 $30 $30 $30 $30 $31 $30  $31 $30 $30 $30 $31 $30 $31 $30  $31 $31 $30 $30 $30 $31 $31 $31
.by  $31 $30 $31 $31 $31 $31 $31 $30  $31 $00
.endm

	end
