This test was run using version 0.1.5 on 8/19/97.
| Original | De-Compiled |
1 *CLOCK PROGRAM WITH HANDS 2 EQUATE NEGATE TO -1 3 * 4 DIM SCREEN(80,24) 5 CW = 1 6 COL.CENTER = 40 7 ROW.CENTER = 11 8 COL.ASPECT = 2.33 9 HAND.STEP = .8181 10 ALARM.TIME = '' 11 ALARM.ON = 0 12 10 ***** 13 OLD.HANG = '' 14 OLD.SANG = '' 15 OLD.MANG = '' 16 OLD.DATE = '' 17 OLD.HOUR = '' 18 OLD.MIN = '' 19 OLD.SEC = '' 20 OLD.ANGLE = '' 21 GOSUB 320.1 22 110.1 ***** 23 GOSUB 450.1 24 IF SEC NE OLD.SEC THEN 25 IF MIN NE OLD.MIN THEN 26 IF DATE() NE OLD.DATE THEN 27 GOSUB 500 28 END 29 GOSUB 520.1 30 GOSUB 600.1 31 END 32 GOSUB 680.1 33 IF ALARM.ON THEN 34 IF TIME GE ALARM.TIME AND TIME LE + ALARM.TIME + 60 THEN PRINT @(0,0):CHAR(7) + : 35 END 36 END ELSE 37 T = SYSTEM(13) 38 RQM 39 END 40 IF SYSTEM(14) NE 0 THEN 41 ECHO OFF 42 IN T 43 ECHO ON 44 T = CHAR(T) 45 BEGIN CASE 46 CASE T = 'g' 47 CW = NOT(CW) 48 COL.ASPECT = COL.ASPECT * + NEGATE 49 GOTO 10 50 CASE T = 'R' 51 GOTO 10 52 CASE T = 'Q' 53 STOP 54 CASE T= 'S' 55 PRINT @(0,23):@(-4):'ENTER + ALARM TIME ': 56 INPUT ALARM.TIME: 57 ALARM.TIME = ICONV(ALARM.TI + ME,'MT') 58 GOSUB 320.2 59 CASE T = 'A' 60 IF ALARM.ON THEN 61 ALARM.ON = 0 62 END ELSE 63 ALARM.ON = 1 64 END 65 GOSUB 320.2 66 CASE T = '?' 67 PRINT @(-1) 68 PRINT 'JIMS CLOCK' 69 PRINT 70 PRINT 'PRESS Q TO QUIT' 71 PRINT ' R TO REDRAW + SCREEN' 72 PRINT ' ? FOR HELP' 73 PRINT ' g TO SET IN + GOOFY MODE (OR UNSET)' 74 PRINT ' S SET ALARM' 75 PRINT ' A ALARM ON OR + OFF' 76 PRINT 77 PRINT 'PRESS ANY KEY' 78 IN T 79 GOTO 10 80 END CASE 81 END 82 GOTO 110.1 83 * 84 * 85 320.1 * 86 PRINT @(-1): 87 MAT SCREEN = 0 88 SAVE.SCREEN = '' 89 PRINT @(COL.CENTER,ROW.CENTER):'#': 90 SCREEN(COL.CENTER,ROW.CENTER) = 1 91 FOR T = 1 TO 360 92 COL = COL.CENTER + SIN(T) * 10 * + COL.ASPECT 93 ROW = ROW.CENTER - COS(T) * 10 94 PRINT @(COL,ROW):'#': 95 SCREEN(COL,ROW) = 1 96 *WRISTBAND 97 IF T GT 320 OR T LT 40 THEN 98 FOR T1 = 0 TO ROW-1 99 PRINT @(COL,T1):'-': 100 NEXT T1 101 END 102 IF T GT 140 AND T LT 220 THEN 103 FOR T1 = ROW+1 TO 22 104 PRINT @(COL,T1):'-': 105 NEXT T1 106 END 107 *STEM 108 IF T GT 80 AND T LT 100 THEN 109 IF NOT(CW) THEN COL = COL - 4 110 FOR T1 = COL+1 TO COL+3 111 PRINT @(T1,ROW):':': 112 NEXT T1 113 END 114 NEXT T 115 FOR T = 0 TO 11 116 COL = COL.CENTER + SIN(T*(360/12)) * + 8 * COL.ASPECT 117 ROW = ROW.CENTER - COS(T*(360/12)) * + 8 118 DAT= T 119 IF DAT EQ 0 THEN DAT = 12 120 DAT = DAT'L#2' 121 GOSUB 1000 122 NEXT T 123 * 124 ROW = ROW.CENTER + 5 125 COL = -1 126 DAT = 'JimEX' 127 GOSUB 1000 128 * 129 320.2 **** 130 PRINT @(0,23):@(-4):'Press "Q" To Quit + (QRgSA?)': 131 IF ALARM.TIME NE '' THEN 132 DAT = OCONV(ALARM.TIME,'MT')'L#5' 133 ROW = ROW.CENTER+4 134 COL = COL.CENTER-2 135 GOSUB 1000 136 END 137 IF ALARM.ON THEN 138 DAT = '+' 139 END ELSE 140 DAT = ' ' 141 END 142 ROW = ROW.CENTER+4 143 COL = COL.CENTER-3 144 GOSUB 1000 145 RETURN 146 * 147 * 148 450.1 * 149 TIME = TIME() 150 SEC = MOD(TIME,60) 151 MIN = INT(TIME/60) 152 MIN = MIN - INT(MIN/60)*60 153 HOUR = (TIME/60/60) 154 HOUR = HOUR - INT(HOUR/12)*12 155 RETURN 156 * 157 500 ** DAYDATE 158 OLD.DATE = DATE() 159 DAT = ' ':OCONV(OLD.DATE,'D'):' ' 160 ROW = ROW.CENTER - 5 161 COL = -1 162 GOSUB 1000 163 DAT = ' ':OCONV(OLD.DATE,'DWA'):' ' 164 ROW = ROW.CENTER - 4 165 COL = -1 166 GOSUB 1000 167 RETURN 168 * 169 520.1 * 170 LENGTH = 5 171 HAND.CH = '#' 172 ANGLE = HOUR / 12 * 360 173 OLD.ANGLE = OLD.HANG 174 GOSUB 750.1 175 OLD.HANG = ANGLE 176 OLD.HOUR = HOUR 177 RETURN 178 * 179 600.1 * 180 LENGTH = 7 181 HAND.CH = '*' 182 ANGLE = MIN / 60 * 360 183 OLD.ANGLE = OLD.MANG 184 GOSUB 750.1 185 OLD.MANG = ANGLE 186 OLD.MIN = MIN 187 RETURN 188 * 189 680.1 * 190 LENGTH = 9 191 HAND.CH = '.' 192 ANGLE = SEC / 60 * 360 193 OLD.ANGLE = OLD.SANG 194 GOSUB 750.1 195 OLD.SANG = ANGLE 196 OLD.SEC = SEC 197 RETURN 198 * 199 750.1 ************** 200 FOR T = 0 TO LENGTH STEP HAND.STEP 201 T1 = T * COL.ASPECT 202 IF ANGLE NE '' THEN 203 COL = COL.CENTER + SIN(ANGLE) * T1 204 ROW = ROW.CENTER - COS(ANGLE) * T 205 IF SCREEN(COL,ROW) EQ 0 OR + SCREEN(COL,ROW) = 100 THEN 206 PRINT @(COL,ROW):HAND.CH: 207 END 208 END 209 SCREEN(COL,ROW) = SCREEN(COL,ROW) + 1 210 IF OLD.ANGLE NE '' THEN 211 COL = COL.CENTER + SIN(OLD.ANGLE) + * T1 212 ROW = ROW.CENTER - COS(OLD.ANGLE) + * T 213 SCREEN(COL,ROW) = SCREEN(COL,ROW) + - 1 214 IF SCREEN(COL,ROW) EQ 0 THEN 215 PRINT @(COL,ROW):' ': 216 END ELSE 217 IF SCREEN(COL,ROW) EQ 100 THEN 218 PRINT @(COL,ROW):SAVE.SCREEN + |
1 EQUATE CHAR.7 TO CHAR(7) 2 DIM SCREEN(80,24) 3 * 4 * 5 * 6 CW = 1 7 COL.CENTER = 40 8 ROW.CENTER = 11 9 COL.ASPECT = 2.33 10 HAND.STEP = 0.8181 11 ALARM.TIME = '' 12 ALARM.ON = 0 13 700 * 14 OLD.HANG = '' 15 OLD.SANG = '' 16 OLD.MANG = '' 17 OLD.DATE = '' 18 OLD.HOUR = '' 19 OLD.MIN = '' 20 OLD.SEC = '' 21 OLD.ANGLE = '' 22 GOSUB 100 23 900 * 24 GOSUB 200 25 IF NOT(SEC EQ OLD.SEC) THEN 26 IF NOT(MIN EQ OLD.MIN) THEN 27 IF NOT(DATE() EQ OLD.DATE) THEN 28 GOSUB 300 29 END 30 GOSUB 400 31 GOSUB 500 32 END 33 GOSUB 600 34 IF ALARM.ON THEN 35 IF TIME GE ALARM.TIME AND TIME LE + ALARM.TIME + 60 THEN 36 PRINT @(0,0) : CHAR.7: 37 END 38 END 39 END ELSE 40 T = SYSTEM(13) 41 SLEEP 1 42 END 43 IF NOT(SYSTEM(14) EQ 0) THEN 44 ECHO OFF 45 IN T 46 ECHO ON 47 T = CHAR(T) 48 * 49 BEGIN CASE 50 CASE T EQ 'g' 51 CW = NOT(CW) 52 COL.ASPECT = COL.ASPECT * -1 53 GOTO 700 54 CASE T EQ 'R' 55 GOTO 700 56 CASE T EQ 'Q' 57 STOP 58 CASE T EQ 'S' 59 PRINT @(0,23) : @(-4) : 'ENTER ALARM + TIME ': 60 INPUT ALARM.TIME: 61 ALARM.TIME = ICONV(ALARM.TIME,'MT') 62 GOSUB 800 63 CASE T EQ 'A' 64 IF ALARM.ON THEN 65 ALARM.ON = 0 66 END ELSE 67 ALARM.ON = 1 68 END 69 GOSUB 800 70 CASE T EQ '?' 71 PRINT @(-1) 72 PRINT 'JIMS CLOCK' 73 PRINT 74 PRINT 'PRESS Q TO QUIT' 75 PRINT ' R TO REDRAW SCREEN' 76 PRINT ' ? FOR HELP' 77 PRINT ' g TO SET IN GOOFY MODE (OR + UNSET)' 78 PRINT ' S SET ALARM' 79 PRINT ' A ALARM ON OR OFF' 80 PRINT 81 PRINT 'PRESS ANY KEY' 82 IN T 83 GOTO 700 84 END CASE 85 END 86 GOTO 900 87 * 88 * 89 100 * 90 PRINT @(-1): 91 MAT SCREEN = 0 92 SAVE.SCREEN = '' 93 PRINT @(COL.CENTER,ROW.CENTER) : '#': 94 SCREEN(COL.CENTER,ROW.CENTER) = 1 95 FOR T = 1 TO 360 96 COL = COL.CENTER + (SIN(T) * 10) * + COL.ASPECT 97 ROW = ROW.CENTER - COS(T) * 10 98 PRINT @(COL,ROW) : '#': 99 SCREEN(COL,ROW) = 1 100 * 101 IF T GT 320 OR T LT 40 THEN 102 FOR T1 = 0 TO ROW - 1 103 PRINT @(COL,T1) : '-': 104 NEXT T1 105 END 106 IF T GT 140 AND T LT 220 THEN 107 FOR T1 = (ROW + 1) TO 22 108 PRINT @(COL,T1) : '-': 109 NEXT T1 110 END 111 * 112 IF T GT 80 AND T LT 100 THEN 113 IF NOT(CW) THEN 114 COL = COL - 4 115 END 116 FOR T1 = (COL + 1) TO COL + 3 117 PRINT @(T1,ROW) : ':': 118 NEXT T1 119 END 120 NEXT T 121 FOR T = 0 TO 11 122 COL = COL.CENTER + (SIN(T * (360 / 12)) + * 8) * COL.ASPECT 123 ROW = ROW.CENTER - COS(T * (360 / 12)) * + 8 124 DAT = T 125 IF DAT EQ 0 THEN 126 DAT = 12 127 END 128 DAT = DAT 'L#2' 129 GOSUB 1500 130 NEXT T 131 * 132 ROW = ROW.CENTER + 5 133 COL = -1 134 DAT = 'JimEX' 135 GOSUB 1500 136 * 137 800 * 138 PRINT @(0,23) : @(-4) : 'Press "Q" To + Quit (QRgSA?)': 139 IF NOT(ALARM.TIME EQ '') THEN 140 DAT = OCONV(ALARM.TIME,'MT') 'L#5' 141 ROW = ROW.CENTER + 4 142 COL = COL.CENTER - 2 143 GOSUB 1500 144 END 145 IF ALARM.ON THEN 146 DAT = '+' 147 END ELSE 148 DAT = ' ' 149 END 150 ROW = ROW.CENTER + 4 151 COL = COL.CENTER - 3 152 GOSUB 1500 153 RETURN 154 * 155 * 156 200 * 157 TIME = TIME() 158 SEC = MOD(TIME,60) 159 MIN = INT(TIME / 60) 160 MIN = MIN - INT(MIN / 60) * 60 161 HOUR = (TIME / 60) / 60 162 HOUR = HOUR - INT(HOUR / 12) * 12 163 RETURN 164 * 165 300 * 166 OLD.DATE = DATE() 167 DAT = ' ' : OCONV(OLD.DATE,'D') : ' ' 168 ROW = ROW.CENTER - 5 169 COL = -1 170 GOSUB 1500 171 DAT = ' ' : OCONV(OLD.DATE,'DWA') : ' ' 172 ROW = ROW.CENTER - 4 173 COL = -1 174 GOSUB 1500 175 RETURN 176 * 177 400 * 178 LENGTH = 5 179 HAND.CH = '#' 180 ANGLE = (HOUR / 12) * 360 181 OLD.ANGLE = OLD.HANG 182 GOSUB 1600 183 OLD.HANG = ANGLE 184 OLD.HOUR = HOUR 185 RETURN 186 * 187 500 * 188 LENGTH = 7 189 HAND.CH = '*' 190 ANGLE = (MIN / 60) * 360 191 OLD.ANGLE = OLD.MANG 192 GOSUB 1600 193 OLD.MANG = ANGLE 194 OLD.MIN = MIN 195 RETURN 196 * 197 600 * 198 LENGTH = 9 199 HAND.CH = '.' 200 ANGLE = (SEC / 60) * 360 201 OLD.ANGLE = OLD.SANG 202 GOSUB 1600 203 OLD.SANG = ANGLE 204 OLD.SEC = SEC 205 RETURN 206 * 207 1600 * 208 FOR T = 0 TO LENGTH STEP HAND.STEP 209 T1 = T * COL.ASPECT 210 IF NOT(ANGLE EQ '') THEN 211 COL = COL.CENTER + SIN(ANGLE) * T1 212 ROW = ROW.CENTER - COS(ANGLE) * T 213 IF SCREEN(COL,ROW) EQ 0 OR SCREEN(COL,ROW + ) EQ 100 THEN 214 PRINT @(COL,ROW) : HAND.CH: 215 END 216 END 217 SCREEN(COL,ROW) = SCREEN(COL,ROW) + 1 218 IF NOT(OLD.ANGLE EQ '') THEN 219 COL = COL.CENTER + SIN(OLD.ANGLE) * T1 220 ROW = ROW.CENTER - COS(OLD.ANGLE) * T 221 SCREEN(COL,ROW) = SCREEN(COL,ROW) - 1 222 IF SCREEN(COL,ROW) EQ 0 THEN 223 PRINT @(COL,ROW) : ' ': 224 END ELSE 225 IF SCREEN(COL,ROW) EQ 100 THEN 226 PRINT @(COL,ROW) : SAVE.SCREEN |