
;  GNU C 2.7.2 [AL 1.1, MM 40] RISC NEWS-OS compiled by CC

;  Cc1 defaults:
;  -mmemcpy

;  Cc1 arguments (-G value = 0, Cpu = 3000, ISA = 1):
;  -quiet -dumpbase -O2 -Wall -o

gcc2_compiled.:
__gnu_compiled_c:
	.global	chip8_op_table
	.code
	.align	2
chip8_op_table:
	.word	chip8op_00CN
	.word	chip8op_00E0
	.word	chip8op_00EE
	.word	chip8op_00FB
	.word	chip8op_00FC
	.word	chip8op_00FD
	.word	chip8op_00FE
	.word	chip8op_00FF
	.word	chip8op_0NNN
	.word	chip8op_1NNN
	.word	chip8op_2NNN
	.word	chip8op_3XKK
	.word	chip8op_4XKK
	.word	chip8op_5XY0
	.word	chip8op_6XKK
	.word	chip8op_7XKK
	.word	chip8op_8XY0
	.word	chip8op_8XY1
	.word	chip8op_8XY2
	.word	chip8op_8XY3
	.word	chip8op_8XY4
	.word	chip8op_8XY5
	.word	chip8op_8XY6
	.word	chip8op_8XY7
	.word	chip8op_8XYE
	.word	chip8op_9XY0
	.word	chip8op_ANNN
	.word	chip8op_BNNN
	.word	chip8op_CXKK
	.word	chip8op_DXY0
	.word	chip8op_DXYN
	.word	chip8op_EX9E
	.word	chip8op_EXA1
	.word	chip8op_FX07
	.word	chip8op_FX0A
	.word	chip8op_FX15
	.word	chip8op_FX18
	.word	chip8op_FX1E
	.word	chip8op_FX29
	.word	chip8op_FX30
	.word	chip8op_FX33
	.word	chip8op_FX55
	.word	chip8op_FX65
	.word	chip8op_FX75
	.word	chip8op_FX85
	.global	chip8_op_name_table
	.align	2
chip8_op_name_table:
	.word	__LC0
	.word	__LC1
	.word	__LC2
	.word	__LC3
	.word	__LC4
	.word	__LC5
	.word	__LC6
	.word	__LC7
	.word	__LC8
	.word	__LC9
	.word	__LC10
	.word	__LC11
	.word	__LC12
	.word	__LC13
	.word	__LC14
	.word	__LC15
	.word	__LC16
	.word	__LC17
	.word	__LC18
	.word	__LC19
	.word	__LC20
	.word	__LC21
	.word	__LC22
	.word	__LC23
	.word	__LC24
	.word	__LC25
	.word	__LC26
	.word	__LC27
	.word	__LC28
	.word	__LC29
	.word	__LC30
	.word	__LC31
	.word	__LC32
	.word	__LC33
	.word	__LC34
	.word	__LC35
	.word	__LC36
	.word	__LC37
	.word	__LC38
	.word	__LC39
	.word	__LC40
	.word	__LC41
	.word	__LC42
	.word	__LC43
	.word	__LC44
	.align	2
__LC44:
	.ascii	"FX85 - LD VX,R\000"
	.align	2
__LC43:
	.ascii	"FX75 - LD R,VX\000"
	.align	2
__LC42:
	.ascii	"FX65 - LD VX,[I]\000"
	.align	2
__LC41:
	.ascii	"FX55 - LD [I],VX\000"
	.align	2
__LC40:
	.ascii	"FX33 - LD B,VX\000"
	.align	2
__LC39:
	.ascii	"FX30 - LD HF,VX\000"
	.align	2
__LC38:
	.ascii	"FX29 - LD LF,VX\000"
	.align	2
__LC37:
	.ascii	"FX1E - ADD I,VX\000"
	.align	2
__LC36:
	.ascii	"FX18 - LD ST,VX\000"
	.align	2
__LC35:
	.ascii	"FX15 - LD DT,VX\000"
	.align	2
__LC34:
	.ascii	"FX0A - LD VX,K\000"
	.align	2
__LC33:
	.ascii	"FX07 - LD VX,DT\000"
	.align	2
__LC32:
	.ascii	"EXA1 - SKNP VX\000"
	.align	2
__LC31:
	.ascii	"EX9E - SKP VX\000"
	.align	2
__LC30:
	.ascii	"DXYN - DRW VX,VY,Nibble\000"
	.align	2
__LC29:
	.ascii	"DXY0 - DRW VX,VY,0\000"
	.align	2
__LC28:
	.ascii	"CXKK - RND VX,Byte\000"
	.align	2
__LC27:
	.ascii	"BNNN - JP V0,Addr\000"
	.align	2
__LC26:
	.ascii	"ANNN - LD I,Addr\000"
	.align	2
__LC25:
	.ascii	"9XY0 - SNE VX,VY\000"
	.align	2
__LC24:
	.ascii	"8XYE - SHL VX{,VY}\000"
	.align	2
__LC23:
	.ascii	"8XY7 - SUBN VX,VY\000"
	.align	2
__LC22:
	.ascii	"8XY6 - SHR VX{,VY}\000"
	.align	2
__LC21:
	.ascii	"8XY5 - SUB VX,VY\000"
	.align	2
__LC20:
	.ascii	"8XY4 - ADD VX,VY\000"
	.align	2
__LC19:
	.ascii	"8XY3 - XOR VX,VY\000"
	.align	2
__LC18:
	.ascii	"8XY2 - AND VX,VY\000"
	.align	2
__LC17:
	.ascii	"8XY1 - OR VX,VY\000"
	.align	2
__LC16:
	.ascii	"8XY0 - LD VX,VY\000"
	.align	2
__LC15:
	.ascii	"7XKK - ADD VX,Byte\000"
	.align	2
__LC14:
	.ascii	"6XKK - LD VX,Byte\000"
	.align	2
__LC13:
	.ascii	"5XY0 - SE VX,VY\000"
	.align	2
__LC12:
	.ascii	"4XKK - SNE VX,Byte\000"
	.align	2
__LC11:
	.ascii	"3XKK - SE VX,Byte\000"
	.align	2
__LC10:
	.ascii	"2NNN - CALL Addr\000"
	.align	2
__LC9:
	.ascii	"1NNN - JP Addr\000"
	.align	2
__LC8:
	.ascii	"0NNN - SYS Addr\000"
	.align	2
__LC7:
	.ascii	"00FF - HIGH\000"
	.align	2
__LC6:
	.ascii	"00FE - LOW\000"
	.align	2
__LC5:
	.ascii	"00FD - EXIT\000"
	.align	2
__LC4:
	.ascii	"00FC - SCL\000"
	.align	2
__LC3:
	.ascii	"00FB - SCR\000"
	.align	2
__LC2:
	.ascii	"00EE - RET\000"
	.align	2
__LC1:
	.ascii	"00E0 - CLS\000"
	.align	2
__LC0:
	.ascii	"00CN - SCD Nibble\000"
	.align	2
chip8_font4x5:
	.byte	240
	.byte	144
	.byte	144
	.byte	144
	.byte	240
	.byte	32
	.byte	96
	.byte	32
	.byte	32
	.byte	112
	.byte	240
	.byte	16
	.byte	240
	.byte	128
	.byte	240
	.byte	240
	.byte	16
	.byte	240
	.byte	16
	.byte	240
	.byte	144
	.byte	144
	.byte	240
	.byte	16
	.byte	16
	.byte	240
	.byte	128
	.byte	240
	.byte	16
	.byte	240
	.byte	240
	.byte	128
	.byte	240
	.byte	144
	.byte	240
	.byte	240
	.byte	16
	.byte	32
	.byte	64
	.byte	64
	.byte	240
	.byte	144
	.byte	240
	.byte	144
	.byte	240
	.byte	240
	.byte	144
	.byte	240
	.byte	16
	.byte	240
	.byte	240
	.byte	144
	.byte	240
	.byte	144
	.byte	144
	.byte	224
	.byte	144
	.byte	224
	.byte	144
	.byte	224
	.byte	240
	.byte	128
	.byte	128
	.byte	128
	.byte	240
	.byte	224
	.byte	144
	.byte	144
	.byte	144
	.byte	224
	.byte	240
	.byte	128
	.byte	240
	.byte	128
	.byte	240
	.byte	240
	.byte	128
	.byte	240
	.byte	128
	.byte	128
	.align	2
