home *** CD-ROM | disk | FTP | other *** search
/ Commodore Disc 54 / Commodore_Disc_54_19xx_-_de.d64 / etikett.quell < prev    next >
Text File  |  2022-10-26  |  7KB  |  463 lines

  1. /* ------ Stringfunktionen ------ */
  2.  
  3. int len( )
  4. begin
  5.   ( , 0xffff , 0 find ) swap -
  6. bend
  7.  
  8. int $<( )
  9. int le ;
  10. begin
  11.   swap ( swap , swap , swap len le = 1 + copy ) swap le ] +
  12. bend
  13.  
  14. int inchar( str z )
  15. begin ,
  16.   ( str ] , ( len ) + , z ] find )
  17.   nif fert
  18.   str --] -
  19. : fert
  20. bend
  21.  
  22. int val( )
  23. int s , erg ;
  24. begin
  25.   s = 0 erg =
  26. : lab0 s ]++ by ] nif ff 0x1f and nif lab0
  27. : lab1 15 and ( erg ] 10 * ) + erg =
  28. : lab2 s ]++ by ] 0x1f and if lab1
  29.   erg ]
  30. : ff bend
  31.  
  32. int scan( an en str n )
  33. begin , nif fert
  34. : lab ( an ] , en ] , str by ]] find )
  35.   nif fert
  36.   an = ( an ]++ , str ] , n by ] comp )
  37.   nif lab an --]
  38. : fert bend
  39.  
  40. /* --- Bildschirm, Farbe und Cursor */
  41.  
  42. void modswap( )
  43. begin
  44.   0 syscon 64 == if ff 0xff5f sys
  45. : ff bend
  46.  
  47. void color( vf hf rf )
  48. begin , 0 ,
  49.   vf --] 5 syscon by =
  50.   hf ] nif ff 1 - 53281 by =
  51.   rf ] nif ff 1 - 53280 by =
  52. : ff bend
  53.  
  54. void at( y x )
  55. begin
  56.   yr by = y ] xr by =
  57.   clc 0xfff0 sys
  58. bend
  59.  
  60. char posxy( )
  61. begin
  62.   sec 0xfff0 sys xr by ] yr by ]
  63. bend
  64.  
  65. void tab( )
  66. begin
  67.   ( posxy swap ) ( , swap at )
  68. bend
  69.  
  70. void +tab( )
  71. begin
  72.   ( posxy ) + tab
  73. bend
  74.  
  75. /* ------- Ausgabefunktionen ------- */
  76.  
  77. void putc( )
  78. begin
  79.   ac by = 0xffd2 sys
  80. bend
  81.  
  82. void putl( )
  83. int zg ;
  84. begin
  85.   zg = go rd
  86. : wr putc
  87. : rd zg ]++ by ] if wr
  88. bend
  89.  
  90. void rputn( )
  91. begin
  92.   nif ff ( 10 / rputn )
  93.   swap 10 % '0' + putc
  94. : ff bend
  95.  
  96. void putn( )
  97. begin
  98.   nif ff rputn return
  99. : ff '0' putc
  100. bend
  101.  
  102. void print( liste )
  103. int zg ;
  104. begin , 0 ,
  105.   liste zg = ]
  106. : lab putl 2 zg += ] if lab
  107. bend
  108.  
  109. void fprint( string )
  110. int par , zg ;
  111. begin
  112.  , string par = ] zg =
  113. : lab1 zg by ]] nif ff
  114.   zg by ]] '%' == if zahl
  115.   zg ]++ by ] putc go lab1
  116. : zahl 2 par +=
  117.   zg ]++ par ]] putn go lab1
  118. : ff bend
  119.  
  120. /* ------ Eingabefunktionen -------- */
  121.  
  122. char getc( )
  123. begin
  124.   0xffe4 sys ac by ]
  125. bend
  126.  
  127. char key( )
  128. begin
  129. : rd getc nif rd
  130. bend
  131.  
  132. int getl( str lim )
  133. def basin 0xffcf sys ac by ];
  134. begin
  135.   , go rd
  136. : wr swap str ]++ by =
  137. : rd basin '/n' == if ff
  138.   swap lim ]-- if wr
  139. : ne basin 'n' == nif ne
  140. : ff 0 str ] by = str ]
  141. bend
  142.  
  143. int getn( )
  144. char number[ 8 ;
  145. begin
  146.   number ( , 7 getl ) swap val
  147. bend
  148.  
  149. /* -------- Externe Geraete -------- */
  150.  
  151. void open( lfn ger sek liste )
  152. def setlfs 0xffba sys;
  153. def setnam 0xffbd sys;
  154. def fopen 0xffc0 sys;
  155. int zg ;
  156. char file[ 40 ;
  157. begin , 0xffff ,
  158.   lfn ] ac by =
  159.   ger ] xr by =
  160.   sek ] yr by = setlfs
  161.   sek ] not nif nam
  162.   liste zg = ] not nif nam
  163.   file swap
  164. : lab not $< ( 2 zg += ] ) not if lab
  165.   file len
  166. : nam ac by = file xr = setnam fopen
  167. bend
  168.  
  169. def # 0xffcc sys;
  170.  
  171. void #i( )
  172. begin
  173.   # swap xr by = 0xffc6 sys
  174. bend
  175.  
  176. void #o( )
  177. begin
  178.   # swap xr by = 0xffc9 sys
  179. bend
  180.  
  181. void close( )
  182. begin
  183.   # swap ac by = clc 0xffc3 sys
  184. bend
  185.  
  186. def stat 0x90 by ];
  187.  
  188. /* -Erweiterung fuer Eingabekomfort-- */
  189.  
  190. void wputc( z n )
  191. begin , go prf
  192. : wr z ] putc
  193. : prf n ]-- if wr
  194. bend
  195.  
  196. void wputl( str n )
  197. begin , go prf
  198. : wr str ] putl
  199. : prf n ]-- if wr
  200. bend
  201.  
  202. int cuwe ;
  203. int scu( )
  204. begin
  205.   sec 0xfff0 sys xr ] cuwe =
  206. bend
  207.  
  208. void pcu( )
  209. begin
  210.   xr = clc 0xfff0 sys
  211. bend
  212.  
  213. void rcu( )
  214. begin
  215.   cuwe ] pcu
  216. bend
  217.  
  218. char edl( str le )
  219. begin ,
  220.   scu str ] putl rcu
  221.   ( str ] , le ] getl )
  222. bend
  223.  
  224. void ksys( )
  225. begin
  226.   0xbb5 = 0xbb1 sys 0xff 0xbb6 by =
  227. bend
  228.  
  229. void cuon( )
  230. begin
  231.   0 syscon 128 == if c128
  232.   204 by = return
  233. : c128 0xcd6f ksys
  234. bend
  235.  
  236. void cuof( )
  237. begin
  238.   0 syscon 128 == if c128
  239.   1 204 by = 207 by ] nif ff
  240.   1 205 by = 0 204 by =
  241. : prf 207 by ] if prf 1 204 by =
  242. : ff return
  243. : c128 0xcd9f ksys
  244. bend
  245.  
  246. void cukey( )
  247. begin
  248.   cuon key ( cuof ) swap
  249. bend
  250.  
  251. char fkey( )
  252. char tast "/20/29/157{CBM-F}{CBM-C}{CBM-X}{CBM-V}{SHIFT-+}{CBM--}{SHIFT--}" ;
  253. int z , ptast ;
  254. begin
  255.   ptast =
  256. : lab cukey
  257.   z = ' ' >= ( z ] 'z' <= ) and
  258.   ( z ] 'A' >= ( z ] 'Z' <= ) and )
  259.   or if fert
  260.   ( ptast ] , z ] inchar ) if ff
  261.   ( tast , z ] inchar ) nif lab
  262. : fert z ] return
  263. : ff 0 bend
  264.  
  265. char fbegr "<>" ;
  266.  
  267. void putf( sz lim )
  268. begin ,
  269.   fbegr by ] putc scu sz ] putl
  270.   ( ' ' , lim ] ( sz ] len ) - wputc )
  271.   fbegr 1 + by ] putc rcu
  272. bend
  273.  
  274. char edf( sz lim prf )
  275. def anf! vz ] sz ] == if next;
  276. def --]] --] by ];
  277. def --]= --] by =;
  278. def ]++] ]++ by ];
  279. def ]++= ]++ by =;
  280. def gr< vz ] gr ] <>;
  281. def pnex 157 putc go next;
  282. int vz , hz , z , gr ;
  283. begin , "/n" ,
  284.   ( sz ] , lim ] putf )
  285.   sz ] lim ] + 1 + hz = 2 - gr =
  286.   sz ] ( len ) + 1 + vz = 
  287. : an1 vz --]] hz --]=
  288. : an2 vz ] sz ] <> if an1
  289. : next prf ] fkey nif ff
  290.   20 == if del
  291.   swap 29 == if c>
  292.   swap 157 == if c<
  293.   swap z = gr< nif in.
  294.   swap hz ] == if in=
  295.   z ] vz ]++= putc
  296.   scu hz ] putl rcu go next
  297. : in. swap hz = z ] swap by = putc pnex
  298. : in= z ] vz ]++= putc hz ]++ go next
  299. : del anf! vz --] 157 putc scu
  300.   hz ] putl ' ' putc rcu go next
  301. : c< anf! vz --]] hz --]= pnex
  302. : c> gr< hz by ]] and nif next
  303.   hz ]++] vz ]++= 29 putc go next
  304. : ff swap ( 146 putc ) swap ( vz ] hz ] $< )
  305. bend
  306.  
  307. char getf( sz lim prf )
  308. begin , "/n" , 0 sz ] by =
  309.  ( sz ] , lim ] , prf ] edf )
  310. bend
  311.  
  312. char maske[ 201 ;
  313. int szm ;
  314.  
  315. int getm( str le )
  316. begin ,
  317.   szm ] if ov maske szm =
  318. : ov le ] szm ]++ by =
  319.   str ] szm ] = scu ( 2 szm += ) =
  320.   2 szm += 0 swap by =
  321. bend 
  322.  
  323. void clrm( )
  324. int zg ;
  325. begin
  326.   maske zg = szm = go prf
  327. : ne 0 zg ++] ] by = 4 zg +=
  328. : prf by ] if ne
  329. bend
  330.  
  331. void putm( )
  332. int zg ;
  333. begin
  334.   maske zg = szm = go prf
  335. : ne 3 zg += ] pcu
  336.   ( 2 zg -= ] , zg --] by ] putf )
  337.   5 zg +=
  338. : prf by ] if ne 146 putc
  339. bend
  340.  
  341. void readm( )
  342. int zg , n ;
  343. begin
  344.   putm
  345. : anf maske zg = go rd
  346. : auf zg ] maske == if ne 5 zg -=
  347. : ne 3 zg += ] pcu
  348.   ( 2 zg -= ] , zg --] by ] ,
  349.   "/3/134/145/19/17/n" edf swap )
  350.   n = 3 < if ff
  351.   swap 3 == if auf
  352.   swap 4 == if anf
  353.   5 zg +=
  354. : rd by ] if ne
  355. : ff n ] 1 - bend
  356.  
  357. int fzahl , mema , fzzg ;
  358. def fzg 1 syscon;
  359. void setfz( )
  360. begin
  361.   fzahl = 1 + << fzg + ( fzg fzzg = ) =
  362.   mema =
  363. bend
  364.  
  365. void setfl( )
  366. begin
  367.   1 + mema ] + mema =
  368.   ( 2 fzzg += ) =
  369. bend
  370.  
  371. void feld( )
  372. begin
  373.   << fzg + ]
  374. bend
  375.  
  376. void flim( )
  377. begin
  378.   << fzg + 2 + ] swap ] - 1 -
  379. bend
  380.  
  381. void fe,li( )
  382. begin
  383.   ( feld ) , swap flim
  384. bend
  385.  
  386.  
  387. /* Eigentliches Programm */
  388. /* Anwender-Routinen --------------- */
  389.  
  390. void eingabemaske( )
  391.  def (( putl (;
  392.  def )) getm );
  393.  def cls 147 putc;
  394. begin
  395.  
  396.  7 setfz
  397.  34 setfl
  398.  34 setfl
  399.  34 setfl
  400.  34 setfl
  401.  34 setfl
  402.  34 setfl
  403.  34 setfl
  404.  
  405.  "/147 Etikettendruck/n/n" putl
  406.  
  407.  fbegr "/18" $<
  408.  "/n " (( 0 fe,li ))
  409.  "/n " (( 1 fe,li ))
  410.  "/n " (( 2 fe,li ))
  411.  "/n " (( 3 fe,li ))
  412.  "/n " (( 4 fe,li ))
  413.  "/n " (( 5 fe,li ))
  414.  "/n " (( 6 fe,li ))
  415. bend
  416.  
  417. void ausdruck( )
  418. def cr "/n";
  419. begin
  420.   cr putl
  421.   ( 0 feld , cr print )
  422.   ( 1 feld , cr print )
  423.   ( 2 feld , cr print )
  424.   ( 3 feld , cr print )
  425.   ( 4 feld , cr print )
  426.   ( 5 feld , cr print )
  427.   ( 6 feld , cr print )
  428.   cr putl
  429. bend
  430.  
  431. /* Programmlogik ------------------ */
  432.  
  433. main()
  434. int anz ;
  435. begin 
  436.   eingabemaske
  437. : neu clrm
  438. : aendern readm
  439. : menu ( 24 , 1 at ) "Neu Aendern Druck Multidruck Ende" putl
  440.   key
  441.   ( ( 24 , 1 at ) ( ' ' , 38 wputc ) )
  442.   swap 'n' == if neu
  443.   swap 'a' == if aendern
  444.   swap 'd' == if druck
  445.   swap 'm' == if mdruck
  446.   swap 'e' == nif menu
  447.   ( 24 , 1 at )
  448.   "Wirklich beenden j//n ?" putl key
  449.   ( ( 24 , 1 at ) ( ' ' , 38 wputc ) )
  450.   swap 'j' == nif menu
  451.   "/n/147" putl end
  452. : mdruck ( 24 , 1 at ) "Anzahl " putl
  453.   getn anz =
  454.   ( 24 , 1 at ) ( ' ' , 38 wputc )
  455.   go druckprf
  456. : druck 1 anz = go druckprf
  457. : drucken ( 4 , 4 , 7 open )
  458.   4 #o ausdruck
  459.   # 4 close
  460. : druckprf anz ]-- if drucken
  461.   eingabemaske putm
  462.   go menu
  463. bend