HAND - Clock Program Decompiler Test.

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
  + :
219           END
220        END
221     END
222 NEXT T
223 RETURN
224 *
225 1000 ** DATA ON ROW AND PUT IN 
  + SAVE.SCREEN (BASE SCREEN)
226 LDAT = LEN(DAT)
227 IF COL = -1 THEN
228    COL = COL.CENTER - INT(LDAT/2)
229 END
230 PRINT @(COL,ROW):DAT:
231 FOR TDAT = 1 TO LDAT
232     SAVE.SCREEN = DAT[TDAT,1]
233     SCREEN(COL,ROW) = SCREEN(COL,ROW) + 
  + 100
234     COL = COL + 1
235 NEXT TDAT
236 RETURN
237 END
  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:
227 END
228 END
229 END
230 NEXT T
231 RETURN
232 *
233 1500 *
234 LDAT = LEN(DAT)
235 IF COL EQ -1 THEN
236 COL = COL.CENTER - INT(LDAT / 2)
237 END
238 PRINT @(COL,ROW) : DAT:
239 FOR TDAT = 1 TO LDAT
240 SAVE.SCREEN = DAT[TDAT,1]
241 SCREEN(COL,ROW) = SCREEN(COL,ROW) + 100
242 COL = COL + 1
243 NEXT TDAT
244 RETURN
245 *
246 STOP
247 END

Back

INFO

Home


jim@renejm.com
(C) 1998 RENEJM Enterprises, Inc. All Rights Reserved.