chip8_font8x10:
	.byte	240
	.byte	240
	.byte	144
	.byte	144
	.byte	144
	.byte	144
	.byte	144
	.byte	144
	.byte	240
	.byte	240
	.byte	32
	.byte	32
	.byte	96
	.byte	96
	.byte	32
	.byte	32
	.byte	32
	.byte	32
	.byte	112
	.byte	112
	.byte	240
	.byte	240
	.byte	16
	.byte	16
	.byte	240
	.byte	240
	.byte	128
	.byte	128
	.byte	240
	.byte	240
	.byte	240
	.byte	240
	.byte	16
	.byte	16
	.byte	240
	.byte	240
	.byte	16
	.byte	16
	.byte	240
	.byte	240
	.byte	144
	.byte	144
	.byte	144
	.byte	144
	.byte	240
	.byte	240
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	240
	.byte	240
	.byte	128
	.byte	128
	.byte	240
	.byte	240
	.byte	16
	.byte	16
	.byte	240
	.byte	240
	.byte	240
	.byte	240
	.byte	128
	.byte	128
	.byte	240
	.byte	240
	.byte	144
	.byte	144
	.byte	240
	.byte	240
	.byte	240
	.byte	240
	.byte	16
	.byte	16
	.byte	32
	.byte	32
	.byte	64
	.byte	64
	.byte	64
	.byte	64
	.byte	240
	.byte	240
	.byte	144
	.byte	144
	.byte	240
	.byte	240
	.byte	144
	.byte	144
	.byte	240
	.byte	240
	.byte	240
	.byte	240
	.byte	144
	.byte	144
	.byte	240
	.byte	240
	.byte	16
	.byte	16
	.byte	240
	.byte	240
	.byte	240
	.byte	240
	.byte	144
	.byte	144
	.byte	240
	.byte	240
	.byte	144
	.byte	144
	.byte	144
	.byte	144
	.byte	224
	.byte	224
	.byte	144
	.byte	144
	.byte	224
	.byte	224
	.byte	144
	.byte	144
	.byte	224
	.byte	224
	.byte	240
	.byte	240
	.byte	128
	.byte	128
	.byte	128
	.byte	128
	.byte	128
	.byte	128
	.byte	240
	.byte	240
	.byte	224
	.byte	224
	.byte	144
	.byte	144
	.byte	144
	.byte	144
	.byte	144
	.byte	144
	.byte	224
	.byte	224
	.byte	240
	.byte	240
	.byte	128
	.byte	128
	.byte	240
	.byte	240
	.byte	128
	.byte	128
	.byte	240
	.byte	240
	.byte	240
	.byte	240
	.byte	128
	.byte	128
	.byte	240
	.byte	240
	.byte	128
	.byte	128
	.byte	128
	.byte	128
	.code
	.align	1
	.global	chip8_reset
