home *** CD-ROM | disk | FTP | other *** search
/ Software Du Jour / SoftwareDuJour.iso / BUSINESS / DBASE / DBAPG.ARC / SMALL-.CMD < prev    next >
OS/2 REXX Batch file  |  1984-08-12  |  5KB  |  136 lines

  1. * Program.: SMALL-.CMD
  2. * Author..: Luis A. Castro
  3. * Date....: 01/20/84 
  4. * Notice..: Copyright 1984, Luis A. Castro, All Rights Reserved.
  5. * Version.: dBASE II, version 2.4
  6. * Notes...: Front-end program to utilize dWAIT, INKEY,
  7. *           LEADZERO, and LEFTJUST CP/M-80 assembly subroutines.
  8. * Local...: row, col, string, select, inchar
  9. *
  10. SET TALK OFF 
  11. SET BELL OFF
  12. SET COLON OFF
  13. SET RAW ON
  14. ERASE
  15. @ 2, 0 SAY "DEMONSTRATION of SMALL ASSEMBLY SUBROUTINES"
  16. @ 2,72 SAY DATE()
  17. @ 3, 0 SAY "========================================"
  18. @ 3,40 SAY "========================================"
  19. STORE "X" TO select
  20. DO WHILE select <> " "
  21.    @ 10,0
  22.    STORE " " TO select
  23.    @ 5,0 SAY "1. dWAIT    =  console input or time-out"
  24.    @ 6,0 SAY "2. INKEY()  =  inkey function"
  25.    @ 7,0 SAY "3. LEADZERO =  leading blanks with zeroes"
  26.    @ 8,0 SAY "4. LEFTJUST =  left justify a string"
  27.    @ 9,0 GET select PICTURE "!"
  28.    READ
  29.    IF select = " " .OR. .NOT. select $ "1234"
  30.       LOOP
  31.    ENDIF
  32.    @ 9,0 SAY " "
  33.    * ---Execute a routine.
  34.    DO CASE
  35.       CASE select = "1"
  36.       * ---dWAIT.  console key or time-out delay.
  37.          * ------------0---1---2---3---4---5---6---7
  38.          POKE 42000,  33, 39,164, 53,194, 26,164, 44
  39.          POKE 42008,  53,200, 14,  6, 30,255,205,  5
  40.          POKE 42016,   0,254,  0,202, 16,164,201,  0
  41.          POKE 42024, 100 
  42.          * ------------0---1---2---3---4---5---6---7
  43.          * ---The last value in the above poke sequence, 100,
  44.          * ---is the time-out limit, yielding a delay of 0.035n 
  45.          * ---seconds (at 4MHz).  The largest value that can be
  46.          * ---used is 255, or about 9 seconds. 
  47.          *
  48.          STORE " " TO string
  49.          @ 10,0 SAY "Enter a number [1..3] " GET string
  50.          READ
  51.          IF string < "1" .OR. string > "3"
  52.             @ 12,0 SAY "Number is not [1..3] -- DELAY IN EFFECT"
  53.             * ---Enable dWAIT.
  54.             SET CALL TO 42000 
  55.             CALL
  56.          ENDIF
  57.       CASE select = "2"
  58.       * ---INKEY()
  59.          * ------------0---1---2---3---4---5---6---7
  60.          POKE 41984,  42,  6,  0, 34, 57,164, 33, 20,;
  61.                      164, 34,  6,  0,201, 42, 57,164 
  62.          POKE 42000,  34,  6,  0,201,245,121,254,  3,;
  63.                      202, 51,164,254,  6,194, 55,164
  64.          POKE 42016, 123,254,255,202, 51,164,254,254,;
  65.                      202, 51,164,254,253,202, 51,164 
  66.          POKE 42032, 195, 55,164, 14,  0,241,201,241,;
  67.                      195,  0,  0,229, 14,  6, 30,255 
  68.          POKE 42048, 205, 56,164,225, 35,119,201 
  69.          * ------------0---1---2---3---4---5---6---7
  70.          * ---Initialize INKEY().
  71.          SET CALL TO 41984
  72.          CALL
  73.          @ 10,0 SAY "Strike any key to STOP"
  74.          * ---Enable INKEY().
  75.          SET CALL TO 42043
  76.          * ---Do something until a character is pressed.
  77.          STORE CHR( 0 ) to inchar
  78.          STORE 11 TO row
  79.          DO WHILE inchar = CHR( 0 ) .AND. row < 14
  80.             STORE 0 TO col
  81.             DO WHILE inchar = CHR( 0 ) .AND. col < 50
  82.                @ row,col SAY "."
  83.                STORE row + 1 TO row
  84.                * ---Read first character from CP/M buffer.
  85.                * ---CHR( 0 ) is returned if none is available.  
  86.                CALL inchar
  87.             ENDDO
  88.             STORE col + 1 TO col
  89.          ENDDO
  90.          * ---Restore dBASE II's input routines.
  91.          * ---This closing operation MUST NOT BE FORGOTTEN.
  92.          SET CALL TO 41997
  93.          CALL
  94.       CASE select = "3"
  95.       * ---LEADZERO.
  96.          * ------------0---1---2---3---4---5---6---7
  97.          POKE 42000,  34, 37,164, 70, 35,126,254, 32
  98.          POKE 42008, 194, 33,164, 54, 48,  5,194, 20 
  99.          POKE 42016, 164, 42, 37,164,201
  100.          * ------------0---1---2---3---4---5---6---7
  101.          SET CALL TO 42000 
  102.          ACCEPT "Enter a string with leading blanks " TO string
  103.          IF TRIM(string) <> " "
  104.             ? "BEFORE: >" + string + "<"
  105.             CALL string
  106.             ? "AFTER:  >" + string + "<"
  107.          ENDIF
  108.       CASE select = "4"
  109.       * ---LEFTJUST.
  110.          * ------------0---1---2---3---4---5---6---7
  111.          POKE 42000,  34, 51,164, 78, 84, 93, 19, 35,;
  112.                      126,254, 32,194, 37,164, 13,194
  113.          POKE 42016,  23,164,202, 47,164,126, 54, 32,;
  114.                       18, 19, 35, 13,194, 37,164, 42
  115.          POKE 42032,  51,164,201,  0,  0
  116.          * ------------0---1---2---3---4---5---6---7
  117.          SET CALL TO 42000 
  118.          ACCEPT "Enter a string with leading blanks " TO string
  119.          IF TRIM(string) <> " "
  120.             ? "BEFORE: >" + string + "<"
  121.             CALL string
  122.             ? "AFTER:  >" + string + "<"
  123.          ENDIF
  124.    ENDCASE
  125.    @ 11,0
  126.    @ 12,0
  127.    @ 13,0
  128. ENDDO
  129. SET BELL ON
  130. SET TALK ON
  131. SET COLON ON
  132. SET RAW OFF
  133. RELEASE row, col, string, select, inchar
  134. RETURN
  135. * EOF: SMALL-.CMD
  136.