512 x 240 bitmap graphics:
https://forum.vcfed.org/index.php?threa ... t.1252681/
Exidy Experiment
- RedskullDC
- Posts: 7
- Joined: Tue Jan 23, 2024 7:07 am
- Location: Dorrigo, NSW, Australia
Re: Exidy Experiment
Thanks for the heads up, that's very kool !
Cheers,
Leslie
Cheers,
Leslie
Re: Exidy Experiment
Z80 code as posted on the VCF thread.
Code: Select all
0078 ORG 78H
0078 0000 XCO: DFB 0,0 ; x coord
007A 00 YCO: DFB 0 ; y coord
007B 2A7800 LD HL,(XCO) ; Plot pt at x,y
007E 7D PLOT: LD A,L
007F E607 AND #7
0081 4F LD C,A ; bit index
0082 7D LD A,L
0083 E6F8 AND #0F8H
0085 6F LD L,A
0086 29 ADD HL,HL
0087 3A7A00 LD A,(YCO)
008A E60F AND #0FH
008C 5F LD E,A
008D 16FC LD D,#0FCH
008F 19 ADD HL,DE ; byte ptr
0090 3A7A00 LD A,(YCO)
0093 0F RRC A
0094 0F RRC A
0095 0F RRC A
0096 0F RRC A
0097 3C INC A ; bank 1-15
0098 E60F AND #0FH
009A 47 LD B,A
009B D3FE OUT (0FEH),A ; select bank
009D 11BF00 LD DE,#BITS
00A0 7B LD A,E
00A1 81 ADD A,C ; index into bit table
00A2 5F LD E,A
00A3 1A LD A,(DE) ; pixel on: bit pattern
00A4 B6 OR (HL)
00A5 77 LD (HL),A ; OR to screen
00A6 1A LD A,(DE) ; pixel off:
00A7 2F CPL ; invert bit pattern
00A8 4F LD C,A
00A9 2C DOWN: INC L ; next y down
00AA 7D LD A,L
00AB E60F AND #0FH
00AD 200B JR NZ,POFF
00AF 7D LD A,L
00B0 D610 SUB #10H
00B2 6F LD L,A
00B3 04 INC B ; next bank
00B4 78 LD A,B
00B5 E60F AND #0FH
00B7 C8 RETZ
00B8 D3FE OUT (0FEH),A ; select bank
00BA 79 POFF: LD A,C ; pixel off
00BB A6 AND (HL)
00BC 77 LD (HL),A ; AND to screen
00BD 18EA JR DOWN
00BF 80402010 BITS: DFB 80H,40H,20H,10H
00C3 08040201 DFB 8,4,2,1
00C7 1180F0 LD DE,#0F080H ; Fill screen with user chars
00CA 21C0F0 LD HL,#0F0C0H
00CD 018000 LD BC,#80H
00D0 79 FILL: LD A,C ; 80-FF
00D1 12 LOOP: LD (DE),A ; 30 lines of 64 chars
00D2 13 INC DE
00D3 3C INC A
00D4 77 LD (HL),A
00D5 23 INC HL
00D6 3C INC A
00D7 20F8 JR NZ,LOOP
00D9 EB EX DE,HL
00DA 09 ADD HL,BC
00DB 7C LD A,H
00DC FEF8 CP #0F8H ; F080-F7FF
00DE 20F0 JR NZ,FILL ; (512 h x 240 v pixels)
00E0 210000 LD HL,#0 ; Clear screen
00E3 44 LD B,H
00E4 3E01 LD A,#1 ; start bank 1
00E6 ED73F700 LD (STK+1),SP ; save SP into instruction at STK below
00EA D3FE MOVE: OUT (0FEH),A ; select bank
00EC F9 LD SP,HL ; borrow stack ptr
00ED E5 CLR: PUSH HL ; user char RAM FC00-FFFF
00EE E5 PUSH HL
00EF 10FC DJNZ CLR ; 256*4
00F1 3C INC A ; next bank
00F2 FE10 CP #16 ; thru bank 15
00F4 20F4 JR NZ,MOVE
00F6 313412 STK: LD SP,#1234H ; restore stack ptr (modified above)
00F9 C9 RET
Re: Exidy Experiment
And the BASIC code with output: