VISICODE  T "VISICODE" (1:1:7:42999  30 #821,0;" PLEASE WAIT " (<N=19 :G$:R=07:B:G$+R,B:R:N 2"A",28,34",33!,28,62>,63?,63?,31,"B",0,0,0,128,64@,32 ,144,200 7"C",15,7,3,1,0,0,0,0,"D",228,242,250,252,254,126~,62>,28 <~"E",0,480,60<,63?,60<,480,0,0,"F",63?,63?,63?,63?,513,33!,0,0,"G",63?,63?,63?,31,31,31,0,0,"H",255,255,255,255,255,255,0,0,"I",255,255,254,252,248,224,0,0 F@C=0242:0,C;"";1,C;"":C PL=2162:L,0;"";L+1,0;"";L,30-(4L=2)-(2L=4);"";L+1,30-(4L=2)-(2L=4);"":L ZBC=0302:18,C;"";19,C;"":C dq3,20;"";4,20;"";5,3;"LONGMAN SOFTWARE ";6,20;"" n9000(#:9000(# x1A$="COMPUTER":L=7:C=3:9180# }1A$="STUDIES":L=10 :C=4:9180# 0:1 140:A=43000 !N=071G:B:A+N,B:N m33!,0,64@,17,0,228,1,0,27,237,176,201 m33!,0,228,17,0,64@,1,9 ,27,237,176,201 m33!,0,64@,17,0,200,1,0,27,237,176,201 m33!,0,200,17,0,64@,1,9 ,27,237,176,201 m33!,0,64@,17,0,172,1,0,27,237,176,201 m33!,0,172,17,0,64@,1,9 ,27,237,176,201 621,0;" " 43000 :21,0;" SEARCHING AND LOADING " &7:1:20,0; ""  #("DOUBLE HEIGHT" #2a=43100\ #<.z:z999a,z:a=a+1:9020<# #F237,75K,176,92\,121y,254,32 ,568,1,201,120x,254,21,568,1,201,205,158,14,197,6,0,9 ,193 #P229,229,120x,60<,205,158,14,6,0,9 ,209,1,0,7,9 ,235,9 ,229,6,4,126~,18,21,18,21,37%,16,248 #Z 209,6,4,126~,18,21,18,21,37%,16,248,225,124|,15,15,15,230,3,246,88X,103g,126~,1,32 ,0,9 ,119w,201,999 #"DOUBLE WIDTH" #a=43200 #.z:z999a,z:a=a+1:9130# #237,75K,176,92\,121y,254,31,568,1,201,120x,254,22,568,1,201,205,158,14,6,0,9 ,229,14 #8,126~,35#,546,0,6,4,15,568,6,203,14,203,14,24,8,203,14,203,14,203,254,203,246 #Ȥ16,237,43+,546,0,6,4,15,568,6,203,14,203,14,24,8,203,14,203,14,203,254,203,246,16,237,36$,13 ,32 ,203,225,124|,15,15,15,230,3,246,88X,103g,126~,35#,119w,201,999 # #n=1̱a$ #23729\,l:23728\,c # l,c;a$(n) #Z=43200 #7Z=43100\:23728\,c+1:Z=43100\ #c=c+2:n $ HG(bGIZ Paz ASTUDIESVisicode ; '7;Z=43012:60< "Visicode" D 1984 MERCURIAN PULP PRODUCTS/CONTRACT BOOKS .A$=" VISICODE ":7:1:C=3 (g23729\,13 :N=1̱A$:13 ,C;A$(N):23728\,C:Z=43200:Z=43100\ 2723728\,C+1:Z=43100\:C=C+2:N 7J21,0;" ":Z=43000 "!"l,2;1;c$(q,2):l=l+1 0FP(L)=Q+1:Q:H$(8,15):Q=18:H$(Q):Q :Cq=110 :7+q,15;2;z$(17):q ?:q=18:8+q,16;7;h$(q):q DW$:w$=z$+w$+z$:5800 Nc:1210:#1;0,3;" END OF EXAMPLE PROGRAM ";I;" ":i=5650 X]#1;1,0;" Press  N  for Next  E  to End ":.5,10 b-23658j\,8:a$=:a$=""610b la$="N"660 va$="E"670  610b B=5:5000 I |#1;0,0;" Do you want to see them again? Press  Y  or  N  ":.5,0 -23658j\,8:a$=:a$=""680 a$="Y"530 a$"N"670 C5,"PUT X,","3","ADD X","","PUT Y,","12","ADD Y","","END","" L"","++ ADDITION ++",""," numbers PUT"," in X and Y"," ADDED in ACC.","","" Ў"""PUT X,3"" stores 3 in REGISTER X. "" ADD X"" adds it to the 0 in the ACCUMULATOR. Either, or both, REGISTERS can be used in this way." E5,"PUT Y,","99","ADD Y","","PUT Y,","22","TAKE Y","","END","" m"- SUBTRACTION -","","Use ADD to get","first number in","ACCUMULATOR.","TAKE subtracts","second number.","" "You can add, or subtract a whole series of numbers. Keep PUTting numbers into a REGISTER and follow with an ADD or TAKE instruction." T6,"PUT Y,","2","ADD Y","","CHECK,","12","ZEROGO,","3","GOBACK,","4","END","" {"*TIMES*TABLE*1*"," Shows loop &"," CHECK on ACC.",""," GOBACK,4 loops"," to ADD Y line."," ZEROGO jumps "," if ACC.=12."  "When using any ""GO"" count from the ""GO"" to the target line. Include in the total ALL numbers and instructions to be jumped." \7,"PUT X,","5","PUT Y,","2","ADD Y","","DOWN","","XZERO,","3","GOBACK,","3","END",""  z"*TIMES*TABLE*2*"," Shows loop &"," X as COUNTER.",""," GOBACK,3 loops"," to ADD Y line."," XZERO jumps"," on 5th DOWN." *"In BASIC the X COUNTER would look like this: LET X=10 >>>> LET X=X-1 >>>>> IF X=0 THEN.... Note: ""XZERO"" is a ""GO"" instruction." 4T10 ,"PUT Y,","32","ADD Y","","PUT Y,","5","TAKE Y","","COUNT","","CHECK,","4" >3"ZEROGO,","5","NEGGO,","3","GOBACK,","7","END","" H" / DIVISION /"," CHECK 4 and"," NEGGO used in"," case of uneven"," division."," Quotient in X."," Remainder in"," ACCUMULATOR." R"This program shows why ""proper"" Assembler needs so many different instructions. The 15 VISICODEs do not have the flexibility for anything more than simple division." 1:1:7: )0,8;" USING VISICODE " E''" Plan out your program using"'" the HELP! page. Take particular" 3" care when calculating numbers"'" for ""GO""'s." G'" Use the next section to key in"'" your program,then watch it run." ]'" The HELP! page can be recalled"'" when keying in,without losing"'" any work already in." s''" The worst that can happen is"'" that it won't work - in which"'" case - check your codes and"'" start again." 25;"!HELP!" B=1:5000 eEX=0:P(22):P(1)=1:C$(20,2,7):IN=1::5400 L=1:8,15;" ";9 ,15;" ENTER VISICODE  ";10 ,15;" INSTRUCTION OR  " g11 ,15;"  ""H"" FOR HELP!  ";12 ,15;"  ""G"" TO GO ON  " ,13 ,15;" " ^23658j\,8:.5,10 :1,0;" YES?...";A$:A$=""1040 +A$="H"B=5:5500|:1040 $*a$="G"L>15700D:1200 .;C=0:M$="":N$="":Q=1̱A$:Q=A$1090B 8@A$(Q)=","C=1:M$=A$(Q):N$=A$(Q+1):1100L BQ:M$=""M$=A$ GA$(A$)=","C=1 L$M$<7M$=M$+" ":1100L VMF=0:Q=115:M$=I$(Q)C$(IN,1)=M$:F=q:1130j `Q j#F=05600:1040 t5(n$=""C)(N$""C=0)5600:1040 y:F=0:Q=1̱N$:N$(Q)<"0"N$(Q)>"9"F=1 ~Q:F5600:1040 1L,2;1;C$(IN,1):L=L+1 C=01190 N$>5N$=N$(5) DC$(IN,2)=N$:L,2;1;C$(IN,2):L=L+1 0IN=IN+1:P(L)=IN:l<201040 #1;0,0;" No more space!! Do you want to see if this works?  Y  or  N  ":.5,20:y=0:5100:y=01500 C$(IN,1)="END" ;L=813 :L,15;5;Z$(17):L EEND=0:CN=1:L=1:X=0:Y=0:A=0 nB=5:1,5:#1;1,0;" PROGRAM READY  ENTER  TO START ":5005 2L,0;8;9 ;"";L,10 ;"" L1=L ZDIS=1:Q=115:I$(Q)=C$(CN,1)1980+20*Q:1260  Q:endEX  END(1500-502*END) [CN=CN+1:5000:DISQ=818:Q,15;5;Z$(17):Q $CN=0CN>201450 7L1,0;8;" ";L1,10 ;" ":1230 x|8,15;" ILLEGAL JUMP.";10 ,15;" NO INSTRUCTION ";12 ,15;" AT GIVEN PLACE " }#1;0,0;" Do you want to write another? Press  Y  or  N  ":.5,10 &y=0:5100:y1000 G1:Z=43012:21,8;" END OF PROGRAM ": TX=C$(CN,2):1,27-(X>9 )-(X>99c);" ";X:L=L+2: TY=C$(CN,2):3,27-(Y>9 )-(Y>99c);" ";Y:L=L+2: HA=A+X:5,27-(A>9 )-(A>99c);" ";A:L=L+1:  HA=A+Y:5,27-(A>9 )-(A>99c);" ";A:L=L+1:  HA=A-X:5,27-(A>9 )-(A>99c);" ";A:L=L+1: 4HA=A-Y:5,27-(A>9 )-(A>99c);" ";A:L=L+1: HDIS=0:8,15;" CHECKING ACC.":D=A-C$(CN,2):502:10 ,15;" DIFFERENCE=";D;" ":L=L+2: \>D=012 ,15;" ZERO : GOING ":2180 f812 ,15;" NOT ZERO:NO GO ":L=L+2: pAD<012 ,15;" NEGATIVE: GOING ":2180 z812 ,15;" NOT NEG: NO GO ":L=L+2: L=L+C$(CN,2)+1 L>20END=2: ,CN=P(L)-1:CN<0END=2:  L=L-C$(CN,2)-1 L<0END=2: ,CN=P(L)-1:CN<0END=2:  NX=X+1:1,27-(X>9 )-(X>99c);" ";X:L=L+1: NX=X-1:1,27-(X>9 )-(X>99c);" ";X:L=L+1: <X=012 ,15;"X ZERO:GOING":2180 912 ,15;"X NOT ZERO:NO GO ":L=L+2: END=1:  H#1;1,0;"  Press  ENTER  to continue " .5,0: .23658j\,8:a$=:a$=""5010 a$=13 " ": hxA$="H"5500|  5005 '23658j\,0:.5,0 a$=:a$=""5110 y=0:a$="n"" ":  a$"y"5100 " ":y=1: P\5200P:7:7:0::0,3;" VISICODE INSTRUCTION SET " Z*'"  CODE   MEANING "'' d"N=115:q$,z$:q$:n i*20,8;" n = Any number " nd5200P:n=115:q$,Z$:n+3,0;5;q$;" ";6;Z$(23) x8n=320,5;" ACC.= ACCUMULATOR " }Wn=720,0;" Compares n with number in ACC. ":.5,0 in=820,0;"  EVERY INSTRUCTION & NUMBER   TAKES ONE ""PLACE"" " 5000:n C"PUT X,n ","PUT n IN X REGISTER","PUT Y,n ","PUT n IN Y REGISTER" E"ADD X ","ADD X number TO ACC.","ADD Y ","ADD Y number TO ACC." K"TAKE X ","TAKE X number FROM ACC.","TAKE Y ","TAKE Y number FROM ACC." J"CHECK,n ","DIFFERENCE (ACC.-n)...","ZEROGO,n","IF DIFF=0,JUMP n PLACES" &"NEGGO,N ","IF DIFF<0,JUMP n PLACES" ?"GO,n ","JUMP n PLACES ON","GOBACK,n","JUMP n PLACES BACK" H"COUNT ","ADD 1 TO number IN X","DOWN ","TAKE 1 FROM number IN X" 6"XZERO,n ","IF X=0 JUMP n PLACES","END "," STOP" rz=43024:20,0;" When !HELP! shown on screen, press H to see this page again " z$(32 ): 5:0:5: "7:0,0;" PROGRAM ":l=120:l,0;" _________ ":l:21,0;" " ,a0,15;" REGISTERS ";1,15;"  REG.X   0  " 62,15;" ";3,15;"  REG.Y   0  ";4,15;" " @a5,15;"  ACC.   0  ";6,15;" " Jc19,24;" ";20,24;" !HELP! ";21,24;" " T |)z=43048(:z=43036:7 ""5505 !5000:z=430604:B: P#1;0,0;"ILLEGAL INSTRUCION - CHECK CODES":5000: D[C$(IN-1,1)"END "C$(IN,1)="END":L,2;1;"END ": NIN=IN-1: Yq=1(w$-31):#1;1,0;7;w$(qq+31):15 ="h"Ŧ="H"5500| q: @ 8000@ J<N=12:G$:R=07:B:G$+R,B:R:N T"A",16,480,126~,254,126~,480,16,0,"B",8,12 ,126~,127,126~,12 ,8,0 ^ z (JbGBnPUT X, PUT Y, ADD X ADD Y TAKE X TAKE Y CHECK, ZEROGO,NEGGO, GO, GOBACK,COUNT DOWN XZERO, END  QEND # h nxaid} / DIVISION / CHECK 4 and NEGGO used in case of uneven division. Quotient in X. Remainder in ACCUMULATOR. W This program shows why "proper" Assembler needs so many different instructions. The 15 VISICODEs do not have the flexibility for anything more than simple division. qEND cNMEND fA &