*********************************************************************** This article is being presented through the *StarBoard* Journal of the FlagShip/StarShip SIGs (Special Interest Groups) on Delphi and GEnie telecommunication networks. Permission is hereby granted to non-profit organizations only to reprint this article or pass it along electronic- ally as long as proper credit is given to both the author and the *StarBoard* Journal. *********************************************************************** Review of: Commodore 128 Programming Secrets, By William M. Wiese, Jr Article by: Larry Rosenman (GE Mail: LEROSENMAN) I found this book to be one of the best sources of information around on doing Machine Language (ML) programming on the Commodore 128. This book contains 406 pages of well thought out, helpful information on everything from using the KERNAL to doing floating point mathematics using the BASIC ROM routines. The Table of Contents for this book is as follows: Part I - The Commodore 128's C-64 Mode Chapter 1 - Inside C-64 Mode C-64 Mode Selection Initial RAM Bank Selection Other Differences in the C-64 System Map Disk Compatability Problems: 1541 Versus 1571 A C-64 Bibliography Part II - C-128 "Native" Mode Chapter 2 - C-128 Archetecture and Memory Management What's Where in the C-128 The Banking Concept The C-128 MMU The Non-Maskable Interrupt The IRQ Interrupt Chapter 3 - C-128 Memory Usage Zero-Page and Page 1 Memory Usage Map of C-128 Zero-Page and Stack Usage Page 1 Memory Usage by BASIC 7.0 and BASIC's DOS Interface Low Memory, Pages 2 and 3 BASIC 7.0, Kernal, and Screen Editor Page 3 Vector Storage Page 3 RAM-Resident Indirect-Load Subroutines Bank 0 RAM Usage Shadow Register Area for VIC-II and 8563 Video Chips Chapter 4 - The C-128 BASIC 7.0 Interpreter C-128 BASIC 7.0 Variable Storage Floating-Point Numbers BASIC Program Storage BASIC 7.0 Dictionary BASIC 7.0 Functions BASIC Math Functions and the Jump Table BASIC String Handling From Machine Language Chapter 5 - The C-128 Video System Screen Editor Escape and Control Sequences The C-128's 80-Column Video Display System The 8563 Independent RAM Block The 8563 Registers High-Resolution Bit-Mapped Graphics on the 8563 User-Defined Character Sets for the 80-Column Text Screen The VIC-II Video Chip Chapter 6 - The C-128 Kernal: An Overview Vectors Kernal Dictionary Modified Kernal Routines New C-128 Kernal Routines Chapter 7 - Disk and I/O Operations on the C-128 1541 and 1571 Disk Compatibility Organization of a 1571 Double-Sided Disk The 1571 Drive's CHGUTL Utility Commands 1541 and 1571 Drive Internals: The Job Queue Autobooting Programs With the C-128 Burst Mode Data Transfer With the 1571 Drive Part III - The CP/M Operating System Chapter 8 - CP/M on the Commodore 128 System Booting CP/M Plus Memory Usage by the CP/M Plus Operating System Disks and C-128 CP/M Plus Transferring Files Between CP/M and Other Modes Revisions to the CP/M Plus System Appendix A - DIGIFONT: A new C-128 Character Set Appendix B - C-128 I/O Pinouts Appendix C - Conversion Tables: Trigonometric Functions Appendix D - Character Sets and Graphic Characters Appendix E - Displaying 80-column Text on a Monochrome Composite Monitor Index As you can see there is a lot of information buried in these 400+ pages. I found that the author has used a style that can be 1) read as well as 2) used later as a reference source while programming in Machine Language. For example, the author has included on page 232 a fast Square Root routine that can be used in place of the one supplied in the BASIC ROM; he gives extensive comments on the exact format of the floating point numbers inside the computer's memory. Mr. Wiese has a real winner in this book. It should become part of any Commodore 128 programmer's reference library. One of the things that I personally liked about this book is the fact that Mr. Wiese gives ALL of the BASIC 7.0 tokens and entry point addresses in the BASIC 7.0 ROM. This makes a lot of programming by the casual Machine Language programmer unnecessary. He also goes into great detail on how to use and update string variables in Machine Language routines called from BASIC. I found this information facinating as well as very useful. On the point of String variable processing, Mr. Wiese gives us a routine on page 234 and 235 on how to have a Function (arithmetic) entered by the user and then evaluated by the BASIC Interpreter. This gives us a very good insight into how BASIC actually interprets our programs. I find this type of an example very useful for learning more about what is going on inside my computer. I found the book at my local B. Dalton for $15.95. I think that the book is well worth it. The author also offers a Diskette with all the examples on it as well as some bonus programs. As of this writing (December) I have not received it yet. I will leave a note on the GEnie Bulletin Board listing its contents when it is received. The disk was ordered in all fairness less than 6 weeks ago from the date I am writing this article. I will let everyone know as soon as I receive it. It is NOT taking an unusually long time, just the normal shipping time. All in all I found the book very useful as well as interesting from my perspective as a professional programmer.