[Solved] VIC-20 custom characters as standalone program?

Basic and Machine Language

Moderator: Moderators

Post Reply
allenhuffman
Vic 20 Amateur
Posts: 46
Joined: Fri May 21, 2010 11:50 pm
Website: http://www.subethasoftware.com
Location: Des Moines, Iowa, US
Occupation: Embedded programmer.

[Solved] VIC-20 custom characters as standalone program?

Post by allenhuffman »

A few years ago, I found and archived my old VIC-20 tapes. (https://subethasoftware.com/2016/02/24/ ... -software/)

I have had some luck loading in the old games I wrote, but I have a few puzzles to still solve.

One of my games, Factory TNT, was converted to .prg files for the emulator as TNT.prg and TNTCH.prg. The second one loads but gives an error if I try to run it. I thought it was my custom font, and I confirmed that last night when I opened it in CBM prg Studio and saw the font data (with a few bytes at the start). I was able to get that into the Studio character editor, and export it into DATA commands and POKE them into memory and use them.

But I wonder what my TNTCH program on tape was. I recall initially making characters using a program "Eight by Eight Create" from a magazine, but later I had one that was better (and would do the multi-color ones as well). I seem to recall it would save them to tape standalone, which is what I think this is.

But I have no recollection of that tool (and have not found it on any of my tapes unless it is on the T60 I was unable to read due to it have a stuck spool).

Any thoughts on what this might be?
Attachments
VICTapeListing.png
VICTapeListing.png (13.4 KiB) Viewed 919 times
Factory TNT, one of my earliest computer programs.
Factory TNT, one of my earliest computer programs.
Last edited by allenhuffman on Thu Apr 09, 2020 10:07 pm, edited 1 time in total.
allenhuffman
Vic 20 Amateur
Posts: 46
Joined: Fri May 21, 2010 11:50 pm
Website: http://www.subethasoftware.com
Location: Des Moines, Iowa, US
Occupation: Embedded programmer.

Re: VIC-20 custom characters as standalone program?

Post by allenhuffman »

Additional ... I have a second program that loaded in two parts. The first displayed instructions then POKEd the characters into memory. It then loaded the second part which was the game.

But I found an earlier version I did with completely different graphics, and it seems to be just ONE program and it has the font built in somehow. There are not DATA statements other than the ones for a musical tune it plays. How was that done???
User avatar
beamrider
Vic 20 Scientist
Posts: 1452
Joined: Sun Oct 17, 2010 2:28 pm
Location: UK

Re: VIC-20 custom characters as standalone program?

Post by beamrider »

So you are thinking that other people will know how YOU did something 30+ years ago [but have now forgotten] ?

Perhaps try regression therapy... :D
User avatar
Mike
Herr VC
Posts: 4841
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

Re: VIC-20 custom characters as standalone program?

Post by Mike »

allenhuffman wrote:[...] it seems to be just ONE program and it has the font built in somehow. [...] How was that done???
I could easily name more than two dozen threads here in Denial with games or tools which implement that technique. Nothing spectacular - you just link everything (character set and payload) into one file and after RUN adjust pointers.

You find a somewhat more recent example here: "Load Charset Direct to Correct Memory Location".

Jeff's games often have the character set one-filed with the BASIC program, and after start they redefine 45/46 and 55/56 to protect the character set and make room for variables. For one of these, look here: "New release: FIFA World Cup 2014".

That reinitialisation of pointers isn't necessary for machine code programs. They'd either also load the character set already to the correct position or just copy it into place when run (remember, only the internal RAM and the character ROM can be accessed by the VIC chip!).
allenhuffman
Vic 20 Amateur
Posts: 46
Joined: Fri May 21, 2010 11:50 pm
Website: http://www.subethasoftware.com
Location: Des Moines, Iowa, US
Occupation: Embedded programmer.

Re: VIC-20 custom characters as standalone program?

Post by allenhuffman »

beamrider wrote: Tue Apr 07, 2020 8:10 am So you are thinking that other people will know how YOU did something 30+ years ago [but have now forgotten] ?

Perhaps try regression therapy... :D
!

I'm thinking people here know far more about this machine than I ever did ;-)
allenhuffman
Vic 20 Amateur
Posts: 46
Joined: Fri May 21, 2010 11:50 pm
Website: http://www.subethasoftware.com
Location: Des Moines, Iowa, US
Occupation: Embedded programmer.

Re: VIC-20 custom characters as standalone program?

Post by allenhuffman »

Mike wrote: Tue Apr 07, 2020 8:58 pm
allenhuffman wrote:[...] it seems to be just ONE program and it has the font built in somehow. [...] How was that done???
I could easily name more than two dozen threads here in Denial with games or tools which implement that technique. Nothing spectacular - you just link everything (character set and payload) into one file and after RUN adjust pointers.
I know I started out using "Eight by Eight Create" from a magazine, but later had a better character editor that supported the multi-color ones. I can't find any trace of that on my tapes (must be on the one that wouldn't read), but it must have had a way to save it out as a loadable file. I'll attach the one in question. I was able to load it in and skip the first 2 bytes and read it in CBM prg Studio.

