home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib22b.dsk / AUTOLOG.bas < prev    next >
BASIC Source File  |  2023-02-26  |  6KB  |  141 lines

  1. 10  REM  **********************
  2. 20  REM  *      AUTOLOG       *
  3. 30  REM  *  BY VICTOR FRICKE  *
  4. 40  REM  * COPYRIGHT (C) 1984 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * CONCORD, MA. 01742 *
  7. 70  REM  **********************
  8. 80  HOME : HTAB 15: INVERSE : PRINT " AUTOLOG ": NORMAL : VTAB 22: PRINT "* COPYRIGHT 1984 BY MICROSPARC, INC. *"
  9. 90  VTAB 5: PRINT "LOG 1) ON": PRINT "    2) OFF": PRINT "    ";: GET K$: PRINT :K =  INT( VAL(K$)): IF K <1  OR K >2  THEN 90
  10. 100 D$ =  CHR$(4)
  11. 110  REM  FIND AND ACTIVATE THUNDERCLOCK
  12. 120 S = 0
  13. 130  FOR SLOT = 1 TO 7
  14. 140 SA = 49152 +256 *SLOT: REM  ADDRESS OF FIRST BYTE OF ROM ON CARD LOCATED IN SLOT
  15. 150  IF ( PEEK(SA) < >8)  THEN 200
  16. 160  IF ( PEEK(SA +1) < >120)  THEN 200
  17. 170  IF ( PEEK(SA +2) < >40)  THEN 200
  18. 180 S = SLOT
  19. 190 SLOT = 8: REM  SATISFY LOOP AND EXIT WITHOUT CHANGING S
  20. 200  NEXT SLOT
  21. 210  IF S = 0  THEN  PRINT "THUNDERCLOCK CARD CAN NOT BE LOCATED.": STOP 
  22. 220  REM  ACTIVATE THUNDERCARD IN SLOT S
  23. 230  PRINT D$;"PR#"S
  24. 240  PRINT D$;"IN#"S
  25. 250  INPUT "%";T$
  26. 260  REM  FORMAT OF DATE STRING -'DWK MTH DD HH:MM:SS PM'
  27. 270  REM  RETURN CONTROL TO APPLE
  28. 280  PRINT D$;"PR#0"
  29. 290  PRINT D$;"IN#0"
  30. 300  IF K = 2  THEN 940: REM  LOGOFF
  31. 310  HOME 
  32. 320  HTAB 15: INVERSE : PRINT " AUTOLOG ": NORMAL 
  33. 330  PRINT 
  34. 340  PRINT "SESSION BEGINS: ";T$
  35. 350  PRINT 
  36. 360  PRINT "PLEASE TYPE DESCRIPTION OF SESSION"
  37. 370  PRINT "ON ONE LINE:"
  38. 380  PRINT 
  39. 390 V = 8:H = 1: GOSUB 600: REM  INPUT ANYTHING ROUTINE
  40. 400  IF  LEN(DSCR$) <39  THEN DSCR$ = DSCR$ +" ": GOTO 400: REM  PAD WITH SPACES TO MAKE DSCR$ 39 CHARACTERS
  41. 410  REM  COMBINE START TIME AND DESCRIPTION
  42. 420 REC$ =  MID$ (T$,5,9) +" " + MID$ (T$,15,2) + RIGHT$(T$,2) +DSCR$ +"    ": REM  4 SPACES BETWEEN QUOTES
  43. 430  REM  LEAVE OUT COLONS PROVIDED BY THUNDERCLOCK
  44. 440  REM  ADD DSCR$ TYPED BY USER, RETURNED BY SUBROUTINE 710
  45. 450  REM  ADD SPACES TO HOLD ELAPSED TIME
  46. 460  REM  WHICH WILL BE ADDED TO RECORD WHEN LOGOFF IS RUN
  47. 470  REM  SAVE INTO DISK FILE
  48. 480  ONERR  GOTO 840
  49. 490  PRINT D$;"OPEN LOG,L58"
  50. 500  PRINT D$;"READ LOG,R0"
  51. 510  INPUT R$: REM  RECORD 0 CONTAINS NUMBER OF RECORDS IN FILE
  52. 520  PRINT D$;"CLOSE LOG"
  53. 530  PRINT D$;"OPEN LOG,L58"
  54. 540 R =  VAL(R$)
  55. 550  PRINT D$;"WRITE LOG,R";R
  56. 560  PRINT REC$
  57. 570  PRINT D$;"CLOSE LOG"
  58. 580  HOME 
  59. 590  PRINT "LOGON COMPLETE.": END 
  60. 600  REM  INPUT SESSION DESCRIPTION
  61. 610  VTAB V: HTAB H: FOR I = 1 TO 39: PRINT ".";: NEXT I: PRINT 
  62. 620 DSCR$ = ""
  63. 630  VTAB V: HTAB H: GET Q$
  64. 640  IF  ASC(Q$) <65  OR  ASC(Q$) >90  THEN  VTAB 23: HTAB 4: INVERSE : PRINT  CHR$(7);"FIRST CHARACTER MUST BE A LETTER": NORMAL : GOTO 630
  65. 650  PRINT Q$:H = H +1:DSCR$ = DSCR$ +Q$: VTAB 23: HTAB 4: PRINT  SPC( 35)
  66. 660  VTAB V: HTAB H
  67. 670  GET Q$
  68. 680  IF Q$ =  CHR$(8)  THEN 780: REM  BACKSPACE
  69. 690  IF Q$ =  CHR$(44)  THEN 670: REM  COMMA
  70. 700  IF Q$ =  CHR$(34)  THEN 670: REM  QUOTE
  71. 710  IF Q$ =  CHR$(58)  THEN 670: REM  COLON
  72. 720  IF Q$ =  CHR$(59)  THEN 670: REM  SEMICOLON
  73. 730  IF Q$ =  CHR$(13)  THEN 810: REM  RETURN
  74. 740  IF H = 39  THEN 810
  75. 750  PRINT Q$;
  76. 760 H = H +1
  77. 770 DSCR$ = DSCR$ +Q$: GOTO 670
  78. 780 H = H -1: IF H <1  THEN H = 1: GOTO 620
  79. 790  VTAB V: HTAB H: PRINT ".";: IF H = 1  THEN 620
  80. 800 DSCR$ =  LEFT$(DSCR$,H -1): GOTO 660
  81. 810  VTAB V: HTAB 1: PRINT  SPC( 39): VTAB V: HTAB 1: PRINT DSCR$
  82. 820  RETURN 
  83. 830  REM  CREATE LOG FILE ON DISK
  84. 840  PRINT D$"CLOSE": IF  PEEK(222) < >5  THEN  PRINT "DISK ERROR."; PEEK(222): PRINT "PRESS ANY KEY TO TRY AGAIN.": GET K$: PRINT : GOTO 480
  85. 850  HOME : PRINT "THERE IS NO LOG FILE ON THIS DISK": PRINT "DO YOU WANT TO CREATE ONE? (Y/N)": GET K$: IF K$ = "N"  THEN  HOME : END 
  86. 860  IF K$ < >"Y"  THEN 850
  87. 870  PRINT 
  88. 880  PRINT D$;"OPEN LOG,L58"
  89. 890  PRINT D$;"WRITE LOG,R0"
  90. 900 R$ = "1": PRINT R$: REM  R$ POINTS TO NEXT LOG RECORD
  91. 910  PRINT D$;"CLOSE LOG"
  92. 920  GOTO 480
  93. 930  REM  RETRIEVE RECORD WRITTEN BY LOGON PROGRAM
  94. 940  ONERR  GOTO 1380
  95. 950  PRINT D$;"OPEN LOG,L58"
  96. 960  PRINT D$;"READ LOG,R0"
  97. 970  INPUT R$: REM  RECORD NUMBER OF CURRENT SESSION
  98. 980  PRINT D$;"CLOSE LOG"
  99. 990 R =  VAL(R$)
  100. 1000  PRINT D$;"OPEN LOG,L58"
  101. 1010  PRINT D$;"READ LOG,R";R
  102. 1020  INPUT REC$
  103. 1030  PRINT D$;"CLOSE LOG"
  104. 1040  REM  CALCULATE ELAPSED TIME
  105. 1050 H1$ =  MID$ (REC$,8,2):H1 =  VAL(H1$): REM  START HOUR
  106. 1060 M1$ =  MID$ (REC$,11,2):M1 =  VAL(M1$): REM  START MINUTE
  107. 1070 H2$ =  MID$ (T$,12,2):H2 =  VAL(H2$): REM  FINISH HOUR
  108. 1080 M2$ =  MID$ (T$,15,2):M2 =  VAL(M2$): REM  FINISH MINUTE
  109. 1090  IF H2 <H1  THEN H2 = H2 +12: REM  WORKED PAST NOON OR MIDNIGHT
  110. 1100 T1 = 60 *H1 +M1:T2 = 60 *H2 +M2
  111. 1110 T = T2 -T1:H =  INT(T/60):M = T -60 *H
  112. 1120  PRINT  MID$ (REC$,15,39)
  113. 1130  PRINT "STARTED : "; LEFT$(REC$,9);":"; MID$ :REC$(11,2);" "; MID$ (REC$,13,2)
  114. 1140 T$ =  MID$ (T$,5,12) + RIGHT$(T$,3)
  115. 1150  PRINT "FINISHED: ";T$
  116. 1160  PRINT 
  117. 1170  PRINT "ELAPSED TIME : ";H;" HRS, ";M;" MIN"
  118. 1180  REM  CONVERT HRS AND MINS ELAPSED TO TWO CHARACTER STRINGS
  119. 1190 H$ =  STR$(H): IF  LEN(H$) = 1  THEN H$ = " " +H$
  120. 1200 M$ =  STR$(M): IF  LEN(M$) = 1  THEN M$ = " " +M$
  121. 1210  REM  RE-CONCATENATE RECORD
  122. 1220 REC$ =  LEFT$(REC$,53) +H$ +M$
  123. 1230  REM  RESAVE RECORD
  124. 1240  ONERR  GOTO 1350
  125. 1250  PRINT D$;"OPEN LOG,L58"
  126. 1260  PRINT D$;"WRITE LOG,R";R
  127. 1270  PRINT REC$
  128. 1280  REM  INCREASE RECORD 0 POINTER TO POINT TO NEXT SESSION'S RECORD
  129. 1290 R = R +1
  130. 1300 R$ =  STR$(R)
  131. 1310  PRINT D$;"WRITE LOG,R0"
  132. 1320  PRINT R$
  133. 1330  PRINT D$;"CLOSE LOG"
  134. 1340  PRINT : PRINT : CALL  -958: PRINT "LOGOFF COMPLETE.": END 
  135. 1350  PRINT D$"CLOSE"
  136. 1360  PRINT "DISK ERROR NO."; PEEK(222)
  137. 1370  PRINT "PRESS ANY KEY TO TRY AGAIN.": GET K$: PRINT : GOTO 1240
  138. 1380  PRINT D$"CLOSE"
  139. 1390  IF  PEEK(222) = 5  AND R$ = ""  THEN  HOME : PRINT "THERE IS NO LOG FILE ON THIS DISK.": PRINT "INSERT LOG FILE DISK AND PRESS A KEY": GET K$: PRINT : GOTO 950
  140. 1400  IF  PEEK(222) = 5  THEN  HOME : PRINT "SESSION ALREADY LOGGED OFF.": END 
  141. 1410  PRINT "DISK ERROR NO."; PEEK(222): PRINT "PRESS ANY KEY TO TRY AGAIN.": GET K$: PRINT : GOTO 950