Re: TAVERNIER 6809
Publié : 28 nov. 2019 12:03
Je pense Michel que ce lien te sera utile : http://map.grauw.nl/resources/video/yam ... 58_ocr.pdf
Bon bricolage.
Bon bricolage.
Forum des collectionneurs et utilisateurs d'ordinateurs anciens
https://forum.system-cfg.com/
Code : Tout sélectionner
#98 VRAM data read/write port
#99 (write) == VDP register write port
#99 (read) == Status register read port
#9A Palette access port (only v9938/v9958)
#9B Indirect register access port (only v9938/v9958)
Code : Tout sélectionner
; VDP I/O Ports MSX2
;----------------------
VDPCTRL .EQU $99 ; PORT #1
VDPDATA .EQU $98 ; PORT #0
VDPPALETTE .EQU $9A ; PORT #2
VDPRegInd .EQU $9B ; PORT #3 ; registres indirectes
Code : Tout sélectionner
;-------------------------------------------
; Fixe le mode du VDP en mode SCREEN8
; bitmap 256x212 en 256 couleurs
;-------------------------------------------
ModeGfx
ld hl,DataGfx
ld b,20
ld c,VDPCTRL
otir
RET
; R0 R1 R2 R3 R4 R5 R6 R7 R8 R9
DataGfx .db $06,$80,$60,$81,$1f,$82,$80,$83,$01,$84,$ef,$85,$0F,$86,$01,$87,$08,$88,$82,$89
Code : Tout sélectionner
;-------------------------------------------
; initialisation de la palette (256 couleurs) screen 8
; IN : B= numéro de palette (datas)
;-------------------------------------------
InitPalette
LD A,B
CP $01
JR Z,Fillpalette1
CP $02
JR Z,Fillpalette2
CP $03
JR Z,Fillpalette3
LD HL,PaletteRGB4
JR Fillpalettez
Fillpalette3
LD HL,PaletteRGB3
JR Fillpalettez
Fillpalette2
LD HL,PaletteRGB2
JR Fillpalettez
Fillpalette1
LD HL,PaletteRGB
Fillpalettez
LD A,00
OUT (VDPCTRL),a
LD A,16 +$80 ; 00=> reg16 (palette)
OUT (VDPCTRL),A ; numéro palette n°A autoincrementé après 2 ecriture sur port 2 (RGB)
LD B,32
FillPalet
LD A,(HL)
INC HL
OUT (VDPPALETTE),A
DJNZ FillPalet
RET
Code : Tout sélectionner
;-------------------------------------------
; >>>> TITLE <<<<
;
; affiche la page d'intro
;-------------------------------------------
; mapper konami 8Ko
LD A,$12
LD (Konami8),A
LD A,$13
LD (KonamiA),A
Title2VRAM
LD BC,$0000 ; 1eme ligne
CALL SetVDPAddress ; Adress VRAM = $00000
LD B,$02 ;2 bloc à transferer
ReloopTitle2Vram
LD HL,$3FFF
ld DE,$8000
Title2VRAMloop
LD A,(DE)
out (VDPDATA),a
inc DE
dec L
jr nz,Title2VRAMloop
dec H
jr nz,Title2VRAMloop
; mapper konami 8Ko
LD A,$14
LD (Konami8),A
LD A,$15
LD (KonamiA),A
DJNZ ReloopTitle2Vram
Code : Tout sélectionner
;-------------------------------------------
; Fixe l'adresse d'ecriture du VDP MSX2
; VRAM 00000h-1FFFFh
; { Reg #45 = 0 MSX MXD MXS DIY DIX EQ MAJ } not necessary
; Reg #14 = 0 0 0 0 0 A16 A15 A14
; PORT #1 = A7 A6 A5 A4 A3 A2 A1 A0
; PORT #1 = 0 R/W A13 A12 A11 A10 A9 A8
; after go to read or write by PORT #0
;-------------------------------------------
; IN:
; C = adresse A16:4 A15:2 A14:1
; B = lignes A8:1 ....
;-------------------------------------------
SetVDPAddress
LD A,C
OUT (VDPCTRL),a ; A==>R14
LD A,14+$80
OUT (VDPCTRL),a ; R14
;---
LD A,$00
OUT (VDPCTRL),a ; P1
;---
LD A,$40
ADD A,B
OUT (VDPCTRL),a ; P1
RET
Code : Tout sélectionner
;-------------------------------------------
; Efface intégralement la VRAM du VDP MSX2 $1FFFF (128K)
;-------------------------------------------
ClearVRAM
LD BC,$0000
call @SetVDPAddress
LD D,$02
LD A,$11
BigLoopClrVram
LD BC,$Ffff
ClearVRAMLoop
out (VDPDATA),a
dec c
jr nz,ClearVRAMLoop
dec b
jr nz,ClearVRAMLoop
DEC D
JR NZ,BigLoopClrVram
RET
Code : Tout sélectionner
;-------------------------------------------
; Attend que le VDP est atteint le bas de l'écran
;
;-------------------------------------------
WaitIntVDP
LD A,$00 ; => status 02
OUT (VDPCTRL),a ; data==>R15
LD A,15+$80
OUT (VDPCTRL),a ; R15
IN A,(VDPCTRL)
RL A
JR NC,WaitIntVDP
RET
Code : Tout sélectionner
;-------------------------------------------
; Attend que le VDP est fini la commande
;
;-------------------------------------------
WaitEndCmdVDP
LD A,$02 ; => status 02
OUT (VDPCTRL),a ; data==>R15
LD A,15+$80
OUT (VDPCTRL),a ; R15
IN A,(VDPCTRL)
RR A
JR C,WaitEndCmdVDP
RET
Pourquoi ?Le V9938 au format DIL 64 pins shrink me complique un peu la vie