home *** CD-ROM | disk | FTP | other *** search
- ___________________________________________________________________
-
- SG C Tools 1.5
- (C) 1993 Steve Goldsmith
- All Rights Reserved
- ___________________________________________________________________
-
-
- NOTICE
-
- THIS IS NOT FREE SOFTWARE! If you paid a public domain vendor or
- communications service for this product, you paid for the service
- of copying or transferring the product, and not for the product
- itself. I guarantee you that nothing ever gets to the originator
- of this product from such a sale. You may evaluate this product,
- but if you make use of it, you must register your copy.
-
- I offer several incentives for you to register. First of all,
- you receive the most up-to-date copy that I have which is updated
- on a regular basis. Unregistered releases do not include source
- files for the library code. Support via GEnie, Internet, US Mail
- or phone from the author.
-
-
- REGISTRATION INFORMATION
-
- The non-commercial registration fee for SG C Tools 1.5 is $10.00
- plus $3.00 for shipping in US funds.
-
- Send a check or money order for the appropriate amount to:
-
- Steve Goldsmith
- 2805 Jamaica Street
- Sarasota, FL 34231
-
- Please indicate what product you are ordering and if you have a
- requirement for 3.5" media. I normally ship 5.25" Commodore GCR
- format diskettes, but will furnish 3.5" media upon request.
- Customers outside of the United States and Canada should include
- $5.00 for airmail.
-
- If you are a registered user of this product and desire an update,
- please contact me for upgrade prices.
-
-
- DISTRIBUTION NOTICE
-
- This is "user-supported" software. You are hereby granted a
- license by Steve Goldsmith to distribute this evaluation copy of SG
- C Tools and its documentation, subject to the following conditions:
-
- 1. SG C Tools may be distributed freely without charge in
- evaluation form only.
-
- 2. SG C Tools may not be sold, licensed, or a fee charged for its
- use. If a fee is charged in connection with SG C Tools, it
- must cover the cost of copying or dissemination only. Such
- charges must be clearly identified as such by the originating
- party. Under no circumstances may the purchaser be given the
- impression that he is buying SG C Tools itself.
-
- 3. SG C Tools must be presented as a complete unit, including
- this documentation. Neither SG C Tools nor its documentation
- may be amended or altered in any way.
-
- 4. By granting you the right to distribute the evaluation form of
- SG C Tools, you do not become the owner of SG C Tools in any
- form. Any other use, distribution or representation of SG C
- Tools is expressly forbidden without the written consent of
- Steve Goldsmith.
-
- Commodore 128 is a trademark of Commodore Business Machines. CP/M
- and CP/M 3.0 are trademarks of Digital Research. MS-DOS and
- Windows are trademarks of Microsoft. IBM PC, PC-XT and PC-AT are
- trademarks of International Business Machines.
-
-
- OVERVIEW
-
- SG C Tools ANSI C library unlocks the power of the C128 running
- CP/M! High level and low level functions are included to access
- the VDC, SID and CIA. All source code is compatible with the
- Freeware version of Hi Tech C. A demo is included to show you how
- to use most features.
-
-
- REQUIREMENTS
-
- A C128 or C128D running CP/M 3.0 or a IBM PC running a CP/M
- emulator and DOS to CP/M file transfer software.
-
- At least one 1581, two 1571s, large RAM disk or hard drive to
- compile on a C128.
-
- 80 column monitor for VDC specific routines. 640 X 480 interlace
- graphics requires a monitor that can handle this format.
-
- ANSI C programming experience.
-
-
- MODIFICATIONS IN VERSION 1.5
-
- It took me a while to release this version due to work on another
- project. I'm developing a Paradox 4.x browser for DOS and DOS
- Protected mode, so I haven't had much hacking time for the C128.
-
- Added pixel, line, ellipse and text functions for VDC 640 X 480
- interlace bit map mode.
-
- The 640 X 480 ellipse function leaves gaps with some radiuses. I
- ported this from a Pascal SWAG packet that was intended for 320 X
- 240 X 256 (Mode X) VGA displays. I may have not been intended for
- resolutions greater than this. It seems to work fine in 640 X 200
- though. I have included the source for this, so you can play
- around with it if you want. Remember, I will give you a free
- registered copy for a fast integer based ellipse function which I
- can include in SG C Tools.
-
- Unregistered versions no longer include library source!
-
-
- COMPILING DEMO WITH HI-TECH C 3.09
-
- First you will need to have a copy of HI-TECH C 3.09 (CP/M-80).
- You can download the following Freeware files from GEnie's CP/M RT
- (M685;3) or other source:
-
- 8149 LIBSRC.LZH X BRIAN-CPM 930616 80384 39
- 3
- Desc: Source Code to Hitech C library
- 8148 Z80V309.LZH X BRIAN-CPM 930616 194304 51
- 3
- Desc: Hitech C Compiler for CP/M
- 8147 Z80DOC.LZH X BRIAN-CPM 930616 89088 55
- 3
- Desc: Documentation for Hitech C compiler
-
- You should look over HI-TECH C's manual and compile a simple "hello
- world" program before proceeding. I installed all the compiler
- related files on my 1581. My source and header files are on a
- 1571. You could get away with two 1571s, but a RAM disk or hard
- drive would be better. You could also use a faster CP/M system or
- a Z80 emulator to edit and compile code on other platforms.
-
- To compile demo program use:
-
- C -O -X DEMO.C -LC128
-
-
- PROGRAMMING CONSIDERATIONS
-
- The VDC should be configured to its default CP/M 3.0 settings at
- the start and end of each program.
-
- Display memory 0000h
- Attribute memory 0800h
- Character definitions 2000h
-
- This includes restoring character definitions if you use memory at
- 2000h for bit maps, etc. Setting the VDC to 64K mode wipes out
- memory used in 16K mode, so be sure to save the character
- definitions to a memory buffer or file before using 64K mode. The
- VDC remains in 64K mode until you do a cold boot or warm boot with
- the C128's reset button.
-
- Most of the VDC functions do not check parameters for range
- violations. Range checking should be preformed at the application
- level. There are times when you may want to write to a off screen
- memory location. For this reason there is no need to waste time
- and code doing range checks. Just be aware of the implications.
- A renegade program may accidentally wipe out character definitions
- or other important memory regions forcing you to reboot.
-
- Basically, just return to CP/M the way it was before your program
- ran. See DEMO.C for a complete example of setting various VDC
- modes and exiting back to CP/M correctly.
-
- CP/M relies on the CIAs for communication to the outside world just
- like in native 64/128 modes. With this in mind it is best not to
- change certain registers. I have found it safe to use CIA #2's TOD
- clock, timers A and B and disable all interrupt sources. You can
- also safely read the keyboard and joy sticks via CIA #1 if you
- disable interrupts. My low level key scan function reads all key
- positions into an array of 11 bytes. See page 642 of the Commodore
- 128 Programmer's Reference for the key positions in the matrix.
- You can tell joy stick signals from a key short because the joy
- stick shorts a whole row in the matrix instead of one bit like a
- key press. See page 32 of the 1351 Mouse User's manual for more
- info.
-
- CP/M uses voice 1 of the SID to produce a key click. You can use
- the SID just as you would in native 128 mode with one exception.
- Since CP/M writes to the SID during key presses it may affect a
- sound in progress. You can disable interrupts to eliminate this
- problem.
-
- The four bit Z Blaster engine requires the sound data's high
- nibbles to come first. You can easily swap the nibbles once the
- sample is in memory if needed. The maximum sample rate is about 15
- KHz.
-
- The PCX engines for 640 X 200 and 640 X 480 require you to toggle
- off the disk status line. The status line updates during disk I/O
- and changes the VDC update address which throws off the engines.
-
-
- HOW TO CONTACT ME
-
- Please report any support questions, problems, suggestions, etc. to
- me via GEnie S.GOLDSMITH2, Internet S.GOLDSMITH2@GENIE.GEIS.COM,
- voice phone (813) 925-1064 or US Mail to:
-
- Steve Goldsmith
- 2805 Jamaica Street
- Sarasota, FL 34231
- USA
-