tiny_gr: update to be more robust

This commit is contained in:
Vince Weaver 2022-01-20 22:48:42 -05:00
parent cd024402ae
commit b6518e69ab
5 changed files with 52 additions and 14 deletions

View File

@ -9,13 +9,13 @@ all: tiny_gr8.dsk
tiny_gr8.dsk: HELLO TINY_GR
cp $(EMPTYDISK) tiny_gr8.dsk
$(DOS33) -y tiny_gr8.dsk SAVE A HELLO
$(DOS33) -y tiny_gr8.dsk BSAVE -a 0xB8 TINY_GR
$(DOS33) -y tiny_gr8.dsk BSAVE -a 0xB9 TINY_GR
###
submit: text8.zip
submit: tiny_gr8.zip
text8.zip: TINY_GR tiny_gr.s file_id.diz tiny_gr8.dsk
tiny_gr8.zip: TINY_GR tiny_gr.s file_id.diz tiny_gr8.dsk
mkdir -p lovebyte2021_tiny_gr8
cp TINY_GR ./lovebyte2021_tiny_gr8
cp tiny_gr.s ./lovebyte2021_tiny_gr8
@ -35,7 +35,7 @@ HELLO: hello.bas
###
TINY_GR: tiny_gr.o
ld65 -o TINY_GR tiny_gr.o -C ./apple2_b8.inc
ld65 -o TINY_GR tiny_gr.o -C ./apple2_b9.inc
tiny_gr.o: tiny_gr.s
ca65 -o tiny_gr.o tiny_gr.s -l tiny_gr.lst

View File

@ -1,6 +1,6 @@
MEMORY {
ZP: start = $00, size = $1A, type = rw;
RAM: start = $b8, size = $8E00, file = %O;
RAM: start = $b9, size = $8E00, file = %O;
}
SEGMENTS {

View File

@ -1,5 +1,17 @@
Tiny Text
Tiny GR 8
-
Textmode Hex Scroller
8-byte Intro for Apple II, Lovebyte 2021
8-byte Intro for Apple II, Lovebyte 2022
by Deater / dSr
You can't do much 6502 assembly in 8 bytes.
This code takes advantage of the fact that on boot, Applesoft BASIC
puts a short routine CHRGET in RAM at address $B1-$C8 that parses
tokens. We can drop our code in the middle of there and re-use
some of the branching infrastructure.
What this code does is just read out memory, starting at $7800 and
printing it to the screen, with lo-res mode enabled. This makes
a pattern that depends on the default power up of the DRAM (white and black
bars for many Apple II models). At the end it crashes through DOS3.3
(the colored pattern) and then into the MMIO (soft-switch) area
which leads to a switch to hi-res, some brief sound, then a crash.

View File

@ -1,8 +1,9 @@
5 HOME
10 PRINT "TINY TEXT -- AN 8 BYTE APPLE II INTRO"
10 PRINT " TINY GR -- AN 8 BYTE APPLE II INTRO"
15 PRINT " BY DEATER / DSR"
20 PRINT CHR$(4)"CATALOG"
25 PRINT:PRINT "PRESS ANY KEY TO 'BRUN TINY_TEXT'"
25 PRINT:PRINT "PRESS ANY KEY TO 'BRUN TINY_GR'"
30 GET A$
35 PRINT
40 PRINT CHR$(4)"BRUN TINY_TEXT"
40 PRINT "]BRUN TINY_GR"
50 PRINT CHR$(4)"BRUN TINY_GR"

View File

@ -4,6 +4,8 @@
; trying to make small graphics in 8 bytes for Apple II
; drops into the middle of the CHRGET get next token routine
; that the Applesoft interpreter copies to $B1 - $C8 on boot
; zero page locations
@ -15,7 +17,30 @@ COUT1 = $FDF0 ; output A to screen
tiny_gr:
;chrget B1: E6 B8 inc txtptrl
; B3: D0 02 bne chrgot
; B5: E6 B9 inc txtptrh
;chrgot B7: AD 00 08 lda $800 txtprtrl/txtptrh
; BA: C9 3A cmp #$3A
; BC: B0 0A bcs end
; BE: C9 20 cmp #$20
; C0: F0 EF beq chrget
; C2: 38 sec
; C3: E9 30 sbc #$30
; C5: 38 sec
; C6: E9 D0 sbc #$D0
; C8: 60 rts
; we drop this at B9
;chrget B1: E6 B8 inc txtptrl
; B3: D0 02 bne chrgot
; B5: E6 B9 inc txtptrh
;chrgot B7: AD 00 08 lda $800
tiny_loop:
lda #$20
bit $C050
jsr COUT
; lda $7800
.byte $78 ; sei ; B9
bit $C050 ; BA BB BC set LORES
jsr COUT1 ; BD BE BF output A to stdout, with scroll
.byte $50 ; bvc (bra we hope) ; C0
; chrget