Created
March 16, 2021 05:20
-
-
Save Rustywolf/68f506e1d8239a02dff49260599af94d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ROM = 0x0000 | |
IO = 0xA000 | |
RAM = 0xA100 | |
CHARACTERS = 0x8000 | |
FOREGROUND = 0x8800 | |
BACKGROUND = 0x9000 | |
CHARSET = 0x9800 | |
SCREENWIDTH = 40 | |
SCREENHEIGHT = 30 | |
yOffset = (RAM+0) | |
colourOffset = (RAM+1) | |
colourOffsetHigh = (colourOffset+1) | |
backgroundOffset = (RAM+3) | |
backgroundOffsetHigh = (backgroundOffset+1) | |
characterOffset = (RAM+5) | |
characterOffsetHigh = (characterOffset+1) | |
start: | |
MOV #0 *yOffset | |
MOV #0 *colourOffset | |
MOV #((colours & 0xFF00) >> 8) *colourOffsetHigh | |
MOV #0 *backgroundOffset | |
MOV #((BACKGROUND & 0xFF00) >> 8) *backgroundOffsetHigh | |
MOV #0 *characterOffset | |
MOV #((CHARACTERS & 0xFF00) >> 8) *characterOffsetHigh | |
store_char: | |
MOV #0b10101010 *(CHARSET+8) | |
MOV #0b01010101 *(CHARSET+9) | |
MOV #0b10101010 *(CHARSET+10) | |
MOV #0b01010101 *(CHARSET+11) | |
MOV #0b10101010 *(CHARSET+12) | |
MOV #0b01010101 *(CHARSET+13) | |
MOV #0b10101010 *(CHARSET+14) | |
MOV #0b01010101 *(CHARSET+15) | |
xLoop_start: | |
MOV #0 *backgroundOffset | |
MOV #0 *characterOffset | |
MOV #0 ACC | |
xLoop: | |
PSH ACC | |
MOV #01 **characterOffset | |
MOV **colourOffset ACC | |
MOV ACC **backgroundOffset | |
MOV *colourOffset ACC | |
ADD #1 | |
MOV ACC *colourOffset | |
MOV *backgroundOffset ACC | |
ADD #1 | |
MOV ACC *backgroundOffset | |
MOV *characterOffset ACC | |
ADD #1 | |
MOV ACC *characterOffset | |
PLL | |
ADD #1 | |
CMP #40 | |
JEZ *xLoop2_start | |
JMP *xLoop | |
xLoop2_start: | |
MOV #64 *backgroundOffset | |
MOV #64 *characterOffset | |
MOV *yOffset ACC | |
ADD #1 | |
MOV ACC *yOffset | |
MOV ACC *colourOffset | |
MOV #0 ACC | |
xLoop2: | |
PSH ACC | |
MOV #01 **characterOffset | |
MOV **colourOffset ACC | |
MOV ACC **backgroundOffset | |
MOV *colourOffset ACC | |
ADD #1 | |
MOV ACC *colourOffset | |
MOV *backgroundOffset ACC | |
ADD #1 | |
MOV ACC *backgroundOffset | |
MOV *characterOffset ACC | |
ADD #1 | |
MOV ACC *characterOffset | |
PLL | |
ADD #1 | |
CMP #40 | |
JEZ *xLoop3_start | |
JMP *xLoop2 | |
xLoop3_start: | |
MOV #128 *backgroundOffset | |
MOV #128 *characterOffset | |
MOV *yOffset ACC | |
ADD #1 | |
MOV ACC *yOffset | |
MOV ACC *colourOffset | |
MOV #0 ACC | |
xLoop3: | |
PSH ACC | |
MOV #01 **characterOffset | |
MOV **colourOffset ACC | |
MOV ACC **backgroundOffset | |
MOV *colourOffset ACC | |
ADD #1 | |
MOV ACC *colourOffset | |
MOV *backgroundOffset ACC | |
ADD #1 | |
MOV ACC *backgroundOffset | |
MOV *characterOffset ACC | |
ADD #1 | |
MOV ACC *characterOffset | |
PLL | |
ADD #1 | |
CMP #40 | |
JEZ *xLoop4_start | |
JMP *xLoop3 | |
xLoop4_start: | |
MOV #192 *backgroundOffset | |
MOV #192 *characterOffset | |
MOV *yOffset ACC | |
ADD #1 | |
MOV ACC *yOffset | |
MOV ACC *colourOffset | |
MOV #0 ACC | |
xLoop4: | |
PSH ACC | |
MOV #01 **characterOffset | |
MOV **colourOffset ACC | |
MOV ACC **backgroundOffset | |
MOV *colourOffset ACC | |
ADD #1 | |
MOV ACC *colourOffset | |
MOV *backgroundOffset ACC | |
ADD #1 | |
MOV ACC *backgroundOffset | |
MOV *characterOffset ACC | |
ADD #1 | |
MOV ACC *characterOffset | |
PLL | |
ADD #1 | |
CMP #40 | |
JEZ *yLoop | |
JMP *xLoop4 | |
yLoop: | |
MOV *backgroundOffsetHigh ACC | |
ADD #1 | |
MOV ACC *backgroundOffsetHigh | |
MOV *characterOffsetHigh ACC | |
ADD #1 | |
MOV ACC *characterOffsetHigh | |
MOV *yOffset ACC | |
ADD #1 | |
MOV ACC *yOffset | |
MOV ACC *colourOffset | |
CMP #32 | |
JEZ *pre_halt | |
JMP *xLoop_start | |
pre_halt: | |
MOV #1 *(0x8100) | |
MOV #1 *(0x8101) | |
MOV #1 *(0x8103) | |
MOV #1 *(0x8104) | |
MOV #1 *(0x8105) | |
MOV #1 *(0x8106) // Hack - Work out why these values are being written as 0 | |
halt: | |
JMP *halt | |
// DATA | |
// Colours | |
.offset (ROM+0x0200) | |
colours: | |
.byte 0b11100100 | |
.byte 0b11101000 | |
.byte 0b11101100 | |
.byte 0b11110000 | |
.byte 0b11110100 | |
.byte 0b11111000 | |
.byte 0b11111100 | |
.byte 0b11011100 | |
.byte 0b10111100 | |
.byte 0b10011100 | |
.byte 0b01111100 | |
.byte 0b01011100 | |
.byte 0b00111100 | |
.byte 0b00011100 | |
.byte 0b00011101 | |
.byte 0b00011110 | |
.byte 0b00011111 | |
.byte 0b00011011 | |
.byte 0b00010111 | |
.byte 0b00010011 | |
.byte 0b00001111 | |
.byte 0b00001011 | |
.byte 0b00000111 | |
.byte 0b00000011 | |
.byte 0b00100011 | |
.byte 0b01000011 | |
.byte 0b01100011 | |
.byte 0b10000011 | |
.byte 0b10100011 | |
.byte 0b11000011 | |
.byte 0b11100011 | |
.byte 0b11100010 | |
.byte 0b11100001 | |
.byte 0b11100000 | |
.byte 0b11100100 | |
.byte 0b11101000 | |
.byte 0b11101100 | |
.byte 0b11110000 | |
.byte 0b11110100 | |
.byte 0b11111000 | |
.byte 0b11111100 | |
.byte 0b11011100 | |
.byte 0b10111100 | |
.byte 0b10011100 | |
.byte 0b01111100 | |
.byte 0b01011100 | |
.byte 0b00111100 | |
.byte 0b00011100 | |
.byte 0b00011101 | |
.byte 0b00011110 | |
.byte 0b00011111 | |
.byte 0b00011011 | |
.byte 0b00010111 | |
.byte 0b00010011 | |
.byte 0b00001111 | |
.byte 0b00001011 | |
.byte 0b00000111 | |
.byte 0b00000011 | |
.byte 0b00100011 | |
.byte 0b01000011 | |
.byte 0b01100011 | |
.byte 0b10000011 | |
.byte 0b10100011 | |
.byte 0b11000011 | |
.byte 0b11100011 | |
.byte 0b11100010 | |
.byte 0b11100001 | |
.byte 0b11100000 | |
.byte 0b11100100 | |
.byte 0b11101000 | |
.byte 0b11101100 | |
.byte 0b11110000 | |
.byte 0b11110100 | |
.byte 0b11111000 | |
.byte 0b11111100 | |
.byte 0b11011100 | |
.byte 0b10111100 | |
.byte 0b10011100 | |
.byte 0b01111100 | |
.byte 0b01011100 | |
.byte 0b00111100 | |
.byte 0b00011100 | |
.byte 0b00011101 | |
.byte 0b00011110 | |
.byte 0b00011111 | |
.byte 0b00011011 | |
.byte 0b00010111 | |
.byte 0b00010011 | |
.byte 0b00001111 | |
.byte 0b00001011 | |
.byte 0b00000111 | |
.byte 0b00000011 | |
.byte 0b00100011 | |
.byte 0b01000011 | |
.byte 0b01100011 | |
.byte 0b10000011 | |
.byte 0b10100011 | |
.byte 0b11000011 | |
.byte 0b11100011 | |
.byte 0b11100010 | |
.byte 0b11100001 | |
.byte 0b11100000 | |
.byte 0b11100100 | |
.byte 0b11101000 | |
.byte 0b11101100 | |
.byte 0b11110000 | |
.byte 0b11110100 | |
.byte 0b11111000 | |
.byte 0b11111100 | |
.byte 0b11011100 | |
.byte 0b10111100 | |
.byte 0b10011100 | |
.byte 0b01111100 | |
.byte 0b01011100 | |
.byte 0b00111100 | |
.byte 0b00011100 | |
.byte 0b00011101 | |
.byte 0b00011110 | |
.byte 0b00011111 | |
.byte 0b00011011 | |
.byte 0b00010111 | |
.byte 0b00010011 | |
.byte 0b00001111 | |
.byte 0b00001011 | |
.byte 0b00000111 | |
.byte 0b00000011 | |
.byte 0b00100011 | |
.byte 0b01000011 | |
.byte 0b01100011 | |
.byte 0b10000011 | |
.byte 0b10100011 | |
.byte 0b11000011 | |
.byte 0b11100011 | |
.byte 0b11100010 | |
.byte 0b11100001 | |
.byte 0b11100000 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment