source

source - basic

source - basic - firmware

Running BASIC programs from assembly - [highlighted] - [original]

source - cartridge

source - cartridge - amstrad_plus

Saving the system cartridge of the Amstrad plus - [highlighted] - [original]
How to setup an Amstrad Plus/GX4000 cartridge to be useable on the Amstrad CSD - [highlighted] - [original]
An example setup for an Amstrad Plus/GX4000 cartridge - [highlighted] - [original]

source - colours

Example shows more than 4 colours in mode 1 with a sprite that moves over the regions where the colour changes. 2 common colours between regions and 2 colours changed each region - [highlighted] - [original]
Example shows more than 4 colours in mode 1 with a sprite that moves over the regions where the colour changes. 3 common colours between regions and 1 colour is changed (like Switchblade on CPC does) - [highlighted] - [original]

source - colours - amstrad_plus

source - colours - amstrad_plus - test

Setting Colours using CPC method and testing correct result is seen in ASIC ram - [highlighted] - [original]

source - colours - firmware

Using the firmware to display more than 16 colours on screen - [highlighted] - [original]
Shows how to setup different palette in each interrupt region and shows how graphics spanning this region will change colour - [highlighted] - [original]

source - cpm

A simple 'Hello World' program for CP/M using BDOS - [highlighted] - [original]
A simple 'Hello World' program for CP/M using BIOS - [highlighted] - [original]

source - cpm - firmware

Executing firmware functions from within CP/M 2.1 - [highlighted] - [original]
Executing firmware functions from within CP/M+ - [highlighted] - [original]
Executing firmware functions from within CP/M 2.1 or C/PM+ - [highlighted] - [original]

source - demo

Distorting the screen using register 2 of the CRTC (Horizontal Sync Position) - [highlighted] - [original]
Software scrolling a message - [highlighted] - [original]
Scrolling message using hardware scroll - [highlighted] - [original]
Scrolling message using software (LDI) - [highlighted] - [original]

source - disc

Using the firmware to load one file at a time from a list of files and then repeat (disc) - [highlighted] - [original]

source - disc - firmware

Catalog a disc and retrieve a directory listing - [highlighted] - [original]
Reading a sector from a disc - [highlighted] - [original]
Writing a sector to disc - [highlighted] - [original]
Formatting a track on a disc - [highlighted] - [original]
An example loader - [highlighted] - [original]
A simple disc copier using BDOS functions - [highlighted] - [original]
A simple disc formatter using BDOS functions - [highlighted] - [original]
A simple file copier using firmware functions (copies byte-by-byte) - [highlighted] - [original]
Reading and writing the boot sector of a SYSTEM/VENDOR disc - [highlighted] - [original]
An example boot sector (executed with |CPM) - [highlighted] - [original]

source - disc - firmware - hack

Loading a file - [highlighted] - [original]
Saving a file - [highlighted] - [original]

source - disc - hardware

Detecting a Amstrad or Vortex floppy disc controller - [highlighted] - [original]
Shows how to load data from disc by talking to NEC765 disc controller directly - [highlighted] - [original]

source - double_buffer

source - double_buffer - firmware

Hardware double buffering using the firmware (demonstrates MC SCREEN OFFSET and SCR SET POSITION) - [highlighted] - [original]

source - double_buffer - hardware

Double buffered overscan screen example - [highlighted] - [original]
Double buffered screen example (no drawing code) - [highlighted] - [original]
Double buffered screen (fixed frame rate and no drawing code) - [highlighted] - [original]
Double buffered screen (variable frame rate and no drawing code) - [highlighted] - [original]

source - file

source - file - firmware

Loading a file - [highlighted] - [original]
Saving a file - [highlighted] - [original]
An example to write a file byte-by-byte - [highlighted] - [original]
An example to read a file byte-by-byte - [highlighted] - [original]

source - firmware

Autotyping any string in BASIC - [highlighted] - [original]

source - fps

Fixed frame rate (25Hz) - [highlighted] - [original]
Variable frame rate (50hz max) - [highlighted] - [original]

source - generated

source - interlace

Fake interlace producing a fake 640x400 display - [highlighted] - [original]

source - interrupt

Source code to show how to use Z80 Interrupt mode 2 (IM 2) on the CPC and KC Compact - [highlighted] - [original]
CPC Raster interrupts (example 1) - [highlighted] - [original]
CPC Raster interrupts (example 2) - [highlighted] - [original]
CPC Raster interrupts (example 3) - [highlighted] - [original]
CPC Raster interrupts (example 4) - [highlighted] - [original]
CPC Raster interrupts (example 5) - [highlighted] - [original]
CPC Raster Interrupts (with a delay to fine tune mode/colour changes) - [highlighted] - [original]
Example shows how to sync with the screen to make a stable raster - [highlighted] - [original]

