10 REM ------------------------------- 12 REM KEYBOARD EXPANDER PROFILE PROG 14 REM KE.PF 16 REM ------------------------------- 18 REM (PROGRAM VARIABLES) 20 ZX=0:ZY=0:ZD=0:ZI=0:ZJ=0:ZB=0:ZP=0 22 REM 24 REM (FACTOR FOR REPOSITIONED KEYS) 26 SF=64:CF=128:TF=192:REM SHFT,C=,CTRL 28 REM 30 REM (ARRAY DIMENSIONS SOURCE KEYS) 32 ND=0:SD=1:CD=2:TD=3:REM *NORM,SHFT,C=,CTRL 34 REM 36 REM (USED IN STRINGS FOR KEYS) 38 REM 40 S$="":L$=CHR$(0):I$=CHR$(0):REM NEW,LINK AND I'ACTIVE 42 Q$=CHR$(34):R$=CHR$(13):N$=CHR$(141):REM QUOTE,RET,SHFT+RET 44 LN$=CHR$(3):LS$=CHR$(1):LC$=CHR$(2):LT$=CHR$(4):REM NORM,SHFT,C=,CTRL 46 REM 48 REM (VARIABLES FOR KEYS) 50 A=10:B=28:C=20:D=18:E=14:F=21:G=26:H=29:I=33:J=34:K=37:L=42:M=36 52 N=39:O=38:P=41:Q=62:R=17:S=13:T=22:U=30:V=31:W=9 :X=23:Y=25:Z=12 54 N0=35:N1=56:N2=59:N3=8:N4=11:N5=16:N6=19:N7=24:N8=27:N9=32 56 F1=4:F3=5:F5=6:F7=3:DE=0:RE=1:HO=51:RI=2:DO=7:UA=54:LA=57 58 PL=40:MI=43:EQ=53:PO=48:AT=46:AS=49:SL=55 60 PE=44:CO=45:SE=50:CM=47:SP=60 62 REM 64 REM (JMP VECTOR AND COMMAND LINE) 66 ZV=0:ZC=0:REM ADDRESSES, 0=NONE 68 REM 70 REM (KEY DEFINITION ARRAY STORAGE) 72 DIM ZS$(3,62),ZP(3,62),ZR(3,62) 74 REM 76 REM ------------------------------ 78 REM -DEFINE YOUR KEYBOARD PROFILE- 80 REM - BETWEEN LINES 100 AND 799 - 82 REM **DONT DEF ANY NEW VARIABLES** 84 REM ------------------------------ 86 REM 800 REM 802 REM (RELOCATE TABLES) 804 REM 806 ZI=FRE(0):ZP=PEEK(55)+256*PEEK(56):REM PROG START 808 ZB=PEEK(ZP+7)+256*PEEK(ZP+8):REM DSCR BASE 810 IFPEEK(ZP+3)=75ANDPEEK(ZP+4)=69ANDPEEK(ZP+5)=88ANDPEEK(ZP+6)=80THEN814 812 PRINT"ERROR: CANNOT LOCATE KEYBOARD EXPANDER":END 814 ZX=(PEEK(47)+256*PEEK(48))+9:REM ARRAY DEFS 816 FORZI=0TO62:FORZJ=0TO3 818 ZD=ZB+(ZI*16)+(ZJ*4) 820 IFZP(ZJ,ZI)THENPOKEZD,ZP(ZJ,ZI) 822 ZY=ZR(ZJ,ZI):IFZYTHENPOKEZD+2,ZY-INT(ZY/256)*256:POKEZD+3,INT(ZY/256) 824 IFLEN(ZS$(ZJ,ZI))=0THEN830 826 ZY=ZX+(ZI*12)+(ZJ*3) 828 POKEZD+1,PEEK(ZY):POKEZD+2,PEEK(ZY+1):POKEZD+3,PEEK(ZY+2) 830 NEXTZJ:NEXTZI 832 REM 834 IFZVTHENPOKE785,ZV-INT(ZV/256)*256:POKE786,INT(ZV/256):POKE784,0 836 IFZCTHENPOKEZB-7,ZC-INT(ZC/256)*256:POKEZB-6,INT(ZC/256) 838 ZY=(PEEK(51)+256*PEEK(52))-9:REM NEW START 840 FORZI=0TO8:POKEZY+ZI,PEEK(ZP+ZI):NEXT:POKEZB-1,255 842 POKEZB-5,ZY-INT(ZY/256)*256:POKEZB-4,INT(ZY/256) 844 POKE55,PEEK(ZB-5):POKE56,PEEK(ZB-4):CLR:REM NEW TOP MEM 846 REM 848 REM (STORE ABSOLUTE VERSION) 850 REM 852 INPUT"CREATE AN ABSOLUTE VERSION - Y/N";F$ 854 IFF$<>"Y"ANDF$<>"N"THEN852 856 IFF$="N"THEN864 858 INPUT"FILENAME FOR PROFILE";F$ 860 SYS57812F$,8 862 POKE174,0:POKE175,160:POKE193,PEEK(55):POKE194,PEEK(56):SYS62954 864 CLR:END