8-Bit Software Online Conversion

Hash (#) Generator - Listing

10REM Program HASHGEN to assemble m/c program to secure correct printing of 20REM both # (hash) and £ (pound) sig ns 30REM on parallel printers using soft ware selection of national character set s 40REM from Basic or from other langua ges 50MODE7:DIM E 12:U=E+7 60PROCparms 70REM (C) H. L. Clarke & S. B. Yeo 80USERV=&200:WRCHV=&20E:oscli=&FFF7 85REM insert VDU2 here for assembly p rintout 90FOR pass%=0 TO 3 STEP 3 100P%=&900 110[OPT pass% 120LDA #(switch MOD 256):STA USERV 130LDA #(switch DIV 256):STA USERV+1 140LDA WRCHV:STA sub+1 150LDA WRCHV+1:STA sub+2 160LDA #(routine MOD 256):STA WRCHV 170LDA #(routine DIV 256):STA WRCHV+1 180LDX #(key0 MOD 256):LDY #(key0 DIV 256):JSR oscli 190LDX #(key1 MOD 256):LDY #(key1 DIV 256):JSR oscli 200RTS 210.sub:JSR 0:RTS 220.switch:STX flag1:RTS 230.esc:LDA #1:JSR sub 240LDA #27:JSR sub 250LDA #1:JSR sub 260LDA #(?E):JSR sub 270LDA #1:JSR sub:RTS 280.byte:EQUB 0 290.flag1:EQUB 1 300.flag2:EQUB 3 310.routine:STA byte 320LDA flag1:BEQ finish 330LDA #3:CMP flag2:BEQ chkpr 340LDA byte:CMP #3:BEQ setpflag 350CMP #96:BNE notpd 360LDA #1:JSR sub:LDA #35:JSR sub 370LDA #3:JSR sub:LDA #96:JSR sub 380LDA #2:JMP jp 390.notpd:CMP #35:BNE jp 400JSR esc 410] 420N%=1:IF V%=1 THEN 490 430FOR N%=1 TO (V%-1) 440[OPT pass% 450LDA #(?(U+N%)):JSR sub 460LDA #1:JSR sub 470] 480NEXT 490[OPT pass% 500LDA #(?(U+N%)):JSR sub 510LDA #35:JSR sub 520JSR esc 530] 540N%=1:IF V%=1 THEN 610 550FOR N%=1 TO (V%-1) 560[OPT pass% 570LDA #(?(E+N%)):JSR sub 580LDA #1:JSR sub 590] 600NEXT 610[OPT pass% 620LDA #(?(E+N%)) 630JMP jp 640.chkpr:LDA byte:CMP #2:BNE jp 650.setpflag:STA flag2 660.finish:LDA byte 670.jp:JMP (sub+1) 680.key0:EQUS"K.0 *CODE 0 |M":EQUB &D 690.key1:EQUS"K.1 *CODE 1 |M":EQUB &D 700] 710NEXT 720VDU3 730INPUT"Save machine code Y/N ? "YN$ 740 IF LEFT$(YN$,1)="N" OR LEFT$(YN$,1 )="n" THEN END 750INPUT"Name to be assigned "F$ 760OSCLI"SAVE "+F$+" 900 A00" 10000END 10010DEFPROCparms 10020PRINT'''"This program is intended f or use with"'"parallel printers in which national"'"character sets are selected by a" 10030PRINT"sequence in the form of:"'"ES C+<letter>+n(+n....) up to a"'"maximum o f 3 numerals following"'"the letter"' 10040PRINT"In instruction books this is often"'"preceded by the LPRINT command ( to"'"suit Microsoft Basic"'' 10050INPUT"Letter to follow <ESC> "L$ 10060?E=ASC(L$) 10070PRINT"Number of numerals to follow letter ?" 10080INPUT V%:IF V%>3 THEN PRINTCHR$(131 );"MACHINE CODE PROGRAM WOULD BE TOO"'CH R$(131)"LONG FOR AVAILABLE MEMORY":STOP 10090PRINT'"Please input the numerals fo r the"'"'England' character set" 10100FOR N%=1 TO V% 10110PRINT"Numeral ";N%;" ";:INPUT Z% 10120?(E+N%)=Z% 10130NEXT 10140PRINT'"Please input the numerals fo r the"'"'USA' character set" 10150FOR N%=1 TO V% 10160PRINT"Numeral ";N%;" ";:INPUT Z% 10170?(U+N%)=Z% 10180NEXT 10190PRINT 10200ENDPROC