From 454effd51c68579c291e00ea16a21df288d5702d Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Wed, 7 Oct 2020 17:01:18 -0400 Subject: [PATCH] dhgr: some double-hires code --- dhgr/Makefile | 41 ++++++++++++++ dhgr/bits.s | 104 +++++++++++++++++++++++++++++++++++ dhgr/dhgr.dsk | Bin 0 -> 143360 bytes dhgr/lots.s | 76 ++++++++++++++++++++++++++ dhgr/raster.s | 123 ++++++++++++++++++++++++++++++++++++++++++ two-liners/Makefile | 14 ++++- two-liners/lots.bas | 2 + two-liners/raster.bas | 8 +++ 8 files changed, 367 insertions(+), 1 deletion(-) create mode 100644 dhgr/Makefile create mode 100644 dhgr/bits.s create mode 100644 dhgr/dhgr.dsk create mode 100644 dhgr/lots.s create mode 100644 dhgr/raster.s create mode 100644 two-liners/lots.bas create mode 100644 two-liners/raster.bas diff --git a/dhgr/Makefile b/dhgr/Makefile new file mode 100644 index 00000000..b67886b5 --- /dev/null +++ b/dhgr/Makefile @@ -0,0 +1,41 @@ +include ../Makefile.inc + +DOS33 = ../dos33fs-utils/dos33 +TOKENIZE = ../asoft_basic-utils/tokenize_asoft + +all: dhgr.dsk + +dhgr.dsk: RASTER BITS LOTS + $(DOS33) -y dhgr.dsk BSAVE -a 0x0300 RASTER + $(DOS33) -y dhgr.dsk BSAVE -a 0x0300 BITS + $(DOS33) -y dhgr.dsk BSAVE -a 0x0300 LOTS + +### + +RASTER: raster.o + ld65 -o RASTER raster.o -C ../linker_scripts/apple2_300.inc + +raster.o: raster.s + ca65 -o raster.o raster.s -l raster.lst + +### + +LOTS: lots.o + ld65 -o LOTS lots.o -C ../linker_scripts/apple2_300.inc + +lots.o: lots.s + ca65 -o lots.o lots.s -l lots.lst + + +### + +BITS: bits.o + ld65 -o BITS bits.o -C ../linker_scripts/apple2_300.inc + +bits.o: bits.s + ca65 -o bits.o bits.s -l bits.lst + +#### + +clean: + rm -f *~ *.o *.lst RASTER BITS LOTS diff --git a/dhgr/bits.s b/dhgr/bits.s new file mode 100644 index 00000000..71084df4 --- /dev/null +++ b/dhgr/bits.s @@ -0,0 +1,104 @@ +GBASL = $26 +GBASH = $27 +HGRPAGE = $E6 +YPOS = $FD +LINE = $FE +COLOR = $FF + +HGR = $F3E2 +HGR2 = $F3D8 +HPOSN = $F411 + +raster: + jsr HGR + jsr HGR2 +; sta $C050 ; set graphics +; sta $C057 ; set hires +; sta $C052 ; set fullscreen + sta $C05E ; set double hires + sta $C00D ; 80 column + sta $C001 ; 80 store + + sta $C055 ; set page2 + + lda #$20 + sta HGRPAGE + +bit_rain: + ; blue + + lda #$0 + sta COLOR +bit_rain_smc: + lda #100 + sta YPOS + jsr draw_raster_bit + + ; red + + lda #$8 + sta COLOR +bit_rain2_smc: + lda #50 + sta YPOS + jsr draw_raster_bit + + + lda bit_rain_smc+1 + clc + adc #1 + and #$7f + sta bit_rain_smc+1 + + lda bit_rain2_smc+1 + clc + adc #1 + and #$7f + sta bit_rain2_smc+1 + + jmp bit_rain + + + ;========================= + ; draw line of color in COLOR + ;========================= +draw_raster_bit: + + ldx #0 + stx LINE + +draw_raster_bit_loop: + + ldx #0 + ldy #0 + lda YPOS + jsr HPOSN + + clc + lda LINE + adc COLOR + tax + lda color_table,X + + ldy #0 +inside_loop: + sta (GBASL),Y + iny + iny + cpy #40 + bne inside_loop + + inc YPOS + + inc LINE + ldx LINE + cpx #9 + bne draw_raster_bit_loop + + rts + +color_table: + .byte $0 + .byte $1,$3,$B,$F,$B,$3,$1,$0 + .byte $8,$9,$D,$F,$D,$9,$8,$0 + diff --git a/dhgr/dhgr.dsk b/dhgr/dhgr.dsk new file mode 100644 index 0000000000000000000000000000000000000000..18c4cfa59d2621f1f7c3dcc806d56520c93299c0 GIT binary patch literal 143360 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 literal 0 HcmV?d00001 diff --git a/dhgr/lots.s b/dhgr/lots.s new file mode 100644 index 00000000..83fe19cf --- /dev/null +++ b/dhgr/lots.s @@ -0,0 +1,76 @@ +GBASL = $26 +GBASH = $27 +HGRPAGE = $E6 +YPOS = $FE +COLOR = $FF + +HGR = $F3E2 +HGR2 = $F3D8 +HPOSN = $F411 + +raster: + jsr HGR + jsr HGR2 +; sta $C050 ; set graphics +; sta $C057 ; set hires +; sta $C052 ; set fullscreen + sta $C05E ; set double hires + sta $C00D ; 80 column + sta $C001 ; 80 store + + lda #$20 + sta HGRPAGE + + lda #0 + sta YPOS +color_loop: + lda YPOS + and #$f + sta COLOR + asl + asl + asl + asl + ora COLOR + sta COLOR + lda YPOS + jsr draw_line_color + + inc YPOS + lda YPOS + cmp #192 + bne color_loop + +forever: + jmp forever + + + ;========================= + ; draw line of color in COLOR + ;========================= +draw_line_color: + ldx #0 + ldy #0 + jsr HPOSN + + ldy #0 +loop_it: + ; set page2 + sta $C055 + lda COLOR + sta (GBASL),Y + cmp #$80 + rol COLOR + + ; set page1 + sta $C054 + lda COLOR + sta (GBASL),Y + cmp #$80 + rol COLOR + iny + + cpy #40 + bne loop_it + + rts diff --git a/dhgr/raster.s b/dhgr/raster.s new file mode 100644 index 00000000..d704071b --- /dev/null +++ b/dhgr/raster.s @@ -0,0 +1,123 @@ +GBASL = $26 +GBASH = $27 +HGRPAGE = $E6 +COLOR = $ff + +HGR = $F3E2 +HGR2 = $F3D8 +HPOSN = $F411 + +raster: + jsr HGR + jsr HGR2 +; sta $C050 ; set graphics +; sta $C057 ; set hires +; sta $C052 ; set fullscreen + sta $C05E ; set double hires + sta $C00D ; 80 column + sta $C001 ; 80 store + + lda #$20 + sta HGRPAGE + + lda #$0 + sta COLOR + lda #100 + jsr draw_line_color + + lda #$4 + sta COLOR + lda #99 + jsr draw_line_color + + lda #$4 + sta COLOR + lda #101 + jsr draw_line_color + + lda #$8 + sta COLOR + lda #98 + jsr draw_line_color + + lda #$8 + sta COLOR + lda #102 + jsr draw_line_color + + + +forever: + jmp forever + + + ;========================= + ; draw line of color in COLOR + ; at location A + ;========================= +draw_line_color: + ldx #0 + ldy #0 + jsr HPOSN + + ; set page2 + sta $C055 + + ; page2 first + ldx COLOR + lda color_table,X + + ldy #0 +aux_part1_loop: + sta (GBASL),Y + iny + iny + cpy #40 + bcc aux_part1_loop + + ; page2 first + ldx COLOR + lda color_table+1,X + + ldy #1 +aux_part2_loop: + sta (GBASL),Y + iny + iny + cpy #40 + bcc aux_part2_loop + + ; set page1 + sta $C054 + + ; page1 next + ldx COLOR + lda color_table+2,X + + ldy #0 +main_part1_loop: + sta (GBASL),Y + iny + iny + cpy #40 + bcc main_part1_loop + + ; page1 next + ldx COLOR + lda color_table+3,X + + ldy #1 +main_part2_loop: + sta (GBASL),Y + iny + iny + cpy #40 + bcc main_part2_loop + + rts + +color_table: + .byte $FF,$FF,$FF,$FF ; white + .byte $3B,$6E,$77,$5D ; 0xB = light blue + .byte $33,$4C,$66,$19 ; 0x3 = medium blue + diff --git a/two-liners/Makefile b/two-liners/Makefile index 5f60cf8b..596a04b5 100644 --- a/two-liners/Makefile +++ b/two-liners/Makefile @@ -7,7 +7,7 @@ all: entropy.dsk convert_to convert_back convert_qkumba entropy.dsk: ENTROPY ENTROPY.BAS E2.BAS FLAME.BAS FLAME2.BAS \ CIRCLES.BAS AUTUMN.BAS QKUMBA.BAS ASTEROID.BAS PERSON.BAS SHIP.BAS \ - CONCERT.BAS NYAN.BAS LOAD + CONCERT.BAS NYAN.BAS RASTER.BAS LOTS.BAS LOAD $(DOS33) -y entropy.dsk BSAVE -a 0x0C00 ENTROPY $(DOS33) -y entropy.dsk BSAVE -a 0x0300 LOAD $(DOS33) -y entropy.dsk SAVE A ENTROPY.BAS @@ -22,6 +22,8 @@ entropy.dsk: ENTROPY ENTROPY.BAS E2.BAS FLAME.BAS FLAME2.BAS \ $(DOS33) -y entropy.dsk SAVE A SHIP.BAS $(DOS33) -y entropy.dsk SAVE A NYAN.BAS $(DOS33) -y entropy.dsk SAVE A CONCERT.BAS + $(DOS33) -y entropy.dsk SAVE A RASTER.BAS + $(DOS33) -y entropy.dsk SAVE A LOTS.BAS ### @@ -132,6 +134,16 @@ PERSON.BAS: person.bas SHIP.BAS: ship.bas $(TOKENIZE) < ship.bas > SHIP.BAS +#### + +RASTER.BAS: raster.bas + $(TOKENIZE) < raster.bas > RASTER.BAS + +#### + +LOTS.BAS: lots.bas + $(TOKENIZE) < lots.bas > LOTS.BAS + #### diff --git a/two-liners/lots.bas b/two-liners/lots.bas new file mode 100644 index 00000000..09198b72 --- /dev/null +++ b/two-liners/lots.bas @@ -0,0 +1,2 @@ +1REM(X\(V\C7PC#PC PJ(AYJ A_I_*#A_""""!_A_I_(- Y_I_RPTY3, H H ($]H C5PI_D)R@)_C5PI_D)R@)_RP*TY8XP)%%1&9VMJ=GT:&$N $01GA'T9X $ +2FORI=0TO90:C=INT((PEEK(2144+I/3)-32)/4^(I-INT(I/3)*3)):POKE768+I,((PEEK(2054+I)-32)*4)+C-INT(C/4)*4:NEXT:CALL768 diff --git a/two-liners/raster.bas b/two-liners/raster.bas new file mode 100644 index 00000000..eaaf627a --- /dev/null +++ b/two-liners/raster.bas @@ -0,0 +1,8 @@ +10 HGR:HGR2 +50 POKE 49246,0: REM TURN ON DHR +60 POKE 49165,0: REM TURN ON 80COLUMNS +70 POKE 49153,0:REM TURN ON 80STORE +75 POKE POKE 49237,0 +80 HCOLOR=3:HPLOT 0,100 TO 279,100 + +