Product specifications

1000 REM POKE DATA BYTE HELD IN VDATA UNTO SCREEN POINTED TO BY
VADDRESS
1010 LET TEMP2=INT(VADDRESS/256): LET TEMP1=VADDRESS - (TEMP2*256)
1020 OUT (2),TEMP1
1030 LET TEMP2=TEMP2 OR 64 : LET TEMP2=TEMP2 AND 127
1040 OUT (2),TEMP2
1050 OUT (1),VDATA
1060 RETURN
2000 REM PEEK DATA BYTE ON SCREEN POINTED TO BY VADDRESS, AND
RETURN RESULT IN VDATA
2010 LET TEMP2 = INT(VADDRESS/256):LET TEMP1=VADDRESS-(TEMP2*256)
1020 OUT (2),TEMP1
1030 LET TEMP2=TEMP2 AND 63
1040 OUT (2),TEMP2
1050 LET VDATA=INP(1)
1060 RETURN
1.5
All of these routines use either registers DE or C. DE is always left unchanged as are
all other registers, except C which will change dependant on the values you are
reading into it when you call VDINPT.
Output a byte.
LD DE,7168 ;TOP OF TEXT SCREEN
CALL VSETOT ;SET UP VRAM ADDRESS POINTER FOR DATA
;OUTPUT
LD C,42 ;NUMERICAL VALUE OF '*'
CALL VDOUTP ;OUTPUT BYTE TO SCREEN
Input a byte.
LD DE,7168 ;TOP OF TEXT SCREEN
CALL VSETRD ;SET UP VRAM ADDRESS POINTER FOR DATA
;INPUT
CALL VDINPT ;READ BYTE FROM SCREEN - BYTE RETURNED
;N C
VDP I/O routines.
1.6
;VSETOT-SET UP VRAM ADDRESS POINTER FOR DATA OUTPUT DEPENDANT
ON ADDRESS HELD IN DE ON ENTRY
;
;VSET0T: PUSH AF ;SAVE ACC
LD A, E
OUT (2),A ;OUTPUT LOW BYTE ADDRESS
LD A,D
OR 64