I found at least two examples of these standalone charsets.
Is there a tool that will dump this converted "all in one" .prg and show me what is in it? CBM prg Studio opens it and just has the .bas file -- no warning about embedded asm or anything weird in the text.
Attachments
tntch.prg.zip
(910 Bytes) Downloaded 43 times
User avatar
beamrider
Vic 20 Scientist
Posts: 1452
Joined: Sun Oct 17, 2010 2:28 pm
Location: UK

Re: VIC-20 custom characters as standalone program?

Post by beamrider »

I used an online bin-> hex converter and then loaded the data into my online Vic-20 screen editor.

Without knowing what the graphics are supposed to look like it's difficult to know how close it is.
[edit] !! Updated, now looking much better...! I must have made a mistake !!

Image

You can try yourself with the editor. Here is the converted data, just select all, copy and paste into the Data Import/Export area and click "load text".

Code: Select all

;settings
;background-colour=1
;border-colour=3
;aux-colour=2
;char-height=8
;row-count=23
;col-count=22

;char data
;settings
;background-colour=1
;border-colour=3
;aux-colour=2
;char-height=8
;row-count=23
;col-count=22

;char data

.byte   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x08, 0xC8, 0x70, 0x40, 0x70
.byte 0xC8, 0x07, 0xFF, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0xFF, 0xE0, 0x10, 0x13, 0x0E, 0x02, 0x0E
.byte 0x13, 0xE0, 0x18, 0x18, 0x24, 0x24, 0x42, 0x7E, 0x00, 0x00, 0x18, 0x18, 0x3C, 0x76, 0x7A, 0x7E
.byte 0x7E, 0x3C, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x81, 0x42, 0x3C, 0x3F, 0x40, 0x98, 0xBC, 0xBC, 0x98
.byte 0x40, 0x3F, 0xFF, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0xFF, 0xFC, 0x02, 0x19, 0x3D, 0x3D, 0x19
.byte 0x02, 0xFC, 0x7E, 0xFF, 0xFF, 0xFF, 0x5A, 0x18, 0x18, 0x3C, 0x42, 0x44, 0x48, 0x70, 0x48, 0x44
.byte 0x42, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7E, 0x00, 0x42, 0x66, 0x5A, 0x5A, 0x42, 0x42
.byte 0x42, 0x00, 0x42, 0x62, 0x52, 0x4A, 0x46, 0x42, 0x42, 0x00, 0x18, 0x24, 0x42, 0x42, 0x42, 0x24
.byte 0x18, 0x00, 0x7C, 0x42, 0x42, 0x7C, 0x40, 0x40, 0x40, 0x00, 0x18, 0x24, 0x42, 0x42, 0x4A, 0x24
.byte 0x1A, 0x00, 0x7C, 0x42, 0x42, 0x7C, 0x48, 0x44, 0x42, 0x00, 0x3C, 0x42, 0x40, 0x3C, 0x02, 0x42
.byte 0x3C, 0x00, 0x3E, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42
.byte 0x3C, 0x00, 0x42, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, 0x00, 0x42, 0x42, 0x42, 0x5A, 0x5A, 0x66
.byte 0x42, 0x00, 0x42, 0x42, 0x24, 0x18, 0x24, 0x42, 0x42, 0x00, 0x22, 0x22, 0x22, 0x1C, 0x08, 0x08
.byte 0x08, 0x00, 0x7E, 0x02, 0x04, 0x18, 0x20, 0x40, 0x7E, 0x00, 0x3C, 0x20, 0x20, 0x20, 0x20, 0x20
.byte 0x3C, 0x00, 0x0C, 0x10, 0x10, 0x3C, 0x10, 0x70, 0x6E, 0x00, 0x3C, 0x04, 0x04, 0x04, 0x04, 0x04
.byte 0x3C, 0x00, 0x00, 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x10, 0x20, 0x7F, 0x20
.byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00
.byte 0x08, 0x00, 0x24, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x24, 0x7E, 0x24, 0x7E, 0x24
.byte 0x24, 0x00, 0x08, 0x1E, 0x28, 0x1C, 0x0A, 0x3C, 0x08, 0x00, 0x00, 0x62, 0x64, 0x08, 0x10, 0x26
.byte 0x46, 0x00, 0x30, 0x48, 0x48, 0x30, 0x4A, 0x44, 0x3A, 0x00, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x04, 0x08, 0x10, 0x10, 0x10, 0x08, 0x04, 0x00, 0x20, 0x10, 0x08, 0x08, 0x08, 0x10
.byte 0x20, 0x00, 0x08, 0x2A, 0x1C, 0x3E, 0x1C, 0x2A, 0x08, 0x00, 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x10, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20
.byte 0x40, 0x00, 0x3E, 0x22, 0x22, 0x22, 0x22, 0x22, 0x3E, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08
.byte 0x08, 0x00, 0x3E, 0x02, 0x02, 0x3E, 0x20, 0x20, 0x3E, 0x00, 0x3E, 0x02, 0x02, 0x3E, 0x02, 0x02
.byte 0x3E, 0x00, 0x22, 0x22, 0x22, 0x3E, 0x02, 0x02, 0x02, 0x00, 0x3E, 0x20, 0x20, 0x3E, 0x02, 0x02
.byte 0x3E, 0x00, 0x3E, 0x20, 0x20, 0x3E, 0x22, 0x22, 0x3E, 0x00, 0x3E, 0x02, 0x02, 0x02, 0x02, 0x02
.byte 0x02, 0x00, 0x3E, 0x22, 0x22, 0x3E, 0x22, 0x22, 0x3E, 0x00, 0x3E, 0x22, 0x22, 0x3E, 0x02, 0x02
.byte 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08
.byte 0x08, 0x10, 0x0E, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0E, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x7E, 0x00
.byte 0x00, 0x00, 0x70, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x70, 0x00, 0x3C, 0x42, 0x02, 0x0C, 0x10, 0x00
.byte 0x10, 0x00
 
