Add some BIOS bindings, and a zero-terminated print string routine.
This commit is contained in:
parent
1bd6a9d4fa
commit
97d22973ee
|
@ -77,8 +77,8 @@ name led
|
||||||
(.e:{TAIL}={PLATFORMDIR}/libem.a \
|
(.e:{TAIL}={PLATFORMDIR}/libem.a \
|
||||||
{PLATFORMDIR}/libsys.a \
|
{PLATFORMDIR}/libsys.a \
|
||||||
{PLATFORMDIR}/libc.a \
|
{PLATFORMDIR}/libc.a \
|
||||||
{PLATFORMDIR}/libsys.a \
|
|
||||||
{PLATFORMDIR}/libem.a \
|
{PLATFORMDIR}/libem.a \
|
||||||
|
{PLATFORMDIR}/libsys.a \
|
||||||
{PLATFORMDIR}/libend.a)
|
{PLATFORMDIR}/libend.a)
|
||||||
linker
|
linker
|
||||||
end
|
end
|
||||||
|
|
|
@ -83,6 +83,9 @@ extern uint8_t cpm_read_random_safe(FCB* fcb);
|
||||||
/* Extends cpm_ramtop over the CCP, for a little extra space. */
|
/* Extends cpm_ramtop over the CCP, for a little extra space. */
|
||||||
extern void cpm_overwrite_ccp(void);
|
extern void cpm_overwrite_ccp(void);
|
||||||
|
|
||||||
|
/* Like cpm_printstring, but uses C-style strings terminated with a \0. */
|
||||||
|
extern void cpm_printstring0(const char* s);
|
||||||
|
|
||||||
/* 0 */ extern void cpm_warmboot(void);
|
/* 0 */ extern void cpm_warmboot(void);
|
||||||
/* 1 */ extern uint8_t cpm_conin(void);
|
/* 1 */ extern uint8_t cpm_conin(void);
|
||||||
/* 2 */ extern void cpm_conout(uint8_t b);
|
/* 2 */ extern void cpm_conout(uint8_t b);
|
||||||
|
@ -126,4 +129,8 @@ extern void cpm_overwrite_ccp(void);
|
||||||
#define cpm_get_user() cpm_get_set_user(0xff)
|
#define cpm_get_user() cpm_get_set_user(0xff)
|
||||||
#define cpm_set_user(u) cpm_get_set_user(u)
|
#define cpm_set_user(u) cpm_get_set_user(u)
|
||||||
|
|
||||||
|
extern uint8_t bios_conin(void);
|
||||||
|
extern uint8_t bios_const(void);
|
||||||
|
extern void bios_conout(uint8_t c);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
15
plat/cpm/libsys/bios_conin.s
Normal file
15
plat/cpm/libsys/bios_conin.s
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#
|
||||||
|
#include "asm.h"
|
||||||
|
|
||||||
|
.define _bios_conin
|
||||||
|
_bios_conin:
|
||||||
|
lhld 1
|
||||||
|
lxi d, 6
|
||||||
|
dad d
|
||||||
|
push b
|
||||||
|
call .pchl
|
||||||
|
pop b
|
||||||
|
mov e, a
|
||||||
|
mvi d, 0
|
||||||
|
ret
|
||||||
|
|
21
plat/cpm/libsys/bios_conout.s
Normal file
21
plat/cpm/libsys/bios_conout.s
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
#
|
||||||
|
#include "asm.h"
|
||||||
|
|
||||||
|
.define _bios_conout
|
||||||
|
_bios_conout:
|
||||||
|
pop h ! pop return address
|
||||||
|
pop d ! pop parameter into DE
|
||||||
|
push d
|
||||||
|
push h
|
||||||
|
|
||||||
|
push b
|
||||||
|
mov c, e
|
||||||
|
|
||||||
|
lhld 1
|
||||||
|
lxi d, 9
|
||||||
|
dad d
|
||||||
|
call .pchl
|
||||||
|
|
||||||
|
pop b
|
||||||
|
ret
|
||||||
|
|
16
plat/cpm/libsys/bios_const.s
Normal file
16
plat/cpm/libsys/bios_const.s
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
#
|
||||||
|
#include "asm.h"
|
||||||
|
|
||||||
|
.define _bios_const
|
||||||
|
_bios_const:
|
||||||
|
lhld 1
|
||||||
|
lxi d, 3
|
||||||
|
dad d
|
||||||
|
push b
|
||||||
|
call .pchl
|
||||||
|
pop b
|
||||||
|
mov e, a
|
||||||
|
mvi d, 0
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <string.h>
|
||||||
#include <cpm.h>
|
#include <cpm.h>
|
||||||
#include "cpmsys.h"
|
#include "cpmsys.h"
|
||||||
|
|
||||||
|
|
27
plat/cpm/libsys/cpm_printstring0.s
Normal file
27
plat/cpm/libsys/cpm_printstring0.s
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
#
|
||||||
|
#include "asm.h"
|
||||||
|
|
||||||
|
! Prints a \0-terminated string.
|
||||||
|
|
||||||
|
.define _cpm_printstring0
|
||||||
|
_cpm_printstring0:
|
||||||
|
pop h ! pop return address
|
||||||
|
pop d ! pop parameter (possibly junk)
|
||||||
|
push d
|
||||||
|
push h
|
||||||
|
|
||||||
|
.1:
|
||||||
|
ldax d ! fetch byte
|
||||||
|
ora a
|
||||||
|
rz ! exit if zero
|
||||||
|
inx d
|
||||||
|
|
||||||
|
push b ! save FP as the BDOS will corrupt it
|
||||||
|
push d
|
||||||
|
mov e, a
|
||||||
|
mvi c, 2 ! conout
|
||||||
|
call 0x0005
|
||||||
|
pop d
|
||||||
|
pop b
|
||||||
|
|
||||||
|
jmp .1
|
Loading…
Reference in a new issue