//-------------------------------
// Snakes of Atari Island
//
// Author: Jakub "JKR" Krzak
// Katowice, April 2012
//-------------------------------


arrFields:
;### snake.atl(1292) 	$49 $49 $49 $49 $49 $49 $49 $49 0 $49 $49 $00 $3B $49 $3C $00 $49 $49 0 $49 $49 $49 $00 $00 $49 $49 $49 0 $49 $49 $49 $00 $00 $49 $49 $49 
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(0)
   dta b(73)
   dta b(73)
   dta b(0)
   dta b(59)
   dta b(73)
   dta b(60)
   dta b(0)
   dta b(73)
   dta b(73)
   dta b(0)
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(0)
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(73)
   dta b(73)
;### snake.atl(1293) 	$49 $00 $00 $00 $00 $00 $00 $49 0 $49 $00 $00 $00 $00 $00 $00 $00 $49 0 $49 $00 $00 $00 $00 $00 $00 $49 0 $49 $00 $00 $00 $00 $00 $00 $49 
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(73)
;### snake.atl(1294) 	$49 $00 $00 $00 $00 $00 $00 $49 0 $49 $00 $00 $00 $00 $00 $00 $00 $49 0 $00 $00 $00 $00 $00 $00 $00 $00 0 $00 $00 $00 $49 $49 $00 $00 $00 
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
;### snake.atl(1295) 	$49 $00 $00 $00 $00 $00 $00 $49 0 $49 $00 $00 $00 $00 $00 $00 $00 $49 0 $00 $00 $00 $00 $00 $00 $00 $00 0 $00 $00 $49 $49 $49 $49 $00 $00 
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(0)
   dta b(0)
;### snake.atl(1296) 	$49 $00 $00 $00 $00 $00 $00 $49 0 $49 $00 $00 $00 $00 $00 $00 $00 $49 0 $00 $00 $00 $00 $00 $00 $00 $00 0 $00 $00 $00 $49 $49 $00 $00 $00 
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
;### snake.atl(1297) 	$49 $00 $00 $00 $00 $00 $00 $49 0 $49 $00 $00 $00 $00 $00 $00 $00 $49 0 $49 $00 $00 $00 $00 $00 $00 $49 0 $49 $00 $00 $00 $00 $00 $00 $49 
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(0)
   dta b(73)
;### snake.atl(1298) 	$49 $49 $49 $49 $49 $49 $49 $49 0 $49 $49 $00 $3B $49 $3C $00 $49 $49 0 $49 $49 $49 $00 $00 $49 $49 $49 0 $49 $49 $49 $00 $00 $49 $49 $49 
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(0)
   dta b(73)
   dta b(73)
   dta b(0)
   dta b(59)
   dta b(73)
   dta b(60)
   dta b(0)
   dta b(73)
   dta b(73)
   dta b(0)
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(0)
   dta b(73)
   dta b(73)
   dta b(73)
   dta b(0)
   dta b(0)
   dta b(73)
   dta b(73)
   dta b(73)


writeCredits .proc
	PRINT_AT 8 7  \ dta 24, c'caaaaaaaaaaaaaaaaaaaaaaf', 0
	PRINT_AT 8 8  \ dta 24, c'b                      b', 0
	PRINT_AT 8 9  \ dta 24, c'b  PROGRAMMED BY JKR   b', 0
	PRINT_AT 8 10 \ dta 24, c'b                      b', 0
	PRINT_AT 8 11 \ dta 24, c'b IN *MADS* ASSEMBLER  b', 0
	PRINT_AT 8 12 \ dta 24, c'b                      b', 0
	PRINT_AT 8 13 \ dta 24, c'b KATOWICE,            b', 0
	PRINT_AT 8 14 \ dta 24, c'b                      b', 0
	PRINT_AT 8 15 \ dta 24, c'b           APRIL 2012 b', 0
	PRINT_AT 8 16 \ dta 24, c'gaaaaaaaaaaaaaaaaaaaaaah', 0
   rts
.endp