User avatar
beamrider
Vic 20 Scientist
Posts: 1452
Joined: Sun Oct 17, 2010 2:28 pm
Location: UK

Re: VIC-20 custom characters as standalone program?

Post by beamrider »

and here is a mock-up approximating your game...

Image


import data:

Code: Select all

;settings
;background-colour=1
;border-colour=3
;aux-colour=2
;char-height=8
;row-count=23
;col-count=22

;char data
.byte  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
.byte  0x07,0x08,0xC8,0x70,0x40,0x70,0xC8,0x07
.byte  0xFF,0x00,0x18,0x3C,0x3C,0x18,0x00,0xFF
.byte  0xE0,0x10,0x13,0x0E,0x02,0x0E,0x13,0xE0
.byte  0x18,0x18,0x24,0x24,0x42,0x7E,0x00,0x00
.byte  0x18,0x18,0x3C,0x76,0x7A,0x7E,0x7E,0x3C
.byte  0x00,0x00,0xFF,0xFF,0x81,0x81,0x42,0x3C
.byte  0x3F,0x40,0x98,0xBC,0xBC,0x98,0x40,0x3F
.byte  0xFF,0x00,0x18,0x3C,0x3C,0x18,0x00,0xFF
.byte  0xFC,0x02,0x19,0x3D,0x3D,0x19,0x02,0xFC
.byte  0x7E,0xFF,0xFF,0xFF,0x5A,0x18,0x18,0x3C
.byte  0x42,0x44,0x48,0x70,0x48,0x44,0x42,0x00
.byte  0x40,0x40,0x40,0x40,0x40,0x40,0x7E,0x00
.byte  0x42,0x66,0x5A,0x5A,0x42,0x42,0x42,0x00
.byte  0x42,0x62,0x52,0x4A,0x46,0x42,0x42,0x00
.byte  0x18,0x24,0x42,0x42,0x42,0x24,0x18,0x00
.byte  0x7C,0x42,0x42,0x7C,0x40,0x40,0x40,0x00
.byte  0x18,0x24,0x42,0x42,0x4A,0x24,0x1A,0x00
.byte  0x7C,0x42,0x42,0x7C,0x48,0x44,0x42,0x00
.byte  0x3C,0x42,0x40,0x3C,0x02,0x42,0x3C,0x00
.byte  0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x00
.byte  0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x00
.byte  0x42,0x42,0x42,0x24,0x24,0x18,0x18,0x00
.byte  0x42,0x42,0x42,0x5A,0x5A,0x66,0x42,0x00
.byte  0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x00
.byte  0x22,0x22,0x22,0x1C,0x08,0x08,0x08,0x00
.byte  0x7E,0x02,0x04,0x18,0x20,0x40,0x7E,0x00
.byte  0x3C,0x20,0x20,0x20,0x20,0x20,0x3C,0x00
.byte  0x0C,0x10,0x10,0x3C,0x10,0x70,0x6E,0x00
.byte  0x3C,0x04,0x04,0x04,0x04,0x04,0x3C,0x00
.byte  0x00,0x08,0x1C,0x2A,0x08,0x08,0x08,0x08
.byte  0x00,0x00,0x10,0x20,0x7F,0x20,0x10,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x08,0x08,0x08,0x08,0x00,0x00,0x08,0x00
.byte  0x24,0x24,0x24,0x00,0x00,0x00,0x00,0x00
.byte  0x24,0x24,0x7E,0x24,0x7E,0x24,0x24,0x00
.byte  0x08,0x1E,0x28,0x1C,0x0A,0x3C,0x08,0x00
.byte  0x00,0x62,0x64,0x08,0x10,0x26,0x46,0x00
.byte  0x30,0x48,0x48,0x30,0x4A,0x44,0x3A,0x00
.byte  0x04,0x08,0x10,0x00,0x00,0x00,0x00,0x00
.byte  0x04,0x08,0x10,0x10,0x10,0x08,0x04,0x00
.byte  0x20,0x10,0x08,0x08,0x08,0x10,0x20,0x00
.byte  0x08,0x2A,0x1C,0x3E,0x1C,0x2A,0x08,0x00
.byte  0x00,0x08,0x08,0x3E,0x08,0x08,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x10
.byte  0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00
.byte  0x00,0x02,0x04,0x08,0x10,0x20,0x40,0x00
.byte  0x3E,0x22,0x22,0x22,0x22,0x22,0x3E,0x00
.byte  0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00
.byte  0x3E,0x02,0x02,0x3E,0x20,0x20,0x3E,0x00
.byte  0x3E,0x02,0x02,0x3E,0x02,0x02,0x3E,0x00
.byte  0x22,0x22,0x22,0x3E,0x02,0x02,0x02,0x00
.byte  0x3E,0x20,0x20,0x3E,0x02,0x02,0x3E,0x00
.byte  0x3E,0x20,0x20,0x3E,0x22,0x22,0x3E,0x00
.byte  0x3E,0x02,0x02,0x02,0x02,0x02,0x02,0x00
.byte  0x3E,0x22,0x22,0x3E,0x22,0x22,0x3E,0x00
.byte  0x3E,0x22,0x22,0x3E,0x02,0x02,0x3E,0x00
.byte  0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00
.byte  0x00,0x00,0x08,0x00,0x00,0x08,0x08,0x10
.byte  0x0E,0x18,0x30,0x60,0x30,0x18,0x0E,0x00
.byte  0x00,0x00,0x7E,0x00,0x7E,0x00,0x00,0x00
.byte  0x70,0x18,0x0C,0x06,0x0C,0x18,0x70,0x00
.byte  0x3C,0x42,0x02,0x0C,0x10,0x00,0x10,0x00
.byte  0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00
.byte  0x08,0x1C,0x3E,0x7F,0x7F,0x1C,0x3E,0x00
.byte  0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10
.byte  0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04
.byte  0x00,0x00,0x00,0x00,0xE0,0x10,0x08,0x08
.byte  0x08,0x08,0x08,0x04,0x03,0x00,0x00,0x00
.byte  0x08,0x08,0x08,0x10,0xE0,0x00,0x00,0x00
.byte  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF
.byte  0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01
.byte  0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80
.byte  0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80
.byte  0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01
.byte  0x00,0x3C,0x7E,0x7E,0x7E,0x7E,0x3C,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00
.byte  0x36,0x7F,0x7F,0x7F,0x3E,0x1C,0x08,0x00
.byte  0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40
.byte  0x00,0x00,0x00,0x00,0x03,0x04,0x08,0x08
.byte  0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81
.byte  0x00,0x3C,0x42,0x42,0x42,0x42,0x3C,0x00
.byte  0x08,0x1C,0x2A,0x77,0x2A,0x08,0x08,0x00
.byte  0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02
.byte  0x08,0x1C,0x3E,0x7F,0x3E,0x1C,0x08,0x00
.byte  0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08
.byte  0xA0,0x50,0xA0,0x50,0xA0,0x50,0xA0,0x50
.byte  0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08
.byte  0x00,0x00,0x01,0x3E,0x54,0x14,0x14,0x00
.byte  0xFF,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0
.byte  0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF
.byte  0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF
.byte  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80
.byte  0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55
.byte  0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01
.byte  0x00,0x00,0x00,0x00,0xAA,0x55,0xAA,0x55
.byte  0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80
.byte  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03
.byte  0x08,0x08,0x08,0x08,0x0F,0x08,0x08,0x08
.byte  0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F
.byte  0x08,0x08,0x08,0x08,0x0F,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0xF8,0x08,0x08,0x08
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF
.byte  0x00,0x00,0x00,0x00,0x0F,0x08,0x08,0x08
.byte  0x08,0x08,0x08,0x08,0xFF,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0xFF,0x08,0x08,0x08
.byte  0x08,0x08,0x08,0x08,0xF8,0x08,0x08,0x08
.byte  0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0
.byte  0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0
.byte  0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07
.byte  0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF
.byte  0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF
.byte  0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0
.byte  0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00
.byte  0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x00
.byte  0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00
.byte  0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F
.byte  0xE3,0xDD,0xB5,0xA9,0xB3,0xDF,0xE1,0xFF
.byte  0xE7,0xDB,0xBD,0x81,0xBD,0xBD,0xBD,0xFF
.byte  0x83,0xDD,0xDD,0xC3,0xDD,0xDD,0x83,0xFF
.byte  0xE3,0xDD,0xBF,0xBF,0xBF,0xDD,0xE3,0xFF
.byte  0x87,0xDB,0xDD,0xDD,0xDD,0xDB,0x87,0xFF
.byte  0x81,0xBF,0xBF,0x87,0xBF,0xBF,0x81,0xFF
.byte  0x81,0xBF,0xBF,0x87,0xBF,0xBF,0xBF,0xFF
.byte  0xE3,0xDD,0xBF,0xB1,0xBD,0xDD,0xE3,0xFF
.byte  0xBD,0xBD,0xBD,0x81,0xBD,0xBD,0xBD,0xFF
.byte  0xE3,0xF7,0xF7,0xF7,0xF7,0xF7,0xE3,0xFF
.byte  0xF1,0xFB,0xFB,0xFB,0xFB,0xBB,0xC7,0xFF
.byte  0xBD,0xBB,0xB7,0x8F,0xB7,0xBB,0xBD,0xFF
.byte  0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0x81,0xFF
.byte  0xBD,0x99,0xA5,0xA5,0xBD,0xBD,0xBD,0xFF
.byte  0xBD,0x9D,0xAD,0xB5,0xB9,0xBD,0xBD,0xFF
.byte  0xE7,0xDB,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF
.byte  0x83,0xBD,0xBD,0x83,0xBF,0xBF,0xBF,0xFF
.byte  0xE7,0xDB,0xBD,0xBD,0xB5,0xDB,0xE5,0xFF
.byte  0x83,0xBD,0xBD,0x83,0xB7,0xBB,0xBD,0xFF
.byte  0xC3,0xBD,0xBF,0xC3,0xFD,0xBD,0xC3,0xFF
.byte  0xC1,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xFF
.byte  0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xC3,0xFF
.byte  0xBD,0xBD,0xBD,0xDB,0xDB,0xE7,0xE7,0xFF
.byte  0xBD,0xBD,0xBD,0xA5,0xA5,0x99,0xBD,0xFF
.byte  0xBD,0xBD,0xDB,0xE7,0xDB,0xBD,0xBD,0xFF
.byte  0xDD,0xDD,0xDD,0xE3,0xF7,0xF7,0xF7,0xFF
.byte  0x81,0xFD,0xFB,0xE7,0xDF,0xBF,0x81,0xFF
.byte  0xC3,0xDF,0xDF,0xDF,0xDF,0xDF,0xC3,0xFF
.byte  0xF3,0xEF,0xEF,0xC3,0xEF,0x8F,0x91,0xFF
.byte  0xC3,0xFB,0xFB,0xFB,0xFB,0xFB,0xC3,0xFF
.byte  0xFF,0xF7,0xE3,0xD5,0xF7,0xF7,0xF7,0xF7
.byte  0xFF,0xFF,0xEF,0xDF,0x80,0xDF,0xEF,0xFF
.byte  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
.byte  0xF7,0xF7,0xF7,0xF7,0xFF,0xFF,0xF7,0xFF
.byte  0xDB,0xDB,0xDB,0xFF,0xFF,0xFF,0xFF,0xFF
.byte  0xDB,0xDB,0x81,0xDB,0x81,0xDB,0xDB,0xFF
.byte  0xF7,0xE1,0xD7,0xE3,0xF5,0xC3,0xF7,0xFF
.byte  0xFF,0x9D,0x9B,0xF7,0xEF,0xD9,0xB9,0xFF
.byte  0xCF,0xB7,0xB7,0xCF,0xB5,0xBB,0xC5,0xFF
.byte  0xFB,0xF7,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF
.byte  0xFB,0xF7,0xEF,0xEF,0xEF,0xF7,0xFB,0xFF
.byte  0xDF,0xEF,0xF7,0xF7,0xF7,0xEF,0xDF,0xFF
.byte  0xF7,0xD5,0xE3,0xC1,0xE3,0xD5,0xF7,0xFF
.byte  0xFF,0xF7,0xF7,0xC1,0xF7,0xF7,0xFF,0xFF
.byte  0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xF7,0xEF
.byte  0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFF,0xFF
.byte  0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xFF
.byte  0xFF,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0xFF
.byte  0xC3,0xBD,0xB9,0xA5,0x9D,0xBD,0xC3,0xFF
.byte  0xF7,0xE7,0xD7,0xF7,0xF7,0xF7,0xC1,0xFF
.byte  0xC3,0xBD,0xFD,0xF3,0xCF,0xBF,0x81,0xFF
.byte  0xC3,0xBD,0xFD,0xE3,0xFD,0xBD,0xC3,0xFF
.byte  0xFB,0xF3,0xEB,0xDB,0x81,0xFB,0xFB,0xFF
.byte  0x81,0xBF,0x87,0xFB,0xFD,0xBB,0xC7,0xFF
.byte  0xE3,0xDF,0xBF,0x83,0xBD,0xBD,0xC3,0xFF
.byte  0x81,0xBD,0xFB,0xF7,0xEF,0xEF,0xEF,0xFF
.byte  0xC3,0xBD,0xBD,0xC3,0xBD,0xBD,0xC3,0xFF
.byte  0xC3,0xBD,0xBD,0xC1,0xFD,0xFB,0xC7,0xFF
.byte  0xFF,0xFF,0xF7,0xFF,0xFF,0xF7,0xFF,0xFF
.byte  0xFF,0xFF,0xF7,0xFF,0xFF,0xF7,0xF7,0xEF
.byte  0xF1,0xE7,0xCF,0x9F,0xCF,0xE7,0xF1,0xFF
.byte  0xFF,0xFF,0x81,0xFF,0x81,0xFF,0xFF,0xFF
.byte  0x8F,0xE7,0xF3,0xF9,0xF3,0xE7,0x8F,0xFF
.byte  0xC3,0xBD,0xFD,0xF3,0xEF,0xFF,0xEF,0xFF
.byte  0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF
.byte  0xF7,0xE3,0xC1,0x80,0x80,0xE3,0xC1,0xFF
.byte  0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF
.byte  0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF
.byte  0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF
.byte  0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
.byte  0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF
.byte  0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF
.byte  0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB
.byte  0xFF,0xFF,0xFF,0xFF,0x1F,0xEF,0xF7,0xF7
.byte  0xF7,0xF7,0xF7,0xFB,0xFC,0xFF,0xFF,0xFF
.byte  0xF7,0xF7,0xF7,0xEF,0x1F,0xFF,0xFF,0xFF
.byte  0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x00
.byte  0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE
.byte  0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F
.byte  0x00,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F
.byte  0x00,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE
.byte  0xFF,0xC3,0x81,0x81,0x81,0x81,0xC3,0xFF
.byte  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF
.byte  0xC9,0x80,0x80,0x80,0xC1,0xE3,0xF7,0xFF
.byte  0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF
.byte  0xFF,0xFF,0xFF,0xFF,0xFC,0xFB,0xF7,0xF7
.byte  0x7E,0xBD,0xDB,0xE7,0xE7,0xDB,0xBD,0x7E
.byte  0xFF,0xC3,0xBD,0xBD,0xBD,0xBD,0xC3,0xFF
.byte  0xF7,0xE3,0xD5,0x88,0xD5,0xF7,0xF7,0xFF
.byte  0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD
.byte  0xF7,0xE3,0xC1,0x80,0xC1,0xE3,0xF7,0xFF
.byte  0xF7,0xF7,0xF7,0xF7,0x00,0xF7,0xF7,0xF7
.byte  0x5F,0xAF,0x5F,0xAF,0x5F,0xAF,0x5F,0xAF
.byte  0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7
.byte  0xFF,0xFF,0xFE,0xC1,0xAB,0xEB,0xEB,0xFF
.byte  0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE
.byte  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
.byte  0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F
.byte  0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00
.byte  0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
.byte  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00
.byte  0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F
.byte  0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA
.byte  0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE
.byte  0xFF,0xFF,0xFF,0xFF,0x55,0xAA,0x55,0xAA
.byte  0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F
.byte  0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
.byte  0xF7,0xF7,0xF7,0xF7,0xF0,0xF7,0xF7,0xF7
.byte  0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0
.byte  0xF7,0xF7,0xF7,0xF7,0xF0,0xFF,0xFF,0xFF
.byte  0xFF,0xFF,0xFF,0xFF,0x07,0xF7,0xF7,0xF7
.byte  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00
.byte  0xFF,0xFF,0xFF,0xFF,0xF0,0xF7,0xF7,0xF7
.byte  0xF7,0xF7,0xF7,0xF7,0x00,0xFF,0xFF,0xFF
.byte  0xFF,0xFF,0xFF,0xFF,0x00,0xF7,0xF7,0xF7
.byte  0xF7,0xF7,0xF7,0xF7,0x07,0xF7,0xF7,0xF7
.byte  0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F
.byte  0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F
.byte  0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8
.byte  0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
.byte  0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF
.byte  0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00
.byte  0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x00
.byte  0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F
.byte  0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF
.byte  0xF7,0xF7,0xF7,0xF7,0x07,0xFF,0xFF,0xFF
.byte  0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF
.byte  0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0