chip8_reset:
;	.frame	%sp,8,$31		# vars= 0, regs= 2/0, args= 0, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	ld.w	%r0,%r12
	ld.w	%r13,0x0
	ext	0xc1		; 	xld.w	%r14,0x00003040		; 12352
	ld.w	%r14,0x0
	ext	memset@rm	; 	xcall	memset
	call	memset@rl
	ext	0x140		; 	xadd	%r12,%r0,320
	add	%r12,%r0
	ext	chip8_font4x5+0x0@h	; 	xld.w	%r13,chip8_font4x5
	ext	chip8_font4x5+0x0@m
	ld.w	%r13,chip8_font4x5+0x0@l
	ext	0x1		; 	xld.w	%r14,0x00000050		; 80
	ld.w	%r14,0x10
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	ext	0x190		; 	xadd	%r12,%r0,400
	add	%r12,%r0
	ext	chip8_font8x10+0x0@h	; 	xld.w	%r13,chip8_font8x10
	ext	chip8_font8x10+0x0@m
	ld.w	%r13,chip8_font8x10+0x0@l
	ext	0x2		; 	xld.w	%r14,0x000000a0		; 160
	ld.w	%r14,0x20
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	ext	0x8		; 	xld.w	%r10,0x00000200		; 512
	ld.w	%r10,0x0
	ext	0x16		; 	xld.h	[%r0+22],%r10
	ld.h	[%r0],%r10
	popn	%r0
	ret
	.align	1
	.global	chip8_tick
chip8_tick:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	ext	0x12		; 	xld.ub	%r11,[%r12+18]
	ld.ub	%r11,[%r12]
	ld.ub	%r10,%r11
	cmp	%r10,%r13
	jrle	__LX72		; 	xjrle	__L72
	ld.w	%r10,%r11
	sub	%r10,%r13
	jp	__LX73		; 	xjp	__L73
__LX72:				; __L72:
	ld.w	%r10,0x0
__LX73:				; __L73:
	ext	0x12		; 	xld.b	[%r12+18],%r10
	ld.b	[%r12],%r10
	ext	0x13		; 	xld.ub	%r11,[%r12+19]
	ld.ub	%r11,[%r12]
	ld.ub	%r10,%r11
	cmp	%r10,%r13
	jrle	__LX74		; 	xjrle	__L74
	ld.w	%r10,%r11
	sub	%r10,%r13
	jp	__LX75		; 	xjp	__L75
__LX74:				; __L74:
	ld.w	%r10,0x0
__LX75:				; __L75:
	ext	0x13		; 	xld.b	[%r12+19],%r10
	ld.b	[%r12],%r10
	ret
	.align	1
	.global	chip8_dump
chip8_dump:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	ret
	.code
	.align	2
__LC45:
	.ascii	"rb\000"
	.code
	.align	1
	.global	chip8_load
chip8_load:
;	.frame	%sp,20,$31		# vars= 0, regs= 5/0, args= 0, extra= 0
;	.mask	0x800f0000,-4
;	.fmask	0x00000000,0
	pushn	%r3
	ld.w	%r3,%r12
	ld.w	%r2,0x3f	; 	xld.w	%r2,-1			; 0xffffffff
	ld.w	%r12,%r13
	ext	__LC45+0x0@h	; 	xld.w	%r13,__LC45
	ext	__LC45+0x0@m
	ld.w	%r13,__LC45+0x0@l
	ext	fopen@rm	; 	xcall	fopen
	call	fopen@rl
	ld.w	%r0,%r10
	cmp	%r0,0x0
	jreq	__LX84		; 	xjreq	__L84
	ld.w	%r12,%r0
	ld.w	%r13,0x0
	ld.w	%r14,0x2	; 	xld.w	%r14,0x00000002		; 2
	ext	fseek@rm	; 	xcall	fseek
	call	fseek@rl
	cmp	%r10,0x0
	jrne	__LX80		; 	xjrne	__L80
	ld.w	%r12,%r0
	ext	ftell@rm	; 	xcall	ftell
	call	ftell@rl
	ld.w	%r1,%r10
	ld.w	%r12,%r0
	ext	rewind@rm	; 	xcall	rewind
	call	rewind@rl
	cmp	%r1,0x1		; 	xcmp	%r1,1
	jrle	__LX80		; 	xjrle	__L80
	ext	0x38		; 	xcmp	%r1,3584
	cmp	%r1,0x0
	jrgt	__LX80		; 	xjrgt	__L80
	ext	0x240		; 	xadd	%r12,%r3,576
	add	%r12,%r3
	ld.w	%r13,0x1	; 	xld.w	%r13,0x00000001		; 1
	ld.w	%r14,%r1
	ld.w	%r15,%r0
	ext	fread@rm	; 	xcall	fread
	call	fread@rl
	cmp	%r10,%r1
	jrne	__LX80		; 	xjrne	__L80
	ld.w	%r2,0x0
