uh@unido.UUCP (07/21/86)
What is wrong with this program???
I want to write some sort of interrupt handler in TDI Modula-2 for the
Atari ST series, using the IOTransfer procedure.
Following is a small Modula-2 test program which has the same task as
the Megamax C interrupt test program, which have been posted two or three
weeks ago in net.micro.atari16. I used the TDI Version 2.10a Modula-2 compiler.
The documentation is very poor at this point, so if anybody knows a
hint how to get this program running, please mail to
uh@unido
Many thanks in advance.
---------------------------cut here---------------------------------
MODULE INTRTEST;
FROM SYSTEM IMPORT ADDRESS, PROCESS, NEWPROCESS, TRANSFER, IOTRANSFER;
FROM XBIOS IMPORT Timer, SetTimerInterrupt;
FROM Storage IMPORT ALLOCATE;
FROM InOut IMPORT WriteInt, WriteLn;
CONST INTTIMER = 77; (*Interrupt number of timer A interrupt*)
VAR I : CARDINAL;
N : CARDINAL;
ROOT : PROCESS;
INT : PROCESS;
IADDR : ADDRESS;
PROCEDURE DUMMY;
BEGIN
(*Should a CODE(RTE) stand here ?!?*)
END DUMMY;
PROCEDURE INTHANDLER;
BEGIN
LOOP (*Interrupt handler never ends*)
IOTRANSFER(INT,ROOT,4*INTTIMER); (*Give controll back to root; but only
\012 until a timer A interrupt arrives*)
INC(N); (*Count interrupts*)
END;
END INTHANDLER;
BEGIN
N := 0; (*Initialize interrupt counter*)
SetTimerInterrupt(TimerA,1,100,DUMMY); (*Set timer A interrupt to dummy
procedure until IOTRANSFER takes
over control*)
ALLOCATE(IADDR,1024); (*Create process space, then ..*)
NEWPROCESS(INTHANDLER,IADDR,1024,INT); (*.. create the process*)
TRANSFER(ROOT,INT); (*Give control to new created
process*)
I := 0; (*Now wait a while*)
WHILE I < 30000 DO
INC(I);
END;
SetTimerInterrupt(TimerA,0,0,PROC(0)); (*Disable Timer A (I hope that
will do?!?)*)
WriteInt(N,10); (*Display number of interrupts ..*)
WriteLn; (*.. during wait*)
END INTRTEST.
---------------------------cut here---------------------------------
This program bombs: 3 mushrooms (aah bombs).
But first if you hack something on the keyboard (i.e. move the mouse) when
the program is ended (N is 0).
Some words about my configuration:
260ST upgraded to 1MB,
SF 354,
SM124,
TOS in ROM.
Please, please help!!!
Uwe Hoch
Computer Science Department, University of Dortmund
4600 Dortmund 50, P.O. Box 500500, W.-Germany
E-mail address: uh@unido.uucp, uh@unido.bitnet