stone@calgary.UUCP (Glen Stone) (02/21/86)
These routines are taken from Comp-U-Serve. They allow you
to put a mono-system into 50 line mode and back again.
Question: How do they work ??? They index in the negative direction
from the pointers received in the line A call. My line A documentation
says nothing about anything in the negative direction.
Note: the fifty lines are quite nice... for those who are writing terminal
programs, editors, etc. this would be I nice option. I've modified some
of the public domain stuff to include this.
Note1: You can also have a 4x4 font but that hurts.
* Make hi rez screen bios handle 25 lines of 8x16 characters
*
*
* author:
* j d eisenstein
*
* date:
* 15-aug-85
*
.text
.global _hi25
LINEA_INIT equ $A000
GET_REZ equ 4 ; extended bios resolution inquiry
_hi25:
lea stack,sp
move.w #GET_REZ,-(sp) ; get screen resolution
trap #14
addq.w #2,sp
cmp.w #2,d0 ; only execute if already in hi rez
bne exit
dc.w LINEA_INIT ; get the important pointers
move.l 08(a1),a1 ; a1 -> 8x16 font header
move.l 72(a1),-$0A(a0) ; v_off_ad <- 8x16 offset table ad
move.l 76(a1),-$16(a0) ; v_fnt_ad <- 8x16 font data addr
move.w #0016,-$2E(a0) ; v_cel_ht <- 16 8x16 cell heigh
move.w #0024,-$2A(a0) ; v_cel_my <- 24 maximum cell "Y"
move.w #1280,-$28(a0) ; v_cel_wr <- 1280 vertical byte offset
exit: clr.w -(sp) ; back to the os
trap #1
ds.l $10
stack: ds.l $01 ; hey chef, gimme a short stack
end
* Make hi rez screen bios handle 50 lines of 8x8 characters
*
*
* author:
* j d eisenstein
*
* date:
* 15-aug-85
*
.text
.global _hi50
LINEA_INIT equ $A000
GET_REZ equ 4 ; extended bios resolution inquiry
_hi50:
lea stack,sp
move.w #GET_REZ,-(sp) ; get screen resolution
trap #14
addq.w #2,sp
cmp.w #2,d0 ; only execute if already in hi rez
bne exit
dc.w LINEA_INIT ; get the important pointers
move.l 04(a1),a1 ; a1 -> 8x8 font header
move.l 72(a1),-$0A(a0) ; v_off_ad <- 8x8 offset table addr
move.l 76(a1),-$16(a0) ; v_fnt_ad <- 8x8 font data addr
move.w #008,-$2E(a0) ; v_cel_ht <- 8 8x8 cell height
move.w #049,-$2A(a0) ; v_cel_my <- 49 maximum cell "Y
move.w #640,-$28(a0) ; v_cel_wr <- 640 offset to cell Y+
exit:
clr.w -(sp) ; back to the os
trap #1
ds.l $10
stack: ds.l $01 ; stack em up an blow em out
end