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