Compucolor.org – Virtual Media

Listing of file='ADDECO.BAS;01' on disk='vmedia/hardware_utilities-sector.ccvf'

100 REM  PROGRAM TO PRINT OUT THE ADDRESSING IN H/L FORMAT
110 REM  TO SCREEN & PRINTER, BY K.G.WINDER - OCT 1985
120 REM
130 CLEAR 500:PLOT 14,12:PLOT 27,18,7:REM  SET BAUD 7
140 PRINT :PRINT TAB( 18)"MEMORY LINE DECODE PRINTER"
150 PRINT TAB( 18)"eeeeeeeeeeeeeeeeeeeeeeeeee"
160 PLOT 15,3,12,6:PRINT "MEMORY ADDRESS IN DEC, EG. D----  "
170 PLOT 3,12,7:INPUT "- OR - ADDRESS IN HEX, EG. H----  ";E$
180 K= 0:IF LEFT$ (E$,1)= "D"THEN GOTO 200
190 GOTO 220
200 X$= MID$ (E$,2):D= VAL (X$):Z= D:X= D:GOSUB 1000
210 GOTO 240
220 IF LEFT$ (E$,1)= "H"THEN H$= MID$ (E$,2):GOSUB 2000
230 Z= D:X= D
240 IF K= 1THEN X= 66000:FOR I= 1TO 2000:NEXT
250 IF X> 65535THEN PLOT 28,11,28,11:GOTO 160
255 U$= LEFT$ (E$,1):IF U$< > "D"AND U$< > "H"THEN PLOT 28,11,28,11:GOTO 160
260 PLOT 3,17,9:INPUT "PRINTOUT ON PAPER? Y OR N - ";PT$
270 IF PT$< > "Y"AND PT$< > "N"THEN PLOT 28,11:GOTO 260
280 GOSUB 420:REM  PROCESS VALUES
290 POKE 33265,0:Q= 0:IF PT$= "N"THEN Q= 1:PRINT :GOTO 310:REM  PRINT OR NOT
300 PLOT 3,19,11:INPUT "PRESS RETURN WHEN READY - ";R
310 IF Q= 1THEN PRINT :POKE 33289,64:GOTO 340
320 POKE 33289,80:POKE 33265,14:PRINT "  ";B$;" ";X:REM  TO PAPER
330 PRINT "  ";Y9$+ Z9$+ SS$+ H$:PLOT 10,10,13:POKE 33265,0
340 PRINT :PRINT :PRINT B$:REM  TO SCREEN
350 PRINT :PRINT Y9$+ Z9$
360 PRINT :PRINT TAB( 10)"FOR ADDRESSING LOCATION =  ";X;"D   ";H$"H"
370 PRINT :PRINT :PRINT :PLOT 7
380 INPUT "            PRESS RETURN TO REPEAT, OR M FOR MENU - ";R$
390 POKE 33289,64:IF R$= "M"THEN PLOT 1
400 GOTO 130
410 END
420 REM  BINARY DECODE
430 Y1$= " L  ":IF Z> 32767AND Z< 65536THEN Y1$= " H  ":Z= Z- 32768
440 Y2$= " L  ":IF Z> 16383AND Z< 32768THEN Y2$= " H  ":Z= Z- 16384
450 Y3$= " L  ":IF Z> 8191AND Z< 16384THEN Y3$= " H  ":Z= Z- 8192
460 Y4$= " L  ":IF Z> 4095AND Z< 8192THEN Y4$= " H  ":Z= Z- 4096
470 Y5$= " L  ":IF Z> 2047AND Z< 4096THEN Y5$= " H  ":Z= Z- 2048
480 Y6$= " L  ":IF Z> 1023AND Z< 2048THEN Y6$= " H  ":Z= Z- 1024
490 Y7$= "  L ":IF Z> 511AND Z< 1024THEN Y7$= "  H ":Z= Z- 512
500 Y8$= "  L ":IF Z> 255AND Z< 512THEN Y8$= "  H ":Z= Z- 256
510 Z1$= "  L ":IF Z> 127AND Z< 256THEN Z1$= "  H ":Z= Z- 128
520 Z2$= "  L ":IF Z> 63AND Z< 128THEN Z2$= "  H ":Z= Z- 64
530 Z3$= "  L ":IF Z> 31AND Z< 64THEN Z3$= "  H ":Z= Z- 32
540 Z4$= "  L ":IF Z> 15AND Z< 32THEN Z4$= "  H ":Z= Z- 16
550 Z5$= "  L ":IF Z> 7AND Z< 16THEN Z5$= "  H ":Z= Z- 8
560 Z6$= "  L ":IF Z> 3AND Z< 8THEN Z6$= "  H ":Z= Z- 4
570 Z7$= "  L ":IF Z> 1AND Z< 4THEN Z7$= "  H ":Z= Z- 2
580 Z8$= "  L ":IF Z= 1THEN Z8$= "  H "
590 SS$= " "
600 B$= "A15 A14 A13 A12 A11 A10  A9  A8  A7  A6  A5  A4  A3  A2  A1  A0"
610 Y9$= Y1$+ Y2$+ Y3$+ Y4$+ Y5$+ Y6$+ Y7$+ Y8$
620 Z9$= Z1$+ Z2$+ Z3$+ Z4$+ Z5$+ Z6$+ Z7$+ Z8$
630 RETURN
1000 REM  DEC TO HEX. D = DECI INPUT - H$ IS HEX OUT
1010 H$= ""
1020 NN= D- (16* INT (D/ 16)):IF NN< 10THEN N$= STR$ (NN):H$= RIGHT$ (N$,1)+ H$:GOTO 1040
1030 H$= CHR$ (NN+ 55)+ H$
1040 D= INT (D/ 16):IF D= 0THEN RETURN
1050 GOTO 1020
1060 END
2000 REM   HEX TO DECIMAL, HEX NUMBER IS H$, DEC IS D
2010 D= 0 : A$= "" : L= LEN (H$)
2020 FOR  I= L TO  1 STEP  - 1
2030 A$= MID$ (H$,I,1)
2040 V= ASC (A$)
2050 IF  47< V AND  V< 58 THEN V= V- 48 : GOTO 2080
2060 IF  64< V AND  V< 71 THEN V= V- 55 : GOTO 2080
2070 PRINT SPC( 15);"";"ILLEGAL CHARACTER         ";A$;"       ":D= - .1:K= 1:RETURN
2080 D= D+ 16^ (L- I)* V
2090 NEXT  I
2100 D= INT (D+ 0.5)
2110 RETURN