source - interrupt - amstrad_plus

Source code to show how to use Z80 Interrupt mode 2 (IM 2) on the Amstrad Plus - [highlighted] - [original]
Using Interrupt mode 0 (IM0) on Plus - [highlighted] - [original]
Using Interrupt mode 0 (IM0) on Plus (2) - [highlighted] - [original]
Confirming the undocumented IM0 instructions using Amstrad Plus - [highlighted] - [original]

source - interrupt - firmware

Example of a 50Hz (Vsync) interrupt using firmware - [highlighted] - [original]

source - interrupt - hardware

Border colours indicating the interrupt position and how the vsync relates to the position - [highlighted] - [original]
A test program you can use to resize and position the CPCs screen in addition the interrupt positions are shown - [highlighted] - [original]

source - keyboard

Example of a BAD keyboard scanning routine which doesn't work on Amstrad plus - [highlighted] - [original]
Associating a string with a key using KM SET EXPAND and KM SET SET TRANSLATE - [highlighted] - [original]

source - keyboard - hardware

Scanning the keyboard and joysticks - [highlighted] - [original]

source - lines

source - lines - firmware

source - menu

Cliff Lawsons menu code found on Amstrad PP8 discs - [highlighted] - [original]

source - multiface2

Dumping the Multiface 2 ROM data - [highlighted] - [original]
Example of how to install your own code into the Multiface 2 RAM - [highlighted] - [original]

source - overscan

source - pixel_plot

source - pixel_plot - firmware

(Plot 1) Plotting a single pixel using firmware graphics functions - [highlighted] - [original]
(Plot 2) Plotting a single pixel using firmware screen functions and SCR PIXELS - [highlighted] - [original]
(Plot 3) Plotting a single pixel using firmware screen functions without SCR PIXELS - [highlighted] - [original]
(Plot 4) Plotting a single pixel using firmware screen functions without SCR INK ENCODE and SCR PIXELS - [highlighted] - [original]
Plot4 but for mode 1 - [highlighted] - [original]
Plot4 but for mode 2 - [highlighted] - [original]
Plot5 example - [highlighted] - [original]

source - plot

source - plot - cpm

source - ram

Memory check code used in 'Batman Forever' demo - [highlighted] - [original]
DkTronics compatible RAM discovery - [highlighted] - [original]

source - raster

Simple Raster Example 1 - [highlighted] - [original]
Simple Split Raster Example 1 - [highlighted] - [original]
A horizontal scrolling split raster - [highlighted] - [original]

source - raster - amstrad_plus

Simple Raster Example 2 (uses Amstrad Plus features) - [highlighted] - [original]
Simple Raster Example 3 (uses Amstrad Plus features) - [highlighted] - [original]

source - rom

Dumping the data of the lower rom (operating system) - [highlighted] - [original]
Dumping the data of BASIC or AMSDOS or an expansion rom - [highlighted] - [original]
Example ROM showing how you can patch firmware functions to make a filesystem that works with BASIC - [highlighted] - [original]

source - rsx

source - rsx - firmware

Calling a RSX from outside of BASIC - [highlighted] - [original]
Calling KL LOG EXT twice to register more than one RSX - [highlighted] - [original]
An example to define a RSX - [highlighted] - [original]

source - screen_split

Example vertical-split/rupture - [highlighted] - [original]

source - screen_split - amstrad_plus

Splitting the screen using the Amstrad plus hardware - [highlighted] - [original]

source - scroll

Hardware scrolling the screen using the CRTC - [highlighted] - [original]
Hardware scrolling the screen horizontally byte-by-byte using the CRTC - [highlighted] - [original]
Scrolling overscan screen - [highlighted] - [original]
Scrolling example - [highlighted] - [original]
Scrolling example - [highlighted] - [original]
Scrolling example - [highlighted] - [original]
Scrolling example - [highlighted] - [original]

source - scroll - amstrad_plus

Hardware scrolling the screen vertically using the CRTC and Amstrad plus pixel hardware scroll - [highlighted] - [original]
Hardware scrolling the screen horizontally using the CRTC and Amstrad plus pixel hardware scroll - [highlighted] - [original]
Scrolling a mode 0 screen with mode 2 pixel sized movement - [highlighted] - [original]
Scroll screen vertically - [highlighted] - [original]
Scrolling pixel by pixel - [highlighted] - [original]

