22FL # 22^= #SEG SIMULPTR60 [LADISLAV KUTILEK 23DW #OPT K0SIMULPTR=0 23YG #LIS K0SIMULPTR>K0ALLGEO>K0GREATGEO>K0FILESTORE 24D6 8HSIMULPTR 24XQ SEGENTRY K1SIMULPTR,Z1SIMULPTR 25CB # 25X2 # THIS SEGMENT IMPLEMENTS OFFLINE *TR AND *CR (TYPE 0 AND 3), 26BL # IF ASSIGNED TO AN "OLD" TP LIKE FILE(PRE MARK 7) 26W= # 27*W # N=COUNT IN PERI, 27TG # R=SIZE OF RECORD 28*6 # C=CHARACTER POINTER TO NEXT CHAR.IN BUFFER, 28SQ # D=CHARACTER POINTER TO NEXT CHAR.IN BUFFER, 29#B # S=CURRENT SHIFT IN RECORD, 29S2 # E=CURRENT SHIFT ASSUMED BY READER. 2=?L # AWORK1=LAST LOADED CHAR 2=R= # AWORK2=B23=1 CR SIMULATION 2?=W # B0 =1 CR,CP,LP FILE 2?QG # 2#=6 MASK1 #3770000 2#PQ MASK2 #37777777 2*9B MASK3 #47777777 2*P2 MASK4 #60000077 2B8L MASK5 #74007777 2BN= MASK6 #57777777 2C7W MASK7 #20000000 2CMG MASK8 #17777777 2D76 MASK9 #40000000 2DLQ MASK10 #3777777 2F6B MASK11 #10000 2FL2 MASK12 #17770000 2G5L MASK13 #77770000 2GK= MASK14 #30000 2H4W RNO1 #02 [MODES 2HJG RNO2 #04 2J46 RNO3 #06 2JHQ RAC1 #20 2K3B RAC2 #22 2KH2 RAC3 #24 2L2L RAC4 #26 2LG= RGS1 #10 2L^W RGS2 #12 2MFG TW #2 [GRAPHIC SET 2M^6 TH #3 [PUNCH BLANKS 2NDQ ST #64 [T 2NYB SU #65 [U 2PD2 SV #66 [V 2PXL SW #67 [W 2QC= SX #70 [X 2QWW SALP #74 [ALPHA SHIFT 2RBG SBET #75 [BETA SHIFT 2RW6 SDEL #76 [DELTA SHIFT 2S*Q SUNA #77 [_ 2STB SDLT #73 [DELETE 2T*2 SROT #20 [RUN-OUT 2TSL SSTP1 #21 [TC1 2W#= SSTP2 #40 [@ 2WRW SSTP3 #32 [FE2-NEWLINE 2X?G SSTP4 #36 [SHIFT OUT 2XR6 MAX +129 2Y=Q MAXC +81 2YQB MAXCD +2037 2^=2 PLINK1 2^PL PAIR SIMULPTR,1 329= Z1SIMULPTR 32NW LDX 3 APETADDR(2) [PTR TO APET 338G LOCKCA 3,ACAP(2) 33N6 LDX 1 ACAP(2) [CA IN OBJ.PROG. 347Q LDN 2 ACA1(2) [CA IN OLPA 34MB LDN 7 4 3572 FOUTMOVE 3,1,2,7,HLOCK1 [MOVE CA TO OLPA 35LL LDX 1 FX1 366= LDX 2 FX2 36KW STOZ ACA2(2) [ZEROISE REPLY WORD 375G LDX 3 ACA3(2) [PERI COUNT 37K6 BZE 3 WC 384Q LDEX 0 AWORK2(2) 38JB BNZ 0 RCARD [J SIMULATE CR 3942 Z5 BXGE 3 MAX(1),WC [CHECK COUNT<129 39HL SLC 3 12 3=3= ANDX 5 MASK5(1) 3=GW ORX 5 3 [NEW N IN X5 3?2G ANDX 6 MASK5(1) [D=0 3?G6 LDX 3 ACA1(2) [PERI MODE 3?^Q ANDN 3 #7777 3#FB BZE 3 SHIFT [J IF #00 3#^2 BXE 3 RNO1(1),SHIFT [ #02 3*DL BXE 3 RNO2(1),RO1 [ #04 3*Y= BXE 3 RNO3(1),RO2 [ #06 3BCW BXE 3 RAC1(1),RC1 [ #20 3BXG BXE 3 RAC2(1),RC2 [ #22 3CC6 BXE 3 RAC3(1),RC3 [ #24 3CWQ BXE 3 RAC4(1),RC4 [ #26 3DBB BXE 3 RGS1(1),SHIFT [ #10 3DW2 BXE 3 RGS2(1),SHIFT [ #12 3F*L BRN MOPER 3FT= RCARD BXGE 3 MAXCD(1),WC [CHECK COUNT<2037 3G#W SLC 3 12 3GSG ANDN 5 #7777 [ZEROISE N IN X5 3H#6 ORX 5 3 [STORE NEW N IN X5 3HRQ ANDN 6 #7777 [D=0 3J?B BRN SHCR 3JR2 RO1 LDN 3 1 3K=L BRN SHIFT 3KQ= RO2 LDN 3 3 3L9W BRN SHIFT 3LPG RC1 LDN 3 4 3M96 BRN SHIFT 3MNQ RC2 LDN 3 6 3N8B BRN SHIFT 3NN2 RC3 LDN 3 5 3P7L BRN SHIFT 3PM= RC4 LDN 3 7 3Q6W SHIFT SRC 3 4 3QLG ANDX 6 MASK10(1) [ERASE PREVIOUS MODE 3R66 ORX 6 3 [STORE NEW MODE 3RKQ SHCR LDX 3 ACA3(2) [PERI COUNT 3S5B LDX 1 ACA4(2) [BUFFER ADDRESS 3SK2 ADN 3 3 3T4L SRL 3 2 3TJ= CHECKA 1,3,RESV,APETADDR(2),W,Z4,HLOCK2 3W3W Z4 LDX 0 ALIMEY(2) [CHECK IF FIRST PERI 3WHG LDX 4 AWORK1(2) [LAST LOADED CHAR. 3X36 BZE 0 PEFI [J IF IT IS 3XGQ LDX 1 5 3Y2B ANDN 1 #7777 [PICK UP R 3YG2 LDX 2 6 3Y^L ANDN 2 #7777 [PICK UP C 3^F= BXE 1 2,SGE [J IF END OF RECORD 3^YW BACKSPACE [SET POINTER 42DG STEP [TO RECORD 42Y6 SGE LDX 1 5 43CQ SLC 1 2 [PICK UP MODE OF RECORD 43XB BPZ 1 TESMO [J IF NORMAL OR ALCHAR 44C2 SLC 1 1 44WL BNG 1 PG [J IF BLANKS 45B= BRN PH [J IF GRAPHIC 45TW TESMO LDX 1 FX1 46*G BNG 6 PD [J IF READ IN GRAPHIC SET 46T6 SLC 6 3 [PICK UP SHIFT 47#Q BNG 6 PRSH [J IF READ IN PREVIOUS SHIFT 47SB SRC 6 3 [BITS OF X6 INTO NORMAL POSITION 48#2 ANDX 5 MASK2(1) [E=ALPHA 48RL BXE 4 SDEL(1),SONE [J IF LOADED CHAR.=DELTA 49?= BXE 4 SALP(1),SONE [ =ALPHA 49QW BXU 4 SBET(1),PA [ =BETA 4==G SONE ADN 6 1 [C=C+1,READER /2 4=Q6 BRN PA 4?9Q PRSH SRC 6 3 [BITS OF X6 INTO NORMAL POSITION 4?PB BXE 4 SDEL(1),PB [J IF LOADED CHAR.=DELTA 4#92 BRN PA 4#NL PEFI LDN 0 1 4*8= STO 0 ALIMEY(2) [SWITCH FOR FIRST PERI 4*MW LDX 1 FX1 4B7G ANDX 5 MASK12(1) [E=S=ALPHA,R=0 4BM6 ANDX 6 MASK13(1) [C=0 4C6Q BNG 6 PD [J IF READ GRAPHIC SET MODE 4CLB # 4D62 # RECORD IN A SHIFT MODE. 4DKL # 4F5= PA 4FJW CALL 1 SRGNC [GET FIRST CHARACTER 4G4G LDX 1 FX1 4GJ6 BXE 4 SALP(1),SA [TEST LOADED CHAR.,J IF IT IS ALPHA 4H3Q BXE 4 SBET(1),SB [J IF IT IS BETA 4HHB BXE 4 SDEL(1),SD [J IF IT IS DELTA 4J32 LDX 0 5 4JGL SLC 0 1 [PICK UP S FROM X5 4K2= BNG 5 TEST 4KFW BNG 0 UNEQ [J IF E=ALPHA,S=BETA 4K^G BRN SAME [J IF E=S=ALPHA 4LF6 TEST BNG 0 SAME [J IF E=S=BETA 4LYQ ANDX 5 MASK2(1) [E=BETA,S=ALPHA,MAKE E=S 4MDB SMO FX2 4MY2 STO 4 AWORK1 [STORE LOADED CHAR 4NCL LDX 4 SALP(1) [LOAD ALPHA 4NX= BRN TCH 4PBW UNEQ ORX 5 MASK9(1) [MAKE E=S 4PWG SMO FX2 4QB6 STO 4 AWORK1 [STORE LOADED CHAR 4QTQ LDX 4 SBET(1) [LOAD BETA 4R*B TCH CALL 0 SRTCH [TRANSFER SHIFT CHARACTER 4RT2 SMO FX2 4S#L LDX 4 AWORK1 [RELOAD CHAR 4SS= SAME CALL 0 SRTCH [TRANSFER CHARACTER 4T?W BRN PA 4TRG SA ANDX 5 MASK6(1) [S=ALPHA 4W?6 BRN PA 4WQQ SB ORX 5 MASK7(1) [S=BETA 4X=B BRN PA 4XQ2 SD LDX 2 6 4Y9L SLC 2 1 [TEST IF READ ALL CHARACTERS 4YP= BNG 2 YES [J IF IT IS 4^8W LDX 2 6 [PICK UP C 4^NG ANDN 2 #7777 5286 SRC 2 2 [X2 AS CHARACTER COUNTER-MODIFIER 52MQ SMO 3 537B LDCH 0 2(2) [LOAD NEXT CHARACTER 53M2 LDX 1 FX1 546L BXE 0 SDLT(1),SIG [TEST IF IT IS DELETE 54L= BXE 0 SROT(1),SIG [OR RUN-OUT 555W YES CALL 0 SRTCH [TRANSFER DELTA SHIFT 55KG PB CALL 1 SRGNC [GET NEXT CHARACTER 5656 CALL 0 SRTCH [TRANSFER CHARACTER 56JQ LDX 0 6 574B SLC 0 2 [TEST IF READ TO STOP CHARACTER 57J2 BNG 0 TOST [J IF IT IS 583L BRN PA 58H= SIG ADN 6 1 [C=C+1 592W BRN PA 59GG TOST BXE 4 RAC3(1),QUIT [J IF LOADED CHAR.=TC4 5=26 BXL 4 SSTP3(1),PA [J IF NOT STOP CHAR. 5=FQ BXGE 4 SSTP4(1),PA [J IF NOT STOP CHAR. 5=^B QUIT LDX 1 FX1 5?F2 SMO FX2 5?YL LDEX 2 AWORK2 5#D= BNZ 2 SETCR [J IF *CR 5#XW LDX 3 5 5*CG ANDX 3 MASK1(1) [PICK UP N 5*X6 LDX 2 6 5BBQ ANDX 2 MASK1(1) [PICK UP D 5BWB SBX 3 2 5CB2 SRL 3 12 [REMAINDER COUNT 5CTL BRN REPWO 5D*= SETCR 5DSW SET2 LDX 2 6 5F#G SRL 2 14 [POINTER IN BUFFER 5FS6 SMO FX2 5G?Q LDX 3 ACA4 [BUFFER ADDRESS 5GRB ADX 3 2 [ADDRESS OF LAST TRANSFERRED WORD 5H?2 REPWO LDX 2 FX2 5HQL STO 4 AWORK1(2) [STORE LOADED CHAR 5J== OLPREP 5JPW LDX 1 APETADDR(2) [PTR TO APET 5K9G LDX 2 ACAP(2) [PTR TO PERI CA 5KP6 ADN 2 1 5L8Q FADDRESS 1,2,HLOCK1 5LNB STO 3 0(2) [REPLY WORD 5M82 OEND 5MML LDX 2 FX2 5N7= JNOTFDRM XNDRM [J IF NOT DRM 5NLW TICKLES 2,3 5P6G XNDRM LDX 2 APETADDR(2) 5PL6 OLPFIN 2 5Q5Q BRN K1SIMULPTR 5QKB # 5R52 # PERI IN GRAPHIC SET MODES(#10,#12), 5RJL # RECORD IN A SHIFT MODE. 5S4= # 5SHW PD 5T3G CALL 1 SRGNC [GET NEXT CHARACTER 5TH6 LDX 1 FX1 5W2Q SMO FX2 5WGB LDEX 0 AWORK2 5X22 BNZ 0 READC [J SIMULATE CR 5XFL ANDX 5 MASK2(1) [E=ALPHA 5X^= BXE 4 SALP(1),SAL [J IF LOADED CHAR.IS ALPHA 5YDW BXE 4 SBET(1),SBE [J IF LOADED CHAR.IS BETA 5YYG XSDE BXE 4 SDEL(1),SDE [J IF LOADED CHAR.IS DELTA 5^D6 CALL 0 SRTCH [TRANSFER CHARACTER 5^XQ BRN PD 62CB READC BXE 4 SALP(1),PD [J IF LOAD.CHAR.IS ALPHA 62X2 BXE 4 SBET(1),PD [J IF LOAD.CHAR.IS BETA 63BL BRN XSDE 63W= SAL ANDX 5 MASK6(1) [S=ALPHA 64*W BRN PD 64TG SBE LDX 0 MASK9(1) 65*6 SRC 0 1 [B1=1 65SQ ORX 5 0 [S=BETA 66#B BRN PD 66S2 SDE CALL 1 SRGNC [NEXT CHARACTER 67?L LDX 1 FX1 67R= BXL 4 ST(1),STOGR [J,IT COULD BE A STOP CHAR 68=W ADN 4 4 68QG BXGE 4 SALP(1),NATCH [J IF A NATIONAL CHAR 69=6 ADN 4 4 69PQ TRNAT CALL 0 SRTCH [TRANSFER CHAR 6=9B BRN PD 6=P2 NATCH BXGE 4 SUNA(1),PD [JIF NOT A NATIONAL CHAR 6?8L BRN TRNAT 6?N= STOGR SBN 4 #21 6#7W BNG 4 PD [J IF NOT A STOP 6#MG SBN 4 #17 6*76 BPZ 4 PD [IGNORE IF NOT A STOP 6*LQ ADN 4 #40 [RESTORE CHAR 6B6B SMO FX2 6BL2 LDEX 0 AWORK2 6C5L BNZ 0 TCOUN [SPACEFILL IF CR 6CK= BRN QUIT 6D4W # 6DJG # RECORD IN GRAPHIC MODE. 6F46 # 6FHQ PH 6G3B SMO FX1 6GH2 ANDX 5 MASK8 [E=S=ALPHA 6H2L BNG 6 RGM [J IF READ IN GRAPHIC 6HG= PE CALL 1 SRGNC [GET CHARACTER 6H^W SREXIT 6JFG LDX 1 FX1 6J^6 BXL 4 SALP(1),TRACH [J IF IT IS NOT A FUNY CHAR. 6KDQ SMO FX2 6KYB STO 4 AWORK1 [STORE SHIFT 6LD2 LDN 4 #76 [DELTA 6LXL CALL 0 SRTCH [TRANSFER DELTA 6MC= SMO FX2 6MWW LDX 4 AWORK1 [RESTORE SHIFT 6NBG SBN 4 #10 [CONVERT SHIFT 6NW6 TRACH CALL 0 SRTCH [TRANSFER CHARACTER 6P*Q BRN PE 6PTB RGM CALL 1 SRGNC 6Q*2 CALL 0 SRTCH [TRANSFER CHAR 6QSL BRN RGM 6R#= # 6RRW # TP FILE WRITTEN IN MODE #20(PUNCH BLANKS). 6S?G # 6SR6 PG 6T=Q SLC 6 1 [TEST MODE OF PERI 6TQB BNG 6 MACH [J IF READ ALL CHARS. 6W=2 SRC 6 1 [BITS OF X6 INTO NORMAL POSITIONS 6WPL LDX 1 FX1 6X9= ANDX 5 MASK13(1) [R=0 6XNW ANDX 6 MASK13(1) [C=0 6Y8G NEXRE CALL 1 SRGNC [BRING DOWN NEXT RECORD 6YN6 BRN PG 6^7Q MACH SRC 6 1 [BITS OF X6 INTO NORMAL POSITION 6^MB SMO FX1 7272 ANDX 5 MASK8 [E=S=ALPHA 72LL PI LDX 0 5 736= ANDN 0 #7777 [R 73KW LDX 1 6 745G ANDN 1 #7777 [C 74K6 BXE 1 0,NEXRE [J IF R=C 754Q LDN 4 #76 [^ 75JB ADN 6 1 [C=C+1 7642 CALL 0 SRTCH [TRANSFER ^ 76HL LDX 0 5 773= ANDN 0 #7777 [R 77GW LDX 1 6 782G ANDN 1 #7777 [C 78G6 BXE 1 0,NEXRE [J IF R=C 78^Q LDN 4 #20 [SPACE 79FB ADN 6 1 [C=C+1 79^2 CALL 0 SRTCH [TRANSFER SPACE 7=DL BRN PI 7=Y= # 7?CW MOPER CALL 4 SRER 7?XG ILLEGAL MODE,,3 [PRINT MESSAGE AND MEMBER NUMBER 7#C6 RESV 7#WQ CALL 4 SRER 7*BB ILLEGAL RESVIOL,,3 [PRINT MESSAGE AND MEMBER NUMBER 7*W2 WC 7B*L CALL 4 SRER 7BT= ILLEGAL COUNT,,3 [PRINT MESSAGE AND MEMBER NUMBER 7C#W NORE 7CSG COMPQU NORE1 7D#6 BRN K1SIMULPTR 7DRQ NORE1 7F?B LDX 2 FX2 7FR2 LDX 0 ACA1(2) [TYPE/MODE 7G=L SRL 0 6 [IGNORE A MAID MODE 7GQ= ANDN 0 #777 7H9W SBN 0 #300 [TEST IF MONITORING MODE #30000 7HPG BNZ 0 XBACK [J IF NOT 7J96 LDX 0 5 [PERI COUNT 7JNQ SBX 0 6 [SUBTRACT NO. OF TRANSFERED CHARS. 7K8B SRL 0 12 7KN2 ANDN 0 #377 [REMAINDER COUNT 7L7L LDCT 7 #50 7LM= ORX 7 0 [SET B3 & B5 7M6W LDX 1 APETADDR(2) 7MLG LDX 3 ACAP(2) [PTR TO PERI CA 7N66 ADN 3 1 7NKQ FADDRESS 1,3,HLOCK1 7P5B STO 7 0(3) [REPLY WORD 7PK2 BACKSPACE 7Q4L BRN OEND 7QJ= XBACK BACKSPACE 7R3W LDX 7 FTYPNO(2) [PERIPHERAL TYPE/NO 7RHG CALL 4 SRER 7S36 OUTPACK 7,1,PERINAME 7SGQ ILLEGAL FILE,,3 [PRINT MESSAGE AND MEMBER NUMBER 7T2B SRER 7TG2 SBX 4 FX1 [SUBTRACT FX1 FROM LINK 7T^L LDX 2 FX2 7WF= LDX 3 AMEMNO(2) [MEMBER NO. 7WYW TOPCA CALL 0 SRPCA [CHANGE TO PCA 7XDG UNPLUG [UNPLUGS OBJECT PROGRAM FROM EXECUTIV 7XY6 ADX 4 1 [ADD NEW FX1 TO LINK 7YCQ EXIT 4 0 7YXB WAIT 7^C2 LDN 3 1 7^WL WAIT2 82B= FDRMTEST STEPWAIT,NODRM [TEST FOR DRM 82TW BNZ 3 WAIT3 83*G LDCT 3 #410 [REJECTED INOPERABLE 83T6 BRN OLPREP 84#Q WAIT3 84SB LDCT 3 #420 [REPLY WORD 85#2 BRN OLPREP 85RL NODRM 86?= BZE 3 NORE [J IF NO RECORDS 86QW CALL 0 SRPCA [CHANGG TO PCA 87=G ACROSS OLPODD,3 87Q6 # 889Q SRPCA [ROUTINE TO DUMP X3-X7 & CHANGE TO PC 88PB LDX 1 APETADDR(2) 8992 STO 0 AWORK1(1) [STORE LINK IN PCA 89NL LDN 1 3 8=8= ADN 2 ACC3 8=MW MOVE 1 5 [DUMP X3-X7 8?7G LDX 1 FX1 8?M6 TOPCA1 PLINK1(1) [CHANGE TO PCA 8#6Q LDX 0 AWORK1(2) [RESTORE LINK 8#LB EXIT 0 0 8*62 # 8*KL # INSERT N/L IF RECORD IN GRAPHIC 8B5= # 8BJW NLINSERT 8C4G LDX 0 5 8CJ6 ANDN 0 #7777 [R 8D3Q BZE 0 NEWRC [R=0 8DHB SMO FX1 8F32 ANDX 5 MASK13 [R=0 8FGL NLINS SMO FX2 8G2= LDEX 2 AWORK2 8GFW BNZ 2 TCOUN [J IF CR 8G^G BNG 6 TESTO [J IF PERI IN GRAPHIC 8HF6 LDN 4 #76 [^ 8HYQ CALL 0 SRTCH 8JDB LDN 4 #32 [* 8JY2 CALL 0 SRTCH 8KCL LDN 7 SREXIT(1) [LINK 8KX= TESTO LDX 0 6 8LBW SLL 0 2 8LWG BNG 0 QUIT [J IF READ TO STOP 8MB6 LDX 1 7 [RESTORE LINK FOR SRGNC 8MTQ BRN NEWRC [J IF READ N CHARS 8N*B # 8NT2 # SPACE-FILLING IF SIMULATION OF CR 8P#L # 8PS= SPACEFILL 8Q?W LDN 4 #20 8QRG PUTSP CALL 0 SRTCH 8R?6 BRN PUTSP 8RQQ # 8S=B TCOUN LDX 2 5 8SQ2 SRL 2 12 [PERI COUNT 8T9L LDX 1 FX1 8TP= ANDX 5 MASK13(1) [R=0 8W8W BXL 2 MAXC(1),SPACEFILL [J IF PERI COUNT<80 8WNG LDX 0 6 8X86 SRL 0 12 [D 8XMQ LDN 2 80 8Y7B BXGE 0 2,TWORD [J IF PERI COUNT>80 8YM2 LDCT 5 #12 [N=80 8^6L BRN SPACEFILL 8^L= TWORD LDX 2 6 925W ANDX 2 MASK14(1) [TEST IF WHOLE LAST WORD HAS BEEN TRA 92KG BZE 2 SET2 [J IF YES 9356 LDX 4 #20 [LOAD SPACE 93JQ CALL 0 SRTCH [TRANSFER SPACE 944B BRN TWORD [J TO TEST 94J2 # 953L # SUBROUTINE: GET NEXT CHARACTER 95H= # 962W # X0 UNDEFINED 96GG # X1 LINK 9726 # X2 UNDEFINED 97FQ # X3 POINTER TO RECORD 97^B # X4 LOADED CHARACTER 98F2 # X5 B0 =E=CURRENT SHIFT IN RECORD 98YL # B1 =S=CURRENT SHIFT ASSUMED BY READER 99D= # B2-3 =RECD.MODE=0=SHIFT MODE 99XW # 2=GRAPHIC 9=CG # 3=PUNCH BLANKS 9=X6 # B4-11 =N=COUNT IN PERI 9?BQ # B12-23=R=SIZE OF RECORD 9?WB # X6 B0-3 =MODE OF PERI 9#B2 # B4-11 =D=CHAR.POINTER TO NEXT CHAR.IN BUFFER 9#TL # B12-23=C=CHAR.POINTER TO NEXT CHAR.IN RECORD 9**= # 9*SW SRGNC 9B#G LDX 0 5 [PICK UP R 9BS6 ANDN 0 #7777 9C?Q LDX 2 6 [PICK UP C 9CRB ANDN 2 #7777 9D?2 STO 1 7 [STORE LINK 9DQL BXL 2 0,R6 [J IF C