;screen data0

.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x00,0x01,0x02
.byte  0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02
.byte  0x02,0x02,0x02,0x02,0x02,0x03,0x00,0x20
.byte  0x20,0x20,0x20,0x00,0x20,0x04,0x04,0x04
.byte  0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04
.byte  0x04,0x04,0x20,0x20,0x00,0x20,0x20,0x20
.byte  0x20,0x00,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x00,0x20,0x20,0x20,0x20,0x00
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x00,0x20,0x20,0x20,0x20,0x00,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x20
.byte  0x20,0x20,0x20,0x00,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x05,0x20,0x20,0x00,0x20,0x20,0x20
.byte  0x20,0x00,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x00,0x20,0x20,0x20,0x20,0x00
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x00,0x20,0x20,0x20,0x20,0x00,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x20
.byte  0x20,0x20,0x20,0x00,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x00,0x20,0x20,0x20
.byte  0x20,0x00,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x00,0x20,0x20,0x20,0x20,0x00
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x00,0x20,0x20,0x20,0x20,0x00,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x20
.byte  0x20,0x20,0x20,0x00,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x00,0x20,0x20,0x20
.byte  0x20,0x00,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x00,0x20,0x20,0x20,0x20,0x00
.byte  0x20,0x20,0x20,0x20,0x06,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x00,0x20,0x20,0x20,0x20,0x00,0x07,0x08
.byte  0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08
.byte  0x08,0x08,0x08,0x08,0x08,0x09,0x00,0x20
.byte  0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x00,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x00,0x20,0x20,0x20,0x20,0x20,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x20
.byte  0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20
.byte  0x20,0x20

