Rev 1764 |
Blame |
Compare with Previous |
Last modification |
View Log
| Download
| RSS feed
module ScreenViewer
PGT EQU 0 ; ╨╜╨░╤З╨░╨╗╨╛ ╤В╨░╨▒╨╗╨╕╤Ж╤Л ╤И╨░╨▒╨╗╨╛╨╜╨╛╨▓ screen2
CT EQU #2000
display:
ld a,2 ; screen2
call CHGMOD
;ld hl,MSX1paletteData
;call set_palette_registre
ld hl,outputBuffer
ld ix,outputBuffer + 0x2000
ld a,3 ; 3 ╤Б╨╡╨│╨╝╨╡╨╜╤В╨░ ╤Н╨║╤А╨░╨╜╨░
loop3:
ex af,af'
push hl
ld c,0
loop256:
ld b,8
push hl
loop8:
ld a,(hl)
ld (ix+0),a
ld de,#0100
add hl,de
inc ix
djnz loop8
pop hl
inc hl
dec c
jr nz,loop256
pop hl
ld de,2048
add hl,de
ex af,af'
dec a
jr nz,loop3
ld hl,outputBuffer + 0x2000
ld de,PGT
ld bc,6144
call LDIRVM
;jr keywait
ld bc,768
ld hl,outputBuffer+6144
ld de,outputBuffer + 0x2000
colorloop2:
push bc
ld b,8
ld a,(hl)
call convertpalete
colorloop1:
ld (de),a
inc de
djnz colorloop1
inc hl
pop bc
dec bc
ld a,b
or c
jr nz,colorloop2
ld hl,outputBuffer + 0x2000
ld de,CT
ld bc,6144
call LDIRVM
keywait:
RST #30 ; ╨з╨╕╤В╨░╨╡╤В ╨╛╨┤╨╕╨╜ ╤Б╨╕╨╝╨▓╨╛╨╗ ╨╕╨╖ ╨▒╤Г╤Д╨╡╤А╨░ ╨║╨╗╨░╨▓╨╕╨░╤В╤Г╤А╤Л. ╨Х╤Б╨╗╨╕ ╨▒╤Г╤Д╨╡╤А ╨┐╤Г╤Б╤В,
db 0 ; ╨▓╤Л╨▓╨╛╨┤╨╕╤В ╨║╤Г╤А╤Б╨╛╤А ╨╕ ╨╢╨┤╨╡╤В ╨╜╨░╨╢╨░╤В╨╕╤П ╨║╨╗╨░╨▓╨╕╤И╨╕.
dw #009F ; CHGET A = ╨║╨╛╨┤ ╤Б╨╕╨╝╨▓╨╛╨╗╨░
xor a ; screen0
call CHGMOD
call TextMode.loadFont
call TextMode.init
jp History.back
ret
convertpalete:
push hl
push de
push bc
ld b,a
and #07
ld hl,colors0
bit 6,b
jr z,col0
ld hl,colors1
col0:
ld d,0
ld e,a
add hl,de
ld a,(hl)
and a
rlca
rlca
rlca
rlca
ld c,a
ld a,b
rrca
rrca
rrca
and #07
ld hl,colors0
bit 6,b
jr z,col00
ld hl,colors1
col00:
ld d,0
ld e,a
add hl,de
ld a,(hl)
or c
pop bc
pop de
pop hl
ret
calcxy:
ld a,e
and #18
or #40
ld h,a
ld a,e
and #07
rrca
rrca
rrca
add a,d
ld l,a
ret
;-----------------------------------------------------------------------------------
; Routine to set colors palette MSX1 like
VDP_DW equ #00007
RG16SAV equ #FFEF
MSX1palette:
ld a,(VDP_DW)
ld c,a ; C= CPU port connected to the VDP writing port #1
xor a ; Set color 0 ...
di
out (c),a
ld (RG16SAV),a
ld a,#80+16 ; ...into register 16 (+80h)
out (c),a
ei
inc c ; C= CPU port connected to the VDP writing port #2
ld b,31
ld hl,MSX1paletteData
otir
ret
set_palette_registre:
xor a
out (#99),a ; ╨╜╨╛╨╝╨╡╤А ╤А╨╡╨│╨╕╤Б╤В╤А╨░ ╤Ж╨▓╨╡╤В╨░
ld a,#90 ; reg 16(#10) +7╨▒╨╕╤В=1(╨╖╨░╨┐╨╕╤Б╤М)
nop
out (#99),a
ld a,16 ; ╤Б╨║╨╛╨╗╤М╨║╨╛ ╤А╨╡╨│╨╕╤Б╤В╤А╨╛╨▓
ld c,#9A ; Color Palette Register
set_palette_loop:
outi ; SET RED BLUE
outi ; SET GREEN
dec a
jr nz, set_palette_loop
ret
MSX1paletteData:
db 00h,0 ; Color 0
db 00h,0 ; Color 1
db 11h,5 ; Color 2
db 33h,6 ; Color 3
db 26h,2 ; Color 4
db 37h,3 ; Color 5
db 52h,2 ; Color 6
db 27h,6 ; Color 7
db 62h,2 ; Color 8
db 63h,3 ; Color 9
db 52h,5 ; Color A
db 63h,6 ; Color B
db 11h,4 ; Color C
db 55h,2 ; Color D
db 55h,5 ; Color E
db 77h,7 ; Color F
;----------------------------------------------------------------------------------
WRTVRM:
rst #30
db 0
dw #004D
ret
LDIRVM: ; ╨║╨╛╨┐╨╕╤А╤Г╨╡╤В ╨▒╨╗╨╛╨║ ╨┤╨░╨╜╨╜╤Л╤Е ╨╕╨╖ RAM ╨▓ VRAM
RST #30
db 0
dw #005C
ret
CHGMOD:
rst #30
db 0
dw #005F
ret
colors0:
db #01,#04,#08,13,#02,7,10,14
colors1:
db #01,#05,#09,13,#03,7,11,15
endmodule