The Amstrad extended BIOS is accessed using the USERF BIOS function. To call it, use: CALL USERF DEFW value The value is a 16-bit address in memory bank 0 (user programs normally run in bank 1). The (documented) XBIOS jumpblock starts at 0080h and runs up to 00EEh. My implementation of CP/M on the PCW16 supports calls from TE_ASK up to BANK2_RUN_ROUTINE. Since the address of USERF may vary from computer to computer, the following subroutine should be used to access it in a machine-independent way: USERF: PUSH HL PUSH DE LD HL,(1) LD DE,57h ADD HL,DE POP DE EX (SP),HL RET Frequently, these routines will require an address to be passed to them. Unless they are being called from within Bank 0, the address should be above 0C000h so that it is visible to the routine. The alternate register set is preserved during the call, but the values of the alternate registers will not be available to the called routine. |