;colour data0

.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x06
.byte  0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06
.byte  0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00
.byte  0x00,0x00,0x00,0x06,0x00,0x06,0x06,0x06
.byte  0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06
.byte  0x06,0x06,0x00,0x00,0x06,0x00,0x00,0x00
.byte  0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x06
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x06,0x00,0x00,0x00,0x00,0x06,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00
.byte  0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x00
.byte  0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x06
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x06,0x00,0x00,0x00,0x06,0x06,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00
.byte  0x00,0x00,0x06,0x06,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00
.byte  0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x06
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x06,0x00,0x00,0x00,0x06,0x06,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00
.byte  0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00
.byte  0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x06
.byte  0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.byte  0x06,0x00,0x00,0x00,0x00,0x06,0x06,0x06
.byte  0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06
.byte  0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00
.byte  0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06
.byte  0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06
.byte  0x06,0x06,0x06,0x06,0x06,0x00,0x00,0x00
.byte  0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00
.byte  0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06
.byte  0x06,0x06,0x06,0x00,0x00,0x00,0x00,0x00
.byte  0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06
.byte  0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06
.byte  0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x06
.byte  0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06
.byte  0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00
.byte  0x00,0x00




Last edited by beamrider on Thu Apr 09, 2020 5:03 am, edited 1 time in total.
User avatar
vicist
Vic 20 Afficionado
Posts: 352
Joined: Tue Oct 09, 2012 5:26 am
Location: Sheffield, UK

