Difference between revisions of "Source Codes"

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search
(Graphics: - set the screen refresh rate)
(Cross Development)
Line 129: Line 129:
  
 
[[Category:Source code]]
 
[[Category:Source code]]
 +
 +
== General Notes ==
 +
 +
* Memory range for programs is &0040-&a700. This avoids firmware and memory allocated by AMSDOS disc ROM.
 +
* Basic programs start at &170.
 +
* Firmware uses interrupt mode 1 of the Z80 (interrupts jump to &0038)
 +
* Lowest place you can *LOAD* a binary file to with BASIC is &389 e.g.:
 +
 +
openout"d"
 +
memory <address>-1
 +
closeout
 +
load "code",<address>
 +
call <exec>
 +
 +
*Screen is normally at &c000-&ffff.
 +
*Stack is normally at &c000 and goes down.
 +
*Extra registers (BC', AF', HL', DE' are reserved by the firmware). Avoid if you are using firmware functions.
 +
*Lower rom (containing OS) can be paged into memory between &0000-&3fff.
 +
*Upper rom is selectable, examples are BASIC and AMSDOS. They can be paged into memory between &c000-&ffff.
 +
*From basic, a game is run with:
 +
 +
RUN"<filename>
 +
 +
keep it in the safe memory ranges and it'll run from cassette and disc.
 +
*Screen is normally 40 crtc chars wide (CRTC R1=40), 25 crtc chars tall (CRTC R6=25). 8 scan lines per char (R9=7). Firmware functions assume this.
 +
*Screen is bitmapped. You must draw/erase your own sprites and text.

Revision as of 08:36, 9 January 2013

This article contains source codes and programming examples. You may also have a look at


Assembler

Algorithms

CP/M

CPC Plus

Devices

File access

Floppy disk

Graphics

Interrupts

Keyboard

Other routines

Sound

Cross Development

General Notes

  • Memory range for programs is &0040-&a700. This avoids firmware and memory allocated by AMSDOS disc ROM.
  • Basic programs start at &170.
  • Firmware uses interrupt mode 1 of the Z80 (interrupts jump to &0038)
  • Lowest place you can *LOAD* a binary file to with BASIC is &389 e.g.:
openout"d"
memory <address>-1
closeout
load "code",<address>
call <exec>
  • Screen is normally at &c000-&ffff.
  • Stack is normally at &c000 and goes down.
  • Extra registers (BC', AF', HL', DE' are reserved by the firmware). Avoid if you are using firmware functions.
  • Lower rom (containing OS) can be paged into memory between &0000-&3fff.
  • Upper rom is selectable, examples are BASIC and AMSDOS. They can be paged into memory between &c000-&ffff.
  • From basic, a game is run with:
RUN"<filename>

keep it in the safe memory ranges and it'll run from cassette and disc.

  • Screen is normally 40 crtc chars wide (CRTC R1=40), 25 crtc chars tall (CRTC R6=25). 8 scan lines per char (R9=7). Firmware functions assume this.
  • Screen is bitmapped. You must draw/erase your own sprites and text.