home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1985 November / 64er_Magazin_85-11_1985_Markt__Technik_de.d64 / input-routine (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  4KB  |  171 lines

  1. 0 rem       input (demo)
  2. 1 rem input-routine fur vc 64
  3. 2 rem
  4. 3 rem copyright by
  5. 4 rem karlheinz boss
  6. 5 rem sylvester-jordan-str. 11
  7. 6 rem 3550 marburg
  8. 7 rem 06421/13509
  9. 8 poke53281,09:poke53280,09:poke646,07
  10. 9 print chr$(14)
  11. 10 rem input-routine
  12. 20 rem
  13. 30 rem pa$ ist aufgebaut wie folgt:
  14. 40 rem pa$ = zespmimac     wobei
  15. 50 rem       ze = zeile
  16. 60 rem       sp = spalte
  17. 70 rem       mi = mindestlaenge
  18. 80 rem       ma = maximale laenge
  19. 90 rem        c = code  wobei
  20. 100 rem         1 = nur zahlen
  21. 110 rem         2 = nur buchstaben
  22. 120 rem         3 = alles
  23. 125 rem         4 = nur kleinbuchst.
  24. 130 rem       5-6 = frei programmierbar
  25. 132 rem               ( zeile 60490 )
  26. 140 rem pa$ muss die zeile und spalte
  27. 150 rem beinhalten,der rest ist hin-
  28. 160 rem reichend.es werden dann die
  29. 170 rem standardparameter in zeile
  30. 180 rem 60200 angenommen
  31. 190 rem z.b. pa$="0510"
  32. 200 :
  33. 1000 print"[147]";
  34. 1010 print"  [201]nput-[210]outine   copyright by [203].[194]oss   [146]"
  35. 1020 print "[213]eber get wird eine [201]nput-[210]outine simu-"
  36. 1030 print "liert, wobei saemtliche [211]onderfunktions-";
  37. 1040 print "tasten (inst,del,home,clr,cr,cl) noch "
  38. 1050 print "funktionieren, man aber das [197]ingabefeld"
  39. 1060 print "nicht verlassen kann. [193]usserdem kann man";
  40. 1070 print "beim [193]ufruf der [210]outine gleich [207]rt, min.";
  41. 1080 print "und max. [204]aenge und die zulaessigen [218]ei-";
  42. 1090 print "chen der [197]ingabe angeben."
  43. 1100 print "[152] [194]eisp.:                                ";
  44. 1105 print "                                        ";
  45. 1110 print "[196]atum ([212][212][205][205][202][202]) :                  ";
  46. 1120 print "                                        ";
  47. 1130 print "[206]ame :              ";
  48. 1140 print "                                        ";
  49. 1150 print "[203]uerzel (mind 2 kl. [194]uchst.) :       ";
  50. 1160 print "                                        ";
  51. 1170 print "[195]omputer :               ";
  52. 1180 print "                                        [146][158]";
  53. 1900 rem hier nun die 4 aufrufe aus
  54. 1910 rem vorangegangen beispiel
  55. 1920 rem
  56. 2000 pa$="121806061":gosub60000:a$=in$
  57. 2010 pa$="140800202":gosub60000:b$=in$
  58. 2020 pa$="163202034":gosub60000:c$=in$
  59. 2030 pa$="1812":gosub60000:d$=in$
  60. 2040 rem
  61. 2100 rem     das war's
  62. 2110 rem
  63. 2120 rem ps: die reine input-routine
  64. 2130 rem in kompr. form heisst
  65. 2140 rem        input (kurz)
  66. 3000 print:print "[196]ie [197]ingaben waren : ";a$
  67. 3010 print b$
  68. 3020 print c$
  69. 3030 print d$
  70. 3040 print "             [212]aste druecken [146]";
  71. 3050 get nj$ : if nj$="" then 3050
  72. 3995 print"[147]"
  73. 4000 poke 211,0:poke 214,24:sys58640
  74. 4010 print"list1900-2140          "
  75. 4015 print""
  76. 4020 list30-190
  77. 29999 end
  78. 30000 :
  79. 31000 :
  80. 32000 :
  81. 33000 :
  82. 34000 :
  83. 60000 bl$="                                        "
  84. 60010 in$=""
  85. 60099 :
  86. 60100 ze=val(mid$(pa$,1,2))
  87. 60110 sp=val(mid$(pa$,3,2))
  88. 60120 if len(pa$)=4 then 60200
  89. 60130 mi=val(mid$(pa$,5,2))
  90. 60140 ma=val(mid$(pa$,7,2))
  91. 60150 co=val(mid$(pa$,9,1))
  92. 60160 goto 60300
  93. 60190 rem******************************
  94. 60200 mi=0:ma=15:co=3
  95. 60210 rem******************************
  96. 60220 :
  97. 60300 gosub 60950
  98. 60310 poke 204,0
  99. 60320 get n$ : if n$="" then 60320
  100. 60330 ss=peek(211)
  101. 60340 if asc(n$)=13 and len(in$)>=mi then poke 204,1 : gosub 63890:return
  102. 60350 if asc(n$)=147 then gosub 61000 : goto 60320
  103. 60360 if asc(n$)=19 then gosub 63890 : gosub 60950:goto 60320
  104. 60370 if asc(n$)=20 and peek(211)>sp then gosub 61410 : goto 60320
  105. 60380 if asc(n$)=157 then gosub 61310:goto 60320
  106. 60390 if asc(n$)=148 and len(in$)<ma then gosub 61505:goto 60320
  107. 60400 if asc(n$)=29 then gosub 61210:goto 60320
  108. 60410 if asc(n$)=17 or asc(n$)=145 then   60320
  109. 60420 if asc(n$)=148 or asc(n$)=20 or asc(n$)=13 then goto 60320
  110. 60430 :
  111. 60485 fl=0
  112. 60490 on co gosub  63900,63910,63920,63930,63940,63950
  113. 60495 if fl=1 goto 60320
  114. 60500 :
  115. 60505 if len(in$)=ss-sp then in$=in$+n$:goto 60515
  116. 60510 in$=left$(in$,ss-sp)+n$+mid$(in$,ss-sp+2,len(in$)-ss+sp-1)
  117. 60515 print n$;
  118. 60520 if ss=sp+ma-1 then print chr$(157);
  119. 60530 goto 60320
  120. 60901 :
  121. 60902 :
  122. 60903 :
  123. 60950 poke211,sp:poke214,ze:sys58640:return
  124. 60999 :
  125. 61000 gosub 60950
  126. 61010 print left$(bl$,ma);
  127. 61020 gosub 60950
  128. 61030 in$=""
  129. 61040 return
  130. 61099 :
  131. 61210 if ss<sp+len(in$)and ss<sp+ma-1then ss=ss+1
  132. 61220 gosub 63890
  133. 61230 poke 211,ss:sys58640
  134. 61240 return
  135. 61250 :
  136. 61310 if ss>sp then ss=ss-1
  137. 61320 gosub 63890
  138. 61330 poke 211,ss : sys 58640
  139. 61340 return
  140. 61350 :
  141. 61410 in$=left$(in$,ss-sp-1)+mid$(in$,ss-sp+1,len(in$)-ss+sp)
  142. 61420 gosub 63890
  143. 61425 if len(in$)<ma-1 then print" ";
  144. 61430 poke 211,ss-1 : sys 58640
  145. 61440 return
  146. 61490 :
  147. 61505 if ss=sp+len(in$) then goto 61540
  148. 61510 in$=left$(in$,ss-sp)+" "+mid$(in$,ss-sp+1,len(in$)-ss+sp)
  149. 61520 gosub 63890
  150. 61530 poke 211,ss : sys 58640
  151. 61540 return
  152. 61590 :
  153. 63890 gosub 60950
  154. 63892 print in$;:if len(in$)<ma then print " ";
  155. 63898 return
  156. 63899 :
  157. 63900 if asc(n$)<48orasc(n$)>57 then fl=1
  158. 63909 return
  159. 63910 if asc(n$)=32 then return
  160. 63911 if(asc(n$)<65orasc(n$)>90)and(asc(n$)<193orasc(n$)>218) then fl=1
  161. 63919 return
  162. 63920 rem
  163. 63929 return
  164. 63930 if asc(n$)=32 then return
  165. 63931 if(asc(n$)<65orasc(n$)>90) then fl=1
  166. 63939 return
  167. 63940 rem
  168. 63949 return
  169. 63950 rem
  170. 63959 return
  171.