Re: VIC-20 custom characters as standalone program?

Post by vicist »

These are the custom characters in the file:-
Chars.jpg
I just used the vice monitor to load the file @ $1c00 and then poke36869,255 to show the custom chars. :)

Edit: Beamrider beat me to it as I was readying my post. Foiled again!
Last edited by vicist on Thu Apr 09, 2020 5:09 am, edited 1 time in total.
User avatar
beamrider
Vic 20 Scientist
Posts: 1452
Joined: Sun Oct 17, 2010 2:28 pm
Location: UK

Re: VIC-20 custom characters as standalone program?

Post by beamrider »

Glad we agree :D

I think he has everything he needs now to rebuild his original game.
User avatar
vicist
Vic 20 Afficionado
Posts: 352
Joined: Tue Oct 09, 2012 5:26 am
Location: Sheffield, UK

Re: VIC-20 custom characters as standalone program?

Post by vicist »

If you look at the original post, it looks like he already has the game with correct graphics.
User avatar
beamrider
Vic 20 Scientist
Posts: 1452
Joined: Sun Oct 17, 2010 2:28 pm
Location: UK

Re: VIC-20 custom characters as standalone program?

Post by beamrider »

Indeed, I had assumed they were petscii.

Oh well never-mind. Passed some time during lock-down :D :D
allenhuffman
Vic 20 Amateur
Posts: 46
Joined: Fri May 21, 2010 11:50 pm
Website: http://www.subethasoftware.com
Location: Des Moines, Iowa, US
Occupation: Embedded programmer.

