Files
Z8C-Homebrew-Computer/Code/snippets/6845_drvr.asm
2022-12-05 10:54:23 +01:00

56 lines
1.4 KiB
NASM

;8645 Routines
; http://bitsavers.trailing-edge.com/components/motorola/_dataSheets/6845.pdf
CS_CRTC_ADDR .EQU 80h
CS_CRTC_DATA .EQU 81h
VAL_R0 .EQU 99 ;Nr of Horizontal Characters Total.
VAL_R1 .EQU 80 ;Nr of Horizontal Characters Displayed.
VAL_R2 .EQU 83 ;Horizontal Sync Position.
VAL_R3 .EQU 6 ;Sync width.
VAL_R4 .EQU 31 ;Vertical Total.
VAL_R5 .EQU 13 ;Vertical Total Adjustment.
VAL_R6 .EQU 25 ;Nr of Vertical Characters Displayed.
VAL_R7 .EQU 29 ;Vertical Sync Position (might need manual fine tuning).
VAL_R8 .EQU 0 ;Interlace Mode.
VAL_R9 .EQU 15 ;Max Scanline Address.
VAL_R10 .EQU 205 ;Cursor Start Scan Line.
VAL_R11 .EQU 207 ;Cursor Stop Scan Line.
VAL_R12 .EQU 0 ;Start Address (High). Real start address is 0x0000.
VAL_R13 .EQU 0 ;Start Address (Low). Real start address is 0x0000.
VAL_R14 .EQU 0 ;Cursor Start Address (High). Cursor will be at position (0, 0).
VAL_R15 .EQU 0 ;Cursor Start Address (Low). Cursor will be at position (0, 0).
; A contains DATA
; B contains REGISTER ID
CRTC_WRITE_REGISTER:
PUSH AF
LD A,B
AND 1Fh
OUT (CS_CRTC_ADDR), A
POP AF
OUT (CS_CRTC_DATA), A
RET
; A returns DATA
; B contains REGISTER ID
CRTC_READ_REGISTER:
LD A,B
AND 1Fh
OUT (CS_CRTC_ADDR), A
IN A, (CS_CRTC_DATA)
RET
CRTC_INIT_80COL:
LD DE,[VAL_R0]
LD B, 0
CRTC_INIT_80COL_LOOP:
LD A, (DE)
CALL CRTC_READ_REGISTER
INC DE
INC DE
INC B
LD A, B
CP 16
JR NC, CRTC_INIT_80COL_LOOP