[Solved] VIC-20 custom characters as standalone program?
Moderator: Moderators
-
- 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?
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?
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 (13.4 KiB) Viewed 3389 times
Last edited by allenhuffman on Thu Apr 09, 2020 10:07 pm, edited 1 time in total.
-
- 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?
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???
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???
Re: VIC-20 custom characters as standalone program?
So you are thinking that other people will know how YOU did something 30+ years ago [but have now forgotten] ?
Perhaps try regression therapy...
Perhaps try regression therapy...

- Mike
- Herr VC
- Posts: 5130
- Joined: Wed Dec 01, 2004 1:57 pm
- Location: Munich, Germany
- Occupation: electrical engineer
Re: VIC-20 custom characters as standalone program?
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.allenhuffman wrote:[...] it seems to be just ONE program and it has the font built in somehow. [...] How was that done???
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!).
-
- 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.
-
- 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?
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.Mike wrote: ↑Tue Apr 07, 2020 8:58 pmI 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.allenhuffman wrote:[...] it seems to be just ONE program and it has the font built in somehow. [...] How was that done???
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 154 times
Re: VIC-20 custom characters as standalone program?
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 !!

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".
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 !!

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
Re: VIC-20 custom characters as standalone program?
and here is a mock-up approximating your game...

import data:

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.
Re: VIC-20 custom characters as standalone program?
These are the custom characters in the file:-
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!
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.
Re: VIC-20 custom characters as standalone program?
Glad we agree
I think he has everything he needs now to rebuild his original game.

I think he has everything he needs now to rebuild his original game.
Re: VIC-20 custom characters as standalone program?
If you look at the original post, it looks like he already has the game with correct graphics.
Re: VIC-20 custom characters as standalone program?
Indeed, I had assumed they were petscii.
Oh well never-mind. Passed some time during lock-down

Oh well never-mind. Passed some time during lock-down


-
- 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?
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.
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.
- Mike
- Herr VC
- Posts: 5130
- Joined: Wed Dec 01, 2004 1:57 pm
- Location: Munich, Germany
- Occupation: electrical engineer
Re: VIC-20 custom characters as standalone program?
Sure. See this posting in the sticky thread "ROM calls and other tricks", located in the Programming section of Denial.allenhuffman wrote:1) Is there a way to SAVE out a block of memory?
You'll want to use the first SAVE method (the one without 'forcing' load address) in most cases.
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.I suppose the editor could have just opened up a file, written out the 2-byte starting address, then the data?
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.Would that load back in -- I assume using the ",1" absolute option?
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.
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.2) Is there a way to make VICE *not* reboot the VIC before loading a .prg?
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.