Autor
| 17 bit Bios calls
| ARTRAG msx master Mensajes: 1802 | Publicado: Noviembre 10 2005, 14:09   | ok. war is war
macro SetWrite17 vram
ld a,vram / #4000
di
out (99h),a
ld a,14+128
out (99h),a
ld a, vram and #FF
out (99h),a
ld a,(vram and #3F) or 64
out (99h),a
ei
endm
and
macro SetWrite14 vram
ld a, vram and #FF
di
out (99h),a
ld a,(vram and #3F) or 64
out (99h),a
ei
endm
 | | GhostwriterP msx addict Mensajes: 320 | Publicado: Noviembre 10 2005, 14:15   |
Must actually be SetWrite14 then, right  ? | | ARTRAG msx master Mensajes: 1802 | Publicado: Noviembre 10 2005, 14:28   | Hit!
A nice variation
;
; ints must be disabled!
;
macro SetWrite14 vram
ld a, vram and #FF
out (99h),a
ld a,(vram and #3F) or 64
out (99h),a
endm
;
; ints must be disabled!
;
macro SetWrite17 vram
ld a,vram / #4000
out (99h),a
ld a,14+128
out (99h),a
SetWrite14 vram
endm
| | norakomi msx professional Mensajes: 861 | Publicado: Noviembre 10 2005, 14:49   | ok,
I will have to change all those Bios calls.
Damn !!
| | BiFi msx guru Mensajes: 3142 | Publicado: Noviembre 10 2005, 18:27   | if you change ACPAGE (active page) on $FAF6 you can use the BIOS calls. ACPAGE is simply bit 16 and 17 for the 4-page screens and bit 17 for 2-page screens.
| | norakomi msx professional Mensajes: 861 | Publicado: Noviembre 13 2005, 10:05   | | | ARTRAG msx master Mensajes: 1802 | Publicado: Noviembre 18 2005, 22:41   | Actually i did a mistake im my setwrite: those macros are bugfree
; vdp: send value in A to VDP register
; syntax:vdp reg#
; modifies: A
; note: **** INTERRUPTS MUST BE DISABLED ****
; (6 bytes/31 cycles)
;
MACRO vdp reg
out (vdpport1),a
ld a,reg or 010000000b
out (vdpport1),a
endm
;
; vdpw: send value to VDP register
; syntax:vdp reg#, value#
; modifies: A
; note: **** INTERRUPTS MUST BE DISABLED ****
;
MACRO vdpw reg,value
ld a,value
vdp reg
endm
;
; ints must be disabled!
;
MACRO SetWrite14 vram
ld a, vram and #FF ;set bits 0-7
out (vdpport1),a
ld a,(vram/256 and #3F) or 64 ;set bits 8-13 + write access
out (vdpport1),a
endm
;
; ints must be disabled!
;
MACRO SetWrite17 vram
vdpw 14,vram / #4000 ;set bits 16-14
SetWrite14 vram
endm
; ram2vram17: copy RAM block to VRAM (full 128Kb)
; syntax:r2v16e <RAM addr>, <VRAM addr>, <number of bytes>
; modifies: AF,HL,DE,BC
; note: **** INTERRUPTS MUST BE DISABLED ****
;
MACRO ram2vram17 ram,vram,num
SetWrite17 vram
ld de,num ; 3/10
ld hl,ram ; 3/10
ld c,vdpport0 ; 2/7
.loop outi ; 2/16
dec de ; 1/6
ld a,d ; 1/4
or e ; 1/4
jp nz,.loop ; 3/10
endm
; fillvram17: fill VRAM (full 128Kb)
; syntax:r2v16e <VRAM addr>, <number of bytes>, >value>
; modifies: AF,HL,DE,C
; note: **** INTERRUPTS MUST BE DISABLED ****
;
MACRO fillvram17 vram,num,value
SetWrite17 vram
ld de,num ; 3/10
ld c,vdpport0 ; 2/7
.loop ld a,value
out (c),a
dec de ; 1/6
ld a,d ; 1/4
or e ; 1/4
jp nz,.loop ; 3/10
endm
| | BiFi msx guru Mensajes: 3142 | Publicado: Noviembre 19 2005, 07:34   | Quote:
| cool,
thax Bifi !!!
|
You're welcome...
Quote:
| WWW.BIFIGOOGLE.COM !!!
|
I wouldn't go THAT far, but thanks  | | norakomi msx professional Mensajes: 861 | Publicado: Noviembre 21 2005, 16:54   | | |
| |
| |