629
Chapter 8, Programming The Call Processing Subsystem
Example Programs
5200 EXIT IF Oper_complete OR Error_flag
5210 END LOOP
5220 RETURN
5230 FNEND
5240 !
6000 Set_state: DEF FNSet_state(State$)
6010 COM /Io_addresses/ INTEGER Inst_addr,Bus_addr
6020 COM /Prog_control/ INTEGER
Oper_complete,Wait_time,Error_flag
6030 INTEGER Ptr_value
6040 Oper_complete=0 !Initialize to zero at start of any state
change
6050 Error_flag=0 !Initialize to zero at start of any state
change
6060 SELECT State$
6070 CASE "Active"
6080 Ptr_value=1
6090 CASE "Register"
6100 Ptr_value=1
6110 CASE "Page"
6120 Ptr_value=32
6130 CASE "Handoff"
6140 Ptr_value=32
6150 CASE "Originate"
6160 Ptr_value=32
6170 CASE "Release"
6180 Ptr_value=1
6190 END SELECT
6200 PRINT "Sending the "&State$&" command."
6210 IF State$="Originate" THEN
6220 OUTPUT Inst_addr;"STAT:CALLP:PTR "&VAL$(Ptr_value)
6230 ELSE
6240 OUTPUT Inst_addr;"STAT:CALLP:PTR "&VAL$(Ptr_value)&";:CALLP
:&State$
6250 END IF
6260 LOOP
6270 DISP "Waiting for an interrupt."
6280 WAIT Wait_time
6290 EXIT IF Oper_complete OR Error_flag
6300 END LOOP
6400 DISP
6410 IF Error_flag THEN
6420 RETURN 0
6430 ELSE
6440 RETURN 1
6450 END IF
6460 FNEND
6470 !
7000 Order: DEF FNOrder(Order$,INTEGER Parm)
7010 COM /Io_addresses/ INTEGER Inst_addr,Bus_addr