source - scroll - amstrad_plus - test

Scrolling mid-line (mode 2) - [highlighted] - [original]
Scrolling mid-line 32K overscan screen - [highlighted] - [original]

source - scroll - firmware

Software scrolling a rectangular area up/down 8 pixels at a time using SCR SW ROLL - [highlighted] - [original]
Hardware scrolling screen up/down 8 pixels at a time using SCR HW ROLL - [highlighted] - [original]

source - sound

Play sampled sound using Digiblaster Amdrum or AY-3-8912 sound chip - [highlighted] - [original]
Amstrad CPC player to be used with midi2ay tool - [highlighted] - [original]

source - sprite

A procedure to generate a pixel mask used for drawing masked sprites - [highlighted] - [original]
Rotovision/Bitplane sprites example as used in Ghosts and Goblins - [highlighted] - [original]
Masked sprites in mode 0 (drawing left to right and top to bottom) - [highlighted] - [original]
Preshifted sprites in mode 1 - [highlighted] - [original]
Drawing a sprite on an overscan screen (32K overscan) - [highlighted] - [original]
Masked sprites in mode 0 (drawing bottom to top and left to right) - [highlighted] - [original]
Masked sprites in mode 0 (drawing bottom to top and right to left) - [highlighted] - [original]
Drawing a sprite on a Sinclair Spectrum sized screen - [highlighted] - [original]
Shows how to draw a compressed sprite on the screen - [highlighted] - [original]
Shows how to draw a compiled sprite on the screen - [highlighted] - [original]

source - sprite - amstrad_plus

Setup Amstrad Plus sprites - [highlighted] - [original]
RLE hardware sprites (a method for fast update of animating hardware sprites) - [highlighted] - [original]
Cutting Plus sprites where a split screen occurs (using sprite magnification) - [highlighted] - [original]
Cutting Plus sprites where a split screen occurs (using border) - [highlighted] - [original]

source - sprite - firmware

Plotting a sprite using character matrices - [highlighted] - [original]
Plotting a sprite using the firmware screen functions (demonstrates many firmware SCR functions) - [highlighted] - [original]
Draw a sprite using firmware GRA functions (by CPM User) - [highlighted] - [original]
Example of SCR FILL BOX firmware function used to draw a sprite supplied by cpm_user) - [highlighted] - [original]

source - tape

source - tape - hardware

Modified tape loader originally from Topo Software - [highlighted] - [original]

source - test

source - test - amstrad_plus

Source to show the interrupt clear bug of the -amstrad_plus ASIC - [highlighted] - [original]

source - test - kccompact

Reprogramming the Z8536 CIO of the KC Compact to interrupt every scan-line - [highlighted] - [original]

source - test - psg

Source code to show that some registers always return 0 in some bits - [highlighted] - [original]
Source code to show it is possible to store data in PSG register 14 and 15 (port A and port B) - [highlighted] - [original]
Source code to show it is possible to store data in PSG register 14 and 15 even if the port has been set to input - [highlighted] - [original]
Source code to show that when a port is read in output mode; the data read will be ANDed with the inputs to that port - [highlighted] - [original]
Source code to show 0x0ff is always returned when reading PSG port B - [highlighted] - [original]

source - text

Drawing a 6x8 font - [highlighted] - [original]
Draw text message to a mode 2 screen direct without using firmware but reading char pixel data from OS rom - [highlighted] - [original]

source - text - firmware

Drawing a 6x8 font using firmware in mode 1 - [highlighted] - [original]
How to patch the firmware to draw using your own font (example 6x8) - [highlighted] - [original]

source - tilemap

Drawing a tilemap in mode 0 - [highlighted] - [original]

source - video_mode

source - video_mode - firmware

Using the firmware to display more than one mode on screen - [highlighted] - [original]
Using the firmware to toggle between two screens two palettes and two modes. Perfect for simulating video modes with more colours or resolution. - [highlighted] - [original]
More accurate multi-modes (664/6128 only) - [highlighted] - [original]
Most accurate multi-modes - [highlighted] - [original]

source - video_mode - hardware

Multiple video modes at the same time using the hardware - [highlighted] - [original]

source - z80

A procedure to display a 8-bit number as binary - [highlighted] - [original]
A procedure to display a 8-bit number as hex - [highlighted] - [original]
A procedure to display a 8-bit number as decimal - [highlighted] - [original]
Filling memory with a byte - [highlighted] - [original]