writeTitle .proc
	PRINT_AT 0 0 \ dta 40, c'    aaa  SNAKES OF ATARI ISLAND  aaa    ', 0
	#if .byte _mute = #1
		PRINT_AT 0 0 \ dta 2, c'de', 0
	#end
	rts
.endp


;-------------------------------------------------------------------------
DrawArea1 .proc
;### snake.atl(1128) 	__x = 0
   lda #0
   sta __x
;### snake.atl(1134) 	__y = 2
   jmp _lbl292
_lbl294:
;### snake.atl(1130) 		_scr(__x, 1) = WALL_CHR
   ldy #1
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy __x
   lda #chrWall
   sta (_arr),y
;### snake.atl(1131) 		_scr(__x, 23) = WALL_CHR
   ldy #23
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy __x
   lda #chrWall
   sta (_arr),y
;### snake.atl(1132) 		inc __x
   inc __x
_lbl292:
;### snake.atl(1129) 	while __x <= 39
   lda __x
   cmp #39
   jeq _lbl511
   jcs _lbl293
_lbl511:
   jmp _lbl294
_lbl293:
   lda #2
   sta __y
;### snake.atl(1144) 		inc __y
   jmp _lbl295
;### snake.atl(1144) 		inc __y
_lbl300:
;### snake.atl(1136) 		_scr(0, __y) = WALL_CHR
   ldy __y
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy #0
   lda #chrWall
   sta (_arr),y
;### snake.atl(1137) 		_scr(39, __y) = WALL_CHR
   ldy __y
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy #39
   lda #chrWall
   sta (_arr),y
;### snake.atl(1138) 		__x = 1
   lda #1
   sta __x
;### snake.atl(1142) 		inc __y
   jmp _lbl297
_lbl299:
;### snake.atl(1140) 			_scr(__x, __y) = 0
   ldy __y
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy __x
   lda #0
   sta (_arr),y
;### snake.atl(1141) 			inc __x
   inc __x
_lbl297:
;### snake.atl(1139) 		while __x <= 38
   lda __x
   cmp #38
   jeq _lbl512
   jcs _lbl298
_lbl512:
   jmp _lbl299
_lbl298:
   inc __y
;### snake.atl(1144) 		inc __y
_lbl295:
;### snake.atl(1135) 	while __y <= 22	
   lda __y
   cmp #22
   jeq _lbl513
   jcs _lbl296
_lbl513:
;### snake.atl(1144) 		inc __y
   jmp _lbl300
;### snake.atl(1144) 		inc __y
_lbl296:
   rts
.endp


;-------------------------------------------------------------------------
DrawArea2 .proc
;### snake.atl(1146) 	__x = 0
   lda #0
   sta __x
;### snake.atl(1156) 	__x = 15
   jmp _lbl301
_lbl307:
;### snake.atl(1148) 		if __x < 7  or __x > 32
   lda __x
   cmp #7
   jcs _lbl303
   jmp _lbl304
_lbl303:
   lda __x
   cmp #32
   jcc _lbl305
   jeq _lbl305
_lbl304:
;### snake.atl(1149) 			_scr(__x, 1) = WALL_CHR
   ldy #1
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy __x
   lda #chrWall
   sta (_arr),y
;### snake.atl(1150) 			_scr(__x, 23) = WALL_CHR
   ldy #23
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy __x
   lda #chrWall
   sta (_arr),y
;### snake.atl(1151) 		else
   jmp _lbl306
_lbl305:
;### snake.atl(1152) 			_scr(__x, 1) = 0
   ldy #1
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy __x
   lda #0
   sta (_arr),y
;### snake.atl(1153) 			_scr(__x, 23) = 0
   ldy #23
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy __x
   lda #0
   sta (_arr),y
;### snake.atl(1154) 		inc __x
_lbl306:
   inc __x
_lbl301:
;### snake.atl(1147) 	while __x <= 39
   lda __x
   cmp #39
   jeq _lbl514
   jcs _lbl302
_lbl514:
   jmp _lbl307
_lbl302:
   lda #15
   sta __x
