; > Paginate
PRTPTR RN R7
PRTEND RN R8
PRINT
 [ RELEASE=0
 BL DISPC
 BL PROMPT
 = "Help on GCAL, print As is or via GCAL?",0
PRINT0 SWI READC
 BCS ESCAPE
 BIC R2,R0,#&20
 TEQ R2,#"H"
 BEQ PRINTH
 TEQ R2,#"A"
 BEQ PRINTMAIN
 TEQ R2,#"G"
 BNE PRINT0
 LDRB R0,[AP,#MODIFY]
 TST R0,#1
 BEQ GCALA
 BL MSG
 = "File must be 'Original' to be GCALed",0
 ALIGN
GCALA LDRB R0,[ARGP,#TASK]
 TEQ R0,#0
 BEQ GCALB
 BL MSG
 = "Cannot start up GCAL when there is a background task running",0
 ALIGN
GCALB MOV R0,#0
 MOV R1,#0
 MOV R2,#0
 MOV R3,#2
 MOV R4,#0
 MOV R5,#0
 MOV R6,#0
 MOV R7,#0
 SWI SETENV
 ADD R3,ARGP,#MSTACK
 STMIA R3,{R0,R1,R2,R4,R5,R6,R7}
 MOV R0,#1
 STRB R0,[ARGP,#ERRCTL]
 BL INITUS
 SUB R0,SP,#256
 LDR R1,GCALNAME
 STR R1,[R0]
 MOV R1,#" "
 STR R1,[R0,#4]
 ADD R2,R0,#5
 ADD R3,AP,#NAMBUFF
GCALPARM LDRB R4,[R3],#1
 STRB R4,[R2],#1
 TEQ R4,#CR
 BNE GCALPARM
 MOV R4,#0
 STRB R4,[R2,#-1]
 SWI NEWLINE
 SWI WRITE0
 SWI NEWLINE
 B GCALCALL
GCALNAME = "Gcal"
 ]
PRINTMAIN LDR R4,[AP,#GE]
 STMFD SP!,{R4}
 LDRB R0,[AP,#MARKS]
 TEQ R0,#0
 BEQ PRINT3
 MOV R0,#0
 STRB R0,[AP,#MARKS]
 LDR R4,[AP,#MARKTB]
 BL MARKADR
 MOV PRTEND,R4
 LDR PRTPTR,[AP,#GE]
 CMP PRTPTR,PRTEND
 MOVCS PRTPTR,R4
 LDRCS PRTEND,[AP,#GS]
 B PRINT4
PRINT3 LDR R4,[AP,#START]
 BL GPBACK
 LDR PRTPTR,[AP,#GE]
 LDR PRTEND,[AP,#END]
PRINT4 SWI WRITEI+26
 SWI WRITEI+12
 MOV R1,#0 ;enable printing
 MOV R0,#5
 SWI BYTE
 SWI BYTE
 SWI WRITEI+2
PRINTASIS LDRB R0,[PRTPTR],#1
 TEQ R0,#TERM
 SWINE WRITEC
 SWIEQ NEWLINE
 CMP PRTPTR,PRTEND
 BCC PRINTASIS
 LDMFD SP!,{R4}
 BL GPFWD
 BL VSTRNG
 = 3,15,0
 BL SCRIMI
 MOV UPDATE,#THELOT
 B EDITAL
INKEY STMFD SP!,{R0,R1,R2,R14}
INKEY0 BL TSTESC
 MOV R0,#&81
 MOV R1,#&FF
 MOV R2,#&FF
 SWI BYTE
 TEQ R1,#&FF
 BNE INKEY0
 MOV R0,#15
 SWI BYTE; X=&FF
 LDMFD SP!,{R0,R1,R2,PC}
 LNK Replace