Re: VIC-20 custom characters as standalone program?

Post by allenhuffman »

Nice work, gang! Yes, I had this working, but the numbers didn't. I realized today I had customized the digits and was not including them in my newly added DATA statements. I made this video before I realized the problem. Oh, such an exciting program!

https://www.youtube.com/watch?v=KPVlDqc5UB4

A hex editor to the TNTCH.PRG file shows two bytes at the start which are 7168, so it was meant to be loaded in. I tested that tonight, after I finally found the command, and verified it loaded there. (LOAD"TNTCH",1,1 I think?).

A few more questions:

1) Is there a way to SAVE out a block of memory? I do not know how that TNTCH.PRG file was originally generated. I suppose the editor could have just opened up a file, written out the 2-byte starting address, then the data? Would that load back in -- I assume using the ",1" absolute option?

2) Is there a way to make VICE *not* reboot the VIC before loading a .prg?

I have a new challenge I am working on, which I will make another post for.
User avatar
Mike
Herr VC
Posts: 4841
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

Re: VIC-20 custom characters as standalone program?

Post by Mike »

allenhuffman wrote:1) Is there a way to SAVE out a block of memory?
Sure. See this posting in the sticky thread "ROM calls and other tricks", located in the Programming section of Denial.

You'll want to use the first SAVE method (the one without 'forcing' load address) in most cases.
I suppose the editor could have just opened up a file, written out the 2-byte starting address, then the data?
That can be made to work for disk, but not tape, as ... tape sequential files work differently from disk sequential files, and these tape files cannot be loaded back by the LOAD command.
Would that load back in -- I assume using the ",1" absolute option?
If you use the aforementioned "SAVE memory block" code snippet, then yes - from direct mode. Note however, LOAD in direct mode changes some BASIC pointers and you are well advised to issue a NEW command to correct those. Otherwise, you might get some unexpected behaviour from the VIC-20, if you just continue working.

Within a program, I suggest you use the code snippet for "LOAD memory block" ('absolute' load). The natural method of just using the LOAD command in a running BASIC program has the side-effect, that it restarts said program - and thus disrupts the program flow, which you don't want.

If you load data to the BASIC memory range, make sure to protect it - by lowering the roof in 55/56, or raising the BASIC start in 43/44 before in a batch procudure or the like.
2) Is there a way to make VICE *not* reboot the VIC before loading a .prg?
You wouldn't want that. The autostart reset in VICE has the purpose to ensure a defined state of the emulated computer before the file is loaded and started.

If you want to load several files in succession (say, title screen, instructions, character definition, writing a machine code program from DATAs, and finally the main program, for example), there are several methods around for chaining these files in a batch procedure. You might take a look at the games in my "Unexpanded Game Collection", how this is done.

Greetings,

Michael


P.S. it's also a good idea for you to re-acquaint yourself with a monitor (native on the VIC-20, like VICMON, HESMON or my own MINIMON) or the built-in monitor of VICE. Having a good overview how code and data are located in memory helps a lot to see what's going on.
Post Reply