Files
Sepp J Morris 31738079c4 Upload
Digital Research
2020-11-06 18:50:37 +01:00

118 lines
2.5 KiB
Plaintext

$title ('INTERFACE TO CP/M I/O')
io:
do;
/*
Template for all BDOS calls
*/
/*
modified 3/26/81 R. Silberstein
modified 6/16/81 R. Silberstein
modified 9/14/81 R. Silberstein
*/
declare tbuff (80h) byte external;
mon1: procedure (func,info) external;
declare func byte;
declare info address;
end mon1;
mon2: procedure (func,info) byte external;
declare func byte;
declare info address;
end mon2;
/**************************************
* *
* B D O S Externals *
* *
**************************************/
system$reset: procedure public;
call mon1 (0,0);
end system$reset;
read$console: procedure byte public;
return mon2 (1,0);
end read$console;
write$console: procedure (char) public;
declare char byte;
call mon1 (2,char);
end write$console;
write$list: procedure (char) public;
declare char byte;
call mon1 (5,char);
end write$list;
constat: procedure byte public;
return mon2 (11,0);
end constat;
VERSION: PROCEDURE ADDRESS PUBLIC;
RETURN MON2 (12, 0);
END VERSION;
select$disk: procedure (disk$number) public;
declare disk$number byte;
call mon1 (14,disk$number);
end select$disk;
set$DMA$address: procedure (DMA$address) public;
declare DMA$address address;
call mon1 (26,DMA$address);
end set$DMA$address;
open$file: procedure (fcb$address) byte public;
declare fcb$address address;
CALL SET$DMA$ADDRESS (.TBUFF); /* FOR 1.4 SYSTEMS */
return mon2 (15,fcb$address);
end open$file;
OPEN$RO$FILE: PROCEDURE (FCB$ADDRESS) BYTE PUBLIC;
DECLARE FCB$ADDRESS ADDRESS, FCB BASED FCB$ADDRESS (32) BYTE;
FCB (6) = FCB (6) OR 80H;
RETURN OPEN$FILE (FCB$ADDRESS);
END OPEN$RO$FILE;
close$file: procedure (fcb$address) byte public;
declare fcb$address address;
return mon2 (16,fcb$address);
end close$file;
delete$file: procedure (fcb$address) public;
declare fcb$address address;
CALL mon1 (19,fcb$address);
end delete$file;
read$record: procedure (fcb$address) byte public;
declare fcb$address address;
return mon2 (20,fcb$address);
end read$record;
write$record: procedure (fcb$address) byte public;
declare fcb$address address;
return mon2 (21,fcb$address);
end write$record;
create$file: procedure (fcb$address) byte public;
declare fcb$address address;
return mon2 (22,fcb$address);
end create$file;
interrogate$disk: procedure byte public;
return mon2 (25,0);
end interrogate$disk;
crlf: procedure public;
call write$console (0dh);
call write$console (0ah);
end crlf;
end io;