' *****************************************************************
' ******************** By Mad_Man *******************
' ******************** Build in QBASIC *******************
' ******************** copyright 2006 *******************
' *****************************************************************
DEFINT A-Z
DECLARE SUB mouse (cx, dx, bx)
DECLARE SUB MousePointer (sw)
DIM SHARED a(9) 'Set up array for code
DEF SEG = VARSEG(a(0)) 'Get array segment (nnnn: )
' (two 8 bit)
FOR i = 0 TO 17 'length of DATA to
READ r 'read
POKE VARPTR(a(0)) + i, r 'into array/2 (nnnn:iiii) (one 8 bit)
NEXT i 'until 17
' **************************** Machine Code *********************************
DATA &HB8,&H00,&H00 : ' mov AX,[n] [Swap code-(L),(H)] in AX
DATA &H55 : ' push BP Save BP
DATA &H8B,&HEC : ' mov BP,SP Get BP to c Seg
DATA &HCD,&H33 : ' int 33 Interrupt 33
DATA &H92 : ' xchg AX,[reg] [Swap code-reg] in AX
DATA &H8B,&H5E,&H06 : ' mov BX,[BP+6] Point to (variable)
DATA &H89,&H07 : ' mov [BX],AX Put AX in (variable)
DATA &H5D : ' pop BP Restore BP
DATA &HCA,&H02,&H00 : ' ret 2 Far return
re = 0
CALL intro
SCREEN 0
' ****************************** Mouse set up ******************************
CALL MousePointer(0) 'Reset mouse and
CALL MousePointer(1) 'turn pointer on
CALL MousePointer(3) 'Get coordinates
' ****************************** P R O G R A M ******************************
' Put your code here
COLOR 2, 1, 7
CLS
CALL home
DO
CALL mouse(cx, dx, bx)
colm = cx \ 8 + 1
rowm = dx \ 8 + 1
'mouse inputs 1 2 4 8 16
IF (bx) = 1 AND colm = 5 AND rowm = 10 THEN CALL quick1
IF (bx) = 1 AND colm = 5 AND rowm = 35 THEN CALL cal
IF (bx) = 1 AND colm = 7 AND rowm = 10 THEN CALL quick2
IF (bx) = 1 AND colm = 7 AND rowm = 35 THEN CALL screensaver
IF (bx) = 1 AND colm = 9 AND rowm = 10 THEN CALL quick3
IF (bx) = 1 AND colm = 11 AND rowm = 10 THEN CALL quick4
IF (bx) = 1 AND colm = 13 AND rowm = 10 THEN CALL quick5
IF (bx) = 1 AND colm = 15 AND rowm = 10 THEN CALL quick6
IF (bx) = 1 AND colm = 17 AND rowm = 10 THEN CALL quick7
IF (bx) = 1 AND colm = 19 AND rowm = 10 THEN CALL quick8
LOCATE 23, 1: PRINT dx; cx; bx; colm; rowm; (re)
LOCATE 23, 72: COLOR 11: PRINT TIME$; "": COLOR 2
qw$ = INKEY$
SELECT CASE qw$
CASE "d", "D": CALL quick4
CASE "h", "H": CALL help
CASE "i", "I": CALL intro
CASE CHR$(0) + "H": LOCATE 21, 1: PRINT " ***arow up key*** "
CASE CHR$(0) + "P": LOCATE 21, 1: PRINT " ****arow down key**** "
CASE CHR$(0) + "K": LOCATE 21, 1: PRINT " ***arow right key*** "
CASE CHR$(0) + "M": LOCATE 21, 1: PRINT " ***arow left key*** "
CASE " ": LOCATE 21, 1: PRINT "****space**** "
CASE "p", "P": LOCATE 21, 1: PRINT " ***** Pause **** ": SLEEP 5
CASE "q", "Q": END 'quit
CASE ELSE
END SELECT
LOOP
END
DEFSNG A-Z
SUB cal
CLS
PRINT "*************************"
PRINT "* Enter: + for Addition *"
PRINT "* Enter: - for Subtract *"
PRINT "* Enter: * for Multiply *"
PRINT "* Enter: / for Division *"
PRINT "*************************"
WHILE operator$ <> "+" AND operator$ <> "-" AND operator$ <> "*" AND operator$ <> "/"
INPUT "Which operator do you want to use? "; operator$
IF operator$ <> "+" AND operator$ <> "-" AND operator$ <> "*" AND operator$ <> "/" THEN
PRINT "Invalid Operator. Please try again."
END IF
WEND
CLS
INPUT "Enter a number: "; num1$
INPUT "Enter another number: "; num2$
SELECT CASE operator$
CASE "+"
PRINT num1$; " + "; num2$; " = "; VAL(num1$) + VAL(num2$)
CASE "-"
PRINT num1$; " - "; num2$; " = "; VAL(num1$) - VAL(num2$)
CASE "*"
PRINT num1$; " * "; num2$; " = "; VAL(num1$) * VAL(num2$)
CASE "/"
WHILE VAL(num2$) = 0 ' Only for num2$, since 0/x = 0
PRINT "You may not divide by zero."
INPUT "Please re-enter the second number: "; num2$
WEND
PRINT num1$; " / "; num2$; " = "; VAL(num1$) / VAL(num2$)
END SELECT
DO WHILE INKEY$ = "": LOOP
CLS : CALL home
END SUB
SUB help
COLOR 4, 0: CLS
LOCATE 1, 29: PRINT "**** "; : COLOR 10: PRINT "MAD_TOOL'S"; : COLOR 4: PRINT " ****"
LOCATE 2, 1: PRINT "************************************"; : COLOR 10: PRINT "HELP"; : COLOR 4: PRINT "****************************************"
LOCATE 3, 1: PRINT ""
LOCATE 4, 6: COLOR 10: PRINT "This program is simple to run it's was made with INKEY$ and SUB's"; ""
LOCATE 5, 20: PRINT "You press a letter and call a sub"
LOCATE 6, 1: PRINT ""
LOCATE 7, 1: PRINT "PRESS Y to see why I made MAD_TOOL's "
LOCATE 8, 1: PRINT ""
LOCATE 9, 1: PRINT "subs 1 to 8 are for screen 0 mode "
LOCATE 10, 1: PRINT "subs 9 to 18 are for screen modes 1 to 13"
LOCATE 11, 1: PRINT ""
LOCATE 12, 1: PRINT "the numbers at bottom are the mouse and time "
LOCATE 13, 1: PRINT ""
LOCATE 14, 1: PRINT ""
DO
qw$ = INKEY$
SELECT CASE qw$
CASE "Y", "y": CALL myinfo
CASE " ": PRINT "**** space ****"
CASE "p", "P": PRINT "**** Pause ****": SLEEP 5
CASE "q", "Q": COLOR 2, 1, 7: CLS : CALL home: EXIT SUB
CASE ELSE
END SELECT
LOOP
' **********************************************************************
END SUB
SUB home
CLS
COLOR 2, 1, 7
LOCATE 1, 28: PRINT "****"; : COLOR 4: PRINT "MAD_TOOL'S 1.0 "; : COLOR 2: PRINT "****"
LOCATE 2, 1: COLOR 4: PRINT "************************************"; : COLOR 6: PRINT "HOME"; : COLOR 4: PRINT "****************************************": COLOR 2
LOCATE 3, 15: COLOR 14: PRINT "**** PRESS Q TO EXIT **** **** H FOR HELP! ****"; : COLOR 4
LOCATE 5, 7: PRINT "your sub #1 ("; : COLOR 5: PRINT "x"; : COLOR 4: PRINT ")"
LOCATE 5, 63: PRINT "cal ("; : COLOR 5: PRINT "x"; : COLOR 4: PRINT ")"
LOCATE 7, 56: PRINT "screen saver ("; : COLOR 5: PRINT "x"; : COLOR 4: PRINT ")"
LOCATE 7, 7: PRINT "your sub #2 ("; : COLOR 5: PRINT "x"; : COLOR 4: PRINT ")"
LOCATE 9, 7: PRINT "your sub #3 ("; : COLOR 5: PRINT "x"; : COLOR 4: PRINT ")"
LOCATE 11, 7: PRINT "your sub #4 ("; : COLOR 5: PRINT "x"; : COLOR 4: PRINT ")"
LOCATE 13, 7: PRINT "your sub #5 ("; : COLOR 5: PRINT "x"; : COLOR 4: PRINT ")"
LOCATE 15, 7: PRINT "your sub #6 ("; : COLOR 5: PRINT "x"; : COLOR 4: PRINT ")"
LOCATE 17, 7: PRINT "your sub #7 ("; : COLOR 5: PRINT "x"; : COLOR 4: PRINT ")"
LOCATE 19, 7: PRINT "your sub #8 ("; : COLOR 5: PRINT "x"; : COLOR 4: PRINT ")"
LOCATE 23, 1: PRINT "*** MOUSE *****"; ""
END SUB
'Note:
'SW = 0-reset
'SW = 1-on
'SW = 2-off
'SW = 3-coordinates
END SUB
DEFSNG A-Z
SUB myinfo
PRINT "I made MAD_TOOL's to give a basic programer more dimension with there code"
PRINT "*********************************************************************"
DO
qw$ = INKEY$
SELECT CASE qw$
CASE " ": PRINT "****space****"
CASE "p", "P": PRINT " ******* Pause ****** ": SLEEP 5
CASE "q", "Q": COLOR 2, 1, 7: CLS : CALL home: EXIT SUB
CASE ELSE
END SELECT
LOOP
' **********************************************************************
END SUB
SUB quick1
DEFINT A-Z
CALL MousePointer(0) 'Reset mouse and
CALL MousePointer(1) 'turn pointer on
CALL MousePointer(3) 'Get coordinates
COLOR 4, 0: CLS
' **********************************************************************
PRINT "******************* inside MAD_SUB #1 ***********************"
PRINT "*************** this sub is for your code ***************************"
PRINT "*********************************************************************"
DO
IF (bx) = 2 THEN COLOR 2, 1, 7: CLS : CALL home: EXIT SUB
CALL mouse(cx, dx, bx)
qw$ = INKEY$
SELECT CASE qw$
CASE "t", "T": GOSUB jump1
CASE " ": PRINT "*******space**** "
CASE "p", "P": PRINT " ******** Pause ************ ": SLEEP 5
CASE "q", "Q": COLOR 2, 1, 7: CLS : CALL home: EXIT SUB
CASE ELSE
END SELECT
LOOP
jump1:
INPUT changt$
SHELL (changt$)
RETURN
' **********************************************************************
END SUB
DEFSNG A-Z
SUB quick2
CLS
' **********************************************************************
PRINT "******************* inside guick sub #2 ***********************"
PRINT "*************** this sub is for your code ***************************"
PRINT "*********************************************************************"
DO
qw$ = INKEY$
SELECT CASE qw$
CASE " ": PRINT "*******space**** "
CASE "p", "P": PRINT " ******** Pause ************ ": SLEEP 5
CASE "q", "Q": CLS : CALL home: EXIT SUB
CASE ELSE
END SELECT
LOOP
' **********************************************************************
END SUB
SUB quick3
DEFINT A-Z
CALL MousePointer(0) 'Reset mouse and
CALL MousePointer(1) 'turn pointer on
CALL MousePointer(3) 'Get coordinates
COLOR 4, 0: CLS
' **********************************************************************
PRINT "*************** this sub is for your code ***************************"
PRINT "*********************************************************************"
DO
IF (bx) = 2 THEN COLOR 2, 1, 7: CLS : CALL home: EXIT SUB
CALL mouse(cx, dx, bx)
qw$ = INKEY$
SELECT CASE qw$
CASE " ": PRINT "****space****"
CASE "p", "P": PRINT "**** Pause ****": SLEEP 5
CASE "q", "Q": COLOR 2, 1, 7: CLS : CALL home: EXIT SUB
CASE ELSE
END SELECT
LOOP
' **********************************************************************
END SUB
DEFSNG A-Z
SUB quick4
DEFINT A-Z
CALL MousePointer(0) 'Reset mouse and
CALL MousePointer(1) 'turn pointer on
CALL MousePointer(3) 'Get coordinates
COLOR 4, 0: CLS
' **********************************************************************
PRINT "*************** this sub is for your code ***************************"
PRINT "*****************right click back or Q***********************************"
DO
IF (bx) = 2 THEN COLOR 2, 1, 7: CLS : CALL home: EXIT SUB
CALL mouse(cx, dx, bx)
qw$ = INKEY$
SELECT CASE qw$
CASE " ": PRINT "*******space**** "
CASE "p", "P": PRINT " ******** Pause ************ ": SLEEP 5
CASE "q", "Q": COLOR 2, 1, 7: CLS : CALL home: EXIT SUB
CASE ELSE
END SELECT
LOOP
END SUB
DEFSNG A-Z
SUB quick5
DEFINT A-Z
CALL MousePointer(0) 'Reset mouse and
CALL MousePointer(1) 'turn pointer on
CALL MousePointer(3) 'Get coordinates
COLOR 4, 0: CLS
' **********************************************************************
PRINT "*************** this sub is for your code ***************************"
PRINT "*********************************************************************"
DO
IF (bx) = 2 THEN COLOR 2, 1, 7: CLS : CALL home: EXIT SUB
CALL mouse(cx, dx, bx)
qw$ = INKEY$
SELECT CASE qw$
CASE " ": PRINT "*******space**** "
CASE "p", "P": PRINT " ******** Pause ************ ": SLEEP 5
CASE "q", "Q": COLOR 2, 1, 7: CLS : CALL home: EXIT SUB
CASE ELSE
END SELECT
LOOP
' **********************************************************************
END SUB
DEFSNG A-Z
SUB quick6
DEFINT A-Z
CALL MousePointer(0) 'Reset mouse and
CALL MousePointer(1) 'turn pointer on
CALL MousePointer(3) 'Get coordinates
COLOR 4, 0: CLS
' **********************************************************************
PRINT "*************** this sub is for your code ***************************"
PRINT "*********************************************************************"
DO
IF (bx) = 2 THEN COLOR 2, 1, 7: CLS : CALL home: EXIT SUB
CALL mouse(cx, dx, bx)
qw$ = INKEY$
SELECT CASE qw$
CASE " ": PRINT "*******space**** "
CASE "p", "P": PRINT " ******** Pause ************ ": SLEEP 5
CASE "q", "Q": COLOR 2, 1, 7: CLS : CALL home: EXIT SUB
CASE ELSE
END SELECT
LOOP
' **********************************************************************
END SUB
DEFSNG A-Z
SUB quick7
DEFINT A-Z
CALL MousePointer(0) 'Reset mouse and
CALL MousePointer(1) 'turn pointer on
CALL MousePointer(3) 'Get coordinates
COLOR 4, 0: CLS
' **********************************************************************
PRINT "*************** this sub is for your code ***************************"
PRINT "*********************************************************************"
DO
IF (bx) = 2 THEN COLOR 2, 1, 7: CLS : CALL home: EXIT SUB
CALL mouse(cx, dx, bx)
qw$ = INKEY$
SELECT CASE qw$
CASE " ": PRINT "*******space**** "
CASE "p", "P": PRINT " ******** Pause ************ ": SLEEP 5
CASE "q", "Q": COLOR 2, 1, 7: CLS : CALL home: EXIT SUB
CASE ELSE
END SELECT
LOOP
END SUB
DEFSNG A-Z
SUB quick8
DEFINT A-Z
CALL MousePointer(0) 'Reset mouse and
CALL MousePointer(1) 'turn pointer on
CALL MousePointer(3) 'Get coordinates
COLOR 4, 0: CLS
' **********************************************************************
PRINT "*************** this sub is for your code ***************************"
PRINT "*****************right click back or Q***********************************"
DO
IF (bx) = 2 THEN COLOR 2, 1, 7: CLS : CALL home: EXIT SUB
CALL mouse(cx, dx, bx)
qw$ = INKEY$
SELECT CASE qw$
CASE " ": PRINT "*******space**** "
CASE "p", "P": PRINT " ******** Pause ************ ": SLEEP 5
CASE "q", "Q": COLOR 2, 1, 7: CLS : CALL home: EXIT SUB
CASE ELSE
END SELECT
LOOP
END SUB
DEFSNG A-Z
DECLARE SUB quick1 ()
DECLARE SUB quick2 ()
DECLARE SUB quick3 ()
DECLARE SUB quick4 ()
'*****************************************************************
'******************** Cool INKEY$ By Mad_Man *******************
'******************** Build Q BASIC Program's *******************
'******************** Wile INKEY$ *******************
'*****************************************************************
CLS
DO
qw$ = INKEY$
SELECT CASE qw$
CASE "a", "A": CALL quick1
CASE "b", "B": CALL quick2
CASE "c", "C": CALL quick3
CASE "d", "D": CALL quick4
CASE CHR$(0) + "H": PRINT "***arow up key***"
CASE CHR$(0) + "P": PRINT "****arow down key****"
CASE CHR$(0) + "K": PRINT "***arow right key***"
CASE CHR$(0) + "M": PRINT "***arow left key***"
CASE " ": PRINT "*******space**** "
CASE "p", "P": PRINT " ******** Pause ************ ": SLEEP 5
CASE "q", "Q": END 'quit
CASE ELSE
END SELECT
LOOP
END
SUB quick1
'**********************************************************************
PRINT "******************* inside guick sub #1 ***********************"
'**********************************************************************
END SUB
SUB quick2
PRINT "*************inside quick sub #2***********"
END SUB
SUB quick3
PRINT "****************inside quick sub #3***************"
END SUB
SUB quick4
PRINT "***********************in side quick sub #4**************"
END SUB