home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib07.dsk / HEXPAD.bas < prev    next >
BASIC Source File  |  2023-02-26  |  5KB  |  80 lines

  1. 2  REM  ******************************
  2. 3  REM  **        HEXPAD            **
  3. 4  REM  **    BY DONALD C. O'SHEA   **
  4. 5  REM  **    COPYRIGHT (C) 1981    **
  5. 6  REM  **    BY MICRO-SPARC INC.   **
  6. 7  REM  **    LINCOLN, MA. 01773    **
  7. 8  REM  ******************************
  8. 10  REM  MEMORY PROTECTION AND KEYBOARD ASSIGNMENTS
  9. 20  HOME : HIMEM: 24576
  10. 30  DEF  FN MD(X) = X - INT(X/8) *8: DIM A(2):FLAG = 0
  11. 40 B$ = "M,./JKL;UIOP7890":C$ = "0123456789ABCDEF": GOTO 340
  12. 50  REM  CURSOR CONTROL SUBROUTINES
  13. 60 MAD =  FN MD(AD): VTAB 23: HTAB (MAD *3 +6): RETURN 
  14. 70 MAD =  FN MD(AD): IF MAD  THEN  RETURN 
  15. 80  PRINT : PRINT :BH =  INT(AD/256):BL = AD -BH *256
  16. 90 BA =  INT(BH/16):BB = BH -BA *16:BC =  INT(BL/16):BD = BL -BC *16
  17. 100 MAD$ =  MID$ (C$,BA +1,1) + MID$ (C$,BB +1,1) + MID$ (C$,BC +1,1) + MID$ (C$,BD +1,1): IF FLAG  THEN  RETURN 
  18. 110  VTAB 23: HTAB 1: PRINT MAD$;"- ";: RETURN 
  19. 120 AD = 0:L =  LEN(A$): FOR I = 0 TO L -2: FOR J = 0 TO 15: IF  MID$ (A$,L -I,1) =  MID$ (C$,J +1,1)  THEN AD = AD +J *16 ^I: NEXT 
  20. 130  NEXT J: NEXT I: RETURN 
  21. 140  REM  INPUT ROUTINE
  22. 150  HOME : VTAB 8: PRINT "INPUT START ADDRESS"
  23. 160  INPUT "IF IN HEX, PRECEDE WITH A '$'";A$
  24. 170  IF  LEFT$(A$,1) = "$"  THEN  GOSUB 120:M1$ = A$:SA = AD:AD = AD -1:MAD$ =  RIGHT$(M1$, LEN(M1$) -1):A =  FN MD(AD +1): ON (A < >0) GOSUB 110: GOTO 190
  25. 180 SA =  VAL(A$):AD = SA:AD = AD -1: GOSUB 80:M1$ = MAD$
  26. 190 AD = AD +1
  27. 200  GOSUB 70: GOSUB 60
  28. 210  FOR I = 1 TO 2: GET A$
  29. 220  IF A$ = "-"  THEN AD = AD -8:M = M -8: GOSUB 80: GOTO 200
  30. 230  IF A$ = "+"  THEN AD = AD +8:M = M +8: GOSUB 80: GOSUB 110: GOTO 200
  31. 240  IF A$ = " "  AND I = 1  THEN AD = AD -2:M = M -1: GOTO 190
  32. 250  IF A$ = " "  AND I = 2  THEN AD = AD -1: GOTO 190
  33. 260  IF A$ = "Q"  THEN 590
  34. 270  FOR J = 1 TO 16
  35. 280  IF A$ =  MID$ (B$,J,1)  THEN A(I) = J -1: GOTO 300
  36. 290  NEXT J:AD = AD -1: GOTO 190
  37. 300  PRINT  MID$ (C$,J,1);: NEXT I: PRINT " ";
  38. 310 M = M +1
  39. 320 B% = 16 *A(1) +A(2): POKE 24575 +M,B%: GOTO 190
  40. 330  REM  TITLE PAGE AND BEGINNING INSTRUCTIONS
  41. 340  HOME : VTAB 10: HTAB 16: INVERSE : PRINT "HEXPAD": NORMAL 
  42. 350  VTAB 12: HTAB 18: PRINT "BY"
  43. 351  VTAB 14: HTAB 11: PRINT "DONALD C. O'SHEA"
  44. 355  VTAB 20: PRINT "COPYRIGHT (1981), ALL RIGHTS RESERVED"
  45. 356  FOR I = 1 TO 5000: NEXT 
  46. 360  HOME : VTAB 10: PRINT "DO YOU WANT INSTRUCTIONS? (Y/N)";
  47. 370  GET A$: PRINT A$: IF A$ = "Y"  THEN 400
  48. 380  IF A$ = "N"  THEN  PRINT : GOTO 150
  49. 390  GOTO 360
  50. 400  HOME : VTAB 8: PRINT "THIS PROGRAM ACCEPTS MACHINE LANGUAGE","INSTRUCTIONS AND STORES THEM IN MEMORY."
  51. 410  PRINT : PRINT "BECAUSE THE ULTIMATE DESTINATION  MAY","CONFLICT WITH THIS PROGRAM, THE DATA","ARE STORED IN MEMORY STARTING AT"
  52. 420  PRINT "24576(DEC), $6000(HEX).  THE PROGRAM","WILL ASK FOR A STARTING ADDRESS AND","WILL KEEP TRACK OF THE LOCATIONS AS","THOUGH THE DATA WERE IN THE CORRECT","LOCATION."
  53. 430  PRINT 
  54. 440  PRINT : PRINT "PRESS SPACE BAR TO CONTINUE";: GET A$
  55. 450  HOME : VTAB 2: PRINT "THIS PROGRAM PROVIDES DATA ENTRY OF ","BINARY PROGRAMS IN THE FORM OF A HEXA-","DECIMAL KEYPAD.  A SET OF 16 RIGHT HAND","KEYS ARE CONFIGURED TO INPUT THE HEX","SYMBOLS 0-9 AND A-F IN THE FOLLOWING","ARRANGEMENT:"
  56. 460 E$ = "     "
  57. 470  PRINT : FOR I = 1 TO 4
  58. 480  HTAB 13 +I: PRINT  MID$ (B$,17 -I *4,4);E$; MID$ (C$,17 -I *4,4): NEXT 
  59. 490  PRINT 
  60. 500  PRINT "ALL OTHER KEYS ARE LOCKED OUT EXCEPT:"
  61. 510  PRINT  TAB( 4)"THE SPACE BAR BACKS UP ONE CHARACTER"
  62. 520  PRINT  TAB( 4)"'-'BACKS UP 8 LOCATIONS"
  63. 530  PRINT  TAB( 4)"'+' GOES FORWARD 8 LOCATIONS"
  64. 540  PRINT  TAB( 4)"'Q' QUITS ENTRY AND PROVIDES"
  65. 550  PRINT  TAB( 8)"INFORMATION ON THE PROGRAM"
  66. 560  PRINT  TAB( 8)"LOCATION AND LENGTH."
  67. 570  PRINT : PRINT "PRESS SPACE BAR TO BEGIN": GET A$: GOTO 150
  68. 580  REM  FINISHING INSTRUCTIONS
  69. 590  HOME : PRINT : PRINT "BINARY PROGRAM STARTS AT ADDRESS ": PRINT SA;" (DEC.) AND IS ";M;" (DEC.) BYTES LONG"
  70. 600  PRINT : PRINT "TO MOVE THIS PROGRAM TO ITS FINAL","RESTING PLACE, ENTER MONITOR THROUGH ","'CALL-151' AND THEN MOVE THE PROGRAM ","BY TYPING IN";
  71. 610 FLAG = 1:AD = 24576 +M: GOSUB 80:M2$ = MAD$
  72. 620  PRINT  RIGHT$(M1$, LEN(M1$) -1);"<6000.";M2$;"M'"
  73. 630 AD = M: GOSUB 80
  74. 640  PRINT "THIS CAN BE SAVED TO DISK BY TYPING IN","'BSAVE FILENAME,A$6000,L$";MAD$;"'";: INVERSE : PRINT "BEFORE";: NORMAL 
  75. 650  PRINT "THE MOVE OR 'BSAVE FILENAME,A$"; RIGHT$(M1$, LEN(M1$) -1);
  76. 660  PRINT ",L$";MAD$;"'": INVERSE : PRINT "AFTER";: NORMAL : PRINT " THE MOVE"
  77. 670  PRINT : PRINT "IF YOU WISH TO CHECK A LISTING THAT","INCLUDES THE MNEMONICS, THEN 'CALL-151'","AND TYPE '"; RIGHT$(M1$, LEN(M1$) -1);: PRINT "L' ";
  78. 680  INVERSE : PRINT "AFTER";: NORMAL : PRINT " THE MOVE"
  79. 690  PRINT "ERRORS CAN BE FIXED IN THE MONITOR."
  80. 700  END