Amiga as a Workstation Part 9: Comparing with IBM PC/AT Development (A #Doscember cross-over!)

Channel:
Subscribers:
3,100
Published on ● Video Link: https://www.youtube.com/watch?v=pLi3QGz3Zao



Duration: 0:00
1,687 views
40


This #AmigaAsAWorkstation video compares how an IBM PC/AT would be used for scientific and engineering tasks by writing a heatmap program using the IBM C compiler. #Doscember

   • Video  

#retrocomputing #commodoreAmiga #IBMPC #doscember

I also go through the whole process of setting up the PC/AT, PC-DOS, and the C compiler, from scratch, using #86Box.

Since the C compiler didn't have any graphics routines, I write our own using the INT 10H functions in the BIOS.

Code:
GRLIB: https://github.com/tschak909/pc-bios-grlib
HEATMAP: https://github.com/tschak909/pc-bios-heatmap

All software and much thanks from: https://winworldpc.com/

Emulator used is 86Box: https://86box.net/

Yes, this video is LONG, but as always I provide a chapter index!

Part 1: Bootstrapping the PC/AT

0:00:00 Intro, what we're making.
0:02:10 Creating our PC/AT
0:08:00 Configuring system using IBM AT Diagnostics
0:18:00 Booting PC-DOS 3.10
0:18:30 Creating DOS Partition with FDISK
0:19:00 FORMAT C: /S/V
0:19:50 Copying DOS disks to C:
0:22:00 Quality of Life Enhancements: CONFIG.SYS And AUTOEXEC.BAT
0:22:40 Introducing EDLIN
0:25:45 First reboot
0:26:15 Installing IBM C Compiler 1.00
0:36:00 Quality of Life: Adding path and environment variables
0:37:40 Second reboot
0:38:00 Smoke test, Writing Hello world in EDLIN
0:39:20 Compiling HELLO
0:40:00 Looking at compiler artifacts (listing, code generation)
0:41:00 Linking and running HELLO.

Part 2: Writing GRLIB
0:42:16 We have no graphics routines!
0:43:15 About INT 10H
0:45:15 Implementing GR_MODE.C to set graphics mode
0:53:10 Compiling, oops, I deleted my union REGS r!
0:54:20 Compiling again.
0:55:00 Implementing GR_PSET.C to plot a pixel.
0:58:30 Compiling GR_PSET
0:59:10 Quality of Life, writing CLEAN.BAT
1:00:00 Implementing GR_TEXT for text output.
1:07:00 Compiling GR_TEXT
1:08:20 Introducing LIB to create libraries
1:09:30 Making TEST program
1:13:18 Compiling TEST
1:13:30 Linking TEST
1:13:40 Unresolved symbols if GRLIB isn't linked
1:15:20 Re-linking with GRLIB
1:15:50 Our test program
1:16:30 Implementing GR_LINE (Bresenham line)
1:25:40 Compiling GR_LINE
1:26:15 Implementing GR_BOX
1:29:20 Archiving our library manually.
1:31:10 Implementing a MAKE file for GRLIB
1:35:40 Implementing GRLIB.H
1:40:00 Running MAKE on GRLIB.MAK

Part 3: Heatmap
1:41:30 Creating Heatmap dir
1:42:45 Copying over example heatmap data (h.dat)
1:43:00 Heatmap skeleton
1:49:39 First compile, oops, I mistyped BOTH constants. :)
1:51:00 Second compile, somehow I forgot the last brace in main() !
1:52:00 Linking HEATMAP
1:52:10 Testing HEATMAP skeleton.
1:52:45 Add better error handling.
1:54:00 Implement read_data()
1:57:20 Third compile.
1:57:36 Third link.
1:57:45 Third test, oops, must return 1 if okay in read_data()!
1:58:15 Fourth compile.
1:58:39 Fourth Link
1:58:45 Fourth test, we see our metadata!
1:59:00 Implementing legend()
2:01:10 Showing format of heatmap data in hexedit
2:03:40 Fifth compile
2:03:55 Fifth link and test, what happen? debugging.
2:08:30 Legend, but chips are a little sqonky. oops.
2:11:15 Implementing the rest of display_data() to show heatmap
2:14:55 Sixth compile
2:15:08 Sixth Link and test, we see a heatmap!
2:15:45 Comparing with Amiga version
2:17:20 Changing the graphics mode to 320x200x16
2:18:50 Changing the graphics mode to 320x200x4 (CGA)
2:20:30 Changing the graphics mode to 640x350x16 (EGA)
2:22:45 A note about IBM GKS.