* VDPS
*
$LSHAD MOV  R11,*S+    load shad regs
       CLR  R0
       MOVB *R1+,R0
       BL   @$WRREG
       MOVB *R1+,@$SHAD1
       LI   R3,6
       LI   R2,$SHAD2
LOSHA1 MOVB *R1+,*R2+
       DEC  R3
       JNE  LOSHA1
       JMP  WRSHD1
 
$WSHAD MOV  R11,*S+   write shad regs
WRSHD1 MOV  R8,*S+
       LI   R8,>0300
       MOV  R8,*S+
       STST R8
       MOV  R8,*S+
       LI   R8,>045B
       MOV  R8,*S+
       LIMI 0
       LI   R0,1
       MOVB @$SHAD1,R0
       BL   @$WRREG
       LI   R1,$VDPWA
       LI   R2,$SHAD2
       LI   R3,>8200
WRSHLP MOVB *R2+,*R1
       NOP
       MOVB R3,*R1
       AI   R3,>0100
       CI   R3,>8800
       JNE  WRSHLP
       BL   @-6(S)
       AI   S,-8
       MOV  *S,R8
       DECT S
       MOV  *S,R11
       RT
*
* Write block of bytes to VRAM
$BLKVR MOV  R11,*S+
       MOV  R8,*S+
       LI   R8,>300
       MOV  R8,*S+
       STST R8
       MOV  R8,*S+
       LI   R8,>045B
       MOV  R8,*S+
       LIMI 0
       ORI  R2,>4000
       SWPB R2
       MOVB R2,@$VDPWA
       SWPB R2
       MOVB R2,@$VDPWA
       ANDI R2,>3FFF
       A    R0,R2
$BLP1  MOVB *R1+,@$VDPWD
       DEC  R0
       JNE  $BLP1
       BL   @-6(S)
       AI   S,-8
       MOV  *S,R8
       DECT S
       MOV  *S,R11
       RT
