/* SG C Tools 1.0 (C) 1993 Steve Goldsmith All Rights Reserved VDCASM.C is in-line Z80 Assembler code to speed up invdc() and outvdc(). I encountered a compiler lock up tring to optimize (-O) VDC.C with this code. I used C -O -C VDC.C to compile. Works fine without -O, go figure? Just replace the code in VDC.C with the code below. If you can figure out why this is bombing the optimizer let me know! Even without -O the Assembler code is faster than inp() and outp()! Compiled with HI-TECH C 3.09 (CP/M-80). */ uchar invdc(uchar RegNum) { /* in-line assembler to set vdc reg to read and wait for status bit 7 */ #asm ld a,(ix+6) ld bc,0d600h out (c),a 1: in a,(c) bit 7,a jr z,1b #endasm return(inp(vdcDataReg)); /* read register */ } void outvdc(uchar RegNum, uchar RegVal) { /* in-line assembler to set vdc reg to write, wait for status bit 7 and */ /* write new value to reg */ #asm ld a,(ix+6) ld bc,0d600h out (c),a 1: in a,(c) bit 7,a jr z,1b ld a,(ix+8) inc bc out (c),a #endasm }