;### snake.atl(1162) 	__y = 2
   jmp _lbl308
_lbl310:
;### snake.atl(1158) 		_scr(__x, 1) = WALL_CHR
   ldy #1
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy __x
   lda #chrWall
   sta (_arr),y
;### snake.atl(1159) 		_scr(__x, 23) = WALL_CHR
   ldy #23
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy __x
   lda #chrWall
   sta (_arr),y
;### snake.atl(1160) 		inc __x
   inc __x
_lbl308:
;### snake.atl(1157) 	while __x <= 24
   lda __x
   cmp #24
   jeq _lbl515
   jcs _lbl309
_lbl515:
   jmp _lbl310
_lbl309:
   lda #2
   sta __y
;### snake.atl(1172) 		inc __y
   jmp _lbl311
;### snake.atl(1172) 		inc __y
_lbl316:
;### snake.atl(1164) 		_scr(0, __y) = WALL_CHR
   ldy __y
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy #0
   lda #chrWall
   sta (_arr),y
;### snake.atl(1165) 		_scr(39, __y) = WALL_CHR
   ldy __y
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy #39
   lda #chrWall
   sta (_arr),y
;### snake.atl(1166) 		__x = 1
   lda #1
   sta __x
;### snake.atl(1170) 		inc __y
   jmp _lbl313
_lbl315:
;### snake.atl(1168) 			_scr(__x, __y) = 0
   ldy __y
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy __x
   lda #0
   sta (_arr),y
;### snake.atl(1169) 			inc __x
   inc __x
_lbl313:
;### snake.atl(1167) 		while __x <= 38
   lda __x
   cmp #38
   jeq _lbl516
   jcs _lbl314
_lbl516:
   jmp _lbl315
_lbl314:
   inc __y
;### snake.atl(1172) 		inc __y
_lbl311:
;### snake.atl(1163) 	while __y <= 22
   lda __y
   cmp #22
   jeq _lbl517
   jcs _lbl312
_lbl517:
;### snake.atl(1172) 		inc __y
   jmp _lbl316
;### snake.atl(1172) 		inc __y
_lbl312:
   rts
.endp


;-------------------------------------------------------------------------
DrawArea3 .proc
;### snake.atl(1174) 	__x = 0
   lda #0
   sta __x
;### snake.atl(1184) 	__y = 2
   jmp _lbl317
_lbl323:
;### snake.atl(1176) 		if __x < 16 or __x > 24
   lda __x
   cmp #16
   jcs _lbl319
   jmp _lbl320
_lbl319:
   lda __x
   cmp #24
   jcc _lbl321
   jeq _lbl321
_lbl320:
;### snake.atl(1177) 			_scr(__x, 1) = WALL_CHR
   ldy #1
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy __x
   lda #chrWall
   sta (_arr),y
;### snake.atl(1178) 			_scr(__x, 23) = WALL_CHR
   ldy #23
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy __x
   lda #chrWall
   sta (_arr),y
;### snake.atl(1179) 		else
   jmp _lbl322
_lbl321:
;### snake.atl(1180) 			_scr(__x, 1) = 0
   ldy #1
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy __x
   lda #0
   sta (_arr),y
;### snake.atl(1181) 			_scr(__x, 23) = 0
   ldy #23
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy __x
   lda #0
   sta (_arr),y
;### snake.atl(1182) 		inc __x
_lbl322:
   inc __x
_lbl317:
;### snake.atl(1175) 	while __x <= 39
   lda __x
   cmp #39
   jeq _lbl518
   jcs _lbl318
_lbl518:
   jmp _lbl323
_lbl318:
   lda #2
   sta __y
;### snake.atl(1197) 		inc __y
   jmp _lbl324
;### snake.atl(1197) 		inc __y
_lbl333:
;### snake.atl(1186) 		if __y < 9 or __y > 15
   lda __y
   cmp #9
   jcs _lbl326
   jmp _lbl327
_lbl326:
   lda __y
   cmp #15
   jcc _lbl328
   jeq _lbl328
_lbl327:
;### snake.atl(1187) 			_scr(0, __y) = WALL_CHR
   ldy __y
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy #0
   lda #chrWall
   sta (_arr),y
;### snake.atl(1188) 			_scr(39, __y) = WALL_CHR
   ldy __y
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy #39
   lda #chrWall
   sta (_arr),y
;### snake.atl(1189) 		else
   jmp _lbl329
_lbl328:
;### snake.atl(1190) 			_scr(0, __y) = 0
   ldy __y
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy #0
   lda #0
   sta (_arr),y
;### snake.atl(1191) 			_scr(39, __y) = 0
   ldy __y
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy #39
   lda #0
   sta (_arr),y
;### snake.atl(1192) 		__x = 1
_lbl329:
   lda #1
   sta __x
;### snake.atl(1196) 		inc __y
   jmp _lbl330
_lbl332:
;### snake.atl(1194) 			_scr(__x, __y) = 0
   ldy __y
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy __x
   lda #0
   sta (_arr),y
;### snake.atl(1195) 			inc __x
   inc __x
_lbl330:
;### snake.atl(1193) 		while __x <= 38
   lda __x
   cmp #38
   jeq _lbl519
   jcs _lbl331
_lbl519:
   jmp _lbl332
_lbl331:
   inc __y
;### snake.atl(1197) 		inc __y
_lbl324:
;### snake.atl(1185) 	while __y <= 22
   lda __y
   cmp #22
   jeq _lbl520
   jcs _lbl325
_lbl520:
;### snake.atl(1197) 		inc __y
   jmp _lbl333
;### snake.atl(1197) 		inc __y
_lbl325:
   rts
.endp


;-------------------------------------------------------------------------
DrawArea4 .proc
;### snake.atl(1200) 	drawArea3
   jsr drawArea3
;### snake.atl(1202) 	__x = 15
   lda #15
   sta __x
;### snake.atl(1210) 	__x = 19
   jmp _lbl334
_lbl339:
;### snake.atl(1204) 		__y = 11
   lda #11
   sta __y
;### snake.atl(1208) 		inc __x
   jmp _lbl336
_lbl338:
;### snake.atl(1206) 			_scr(__x, __y) = WALL_CHR
   ldy __y
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy __x
   lda #chrWall
   sta (_arr),y
;### snake.atl(1207) 			inc __y
   inc __y
_lbl336:
;### snake.atl(1205) 		while __y <= 13
   lda __y
   cmp #13
   jeq _lbl521
   jcs _lbl337
_lbl521:
   jmp _lbl338
_lbl337:
   inc __x
_lbl334:
;### snake.atl(1203) 	while __x <= 25
   lda __x
   cmp #25
   jeq _lbl522
   jcs _lbl335
_lbl522:
   jmp _lbl339
_lbl335:
   lda #19
   sta __x
;### snake.atl(1219) 		inc __x
   jmp _lbl340
;### snake.atl(1219) 		inc __x
_lbl345:
;### snake.atl(1212) 		__y = 8
   lda #8
   sta __y
;### snake.atl(1216) 		inc __x
   jmp _lbl342
_lbl344:
;### snake.atl(1214) 			_scr(__x, __y) = WALL_CHR
   ldy __y
   lda _scr_lo,y
   sta _arr
   lda _scr_hi,y
   sta _arr+1
   ldy __x
   lda #chrWall
   sta (_arr),y
;### snake.atl(1215) 			inc __y
   inc __y
_lbl342:
;### snake.atl(1213) 		while __y <= 16
   lda __y
   cmp #16
   jeq _lbl523
   jcs _lbl343
_lbl523:
   jmp _lbl344
_lbl343:
   inc __x
;### snake.atl(1219) 		inc __x
_lbl340:
;### snake.atl(1211) 	while __x <= 21
   lda __x
   cmp #21
   jeq _lbl524
   jcs _lbl341
_lbl524:
;### snake.atl(1219) 		inc __x
   jmp _lbl345
;### snake.atl(1219) 		inc __x
_lbl341:
   rts
.endp

