home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Commodore Disc 41
/
Commodore_Disc_41_19xx_-_de.d64
/
compass
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
6KB
|
236 lines
10 rem compass==============c64/c128
14 rem by alfons mittelmeyer
18 rem (p) commodore disc
22 rem =============================
26 dim f$(300),f%(300,2),w%(3000)
30 readf$(i),f%(i,0),f%(i,1),f%(i,2)
34 if f$(i)<>".."theni=i+1:goto30
38 ed=i:wz=2:df=8763:goto370
42 data "===",1,1,0
46 data "***",1,21,0
50 data "setm",1,22,0
54 data "wam++",1,23,0
58 data "wma",1,24,0
62 data "rb",1,25,0
66 data "rw",1,26,0
70 data "(",1,2,0
74 data ")",1,3,0
78 data "by",1,4,0
82 data "wo",1,5,0
86 data "const",1,6,0
90 data "@",2,0,3
94 data "<-",1,11,0
98 data "[",1,12,0
102 data "]",1,13,0
106 data "'",1,14,0
110 data "dw",1,17,0
114 data "!",1,18,0
118 data "===n",1,19,0
122 data "byte",1,7,0
126 data "word",1,8,0
130 data "---",1,10,0
134 data "mov",2,1,4
138 data "mov",2,2,5
142 data "loop",2,1,6
146 data "loop",2,2,7
150 data "inc",2,1,8
154 data "inc",2,2,9
158 data "end",2,0,10
162 data "fill",2,0,11
166 data "dec",2,1,12
170 data "dec",2,2,13
174 data "jne",2,1,14
178 data "jne",2,2,15
182 data "je",2,1,16
186 data "je",2,2,17
190 data "jmp",2,0,18
194 data "jae",2,1,19
198 data "jae",2,2,20
202 data "jb",2,1,21
206 data "jb",2,2,22
210 data "jcc",2,0,58
214 data "jcs",2,0,59
218 data "sys",2,0,23
222 data "add",2,1,24
226 data "add",2,2,25
230 data "sub",2,1,26
234 data "sub",2,2,27
238 data "and",2,1,28
242 data "and",2,2,29
246 data "or",2,1,30
250 data "or",2,2,31
254 data "xor",2,1,32
258 data "xor",2,2,33
262 data "call",2,0,34
266 data "ret",2,0,35
270 data "&",2,0,40
274 data "&%",2,0,41
278 data "findne",2,2,42
282 data "copy",2,0,36
286 data "finde",2,2,37
290 data "cmps",2,0,38
294 data "rol",2,1,43
298 data "rol",2,2,44
302 data "ror",2,1,45
306 data "ror",2,2,46
310 data "shl",2,1,54
314 data "shl",2,2,55
318 data "shr",2,1,56
322 data "shr",2,2,57
326 data "clc",2,0,47
330 data "sec",2,0,48
334 data "++",2,1,49
338 data "++",2,2,50
342 data "--",2,1,52
346 data "--",2,2,53
350 data "ac",4,1,37
354 data "xr",4,1,38
358 data "yr",4,1,39
362 data "sr",4,1,40
366 data "..",1,9,0
370 reada$:ifa$=""then370
374 b$=left$(a$,1)
378 ifb$<"0"orb$>"9"then394
382 z=val(a$):gosub386:goto370
386 w%(wz)=0:ta=0
390 gosub798:w%(wz+1)=al:w%(wz+2)=ah:wz=wz+3:return
394 if b$<>"%"andb$<>"#"andb$<>"."then406
398 a$=right$(a$,len(a$)-1)
402 ifb$="#"thenw%(wz)=val(a$):wz=wz+1:goto370
406 x=0:fori=edto1step-1:iff$(i)=a$thenx=i:i=1
410 next
414 if a$=f$(x)then434
418 ifbm=0thenprint"fehler: "a$:end
422 ff=ff+1:ed=ed+1:f$(ed)=a$:f%(ed,0)=1:f%(ed,2)=wz+1:f%(ed,1)=16:print"? "a$
426 a$="0":goto382
430 z=f%(x,2):f%(x,2)=wz+1:goto386
434 gosub438:goto370
438 on f%(x,0)goto450,614
442 goto638
446 printf$(x)f%(x,0)f%(x,1)f%(x,2):return
450 onf%(x,1)goto478,494,598,522,526,594,686,726,498,778,574,538,542,458,462,430,578,678,490,470,802,806,810,814,818,822
454 goto 446
458 reada$:fori=1tolen(a$):w%(wz+i-1)=asc(mid$(a$,i)):next:wz=wz+len(a$):return
462 z=f%(x,2):gosub386:ifkfthenreturn
466 w%(wz-3)=51:return
470 ifkf=0thenz=pa:gosub386
474 goto462
478 ifbm<>0thenprint"block unabgeschlossen":end
482 reada$:print"block: "a$:ifa$="main"thenpz=0:ba=ed:return
486 ed=ed+1:ba=ed:pz=ed:f$(ed)=a$:f%(ed,0)=1:f%(ed,1)=15:return
490 gosub478:f%(ed,1)=20:return
494 f%(pz,2)=wz+df:bm=ed:return
498 z=f%(0,2):gosub798:w%(0)=al:w%(1)=ah
502 print:print:print"speichern j/n ?"
506 geta$:ifa$=""then506
510 ifa$<>"j"thenend
511 input"filename";fi$
514 open8,8,8,fi$+",p,w":z=df:gosub798:print#8,chr$(al)chr$(ah);
518 fori=0towz-1:print#8,chr$(w%(i));:next:close8:end
522 ta=1:return
526 ta=2:return
530 ifta=1thenprint"byte-adressierung verboten":end
534 return
538 ka=wz:kf=-1:return
542 pa=(wz-ka)/3:lz=wz:sz=wz:kf=0
546 if lz=kathenta=0:return
550 i=8:lz=lz-9
554 iflz<katheni=i-3:lz=lz+3:goto554
558 forj=0toi:w%(sz+j)=w%(lz+j):next
562 sz=sz+i+2:w%(sz-1)=39:iflz<>kathen550
566 i=sz-wz-1:forj=0toi:w%(ka+j)=w%(wz+j):next:wz=ka+i+1:ta=0:return
570 print"cmpanweisung "a$" behandeln":return
574 wz=f%(ed,2)-df:return
578 kf=0:sz=ka:lz=ka+1
582 w%(sz)=w%(lz):w%(sz+1)=w%(lz+1)
586 sz=sz+2:lz=lz+3:iflz<wzthen582
590 wz=sz:return
594 ed=ed+1:reada$:f$(ed)=a$:f%(ed,0)=3:reada$:f%(ed,2)=val(a$):f%(ed,1)=0:return
598 ed=ba:bm=0:ifff<>0thenprint"unbekannter befehl im block":end
602 ifpz=0thenw%(wz)=10:wz=wz+1:return
606 w%(wz)=35:wz=wz+1:return
610 rem ------- token ----
614 kf=0:iff%(x,1)=0orta=f%(x,1)then626
618 x=x-1:iff$(x)=a$andta=f%(x,1)then626
622 print"unmittelbare adressierung verboten":end
626 iff%(x,2)<49thenta=0
630 w%(wz)=f%(x,2):wz=wz+1:return
634 rem ----- parameter ---
638 ifb$="%"thenz=f%(x,2):goto386
642 ifb$<>"."then674
646 tb=ta:ta=f%(x,1):ifta=0then622
650 iftb<>1then662
654 ifta=1thenw%(wz)=60:goto670
658 w%(wz)=61:goto670
662 ifta=1thenw%(wz)=3:goto670
666 w%(wz)=62
670 wz=wz+1:w%(wz)=f%(x,0)+59:z=f%(x,2):goto390
674 ta=f%(x,1):w%(wz)=f%(x,0)-3:z=f%(x,2):goto390
678 wa=f%(ed,2)-df:w%(wa)=wz-wa-1:return
682 rem ------- byte ---
686 b$="":reada$:ifleft$(a$,1)<>"%"then698
690 readb$:if right$(b$,1)<>"."thengosub706:goto686
694 b$=left$(b$,len(b$)-1):goto706
698 if right$(a$,1)<>"."thengosub706:goto686
702 a$=left$(a$,len(a$)-1)
706 ed=ed+1:f%(ed,1)=1:ifleft$(a$,1)="@"then762
710 ifleft$(a$,1)<>"%"then718
714 goto754
718 f$(ed)=a$:f%(ed,0)=4:f%(ed,2)=wz+df:w%(wz)=0:wz=wz+1:return
722 rem ----- word ---
726 b$="":reada$:ifleft$(a$,1)<>"%"then738
730 readb$:if right$(b$,1)<>"."thengosub746:goto726
734 b$=left$(b$,len(b$)-1):goto746
738 if right$(a$,1)<>"."thengosub746:goto726
742 a$=left$(a$,len(a$)-1)
746 ed=ed+1:f%(ed,1)=2:ifleft$(a$,1)="@"then762
750 ifleft$(a$,1)<>"%"then770
754 a$=right$(a$,len(a$)-1):f%(ed,2)=val(b$)
758 f$(ed)=a$:f%(ed,0)=4:return
762 f$(ed)=a$:f%(ed,0)=5:f%(ed,2)=wz+df
766 a$=right$(a$,len(a$)-1):ed=ed+1:f%(ed,1)=2
770 f$(ed)=a$:f%(ed,0)=4:f%(ed,2)=wz+df:w%(wz)=0:w%(wz+1)=0:wz=wz+2:return
774 rem ---------
778 reada$:x=0:fori=bmtoed:iff$(i)=a$thenx=i:i=ed
782 next:ifx=0thened=ed+1:f$(ed)=a$:x=ed:goto794
786 ff=ff-1:a=f%(x,2):z=wz+df:gosub798
790 b=w%(a)+256*w%(a+1):w%(a)=al:w%(a+1)=ah:a=b:ifa<>0then790
794 f%(x,0)=3:f%(x,1)=0:f%(x,2)=wz+df:return
798 ah=int(z/256):al=z-256*ah:return
802 ma=wz:return
806 kf=0:wz=wz-3:ma=w%(wz+1)+256*w%(wz+2):return
810 z=wz+df:gosub798:w%(ma)=al:w%(ma+1)=ah:ma=ma+2:return
814 z=ma+df:gosub798:w%(wz)=al:w%(wz+1)=ah:wz=wz+2:return
818 reada:wz=wz+a:return
822 reada:wz=wz+a+a:return
996 rem ==================
997 rem compass-programm
998 rem ==================
999 rem
1000 data byte,cr.,#13,!
1010 rem
1020 data ===,emit
1030 data (,&,ac,mov
1040 data 65490,sys,)
1050 rem
1060 data ===,strout
1070 data byte,x,@zg.
1080 data (,&%,zg,mov
1090 data @zg,++,x,mov
1100 data ---,lab
1110 data @zg,++,emit
1120 data lab,x,loop,)
1130 rem
1140 data ===n,write
1150 data byte,x.
1160 data (,&,x,by,mov
1170 data ---,lab
1180 data strout
1190 data lab,x,loop,)
1200 rem
1210 data ===,main
1220 data byte,a$.,#147,',das ist compass,!
1230 data byte,b$.,',die schnelle sprache fuer ihren rechner,!
1240 data (,[,a$,cr,cr,b$,cr,],write,)
1250 data ...