10 REM CPU=====================CBM 20 REM (P) 10/87 COMMODORE WELT 30 REM =========================== 40 REM BY ALFONS MITTELMEYER 50 REM 60 REM 70 REM BASIC V2.0 80 REM VC20,C64,C16/116/PLUS4,C128 90 REM =========================== 100 REM -------------------------- 110 REM WORTSCHATZ 120 REM -------------------------- 130 DATA LD,AND,OR,XOR,ADD,ADC,SUB,SBB,SHL,SHR,ROL,ROR,DEZ,HEX,BIN,QUIT 140 DATA CLC,SEC,CLB,SEB,CLR,BITS 150 N=22:FI=2:FO=2:PRINTCHR$(147); 160 XX$=CHR$(18)+" "+CHR$(146)+CHR$(157) 170 CB$="C":B1$(1)="1":B0$(1)="0":B1$(2)=".[146]":B0$(2)=".":BI=2 180 REM -------------------------- 190 REM FEHLERMELDUNGEN 200 REM -------------------------- 210 GOTO310 220 PRINTTAB(20)"SYNTAX ERROR":GOTO310 230 PRINTTAB(20)"TYPE MISMATCH":GOTO310 240 F=-1:PRINTTAB(20)"UNDEFINED FLAG":RETURN 250 F=-1:PRINTTAB(20)"PARAMETER ERROR":RETURN 260 F=-1:PRINTTAB(20)"UNDEFINED STATEMENT":RETURN 270 PRINTTAB(20)"UNKNOWN COMMAND" 280 REM -------------------------- 290 REM EINGABE 300 REM -------------------------- 310 PRINT">"XX$;:CU=0:X$=" " 320 GETA$:IFA$=""THEN320 330 A=ASC(A$):IFA=13THEN410 340 IFA=20ANDCU<>0THENX$=LEFT$(X$,CU):CU=CU-1:GOTO370 350 IFA<32ORA>95THEN320 360 CU=CU+1:X$=X$+A$ 370 PRINTA$XX$;:GOTO320 380 REM -------------------------- 390 REM SCHLUESSELWORT 400 REM -------------------------- 410 PRINT" ";:X$=X$+" ":L=LEN(X$) 420 IFL=2THEN700 430 K=2:D$=" ":GOSUB1050 435 A$=LEFT$(MN$,1) 436 IFA$="$"ORA$="%"ORA$="."OR(A$>="0"ANDA$<="9")THENUM=2:II=1:K=0:GOTO580 440 RESTORE:FORI=1TON:READA$:IFA$=MN$THENJ=I:I=N 450 NEXT:IFA$<>MN$THEN270 460 II=J:IFJ<13THEN540 470 ONJ-12GOSUB 1650,1660,1670,1630,1620,1610,1600,1590,1640,1680 480 IFFTHEN310 490 GOTO700 500 REM -------------------------- 510 REM ARITHMETIK + LOGIK 520 REM -------------------------- 530 D$=" ":GOSUB1050:IFFTHEN220 540 MN$=MN$+" ":LM=LEN(MN$) 550 FORI=LMTO1STEP-1:IFMID$(MN$,I,1)<>" "THENJ=I:I=1 560 NEXT:MN$=LEFT$(MN$,J):GOTO580 570 IFMN$<>"A"THENGOSUB260:GOTO310 580 D$=" ":K=K+1:GOSUB1050 590 FI=1:A$=LEFT$(MN$,1) 600 IFA$="$"THENFI=2 610 IFA$="%"THENFI=3 620 IFA$="."ORA$="*"THENFI=4 622 AA$=A$ 630 ONFIGOSUB1340,1400,1490,1550 635 IFMN<256THEN640 636 IFMN>65535THEN230 637 PRINTTAB(20)"WERT: [";: 638 IFAA$<>"$"THENUM=4:FA=65536:GOSUB1251:GOTO720 639 PRINTRIGHT$(STR$(MN),LEN(STR$(MN))-1);:GOTO720 640 IFFTHEN230 650 ONIIGOSUB770,780,790,800,810,840,860,880,900,950,930,980 660 IFFTHEN310 670 REM -------------------------- 680 REM AUSGABE 690 REM -------------------------- 700 PRINTTAB(20)"AKKU: ["; 710 ONFOGOSUB1130,1250,1170,1170 720 PRINT"]";:F$="":IFCA=1THENF$=CHR$(18) 730 PRINT" "F$CB$CHR$(146):GOTO310 740 REM -------------------------- 750 REM ALU-ROUTINEN 760 REM -------------------------- 770 AK=MN:RETURN 780 AK=AKANDMN:RETURN 790 AK=AKORMN:RETURN 800 AK=(AKANDNOTMN)OR(MNANDNOTAK):RETURN 810 AK=AK+MN:CB$="C" 820 CA=0:IFAK>255THENAK=AK-256:CA=1 830 RETURN 840 IFCB$="B"THEN240 850 MN=MN+CA:GOTO810 860 CA=0:CB$="B":AK=AK-MN:IFAK<0THENAK=AK+256:CA=1 870 RETURN 880 IFCB$="C"THEN240 890 MN=MN+CA:GOTO860 900 CA=0:I=512:CB$="C" 910 IFMN>8ORMN=0THEN250 920 AK=(AK+AK+CA)*2^(MN-1):AK=AK-I*(INT(AK/512)):GOTO820 930 IFCB$="B"THEN240 940 I=511:GOTO910 950 CA=0:CB$="C" 960 IFMN>8ORMN=0THEN250 970 AK=256*CA+AK:AL=INT(AK/2^(MN-1)):AK=INT(AL/2):CA=AL-AK-AK:RETURN 980 IFMN>8ORMN=0THEN250 990 IFCB$="B"THEN240 1000 AN=2^(MN-1):AK=AK+(AK-AN*INT(AK/AN))*512:GOTO970 1010 F=-1:RETURN 1020 REM ------------------------- 1030 REM LESEROUTINEN 1040 REM ------------------------- 1050 F=0:FORI=KTOL:A$=MID$(X$,I,1):IFA$<>" "THENJ=I:I=L 1060 NEXT 1070 FORI=JTOL:A$=MID$(X$,I,1):IFA$=D$THENK=I:I=L 1080 NEXT:IFA$<>D$THENF=-1:RETURN 1090 MN$=MID$(X$,J,K-J):J=N:RETURN 1100 REM ------------------------- 1110 REM DEZIMALAUSGABE 1120 REM ------------------------- 1130 A$=STR$(AK):PRINTRIGHT$(A$,LEN(A$)-1);:RETURN 1140 REM ------------------------- 1150 REM BINAERAUSGABE 1160 REM ------------------------- 1170 IFFO=3THENPRINT"%"; 1172 MN=AK 1180 FORI=1TO8:MN=MN+MN 1190 IFMN>255THENMN=MN-256:PRINTB1$(BI);:GOTO1210 1200 PRINTB0$(BI); 1210 NEXT:RETURN 1220 REM ------------------------- 1230 REM HEX-AUSGABE 1240 REM ------------------------- 1250 MN=AK:UM=2:FA=256 1251 PRINT"$";:FORI=1TOUM:MN=MN*16 1260 IFMN65535THEN1010 1350 IFSTR$(MN)<>" "+MN$THEN1010 1360 RETURN 1370 REM ------------------------- 1380 REM HEX-EINGABE 1390 REM ------------------------- 1400 LM=LEN(MN$):IFLM>3+UMTHEN1010 1410 MN=0:FORI=2TOLM:A$=MID$(MN$,I,1):GOSUB1420:MN=16*MN+A:NEXT:RETURN 1420 A=ASC(A$):IFA<48ORA>70THEN1010 1430 IFA>57ANDA<65THEN1010 1440 IFA>64THENA=A-7 1450 A=A-48:RETURN 1460 REM ------------------------- 1470 REM BINAERE EINGABE 1480 REM ------------------------- 1490 A=1:B1$="1":B0$="0" 1500 LM=LEN(MN$):IFLM>8+ATHEN1010 1510 MN=0:FORI=1+ATOLM:A$=MID$(MN$,I,1) 1520 IFA$<>B1$ANDA$<>B0$THEN1010 1530 MN=MN+MN:IFA$=B1$THENMN=MN+1 1540 NEXT:RETURN 1550 A=0:B1$="*":B0$=".":GOTO1500 1560 REM ------------------------- 1570 REM WEITERE ROUTINEN 1580 REM ------------------------- 1590 CA=1:CB$="B":RETURN 1600 CA=0:CB$="B":RETURN 1610 CA=1:CB$="C":RETURN 1620 CA=0:CB$="C":RETURN 1630 END 1640 PRINTCHR$(147);:GOTO1010 1650 FO=1:RETURN 1660 FO=2:RETURN 1670 FO=3:BI=1:RETURN 1680 FO=4:BI=2:RETURN 1690 REM ========================= 1700 REM E N D E 1710 REM =========================