#define BOOT 0 #define WBOOT 1 #define CONST 2 #define CONIN 3 #define CONOUT 4 #define LIST 5 #define PUNCH 6 #define READER 7 #define HOME 8 #define SELDSK 9 #define SETTRK 10 #define SETSEC 11 #define SETDMA 12 #define READ 13 #define WRITE 14 #define LISTST 15 #define SECTRAN 16 char bios(n,c) /* calls bios function number n */ int n,c; { /* get bios address + function # times 3 */ #asm JMP .begin .addr: DW 0 .begin: POP H ; save return address SHLD .addr POP B ; 1st arg into c POP D ; get function # LXI H,.retadd PUSH H ; put return addr on stack LHLD 1 ; get bios vector DCX H DCX H DCX H DAD D ; times 3, add to vector DAD D DAD D PCHL ; jump to bios vector .retadd: LHLD .addr ; restore stack PUSH B PUSH B PUSH H MOV L,A ; return argument in hl MVI H,0 #endasm } ’’’’’’’’’’’’’’’’’’’åTRKS1T15COM€µ¶½¾æĄĮĀåHBIOS Z €?@{|† ”åHLBL III `åASCII IIIa