home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
SIMTEL
/
CPMUG
/
CPMUG023.ARK
/
STOICITP.STC
< prev
next >
Wrap
Text File
|
1984-04-29
|
2KB
|
78 lines
% ***************************************************************************
% ** COPYRIGHT (C) MASSACHUSETTS INSTITUTE OF TECHNOLOGY AND HARVARD **
% ** UNIVERSITY, BIOMEDICAL ENGINEERING CENTER 1977. ALL RIGHTS RESERVED. **
% ***************************************************************************
% STOIC INTERRUPT HANDLER
% J. SACHS 2/8/77
RADIX @ HEX
80 'INTERRUPT-TABLE ARRAY
% DEFINE INTERRUPT HANDLER FOR RESTART 7
. ASSEMBLER<
PSW PUSH, B PUSH, D PUSH, H PUSH, 0 IN, CMA, A ADD,
A L MOV, 0 H MVI, INTERRUPT-TABLE 80 - D LXI, D DAD,
M E MOV, H INX, M D MOV, XCHG, PCHL, >
2016 !
% DEFINE DISMISS ENTRY
. ASSEMBLER< DEFINITIONS
H POP, D POP, B POP, PSW POP, EI, RET,
> DEFINITIONS
'DISMISS CONSTANT
% ADDR DEVC INTERRUPT
% STORES AN INTERRUPT ROUTINE ADDRESS IN THE INTERRUPT TABLE
% ADDR IS ADDR OF INTERRUPT ROUTINE
% DEVC IS DEVICE CODE OF DEVICE
'INTERRUPT : 0C0 - 2* INTERRUPT-TABLE + ! ;
% REDEFINE WRCI TO SAVE AND RESTORE RESTART ADDRESSES
0C 'RESTART-SAVE ARRAY
'WRCI : 2000 RESTART-SAVE 18 MVBYTES WRCI RESTART-SAVE 2000 18 MVBYTES ;
% DEFINE KEYBOARD CIRCULAR BUFFER AND VARIABLES
40 'TTISZ CONSTANT % CIRCULAR BUFFER SIZE (IN BYTES)
TTISZ 2/ 'TTIBF ARRAY % CIRCULAR BUFFER
TTISZ 'TTIC VARIABLE % INPUT COUNT
0 'TTOC VARIABLE % OUTPUT COUNT
TTIBF 'TTIP VARIABLE % INPUT PTR
TTIBF 'TTOP VARIABLE % OUTPUT PTR
% KEYBOARD INTERRUPT SERVICE ROUTINE
. ASSEMBLER<
0E003 LDA, 7F ANI, 1 CPI, () ABORT JZ, A B MOV, TTIC LHLD,
H A MOV, L ORA, DISMISS JZ, H DCX, TTIC SHLD, TTIP LHLD,
B M MOV, H INX, TTIBF TTISZ + MINUS D LXI, XCHG, D DAD,
IFNC, TTIBF D LXI, THEN, XCHG, TTIP SHLD, TTOC LHLD, H INX,
TTOC SHLD, DISMISS JMP, >
0E0 INTERRUPT
% TTY INPUT ROUTINE (PROCESSES ^A)
. ASSEMBLER<
. TTOC LHLD, H A MOV, L ORA, JZ, H DCX, TTOC SHLD, TTOP LHLD,
M A MOV, H INX, TTIBF TTISZ + MINUS D LXI, XCHG, D DAD, IFNC,
TTIBF D LXI, THEN, XCHG, TTOP SHLD, TTIC LHLD, H INX, TTIC SHLD,
RET, >
(TTYIN) !
% SET UP ABORT ROUTINE TO ENABLE INTERRUPTS, AND KEYBOARD INTERRUPTS
% AND INITIALIZE THE KEYBOARD BUFFER
. ASSEMBLER<
TTISZ H LXI, TTIC SHLD, 0 H LXI, TTOC SHLD, TTIBF H LXI, TTIP SHLD,
TTOP SHLD, EI, 40 A MVI, 0E001 STA, RET, >
(ABORT) !
RADIX !
% RETURN BY ACTIVATING ABORT
ABORT
***EOF***