5 'TEST33.BAS. Covers modification of CONTROL. 1/27/07 8 'With clocking, Control words 4 and 5. May bring DO to an output pin. 10 CLS 20 ' 30 INPUT "Enter Pathname of output file (NO Extension) ", O$ 40 OPEN O$ + ".TXT" FOR OUTPUT AS #1 'Open output file 45 LOCATE 1, 1 'Set line 1, column 1 50 PRINT "Press ESC key to step through sequence 0 to 255, Q to exit" 60 PRINT 70 PRINT " 9 8 7 6 5 4 3 2 CW 12 13 14 15 16 17 18 19 PIN NUMBERS" 80 PRINT 82 PRINT #1, "TEST33" 'Program ID 85 PRINT #1, "" 90 PRINT #1, " 9 8 7 6 5 4 3 2 CW 12 13 14 15 16 17 18 19 PIN NUMBERS" 100 PRINT #1, "" 'Blank line 110 ' 120 'INITIALIZATION 170 ' 180 INVAL = 0 'Starting value 190 ' 200 'CYCLE WITH CLOCK PULSE WHILE CW = 5, LATCH DATA WHILE CW = 4 210 ' 212 CW = 5 'Deactivate pin 11 (output enable) 215 OUT &H360, CW 'Set hex 360 control reg 218 ' 220 OUT &H360 + 1, INVAL 'Hex 361. write input data reg 225 ' 230 X = INP(&H360) 'Hex 300. clock PAL while CW = 5 232 ' 235 CW = 4 'Activate pin 11 (output enable) 236 OUT &H360, CW 238 ' 240 X = INP(&H360 + 3) 'Hex 363. latch output data 245 ' 250 OUTVAL = INP(&H360 + 1) 'Hex 361. read output data reg 260 ' 300 A$ = INKEY$: IF (A$ = "Q" OR A$ = "q") THEN 950 'Exit if Q 302 IF A$ <> CHR$(27) THEN 300 'Wait 305 ' 310 'DISPLAY LINE 315 X = INVAL 320 PRINT USING "####"; X; 'Input value in decimal format 325 PRINT TAB(8); 'Tab to column 8 330 IF X < 128 THEN PRINT "0 "; ELSE PRINT "1 "; : X = X - 128 'Pin 9 331 IF X < 64 THEN PRINT "0 "; ELSE PRINT "1 "; : X = X - 64 'Pin 8 332 IF X < 32 THEN PRINT "0 "; ELSE PRINT "1 "; : X = X - 32 'Pin 7 333 IF X < 16 THEN PRINT "0 "; ELSE PRINT "1 "; : X = X - 16 'Pin 6 334 IF X < 8 THEN PRINT "0 "; ELSE PRINT "1 "; : X = X - 8 'Pin 5 335 IF X < 4 THEN PRINT "0 "; ELSE PRINT "1 "; : X = X - 4 'Pin 4 336 IF X < 2 THEN PRINT "0 "; ELSE PRINT "1 "; : X = X - 2 'Pin 3 337 IF X < 1 THEN PRINT "0 "; ELSE PRINT "1 "; 'Pin 2 339 COLOR 14, 0 'Yellow 340 PRINT " 5/4 "; 341 COLOR 7, 0 'White 343 ' 345 X = OUTVAL 350 IF X < 128 THEN PRINT "0 "; ELSE PRINT "1 "; : X = X - 128 'Pin 12 351 IF X < 64 THEN PRINT "0 "; ELSE PRINT "1 "; : X = X - 64 'Pin 13 352 IF X < 32 THEN PRINT "0 "; ELSE PRINT "1 "; : X = X - 32 'Pin 14 353 IF X < 16 THEN PRINT "0 "; ELSE PRINT "1 "; : X = X - 16 'Pin 15 354 IF X < 8 THEN PRINT "0 "; ELSE PRINT "1 "; : X = X - 8 'Pin 16 355 IF X < 4 THEN PRINT "0 "; ELSE PRINT "1 "; : X = X - 4 'Pin 17 356 IF X < 2 THEN PRINT "0 "; ELSE PRINT "1 "; : X = X - 2 'Pin 18 357 IF X < 1 THEN PRINT "0 "; ELSE PRINT "1 "; 'Pin 19 358 PRINT " " 'Space 4 columns 360 ' 370 'STORE LINE IN FILE 380 ' 390 X = INVAL 400 PRINT #1, USING "####"; X; 'Decimal input value 410 PRINT #1, TAB(8); 'Tab to column 8 430 IF X < 128 THEN PRINT #1, "0 "; ELSE PRINT #1, "1 "; : X = X - 128 431 IF X < 64 THEN PRINT #1, "0 "; ELSE PRINT #1, "1 "; : X = X - 64 432 IF X < 32 THEN PRINT #1, "0 "; ELSE PRINT #1, "1 "; : X = X - 32 433 IF X < 16 THEN PRINT #1, "0 "; ELSE PRINT #1, "1 "; : X = X - 16 434 IF X < 8 THEN PRINT #1, "0 "; ELSE PRINT #1, "1 "; : X = X - 8 435 IF X < 4 THEN PRINT #1, "0 "; ELSE PRINT #1, "1 "; : X = X - 4 436 IF X < 2 THEN PRINT #1, "0 "; ELSE PRINT #1, "1 "; : X = X - 2 437 IF X < 1 THEN PRINT #1, "0 "; ELSE PRINT #1, "1 "; 440 PRINT #1, " 5/4 "; 445 X = OUTVAL 450 IF X < 128 THEN PRINT #1, "0 "; ELSE PRINT #1, "1 "; : X = X - 128 451 IF X < 64 THEN PRINT #1, "0 "; ELSE PRINT #1, "1 "; : X = X - 64 452 IF X < 32 THEN PRINT #1, "0 "; ELSE PRINT #1, "1 "; : X = X - 32 453 IF X < 16 THEN PRINT #1, "0 "; ELSE PRINT #1, "1 "; : X = X - 16 454 IF X < 8 THEN PRINT #1, "0 "; ELSE PRINT #1, "1 "; : X = X - 8 455 IF X < 4 THEN PRINT #1, "0 "; ELSE PRINT #1, "1 "; : X = X - 4 456 IF X < 2 THEN PRINT #1, "0 "; ELSE PRINT #1, "1 "; : X = X - 2 457 IF X < 1 THEN PRINT #1, "0 "; ELSE PRINT #1, "1 "; 458 PRINT #1, " " 'Space 4 characters 460 ' 470 IF INVAL >= 255 THEN 925 'Check if at end 480 INVAL = INVAL + 1 'Increment input by 1 500 GOTO 200 'Back for more 920 ' 925 PRINT 928 PRINT #1, "" 940 ' 950 CLOSE #1 'Close read file 960 END 'End program