ACCOUNT * /--- FILE TYPE = E * /--- BLOCK IDENT 00 000 77/04/27 19.49 IDENT ACCOUNT TITLE LESSON USAGE ACCOUNTING * CST * EXT ECSPRTY EXT CDD (IN PSYS) EXT ACCON (IN PINST) * * * /--- BLOCK COMMENTS 00 000 83/06/22 07.36 TITLE COMMENTS * * DON'7T FORGET TO DOCUMENT CHANGES TO THE MESSAGES'. * THE BILLING FOLKS NEED TO BE NOTIFIED WELL IN AD- * VANCE SO THAT THEY CAN CHANGE THEIR PROGRAMS. SEE * PLATO FILE ',SUPDOC',, SECTION 8. ALSO, BE SURE TO * ADD THE SAME INFORMATION TO ',OPGUIDE',. * * * FORMAT OF STUDENT BANK WORD *TACCNT* - * * 1ST 1 BITS = ACCOUNTING ON/OFF FLAG * NEXT 1 = COMPLETION CLOCK RUNNING FLAG * NEXT 1 = LESSON COMPLETE ON ENTRY FLAG * NEXT 1 = ACCOUNT USER TOTAL INCREMENTED FLAG * NEXT 17 = UNUSED * NEXT 9 = LOGICAL SITE NUMBER * NEXT 15 = LESSON ACCOUNT NUMBER * NEXT 15 = USER ACCOUNT NUMBER * * * * FORMAT OF STUDENT RECORD WORD *TACCNT1* - * * 1ST 51 BITS = UNUSED * NEXT 9 = CUMULATIVE TIME TO COMPLETE LESSON * * /--- BLOCK -ACCIN- 00 000 80/06/17 15.54 TITLE -ACCIN- INITIALIZE LESSON USE INFO * * * * -ACCIN- * INITIALIZE LESSON USE ACCOUNTING INFO * * ENTRY ACCIN ACCI90 SA1 TACCNT MARK USAGE ACCOUNTING INACTIVE SA2 TACCMSK MX6 1 BX1 X1*X2 CLEAR APPROPRIATE FIELDS BX6 X1+X6 SA6 A1 ACCIN PS ENTRY/EXIT * TEST IF USAGE ACCOUNTING ACTIVE FOR THIS LESSON. SA1 LESSCM+LSTOUSE MX7 -15 LX1 59-UACCF PL X1,ACCI90 IF ACCOUNTING NOT ACTIVE * * OBTAIN LESSON AND USER ACCOUNT NUMBERS * SA1 TACCNT LOAD STUDENT BANK ACCOUNT WORD SA2 TACCMSK BX6 X2*X1 CLEAR OUT APPROPRIATE AREAS SA1 LESSCM+LACCNT BX1 -X7*X1 GET LESSON ACCOUNT NUMBER LX1 15 BX6 X1+X6 ATTACH LESSON ACCOUNT NUM * * OBTAIN LOGICAL SITE NUMBER * SA1 AALLOT SA2 STATION INDEX INTO *XALLOT* BUFFER IX0 X1+X2 RX1 X0 (-RXX- 1 WD READ, MAY CHG *A1*) LX1 15 BX1 -X7*X1 MASK OFF LOGICAL SITE INDEX PX1 X1 NX1 X1 CONVERT TO FLOATING POINT SX2 SITEDIM PX2 X2 NX2 X2 FX1 X1/X2 COMPUTE LOGICAL SITE NUMBER UX1 X1,B1 LX1 X1,B1 CONVERT BACK TO INTEGER MX0 -9 BX1 -X0*X1 LX1 15+15 POSITION LOGICAL SITE NUMBER BX6 X1+X6 * * /--- BLOCK -ACCIN- 00 000 80/06/17 15.55 * * OBTAIN LESSON COMPLETION INFO * MX0 5 SA2 TBSCORE GET LESSON COMPLETED FLAG BX2 X0*X2 LX2 5 POSITION COMPLETION FLAG SX1 X2-1 1 = LESSON COMPLETED MX2 0 X2 = COMPLETE ON ENTRY FLAG + NZ X1,*+1 CHECK IF LESSON COMPLETED MX2 1 + LX2 60-2 POSITION COMPLETION BIT BX6 X2+X6 * * CHECK IF LESSON COMPLETION CLOCK SHOULD BE RUNNING * NZ X2,ACCI60 JUMP IF LESSON COMPLETED MX0 -12 SA1 TUNIT CHECK IF A RESTART UNIT SET BX1 X0*X1 ZR X1,ACCI40 BX4 X6 SAVE X6 CALL RESTCK,TBLESAC BX0 X6 MOVE RETURN VALUE TO X0 BX6 X4 RESTORE X6 ZR X0,ACCI50 IF ENTERING RESTART LESSON CALL INROUTE NG X1,ACCI60 IF ENTERING ROUTER * /--- BLOCK -ACCIN- 00 000 80/01/25 21.25 * ACCI40 MX7 0 CLEAR COMPLETION CLOCK SA7 TACCNT1 * ACCI50 MX1 1 SET BIT TO MARK CLOCK RUNNING LX1 60-1 BX6 X1+X6 * ACCI60 SA6 TACCNT STORE ACCOUNTING WORD EQ ACCIN * /--- BLOCK -ACCOUT- 00 000 85/04/03 10.35 TITLE -ACCOUT- OUTPUT LESSON USE INFO * * * -ACCOUT- * * OUTPUT LESSON USAGE RECORD TO NOS ACCOUNT FILE * * EXIT PL STSN LACCN/LESSONNAME/MIN CP/LACBITS * STSN = STATION NUMBER * LACCN = LESSON ACCOUNT NUMBER * LESSONNAME = LESSON NAME * MIN = NUMBER OF MINUTES IN LESSON * CP = CPU USAGE * 4 * LACBITS = LESSON ACCESS CLASS BITS * * CALLS CDD * ENTRY ACCOUT ACCOUT EQ * SA1 ACCON CHECK IF NOS ACCOUNTING ON PL X1,ACCO90 IF NOT ON SA1 TACCNT X1 = STUDENT ACCOUNTING WORD NG X1,ACCO90 SB1 1 SA1 STATION STATION NUMBER AND ID RJ CDD MX0 -24 BX7 -X0*X6 SX1 2RPL LX1 48 LX7 4*6 BX7 X1+X7 SA7 INFO SA1 TACCNT X1 = STUDENT ACCOUNTING WORD MX6 -15 AX1 15 POSITION LESSON ACCOUNT NUMBER BX1 -X6*X1 RJ CDD BX6 -X0*X6 SA1 INFO ADD ACCOUNT NUM TO FIRST WORD BX6 X6+X1 SA6 A1 SA1 TBLESSN SET LESSON NAME CALL LJUST,0,1R BX6 X1 SA6 INFO+1 SB1 1 * * COMPUTE ELAPSED TIME IN LESSON IN MINUTES * SA2 SYSCLOK SA3 TTIMARK COMPUTE ELAPSED TIME IN LESSON IX2 X2-X3 PX2 X2 CONVERT TO FLOATING POINT NX2 X2 SA3 =60000.0 FX3 X2/X3 CONVERT ELAPSED TIME TO MINUTES SA4 =0.501 FX4 X3-X4 CHECK IF MORE THAN 1/2 MINUTE NG X4,ACCO90 SA4 =0.5 FX1 X3+X4 ROUND NX1 X1 UX1 X1,B2 LX1 X1,B2 CONVERT BACK TO INTEGER MX0 -9 BX4 X0*X1 + ZR X4,*+1 CHECK IF WITHIN BOUNDS SX1 777B (ABOUT 8.5 HOURS) + BX5 X1 X5 = ELAPSED TIME IN MINUTES RJ CDD MX0 30 BX7 -X0*X6 LX7 30 SA7 INFO+2 * /--- BLOCK -ACCOUT- 00 000 85/04/03 10.33 * * UPDATE COMPLETION CLOCK IF NECESSARY * SA1 TACCNT STUDENT ACCOUNTING WORD LX1 1 POSITION COMPLETION CLOCK FLAG PL X1,ACCO40 IF CLOCK NOT RUNNING MX0 -9 SA1 TACCNT1 LESSON COMPLETION TIME BX7 -X0*X1 BX1 X0*X1 IX7 X7+X5 ADD CURRENT TIME IN LESSON BX7 -X0*X7 BX7 X7+X1 SA7 A1 * /--- BLOCK -ACCOUT- 00 000 85/04/03 10.37 * * COMPUTE CPU USAGE AS 4*(MSEC/SEC) * ACCO40 MX0 -30 SA3 TTIMDTA LOAD INITIAL FORMTIM/TIMDATA BX7 -X0*X3 MASK OFF INITIAL *TIMDATA* AX3 30 SA4 TIMDATA IX7 X4-X7 COMPUTE EXECUTOR CPU TOTAL SA4 FORMTIM IX4 X4-X3 COMPUTE FORMATER CPU TOTAL IX4 X4+X7 PX4 X4 CONVERT TO FLOATING POINT NX4 X4 SX2 60 DX2 X2*X5 X2 = ELAPSED TIME IN SECONDS PX2 X2 CONVERT ELAPSED TIME TO FLOATING NX2 X2 FX2 X4/X2 (MILLISECONDS CPU)/(SECONDS) UX2 X2,B2 LX2 2 MULTIPLY BY 4 LX1 X2,B2 CONVERT BACK TO INTEGER MX0 -12 BX3 X0*X1 CHECK IF WITHIN BOUNDS + ZR X3,*+1 SX1 7777B (1023 MSECS/SEC) + RJ CDD MX0 -30 BX7 -X0*X6 SA1 INFO+2 MERGE WITH ELAPSED TIME BX7 X7+X1 SA7 A1 * * ADD LIBRARY INFORMATION * SA1 TBTAB STORED HERE BY SIGNO MX0 30 ONLY USE LIBRARY BITS BX1 X1*X0 SB2 10 NUMBER OF LOOPS MX0 -3 ONLY USE BOTTOM 3 BITS SX4 33B 33B = DISPLAY CODE FOR 0 SX3 B0 INITIALIZE TO ZERO * ACCOLP BSS 0 LOOP FOR DISPLAY CHARS SB2 B2-1 DECREMENT COUNTER LX3 6 SHIFT OVER 1 DISPLAY CODE LX1 3 SHIFT OVER 1 OCTAL DIGIT BX2 -X0*X1 MASK OFF BOTTOM 3 BITS BX3 X3+X2 ADD THIS CHAR TO OTHERS IX3 X3+X4 ADD IN 0 CHARACTER NE B2,ACCOLP GO BACK TO TOP IF NOT DONE BX6 X3 SA6 INFO+3 SAVE THIS AND THE EOL MX6 0 SA6 INFO+4 STORE IN MESSAGE CALL S=LOG,INFO,5 * ACCO90 SA1 TACCNT CLEAR OUT ALL BUT USER ACCOUNT SA2 TACCMSK AND USER COUNT FLAG BX6 X2*X1 SA6 A1 EQ ACCOUT * /--- BLOCK -ACCINC- 00 000 77/10/30 12.20 TITLE -ACCINC- ALTER ACCOUNT USER COUNT * * * * -ACCINC- INCREMENT/DECREMENT USER COUNT * * ON ENTRY - B1 = +1 OR -1 FOR INCREMENT/DECREMENT * AS OF 7/80, THE INCREMENTING OF THE USER COUNT * IS DONE BY LESSON PLATO AND THE DECREMENTING IS * DONE BY THIS SUBROUTINE WHICH IS CALLED FROM * THE -LOGIC- COMMAND. * * ENTRY ACCINC ACCINC EQ * MX0 -15 SA4 TACCNT LOAD STUDENT BANK WORD BX1 -X0*X4 MASK OFF ACCOUNT NUMBER ZR X1,ACCINC * SX0 X1-ACCNMAX CHECK IF LEGAL ACCOUNT NUMBER SX0 ACCNMAX CHECK IF LEGAL ACCOUNT NUMBER IX0 X1-X0 PL X0,ACCINC SA2 AACCARN ADDRESS OF ACCESS RIGHT TABLE IX0 X1+X2 RX1 X0 (-RXX- 1 WD READ, MAY CHG *A1*) MX2 -12 BX3 -X2*X1 MASK OFF NUMBER ACCESS RIGHTS MX6 1 FORM MASK FOR INCREMENT FLAG * SHIFT COUNT ALSO USED AS CONSTANT IN UNIT * ACCCHK OF LESSON PLATO. LX6 41+15+1 LX1 60-12 POSITION USER COUNT BX3 -X2*X1 BX1 X2*X1 CLEAR OUT OLD COUNT NG B1,AINC10 JUMP IF DECREMENT BX7 X6*X4 NZ X7,ACCINC CHECK IF ALREADY INCREMENTED BX6 X4+X6 SET INCREMENT BIT SA6 A4 SX3 X3+1 INCREMENT COUNT BX6 X1+X3 LX6 12 RE-POSITION WORD EQ AINC20 * AINC10 BX7 X6*X4 CHECK IF EVER INCREMENTED ZR X7,ACCINC BX6 -X6*X4 CLEAR INCREMENT BIT SA6 A4 SX3 X3-1 DECREMENT COUNT + PL X3,*+1 SX3 0 PROTECT AGAINST 0 + BX6 X1+X3 ATTACH NEW COUNT LX6 12 RE-POSITION WORD * AINC20 WX6 X0 (-WXX- 1 WD WRITE, MAY CHG *A6*) EQ ACCINC * * * TACCMSK VFD 3/0,1/1,41/0,15/77777B * * TITLE -ACCUSE- OUTPUT -USE- FILE ACCOUNTING ACCUSE SPACE 5,11 *** ACCUSE - OUTPUT -USE- FILE ACCOUNTING * * ISSUE DAYFILE MESSAGES FOR UN-PUBLISHED LESSONS * THAT USE PUBLISHED LESSONS. * * ACCOUNT FILE MESSAGE FORMAT - * * PU T XXXXXXXXXXYYYYYYYYYY * * /--- BLOCK -ACCINC- 00 000 77/10/30 12.20 * WHERE - T - MESSAGE LINK (P (FIRST), C(CONTINUE)) * X - LESSON NAME * Y - PUBLISHED LESSON NAME * * ENTRY - (B1) = POINTER TO USE FILE LIST ENTRY ACCUSE ACCUSE PS SA1 ACCON PL X1,ACCUSE IF NOS ACCOUNTING IS OFF SA1 TBLESSN CHECK FOR PUBLISHED LESSON SX2 1R0 LX2 -6 MX0 6 BX6 X1-X2 BX6 X0*X6 ZR X6,ACCUSE IF LESSON IS PUBLISHED SB7 B1 (B7) = POINTER TO USE INFO CALL LJUST,B0,1R BX6 X1 SA6 INFO+1 SET LESSON NAME SA2 B7 LX2 2 SB6 X2 (B6) = USE FILE INDEX SA3 ACUA SET MESSAGE HEADER BX6 X3 BX7 X7-X7 SA6 INFO SA7 INFO+3 SET MESSAGE TERMINATOR ACU1 ZR B6,ACCUSE IF NO MORE -USE-D FILES SB6 B6-4 UPDATE COUNT SB1 B6+1+1 INDEX TO -USE- FILE NAME SA1 B7+B1 (X1) = USE-D FILE NAME MX0 6 SX2 1R0 LX2 -6 BX6 X1-X2 BX6 X0*X6 NZ X6,ACU1 IF USE-D FILE IS NOT PUBLISHED CALL LJUST,B0,1R BX6 X1 SA6 INFO+2 CALL S=LOG,INFO,5 ISSUE ACCOUNT FILE MESSAGE SA1 ACUB SET CONTINUATION HEADER BX6 X1 SA6 INFO EQ ACU1 PROCESS NEXT USE FILE ACUA DATA 10HPU P ACUB DATA 10HPU C END