__LX80:				; __L80:
	cmp	%r0,0x0
	jreq	__LX84		; 	xjreq	__L84
	ld.w	%r12,%r0
	ext	fclose@rm	; 	xcall	fclose
	call	fclose@rl
__LX84:				; __L84:
	ld.w	%r10,%r2
	popn	%r3
	ret
	.code
	.align	2
__LC46:
	.ascii	"clipcp8.$(%d)\000"
	.code
	.align	1
	.global	chip8_test
chip8_test:
;	.frame	%sp,28,$31		# vars= 0, regs= 5/0, args= 8, extra= 0
;	.mask	0x800f0000,-4
;	.fmask	0x00000000,0
	pushn	%r3
	sub	%sp,0x2		; 	xsub	%sp,%sp,8
	ld.w	%r2,%r12
	ld.w	%r1,%r13
	ld.w	%r3,0x3f	; 	xld.w	%r3,-1			; 0xffffffff
	cmp	%r1,0x0
	jrne	__LX87		; 	xjrne	__L87
	ext	0xf		; 	xld.w	%r1,0x000003e8		; 1000
	ld.w	%r1,0x28
__LX87:				; __L87:
	ld.w	%r12,0x1	; 	xld.w	%r12,0x00000001		; 1
	ext	0xc1		; 	xld.w	%r13,0x00003040		; 12352
	ld.w	%r13,0x0
	ext	calloc@rm	; 	xcall	calloc
	call	calloc@rl
	ld.w	%r0,%r10
	cmp	%r0,0x0
	jrne	__LX88		; 	xjrne	__L88
	ext	__LC46+0x0@h	; 	xld.w	%r10,__LC46
	ext	__LC46+0x0@m
	ld.w	%r10,__LC46+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x2		; 	xld.w	%r10,0x000000ab		; 171
	ld.w	%r10,0x2b
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX88:				; __L88:
	ld.w	%r12,%r0
	ext	chip8_reset@rm	; 	xcall	chip8_reset
	call	chip8_reset@rl
	ld.w	%r12,%r0
	ld.w	%r13,%r2
	call	chip8_load	; 	xcall	chip8_load
	cmp	%r10,0x0
	jrne	__LX90		; 	xjrne	__L90
	ld.w	%r12,%r0
	ld.w	%r13,%r1
	ext	chip8_run@rm	; 	xcall	chip8_run
	call	chip8_run@rl
	ext	0x14		; 	xld.ub	%r10,[%r0+20]
	ld.ub	%r10,[%r0]
	and	%r10,0x4	; 	xand	%r10,%r10,0x00000004
	jrne	__LX90		; 	xjrne	__L90
	ld.w	%r3,%r10
__LX90:				; __L90:
	cmp	%r0,0x0
	jreq	__LX92		; 	xjreq	__L92
	ld.w	%r12,%r0
	ext	free@rm		; 	xcall	free
	call	free@rl
__LX92:				; __L92:
	ld.w	%r10,%r3
	add	%sp,0x2		; 	xadd	%sp,%sp,8
	popn	%r3
	ret
; APP
	
	.code
	.global chip8_run2
chip8_run2:
	pushn %r0
	ld.w %r0, %sp		; スタック退避
	ext	0x40		; 	xld.w %r10, 0x1000	; 0x0e00〜0x1000にスタック切替
	ld.w	%r10,0x0
	ld.w %sp, %r10
	ext	chip8_run@rm	; 	xcall chip8_run
	call	chip8_run@rl
	ld.w %sp, %r0		; スタック復元
	popn %r0
	ret

