/*
* File: main.c, march 2013
* file test on CP/M
*/
#include <stdio.h>
FILE *input;
/**
* main routine
* @return
*/
main(int argc, int argv[]) {
char k;
print("File test\r\n");
if (argc == 2) {
print("file:");
print(argv[1]);
print("\r\n");
if ((input = fopen(argv[1], "r")) == NULL) {
print("Open failure\n");
exit(1);
}
while ((k = fgetc (input)) != EOF) {
putchar(k);
}
fclose(input);
} else {
print("usage: fltst file.ext");
}
}
print(char *str) {
while (*str) {
putchar(*str++);
}
}
CRTSO sa zase trošku zmenilo. Pribudla inicializácia STDIO systému. Toto je asi aj finálna verzia. Už tam je všetko, čo je potrebné na prácu v CP/M.
lxi h,0
dad sp
shld stksav ; save the stack pointer
lhld 6 ; pick up core top
lxi d,-10 ; decrease by 10 for safety
dad d
sphl ; set stack pointer
call stdioinit ; initialize stdio
lxi h,0x0080
push h
call Xarglist
lhld Xargc
push h
lxi h,Xargv
push h
call main ; call main program
jmp 0
stksav: .ds 2
crtsoend:
.end
Do projektu pribudli ďalšie podporné súbory: io8080.c, bdos1.c a exit.c
Building project
scc8080 -t -a main.c
as8085 -l -o -s -p -g main.s
scc8080 -t -a bdos.c
as8085 -l -o -s -p -g bdos.s
scc8080 -t -a chio8080.c
as8085 -l -o -s -p -g chio8080.s
scc8080 -t -a arglist.c
as8085 -l -o -s -p -g arglist.s
scc8080 -t -a charclass.c
as8085 -l -o -s -p -g charclass.s
scc8080 -t -a io8080.c
as8085 -l -o -s -p -g io8080.s
scc8080 -t -a bdos1.c
as8085 -l -o -s -p -g bdos1.s
scc8080 -t -a exit.c
as8085 -l -o -s -p -g exit.s
as8085 -l -o -s -p -g cret.asm
as8085 -l -o -s -p -g crun8080lib.asm
aslink -n -i -u -o -m -b CRET=0x0100 -b LIB8080=crtsoend+0x0100 -b SMALLC_GENERATED=crun8080_end+crtsoend+0x0100 cmd cret.rel crun8080lib.rel main.rel bdos.rel chio8080.rel arglist.rel charclass.rel io8080.rel bdos1.rel exit.rel
sort -k1.8,1.9 -k1.4,1.7 cmd.ihx > cmd.hex
hex2bin -e com -c cmd.hex
hex2bin v1.0.1, Copyright (C) 1999 Jacques Pelletier
Lowest address = 00000100
Highest address = 00001DD3
Build finished
Výsledný COM sa nafúkol na cca 7.5kB. Z toho sú ale 2kB buffer pre čítanie sektorov z filesystému. To preto, lebo je dovolené mať otvorené naraz až 4 súbory. Odhadom ďalšie 0.5kB sú pomocné štruktúry ako 4x FCB atď.
No comments:
Post a Comment