{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: IPBMOPC867)}}
====== IPBMOPC867 ======
(George Source)
**Macros used:** [[george:macro:COOR4|COOR4]], [[george:macro:ERROR|ERROR]], [[george:macro:FREECORE|FREECORE]], [[george:macro:LONGOFF|LONGOFF]], [[george:macro:LONGSTOP|LONGSTOP]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:NAME|NAME]], [[george:macro:NBREAKIN|NBREAKIN]], [[george:macro:REPEAT|REPEAT]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]]
2278 ... SEG IPBMOPC,84,COMM - IPB,,G501
22#B ...[
22FJ ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LIMITED 1982.
22LQ ...[ THIS EXCLUDES CODE UNDER #SKI G501
22RY ...[
22^= #LIS K0IPBMOPC>K0IPB>K0ALLGEO>K0GREATGEO
2357 ...#OPT G501 = 0
2394 ...#SKI G501&1
23#^ ...# WITH UGUG EDIT M501 (3-SHIFT INPUT ON MOP)
23DW SEGENTRY K1IPBMOPC,SK1IPBMOPC
23GD SEGENTRY K2IPBMOPC,SK2IPBMOPC
23GS SEGENTRY K3IPBMOPC,SK3IPBMOPC
23H8 SEGENTRY K4IPBMOPC,SK4IPBMOPC
23HJ SEGENTRY K5IPBMOPC,SK5IPBMOPC
23J2 WHLDY 3600*24/K9*1000
23M6 SEGENTRY K52IPBMOPC
23Q= ZJTWAIT 60000/K9
23TB ZJTMI 60000/K9
23YG ZMIN 60+3/FONINTP
23^2 SCAN #76217610
23^G SCANCEL 6HCANCEL
2422 SEGENTRY K50IPBMOPC [TRANSERR - RESTORE TIME MACRO
242G SERROR +34
2432 34HTRANSMISSION ERROR - PLEASE REPEAT
243L [
246Q [
249W ZLNOF LONGOFF
24*2 EXIT 3 0
24*5 #
24*8 # GET AMXOR/IOUT BLOCK FOR OUTPUT ; ON ENTRY X3 POINTS TO AMXOR/ADCB
24*? # BLOCK ; PUT MESSAGE CHAR CT.IN X4 ; HEADER IN X5 ; CALL ON X7
24*B #
24*F SETU SBX 7 FX1
24*J SLL 5 12 [HEADER AND DISCARD MASK
24*M ADX 5 4
24*Q ADN 4 IDATA-A1*4+3 [TOTAL COUNT OF CHARS
24*T SRL 4 2
24*Y SETUPCORE 4,2,AMXOR,IOUT,1
24B3 MHUNTW 3,AMXOR,ADCB
24B6 STO 5 IPBIDE+1(2)
24B9 SLC 5 5 [B4 SET IF 'READY' OUTPUT
24B# ERN 5 1
24BC ANDN 5 1
24BG STO 5 IMOPTY(2) [WAKE ACTIVITY AFTER NON-READY OUTPUT
24BH ... BNZ 5 SECHO
24BJ ... LDX 0 ICURSOR(3)
24BK ... BNG 0 SECHO
24BL ... SLL 0 1
24BM ... BPZ 0 SECHO
24BN ... LDX 0 BIT11
24BP ...#UNS ANOECHO
24BQ ... ORS 0 IPBIDE+1(2)
24BR ...SECHO
24BS ... STOZ IBSW(2)
24BT ... LDX 0 IDENTNO(3)
24BW ... STO 0 IPBIDE(2)
24BX ... LDN 5 IDATA(2)
24B^ ADX 7 FX1
24C4 EXIT 7 0
24C7 #
24C= # CHANGE ETX ON END OF OUTPUT TO CANCEL IN CASE REINPUTTING ON TAPE
24C* #
24CD TOCA BCHX 1 £
24CH BCHX 1 £
24CL LDN 4 #10
24CP BCHX 1 £
24CS SBN 1 1
24CX DCH 4 0(1)
24D2 EXIT 0 0
24D6 [
24XQ [ ENTERED BY DOWN FROM IPBMOP TO WAIT FOR CONTINUE OUTPUT
25X2 [ X3 CONTAINS TIME WE STARTED WAITING
266S [ OR IF X5 -VE WAIT FOR TIMED OUT CONSOLE TO BE RESTARTED
26BL [
26W= SK1IPBMOPC
26X3 BPZ 5 TVDU
26XS [ CALCULATE TIME FOR WAIT
26YK LDX 0 ZMIN(1)
26^B MPY 0 IPMOPWAIT
2727 YLNST LONGSTOP TOBRK,VTUP,,,1
272Y [ UPPLUS 1 IF RESTARTED
273P WOPAG UPPLUS 1
274G TOBRK CALL 3 ZLNOF
275? BRN WOPAG
2764 VTUP LDX 1 CLONG3(2)
276T SBN 1 2
277L BNG 1 YSUP
278C [ J IF TIME UP ELSE CONTINUE WAITING
2798 BDX 1 YLNST
279^ YSUP CALL 3 ZLNOF
27=Q [ UPPLUS 2 IF TIME UP
27?H UPPLUS 2
27## TVDU
27*5 [ WAIT FOR CONTINUE OUTPUT
27*W LDX 7 3
27FR LDX 4 ZJTMI(1)
27KN MPY 4 IPMOPWAIT
27PK ADX 5 ZJTWAIT(1)
27TG NGN 6 #1001
28*6 BRN SETZZ
28SQ SETAZ COOR4 CONTVDUWT
29#B SETZZ
29S2 MHUNTW 3,AMXOR,ADCB
2=?L LDN 0 #200
2=R= ANDX 0 IWAIT(3)
2?=W ERS 0 IWAIT(3)
2?QG BNZ 0 TWAB
2#=6 [ J IF ABANDON
2#B3 LDX 0 ISTATUS(3)
2#FY BNG 0 TINOP
2#KT [ J IF IDETIFIER IS INOPERABLE
2#PQ LDCT 0 #100
2*9B SMO A1+FPTR(3)
2*P2 ANDX 0 FOURTHWD
2B8L BNZ 0 TWAB
2BN= [ J IF MOP OFF
2C7W LDN 0 #1000
2CMG ANDX 0 ICONTU(3)
2D76 BZE 0 WITUP
2DLQ LDX 0 JTIME
2F6B SBX 0 7
2FL2 BPZ 0 NCHD
2G5L ADX 0 WHLDY(1)
2GK= NCHD SBX 0 5
2H4W BPZ 0 TIMEX
2HJG [ J IF TIME UP
2J46 BRN SETAZ
2L^W TWAB ANDS 6 ICONTU(3)
2MFG UP
2M^6 [ GO UP FOR MOP OFF OR ABANDON
2NDQ WITUP UPPLUS 1
2NYB [ UPPLUS 1 FOR CONTINUE OUTPUT
2PD2 TIMEX ANDS 6 ICONTU(3)
2PXL UPPLUS 2
2QC= [ UPPLUS 2 FOR TIME UP
2QCF TINOP
2QCN ANDS 6 ICONTU(3)
2QCX UPPLUS 3
2QD6 [ UPPLUS 3 IF IDENTIFIER IS INOPERABLE
2QDD [
2QFL [
2QGS [ K2IPBMOPC
2QJ2 [
2QK8 [
2QLB SK2IPBMOPC
2QMJ #
2QNQ # TEST IF BREAK-IN IS ALLOWED
2QPY #
2QR7 NBREAKIN 2,8,XBIRJ,XBIOK
2QRL XBIOK
2QS5 LDN 0 0
2QSJ ORS 0 AWORK1(2)
2QSP ... LDX 0 AWORK1(2)
2QSW ... STO 0 ACOMMUNE1(2)
2QT3 UP [BREAK-IN ALLOWED
2QTK XBIRJ UPPLUS 1 [BREAK-IN REJECTED
2R*9 [
2RST [ K3IPBMOPC
2S#F [
2SS5 #
2T?P #
2TR* # TRANSMISSION ERROR ON INPUT : OUTPUT ERROR MESSAGE & REPEAT READY
2W=^ # IF A MOP CONSOLE, ELSE TAKE INOPERABLE ACTION.
2WQK #
2X=9 SK3IPBMOPC
2XPT MHUNTW 3,AMXOR,ADCB
2Y9F LDCH 4 ICHARS(3) [LENGTH OF NEWLINE
2YP5 ADX 4 SERROR(1) [LENGTH OF ERROR MESSAGE
2^8P ADX 4 INOCHS(3) [LENGTH OF NL+ETX+1
2^N* LDN 5 #4004
327^ CALL 7 SETU [SET UP AMXOR/IOUT BLOCK
32MK LDN 4 INLBUFF(3)
3379 LDCH 1 ICHARS(3)
33LT MVCH 4 0(1) [NEWLINE
346F LDX 1 FX1
34L5 LDN 4 SERROR+1(1)
355P LDX 1 SERROR(1)
35K* MVCH 4 0(1) [TRANSMISSION ERROR - PLEASE REPEAT
364^ LDX 1 INOCHS(3)
36JK LDN 4 INLBUFF(3)
3749 MVCH 4 0(1) [NEWLINE + END OF MESSAGE
37HT LDX 1 5
383F CALL 0 TOCA [CHANGE ETX TO CANCEL
38H5 LDX 4 IREADY(3)
392P SBN 4 2 [TRUNCATE TO OMIT DC1
39G* LDN 5 #4214
39^^ CALL 7 SETU
3=FK LDCT 0 2
3=^9 ORS 0 IWAIT(3) [INDICATE 'READY'
3?DT BRN TERED [OUTPUT READY MESSAGE
3?YF [
3#D5 [ K4 IPBMOPC
3#XP [
3*C* #
3*W^ # INPUT CANCELLED : OUTPUT 'NL CANCEL _'
3BBK #
3BW9 SK4IPBMOPC
3C*T MHUNTW 3,AMXOR,ADCB
3CTF LDCH 4 ICHARS(3) [LENGTH OF NEWLINE
3D*5 ADX 4 IREADY(3) [LENGTH OF READY TERMINATOR
3DSP ADN 4 6 [CANCEL
3F#* LDN 5 #4214
3FR^ CALL 7 SETU
3G?K LDN 4 INLBUFF(3)
3GR9 LDCH 1 ICHARS(3)
3H=T MVCH 4 0(1) [NEWLINE
3HQF LDX 4 FX1
3J=5 ADN 4 SCANCEL
3JPP MVCH 4 6 [CANCEL
3K9* TERED
3KN^ LDN 0 1
3L8K SMO FX2
3LN9 ORS 0 AWORK1
3LR* ... SMO FX2
3LWF ... LDX 0 AWORK1
3L^K ... SMO FX2
3M4P ... STO 0 ACOMMUNE1
3M7T LDN 4 IREADY+1(3)
3MMF LDX 1 IREADY(3)
3N75 MVCH 4 0(1) ['READY' TERMINATOR
3NLP UP
3P6* [
3PK^ [ K5 IPBMOPC
3Q5K [
3QK9 #
3R4T # GET LAST FOUR CHARACTERS INTO X5 & X6 TO TEST FOR CANCEL & BREAKIN
3RJF # IF A MOP DISPLAY,TEST FOR AN ACTION KEY MESSAGE
3S45 #
3SHP SK5IPBMOPC
3T3* MHUNTW 2,AMXOR,IMESSG
3TG^ MHUNTW 3,AMXOR,ADCB
3W2K LDX 4 A1(2)
3WG9 ANDN 4 #7777 [NO. OF CHARS INPUT
3W^T SRC 4 2
3XFF ADN 4 A1+1(2) [INPUT STARTS IN A1+2
3X^5 STOZ A1+1(2) [CLEAR A1+1 IN CASE INPUT <4 CHARS
3YDP LDN 5 6
3YY* MVCH 4 4 [LAST FOUR CHARS INTO X6
3^C^ LDXC 0 ICURSOR(3)
3^XK BCS VAKEY [MOP DISPLAY
42C9 SBX 6 SCAN(1) [#76217610
42WT LDN 5 0
43BF SLL 56 12
43W5 BZE 6 TCANC
44*P BZE 5 XBI
44T* LDN 0 2
45#^ SMO FX2
45SK ORS 0 AWORK1 [AWORK1 = 2 IN CHAR 2
45XP ... SMO FX2
462T ... LDX 0 AWORK1
465^ ... SMO FX2
4695 ... STO 0 ACOMMUNE1
46#9 UP
46RT XBI
47?F TCANC
47R5 FREECORE 2
48=P BZE 6 SK4IPBMOPC
48Q* BRN SK2IPBMOPC
48RL ...#SKI G501&1
48SX ...(
48W8 ...VAKEY LDX 0 6 [ TEST FOR ACTION KEY
48XF ... SRL 0 6
48YQ ... ANDN 0 #7777
4923 ... ERN 0 #7613
493# ... BNZ 0 VNAK
494K ... LDCH 4 6 [ ACTION KEY VALUE
495W ...)
4977 ...#SKI G501&1$1
498D ...(
499^ VAKEY LDCT 1 #200 [TEST FOR AN ACTION KEY MESSAGE IN THE LAST 3 CHARS
49PK LDCH 0 6(1)
4=99 SBN 0 #76
4=NT BNZ 0 VNAK [NO ACTION KEY FOUND
4?8F VC13 BCHX 1 £
4?N5 LDCH 0 6(1)
4#7P SBN 0 #13
4#M* BNZ 0 VNAK [NO ACTION KEY FOUND
4*6^ #
4*LK BCHX 1 £
4B69 LDCH 4 6(1) [ACTION KEY "N"
4BB3 ...)
4BKT SBN 4 1 [TEST FOR BREAK-IN
4C5F BZE 4 XBIA [ACTION KEY 1 : BREAK-IN
4CK5 SBN 4 16
4D4P BZE 4 XBIA [ACTION KEY ! : BREAK-IN
4DJ* LDX 0 4
4F3^ ADN 0 9
4FHK ANDN 0 #57
4G39 BZE 0 VNBI [ACT KEY 8 OR ( : RESTART MOPWAIT
4HG5 LDCT 0 #200
4H^P ANDX 0 ICURSOR(3)
4JF* BZE 0 VNBI [NOT IN SCREEN EDITING MODE
4JY^ NAME 2,FILE,FRB [RENAME ACTION KEY MESSAGE BLOCK AND
4KDK UPPLUS 6 [GO UP
4KY9 VNBI
4LXF FREECORE 2 [AMXOR/IMESSG
4MC5 LDN 5 1
4MWP ANDX 5 IWAIT(3)
4NB* BZE 5 VTYPE [O/P NOT SUSPENDED:IGNORE ACTION KEY
4NT^ ADN 4 14
4P*K BZE 4 VOCU [ACTION KEY 3:CONTINUE OUTPUT COMMAND
4PT9 SBN 4 17
4Q#T LDXC 0 ICONTU(3)
4QSF BCS VCOC [USING CODE 2 : TEST FOR "£" CHAR
4R#5 ADN 4 1 [USING CODE 1 : TEST FOR "#" CHAR
4RRP VCOC BNZ 4 VTYPE [NOT A CONTINUE OUTPUT COMMAND
4S?* VOCU DEX 4 ICONTU(3) [CLEAR CT OF LINES O/P SINCE LAST T-R
4SQ^ LDX 0 ACOMMUNE7(2) [+VE IF CURRENT MESSAGE NOT COMPLETED
4T=K BZE 0 OUFIN [NO MESSAGE PART REMAINS
4TQ9 DSA 0 ACOMMUNE8(2) [SET MESSAGE PART CHAR COUNT
4W9T ANDX 0 HALFTOP
4WPF ... STO 0 ACOMMUNE1(2) [STORE MESSAGE BLOCK TYPE
4X95 LDX 0 ACOMMUNE3(2) [RELATIVE MESSAGE PART ADDRESS
4XNP STO 0 ACOMMUNE9(2)
4Y8* BRN VDUMESS [OUTPUT REMAINDER OF "SUSPENDED" MESSAGE
4YM^ #
4^7K XBIA
4^M9 FREECORE 2
526T BRN SK2IPBMOPC
52LF #
5365 VNAK LDX 5 IWAIT(3)
53KP SLL 5 7
545* BNG 5 TREV [READY : ACCEPT INPUT DATA
54J^ FREECORE 2 [AMXOR/IMESSG
554K VTYPE
55J9 UPPLUS 2
563T VDUMESS
56HF UPPLUS 3
5735 TREV
57GP UPPLUS 4
582* OUFIN
58F^ UPPLUS 5
58^K #END
^^^^ ...123324500003