home *** CD-ROM | disk | FTP | other *** search
- ;-----------------------------------------------------------------------------
- ; Split_Screen - Macros release 1.0
- ; Copyright (c) Ingo Eickmann, 1989 06/14/89
- ; Überarbeitet N. Raum-Deinzer 05/90
- ;-----------------------------------------------------------------------------
-
- REG_POP macro paras ; Registern
- IRP n,<paras>
- POP &n
- endm
- endm
-
- REG_PUSH macro paras ; Registern
- IRP n,<paras>
- PUSH &n
- endm
- endm
-
- Vertical_retrace macro n ; Vertical Retrace (bit 3) im Input
- local Loco ; Status Register 1 abfragen und
- Loco: in al,dx ; auf 0 bzw. 1 warten
- test al,00001000b
- j&n Loco
- endm
-
- Split_Screen macro Start,Line ; Teilung des Bildschirms:
- local LC1,LC2 ; Start: Bildschirmspeicheroffset
- mov ax,40h ; für oberen Bildschirmteil
- mov es,ax ; Line: letzte Scan Line für ob. Teil
- mov dx,es:[63h] ; dx: CRTC address port (3B4h oder 3D4h)
- add dx,6 ; dx: CRT Status port (3BAh oder 3DAh)
- Vertical_retrace z ; Warten, bis Vertical Retrace aktiv
- Vertical_retrace nz ; Warten, bis Vert. Retrace nicht aktiv
- cli
- sub dl,6
- mov ax,Start ; Startadresse für oberen Bildteil
- shr ax,1
- mov bl,al
- mov al,0Ch
- out dx,ax ; MSB in CRTC - Register 0Ch
- inc al
- mov ah,bl
- out dx,ax
- sti
- Vertical_retrace z ; Warten bis Vertical Retrace aktiv
- cli
- mov ax,Line ; letzte Scan Line für oberen Bildteil
- mov bh,ah
- mov bl,ah
- and bx,0201h ; bit 8 und 9 trennen und aufbereiten
- mov cl,4
- shl bx,cl
- shl bh,1
- mov ah,18h
- xchg ah,al
- out dx,ax ; bits 7 - 0 ins Line Compare Register
- mov al,7 ; schreiben
- out dx,al ; Overflow - Register adressieren
- inc dx
- in al,dx ; ! EGA (350 Zeilen-Mode): mov al,1Fh !
- ; ! EGA (200 Zeilen-Mode): mov al,11h !
- and al,11101111b ; bit 8 des Line Compare Wertes in
- or al,bl ; bit 4 des Overflow - Registers
- out dx,al ; schreiben
- dec dx
-
- mov al,9 ; ! entfällt für EGA: !
- out dx,al ; ! !
- inc dx ; ! bit 9 des Line Compare Wertes !
- in al,dx ; ! in bit 6 des Max Scan Line !
- and al,10111111b ; ! Registers schreiben !
- or al,bh ; ! !
- out dx,ax ; ! bis hier entfällts für die EGA !
- sti
- endm