Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.sys.tandy    |    Life is dandy cuz you're gettin a Tandy!    |    5,684 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 4,670 of 5,684    |
|    Richard VanHouten to Ira    |
|    Re: UltraDOS    |
|    10 Oct 07 23:53:11    |
      From: richvh@citlink.net              Ira wrote:       > Hmmm ... I don't think I can replicate all of these from those disks,       > but certainly some of them. I am wondering if GR was the Epson       > Graphics Driver. I disassembled it ... anyone out there know what       > this might be?              Managed to find a reference on the web (a System 80 manual scan) for       enough of the addresses to figure out most of it. Seems to be a       replacement keyboard driver. Seems to be generating high bit keypresses       for some odd reason.       >       > ORG 5200H       LDR LD DE,($MEMTOP) ;Get the top of available memory        LD HL,DVREND ;Point to end of driver        LD BC,DVRSZ ;copy driver to high memory        LDDR         EX DE,HL        LD ($MEMTOP),HL ;Save new top of memory        LD ($TOPMEM),HL ;Save top of memory available to BASIC        INC HL        PUSH HL        LD HL,($KBDCB+1) ;Get keyboard driver vector        POP IX        LD (IX+01H),L ;Patch driver with old keyboard driver        LD (IX+02H),H        LD ($KBDCB+1),IX        RET        DVR CALL $-$ ;This gets patched with old keyboard driver routine address        ;Check for key press        OR A ;Return if none        RET Z        LD E,A ;Save key        LD HL,$KBDBC+4 ;Point into Keyboard DCB        LD A,($KBD+0C0H) ;Check for pressed keys?        CP 03H ;Both shift keys pressed? Something else? Haven't found        ; a reference for the keyboard map.        JR NZ,AAR        XOR (HL) ;Toggle flags in Keyboard DCB        LD (HL),A        XOR A ;return no key        RET        AAR LD A,E ;get the keypress back        LD D,(HL) ;get keyboard flag        DEC D        INC D        RET Z ;return if flag not set        CP '0'        RET C ;return if special character        CP '9'+1        JR NC,AAS        ADD A,51H ;return 81H-8AH for 0-9        RET        AAS CP 'A'        RET C ;return if special character        CP 'Z'+1        JR NC,AAT        ADD A,04AH ;return 8BH-0B5H for A-Z        RET        AAT CP 'a' ;return if special character        RET C        ADD A,045H ;return 0B6H-0D1H for a-z       DVREND RET        DVRSZ EQU $-DVR       AAA EQU 0000H       AAB EQU 0003H       AAC EQU 0030H       AAE EQU 003AH       AAF EQU 0041H       AAG EQU 0045H       AAH EQU 004AH       AAI EQU 0051H       AAJ EQU 005CH       AAK EQU 0061H       $KBD EQU 3800H       $KBDCB EQU 4015H       AAN EQU 4019H       $MEMTOP EQU 4049H       $TOPMEM EQU 40B1H       > END LDR       >        >       > On Wed, 03 Oct 2007 14:52:41 -0000, Matthew Reed       > |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca