'EDIT THE MouseLimits VALUES TO: CALL MouseLimits(6, 24, 2, 18, 6, 6) 'REPLACE ALL THE SUBROUTINES WITH: OpeningScreen: COLOR 0, 3: CLS OPEN "MATHCODE.TXT" FOR INPUT AS #1: i = 1 'Display Puzzle DO: i = i + 1: LOCATE i, 6: LINE INPUT #1, tmp$: PRINT tmp$ LOOP UNTIL EOF(1) OR i = 17 LOCATE 1, 1: COLOR 1: FOR i = 1 TO 17: PRINT i: NEXT i LOCATE 1, 26: PRINT "LeftDrag PUZZLE LETTER or SPACE to row2" LOCATE , 26: PRINT "<< SingleLeftClick LETTER HERE" LOCATE , 26: PRINT "<< SingleRightClick HERE to renew data" LOCATE , 26: PRINT "<< SingleLeftClick NUMBER HERE" LOCATE , 26: PRINT "RightDrag row 10, 13 or 16 to below AND" LOCATE , 26: PRINT "OPTIONAL type text "; CHR$(27); " "; CHR$(26); PRINT ", MUST PressEnter" LOCATE 19, 2: PRINT "DoubleLeftClick to check result" PRINT " DoubleRightClick OR Esc to close program" PRINT " Press Alt+Enter To switch between screens" CLOSE #1: COLOR 15 RETURN SingleClick: GOSUB RowCol 'Start Here With presses=1 releases=1 IF click = 1 AND col <= 24 AND (row = 2 OR row = 4) THEN 'click=1=Left letter$ = CHR$(SCREEN(2, col)): number$ = CHR$(SCREEN(4, col)) IF letter$ < "A" OR letter$ > "Z" THEN RETURN FOR i = 6 TO 17: FOR j = 6 TO 22 STEP 2: LOCATE i, j IF row = 2 THEN 'Replace Letters With Numbers IF CHR$(SCREEN(i, j)) = letter$ THEN PRINT number$; ELSEIF row = 4 THEN 'Replace Numbers With Letters IF CHR$(SCREEN(i, j)) = number$ THEN PRINT letter$; END IF NEXT j: NEXT i: IF row = 4 THEN LOCATE 2, col: PRINT " "; END IF IF click = 2 AND row = 3 THEN GOSUB OpeningScreen 'click=2=Right RETURN DoubleClick: GOSUB RowCol 'Start Here With presses=2 releases=2 IF click = 1 THEN 'DoubleLeftClick x$ = "Yes": y$ = "" 'x$=Yes=All Digits In Row8 FOR i = 6 TO 22 STEP 2: z$ = CHR$(SCREEN(8, i)): y$ = y$ + z$ IF z$ < "0" OR z$ > "9" THEN x$ = "No" 'x$=No=Not All Digits NEXT i: LOCATE 23, 4: IF x$ = "No" THEN PRINT "No ! ROW 8 = "; y$ IF x$ = "Yes" THEN 'Calculate Result denominator& = VAL(LEFT$(y$, 3)): numerator& = VAL(RIGHT$(y$, 6)) LOCATE 23, 4: PRINT numerator&; CHR$(246); denominator&; PRINT " quotient"; " ="; numerator& \ denominator&; PRINT " remainder"; " ="; numerator& MOD denominator&; END IF END IF IF click = 2 THEN press$ = CHR$(27) 'DoubleRightClick Closes Program RETURN DragMouseCursor: GOSUB RowCol 'Start Here With presses=1 releases=0 i = row: j = col: tmp$ = CHR$(SCREEN(i, j)) 'Save At Start Of Drag LOCATE , , 1, 0, 7: CALL AssemblyCode(1, 0, 0, 0) 'Show Both Cursors WHILE releases < 1 'Wait For Mouse Button Release CALL AssemblyCode(3, 0, cx, dx): GOSUB RowCol 'Get row & col IF click = 1 THEN row = 2 ELSE IF click = 2 THEN col = 29 'Targets LOCATE row, col 'Text Cursor Shows Position For Drop bx = click - 1: CALL AssemblyCode(6, bx, 0, 0): releases = bx WEND 'Exit Loop When Button Released At End Of Drag LOCATE , , 0: CALL AssemblyCode(2, 0, 0, 0) 'Hide Both Cursors IF click = 1 THEN 'Left Drop IF tmp$ = " " OR (tmp$ >= "A" AND tmp$ <= "Z") THEN PRINT tmp$; ELSEIF click = 2 THEN 'Right Drop IF tmp$ = " " THEN col = 26: GOSUB TypeMessage 'Drag Blank IF tmp$ = CHR$(196) AND (i = 10 OR i = 13 OR i = 16) THEN 'Drag Eqn x$ = CHR$(SCREEN(i - 2, j)): IF x$ = " " THEN x$ = "0" 'Characters y$ = CHR$(SCREEN(i - 1, j)): IF y$ = " " THEN y$ = "0" 'Of Dragged z$ = CHR$(SCREEN(i + 1, j)): IF z$ = " " THEN z$ = "0" 'Equation IF z$ = "0" AND x$ <> y$ THEN y$ = y$ + "-1" ELSE y$ = y$ + " " PRINT x$; "-"; y$; "="; z$ 'Print Dragged Equation j = j - 10: IF i > 10 THEN j = j - 2: IF i > 13 THEN j = j - 2 LOCATE row, 51: PRINT "Row"; i; ", Eqn"; j / 2; 'Row & Eqn Numbers col = 38: GOSUB TypeMessage 'In Same Row As Eqn To Type Result END IF END IF RETURN TypeMessage: LOCATE , , 1, 0, 7 'Show Text Cursor DO: LOCATE , col 'Text Cursor At Position For Character To Be Printed DO: press$ = INKEY$: LOOP UNTIL press$ <> "" 'Wait For Key Press IF press$ >= " " THEN PRINT press$; : col = col + 1 'Key=Character IF press$ = CHR$(0) + "K" THEN col = col - 1 'Key=Left Arrow IF press$ = CHR$(0) + "M" THEN col = col + 1 'Key=Right Arrow IF col < 26 THEN col = 26 ELSE IF col > 64 THEN col = 64 'col Limits LOOP UNTIL press$ = CHR$(13): LOCATE , , 0 'Exit & Hide Text Cursor RETURN RowCol: row = dx \ 8 + 1: col = ((cx \ 8 + 2) \ 2) * 2 'col=Even Numbers RETURN 'LEAVE THE SUBPROGRAMS UNCHANGED o