home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / sh2x / sh28b.d64 / convert.src < prev    next >
Text File  |  1995-03-30  |  27KB  |  1,594 lines

  1. ;
  2. ;   ░└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└«
  3. ;   ▌     ┬ITMAP├ONVERTER ╓1.44     ▌
  4. ;   ▌  (├) 1987 BY ├ARSTEN ├LASOHM  ▌
  5. ;   ½└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└│
  6. ;   ▌ ╓ 1.0 WRITTEN FROM 28.12.1987 ▌
  7. ;   ▌                 TO  4. 1.1988 ▌
  8. ;   ▌   LAST MODIFIED ON 20. 1.1988 ▌
  9. ;   ¡└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└╜
  10. ;
  11. ; *** ╟EOS-╠IBRARIAN ╓1.4, (├) 1987 BY ├ARSTEN ├LASOHM ***
  12. ;  **                                             **
  13. ;  **              ╙TAND: 20.1.1987                **
  14. ORG $0402
  15. JMP ENDE
  16. ;
  17. ; *** ╠ABELS,ALLGEMEINE ***
  18. ;
  19. :R0=$02      ;┴RBEITSREGISTER
  20. :R1=$04      ;DER ╟EOS-╥OUTINEN
  21. :R2=$06
  22. :R3=$08
  23. :R4=$0A
  24. :R5=$0C
  25. :R6=$0E
  26. :R7=$10
  27. :R9=$14
  28. :R10=$16
  29. :ZP1=$46     ;┌EROPAGE-┌EIGER FUER
  30. :ZP2=$48     ;┴PPLIKATIOEN
  31. :ZP3=$4A
  32. :ZP4=$4C
  33. :ZP5=$4E
  34. :ZP8=$54
  35. :ZP9=$56
  36. :ZP10=$58
  37. :ZP28=$7C
  38. :ZP29=$7E
  39. :NULL=0
  40. :CIA1=56320     ;┬ASISADR. DER ├IA1
  41. :MOUSEX=$3A     ;╪-╦OORD. DER ═AUS
  42. :MOUSEY=$3C     ;┘-╦OORD. DER ═AUS
  43. :BORDO=$84B8
  44. :BORDU=$84B9    ;╟RENZEN
  45. :BORDL=$84BA    ;FUER ═AUS
  46. :BORDR=$84BC
  47. :RECVBOXR=$C12D ;╥OUTINENADR.
  48. :SET=$FF        ;╞LAG SETZEN
  49. :CLEAR=0        ;╞LAG LOESCHEN
  50. ;
  51. ; *** ╠ABELS,╨╒╘├╚┴╥ ***
  52. ;
  53. :CR=13
  54. :BOLDON=24
  55. :ITALICON=25
  56. :OUTLINE=26
  57. :PLAINTEXT=27
  58. ;
  59. ; *** ╠ABELS,─╔┴╠┬╧╪ ***
  60. ;
  61. :OK=$01
  62. :CANCEL=$02
  63. :YES=$03
  64. :NO=$04
  65. ;
  66. ; *** ═AKROS ***
  67. ;
  68. ;
  69. ; *** ┬┘╘┼╙ + ╫╧╥╘┼ ╦╧╨╔┼╥┼╬ + ╓┼╥╙├╚╔┼┬┼╬ ***
  70. ;
  71. ; * ╫ERT IN ╙PEICHERSTELLE SCHREIBEN *
  72. :POKE M 2          ;(┴DRESSE;╫ERT)
  73. LDA #@1
  74. STA @0
  75. /
  76. ; * ╫ORT 'WERT' IN 'REGISTER' LADEN *
  77. :LOADW M 2     ;(WERT;REGISTER)
  78. POKE @1,<@0
  79. POKE @1+1,>@0
  80. /
  81. ; * ┬YTE KOPIEREN *
  82. :COP M 2        ;(╙RCBYTE;─ESTBYTE)
  83. LDA @0
  84. STA @1
  85. /
  86. ; * ╫ORT KOPIEREN *
  87. :TRANSW M 2      ;(SRCREG;DESTREG)
  88. COP @0,@1
  89. COP @0+1,@1+1
  90. /
  91. ;
  92. ; *** ╟╥┴╞╔╦ ***
  93. ;
  94. ; * ┬ILDSCHIRM LOESCHEN *
  95. :CLS M 0        ;()
  96. JSR CLSROUT
  97. /
  98. ; * ═USTER SETZEN *
  99. :PATTERN M 1   ;(═USTER)
  100. LDA #@0
  101. JSR $C139
  102. /
  103. ; * ┴USGEFUELLTES ╥ECHTECK ZEICHNEN *
  104. :BOX M 5       ;(┘-L.O.;┘-R.U.;╪-L.O.;╪-R.U.;═USTER)
  105. PATTERN @4
  106. JSR $C19F
  107. B @0,@1
  108. W @2,@3
  109. /
  110. ; * ╥ECHTECK ZEICHNEN *
  111. :FRAME M 0      ;()
  112. JSR $C127
  113. /
  114. ; * ╥ECHTECKIGEN ┬EREICH INVERTIEREN *
  115. :INVBOX M 0     ;()
  116. JSR $C12A
  117. /
  118. ; * KOMPRIMIERTE ┬ITMAP ANZEIGEN *
  119. :BITMAP M 5     ;(┴DR.D.┬ITMAP;╪-╦OORD.;┘-╦OORD.;┬REITADR.;╚OEHADR.)
  120. LOADW @0,R0
  121. POKE 4,@1
  122. POKE 5,@2
  123. COP @3,6
  124. COP @4,7
  125. JSR $C142
  126. /
  127. ; * ─IALBOX ERZEUGEN *
  128. :DIALBOX M 1    ;(┴DRESSE)
  129. LOADW @0,R0
  130. JSR $C256
  131. /
  132. ; * ═AKROS FUER ─╔┴╠┬╧╪ *
  133. ;
  134. ; * ╫ERTE FUER ─IALBOX FESTLEGEN *
  135. :INITDIALBOX M 5  ;(═USTER;┘O;┘U;╪L;╪R)
  136. B @0,@1,@2
  137. W @3,@4
  138. /
  139. ; * ╙TANDARDDIALBOX ERZEUGEN *
  140. :STDDIALBOX M 1 ;(═USTER)
  141. B $80+@0
  142. ;ES FOLGEN DIE ╦OMMANDOS
  143. /
  144. ;
  145. ; * ╞ELD IN ─IALBOX BRINGEN *
  146. :FELD M 3     ;(╞ELDOPCODE;╪;┘)
  147. B @0,@1/8,@2
  148. /
  149. ; * FESTEN ╘EXT IN ─IALBOX ANZEIGEN *
  150. :TEXTAUS M 3     ;(╪;┘;╘EXTADRESSE)
  151. B $0B,@0,@1
  152. W @2
  153. /
  154. ; * VARIABLEN ╘EXT ANZEIGEN *
  155. :VARTEXTAUS M 3  ;(╪;┘;╥EGISTER)
  156. B $0C,@0,@1,@2
  157. /
  158. ; * ╞ILES AUSWAEHLEN (╞INDTYPE-╨ARAM.NICHT VERGESSEN!) *
  159. :GETFILES M 2    ;(╪;┘)
  160. B $10,@0,@1
  161. /
  162. ; * AUF ╟┼╘╞╔╠┼╙ VORBEREITEN *
  163. :INITGETFILES M 3   ;(╞ILETYP;┴BLAGEADR.;CLASS)
  164. POKE $10,@0
  165. LOADW @1,R5
  166. LOADW @1,R6
  167. LOADW @2,R10
  168. /
  169. ; * ╔CON IN ─┬-┬OX GENERIEREN *
  170. :USRICON M 3     ;(╪;┘;╔CONTABELLENADR.)
  171. B $12,@0/8,@1
  172. W @2
  173. /
  174. ; * ╔CONTABELLE *
  175. :ICON M 6        ;(┌G.AUF ┬ITMAP;╪;┘;┬REITE;╚OEHE;╥OUTADR.)
  176. W @0
  177. B @1,@2,@3,@4
  178. W @5
  179. /
  180. ; * ╓ON EIGENER ╥OUTINE ZURUECK ZUR ─┬ *
  181. :RSTDIAL M 1     ;(├ODE FUER $851D)
  182. POKE $851D,@0
  183. JMP $C2BF
  184. /
  185. ; *** ┼NDE ─╔┴╠┬╧╪-═AKROS ***
  186. ;
  187. ; * ╞LAECHE AUS 2. IN 1.┬ITMAP HOLEN *
  188. :RECVBOX M 4  ;(╪L.O;┘L.O.;╪R.U.;┘R.U.)
  189. JSR $C1A5
  190. B @1,@3
  191. W @0,@2
  192. /
  193. ; * ┴DRESSE EINER ┌EILE IN ┬ITMAP BERECHNEN *
  194. :SCAN M 0        ;()
  195. JSR $C13C
  196. /
  197. ;
  198. ; *** ╘┼╪╘ ***
  199. ;
  200. ; * ╘EXT IN ╟EOSFORMAT KONVERTIEREN *
  201. :TXTCONV M 1   ;(┴DRESSE)
  202. LOADW @0,$FB
  203. JSR CONVERT
  204. /
  205. ; * VARIABLEN ╘EXT KONVERTIEREN *
  206. :VTXTCONV M 1  ;(┌EIGERADR.)
  207. TRANSW @0,$FB
  208. JSR CONVERT
  209. /
  210. ; * ╒NTERMAKROS ZU ╔╨╒╘╙╘╥ UND ╨╒╘├╚┴╥ *
  211. :GOTOX M 1       ;(╪-╦OORD.)
  212. B $14
  213. W @0
  214. /
  215. ; * ┼NDE ╨╒╘├╚┴╥-═AKROS *
  216. ;
  217. ; * ╙TRINGS BEKANNTER ╟ROESSE VERGLEICHEN *
  218. :CMPFSTR M 3  ;(┴DR.1;┴DR.2;╠AENGE)
  219. LDX #@0
  220. LDY #@1
  221. LDA #@2
  222. JSR $C26E
  223. /
  224. ;
  225. ; *** ╙╧╬╙╘╔╟┼╙ ***
  226. ;
  227. ; * ─ESKTOP LADEN UND STARTEN *
  228. :DESKTOP M 0
  229. JMP $C22C
  230. /
  231. ; * CPU ╔NHALTE SICHERN *
  232. :PUSHCPU M 0
  233. STA $FD
  234. STX $FE
  235. STY $FF
  236. PHP
  237. /
  238. ; * CPU ╔NHALTE ZURUECKLADEN *
  239. :POPCPU M 0
  240. LDA $FD
  241. LDX $FE
  242. LDY $FF
  243. PLP
  244. /
  245. ; * ╪ ╙EKUNDEN WARTEN *
  246. :WAIT M 1      ;(╙EKUNDEN)
  247. LOADW @0,ZP1
  248. JSR WAITROUT
  249. /
  250. ; * ═┴╔╬ AUFRUFEN *
  251. :MAIN M 1      ;(╥ETURNADR.)
  252. LOADW @0,$849B
  253. JMP $C1C3
  254. /
  255. ; * ┼IN/┴USGABE UEBER ALTE ╥OUTINEN VORBEREITEN *
  256. :INITIO M 0   ;()
  257. JSR $C25C
  258. /
  259. ; * ┼IN/┴USGABE UEBER ALTE ╥OUTINEN BEENDEN *
  260. :DONEIO M 0   ;()
  261. JSR $C25F
  262. /
  263. ; * ╔/╧-╞EHLER ANZEIGEN *
  264. :ERROR M 1    ;(╥UECKSPRUNGADR.)
  265. LOADW @0,ZP28
  266. JMP ERRORROUT
  267. /
  268. ;
  269. ; *** ═┴╒╙ ***
  270. ;
  271. ; * ═AUSZEIGER ANSCHALTEN *
  272. :MOUSEON M 0       ;()
  273. JSR $C18A
  274. /
  275. ; * ═AUSZEIGER AUSSCHALTEN *
  276. :MOUSEOFF M 0      ;()
  277. JSR $C18D
  278. /
  279. ; * ═AUS"SPIELWIESE" EINSTELLEN *
  280. :MOUSEBORDER M 4 ;(OBERE;UNTERE;LINKE;RECHTE ╟RENZE)
  281. POKE BORDO,@0
  282. POKE BORDU,@1
  283. LOADW @2,BORDL
  284. LOADW @3,BORDR
  285. /
  286. ;
  287. ; *** ─╔╙╦ ***
  288. ;
  289. ; * ╞ILE LADEN (WEITERE ╨ARAMETER) *
  290. :READ M 2      ;(╠ADEADR.;═AXLAENGE)
  291. LOADW @0,R7
  292. LOADW @1,R2
  293. JSR $C1FF
  294. /
  295. ; * ─ISKETTE OEFFNEN *
  296. :OPENDISK M 0  ;()
  297. JSR $C2A1
  298. /
  299. ; * ╞ILEEINTRAG IM ─IR. SUCHEN *
  300. :FINDFILE M 1  ;(╞ILENAMENADR.)
  301. LOADW @0,R6
  302. JSR $C20B
  303. /
  304. ; * ╞ILE UMBENENNEN *
  305. :RENAME M 2    ;(NEUER ╬AME;ALTER ╬AME)
  306. LOADW @0,R0
  307. LOADW @1,R6
  308. JSR $C259
  309. /
  310. ; * ┬LOCK VON ─ISK EINLESEN (WEITERE ╨ARAMETER!) *
  311. :GETBLK M 1    ;(╙PEICHERADR.)
  312. LOADW @0,R4
  313. JSR $C1E4
  314. /
  315. ; * ╙PEICHERBEREICH SPEICHERN *
  316. :SAVE M 2      ;(╔NFOBLOCKADR.;─IRSEITE)
  317. LOADW @0,R9
  318. POKE $16,@1
  319. JSR $C1ED
  320. /
  321. ;
  322. ; *** ╥┼├╚╬┼╬ ***
  323. ;
  324. ; * ╫ORT DEKREMENTIEREN *
  325. :DDEC M 1      ;(┌PADR.)
  326. LDX #@0
  327. JSR $C175
  328. /
  329. ; * ╫ORT INKREMENTIEREN *
  330. :DINC M 1      ;(┴DR.)
  331. LOADW @0,ZP29
  332. JSR DINCROUT
  333. /
  334. ; * ╤UOTIENT ZWEIER ╫ORTE BILDEN *
  335. :DDIV M 2        ;(─IVID.ADR;─IVISORADR)
  336. LDX #@0
  337. LDY #@1
  338. JSR $C169
  339. /
  340. ; * ┌WEI ┬YTES MULTIPLIZIEREN *
  341. :BBMULT M 2      ;(╨RODUKTEADR;┼RGEBNISADR)
  342. LDY #@0
  343. LDX #@1
  344. JSR $C160
  345. /
  346. ; * ┬YTE MIT ╫ORT MULTIPLIZIEREN *
  347. :BMULT M 2       ;(┬YTEADR;╫ORTADR)
  348. LDY #@0
  349. LDX #@1
  350. JSR $C163
  351. /
  352. ; * ┌WEI ╫ORTE SUBTRAHIEREN *
  353. :DSUBTR M 3      ;(═INUENDADR;╙UBTRAHEND;─IFFERENZ)
  354. SEC
  355. LDA @0
  356. SBC @1
  357. STA @2
  358. LDA @0+1
  359. SBC @1+1
  360. STA @2+1
  361. /
  362. ;
  363. ; *** ╙╨┼╔├╚┼╥ ╓┼╥╙├╚╔┼┬┼╬ + ╦╧╨╔┼╥┼╬ ***
  364. ;
  365. ; * ╙PEICHERBLOECKE VERSCHIEBEN *
  366. :MOVERAM M 3       ;(┴NFADR.╤UELLE,┴NFADR.┌IEL,╠AENGE)
  367. JSR $C1B7
  368. W @0,@1,@2
  369. /
  370. ; * ╙PEICHERBEREICH MIT $00 FUELLEN *
  371. :CLEARAM M 2     ;(┴NFANGSADR.;┴NZAHL)
  372. LOADW @0,R1
  373. LOADW @1,R0
  374. JSR $C178
  375. /
  376. ; * ╞ILE LOESCHEN *
  377. :DELETE M 1      ;(╬AMENADR.)
  378. LOADW @0,R0
  379. JSR $C238
  380. /
  381. ;
  382. ;*** ╥OUTINEN ***
  383. ;
  384. ;  * ╦ONVERTIERUNG VON ╘EXT INS *
  385. ;         * ╟EOS-╞ORMAT *
  386. :CONVERT
  387. LDY #0
  388. :CNVT
  389. LDA ($FB),Y
  390. BEQ ENDCNV
  391. CMP #$10
  392. BEQ ENDCNV
  393. CMP #$14
  394. BEQ ZWEI
  395. CMP #$15
  396. BEQ EINS
  397. CMP #$16
  398. BEQ DREI
  399. CMP #$17
  400. BEQ DREI
  401. CMP #65
  402. BCC NEXT
  403. CMP #91
  404. BCS NEXT
  405. EOR #$20
  406. :NEXT
  407. STA ($FB),Y
  408. INY
  409. JMP CNVT
  410. :ENDCNV
  411. RTS
  412. :EINS
  413. INY
  414. INY
  415. JMP CNVT
  416. :ZWEI
  417. INY
  418. JMP EINS
  419. :DREI
  420. INY
  421. JMP ZWEI
  422. ;
  423. ; * ╫ARTEN *
  424. ;
  425. :WAITROUT
  426. INITIO
  427. COP CIA1+9,ZP2
  428. :WARTE
  429. LDA CIA1+9
  430. CMP ZP2
  431. BEQ WARTE
  432. STA ZP2
  433. DONEIO
  434. DDEC ZP1
  435. BNE WARTEWEITER
  436. RTS
  437. :WARTEWEITER
  438. INITIO
  439. JMP WARTE
  440. ;
  441. ; * ╔/╧-╞EHLERMELDUNG AUSGEBEN *
  442. ;
  443. :ERRORROUT
  444. TXA
  445. CMP #10        ;KLEINER ALS 10 ?
  446. BCC KLEINER10  ;<-JA
  447. POKE ZP29,$FF  ;<-NEIN
  448. :ABZIEHEN
  449. INC ZP29       ;┌EHNERSTELLE MERKEN
  450. SEC
  451. SBC #10        ;KLEINER 10 MACHEN
  452. BCS ABZIEHEN
  453. CLC            ;KLEINER 0!
  454. ADC #10+48     ;WIEDER -1>┴KKU<10 UND
  455.                ;IN ┌EICHENCODE WANDELN
  456. STA FEHLERNR+3 ;UND ALS ┼INERSTELLE SP.
  457. LDA ZP29
  458. CLC            ;UND DAS GLEICHE MIT DER
  459. ADC #48        ;┌EHNERSTELLE
  460. STA FEHLERNR+2
  461. JMP AUSGEBEN
  462. :KLEINER10
  463. CLC
  464. ADC #48        ;1STELLIGE ┌AHL UMRECHNEN
  465. STA FEHLERNR+3     ;UND
  466. POKE FEHLERNR+2,32 ;╠EERZEICHEN ALS 1.╙TELLE
  467. :AUSGEBEN
  468. DIALBOX IOFEHLER
  469. JMP (ZP28)
  470. ;
  471. ; ** ╫ORT INKREMENTIEREN **
  472. ;
  473. :DINCROUT
  474. LDY #0
  475. LDA (ZP29),Y      ;╠OWBYTE
  476. TAX
  477. INX               ;ERHOEHEN
  478. TXA
  479. STA (ZP29),Y
  480. BNE KEINUEBERLAUF
  481. INY
  482. LDA (ZP29),Y      ;╚IGHBYTE
  483. TAX
  484. INX               ;ERHOEHEN
  485. TXA
  486. STA (ZP29),Y
  487. :KEINUEBERLAUF
  488. RTS
  489. ;
  490. ; ** ┬ILDSCHIRM LOESCHEN **
  491. ;
  492. :CLSROUT
  493. BOX 0,199,0,319,2
  494. RTS
  495. ;
  496. ; *** ─ATEN, ╘EXTE, ... ***
  497. ;
  498. :FEHLERNR
  499. B "╔:00"
  500. B NULL
  501. :ENDE
  502. ;
  503. ;***>   ┼╬─┼ ╟┼╧╙-╠╔┬╥┴╥╔┴╬  <***
  504. ;
  505. ;***> ┴╬╞┴╬╟ ┬╔╘═┴╨├╧╬╓┼╥╘┼╥ <***
  506. ;
  507. ; ** ╨ROGRAMMSPEZIFISCHE ╠ABELS **
  508. ;
  509. :KOPF=ZP1
  510. :BYTES=ZP2
  511. :LESE=ZP3
  512. :WRITE=ZP4
  513. :KACHELN=ZP5
  514. :TITELTXT=$5A
  515. :INSERTDISKTXT=$5C
  516. :FEHLERMELDUNG=$5E
  517. :FILETYP=$60
  518. :BILDOKTXT=$62
  519. :SCHNITTOKTXT=$64
  520. :NEWDISKTXT=$66
  521. :STOPTXT=$68
  522. ;
  523. ; *** ╙PRACHE AUSWAEHLEN ***
  524. ;
  525. TXTCONV SPRTXT   ;╘EXTE FUER ERSTE
  526. TXTCONV LANGTX   ;┬OX KONVERTIEREN
  527. TXTCONV QUITTX
  528. CLS
  529. :LANGU
  530. DIALBOX SPRACHE  ;╙PRACHE WAEHLEN
  531. JMP KONVERTIEREN ;╥OUTINEN UEBERSPRINGEN
  532. ;
  533. ; *** ┌EIGER AUF ╘EXTE SETZEN ***
  534. ;
  535. :ENGLRT
  536. LOADW TITELTXTE,TITELTXT
  537. LOADW INSERTXTE,INSERTDISKTXT
  538. LOADW FEHLERMELDUNGE,FEHLERMELDUNG
  539. LOADW FILETYPE,FILETYP
  540. LOADW BILDOKTXTE,BILDOKTXT
  541. LOADW SCHNITTOKTXTE,SCHNITTOKTXT
  542. LOADW NEWDISKTXTE,NEWDISKTXT
  543. LOADW STOPTXTE,STOPTXT
  544. RSTDIAL $0E
  545. ;
  546. :GERMRT
  547. LOADW TITELTXTD,TITELTXT
  548. LOADW INSERTXTD,INSERTDISKTXT
  549. LOADW FEHLERMELDUNGD,FEHLERMELDUNG
  550. LOADW FILETYPD,FILETYP
  551. LOADW BILDOKTXTD,BILDOKTXT
  552. LOADW SCHNITTOKTXTD,SCHNITTOKTXT
  553. LOADW NEWDISKTXTD,NEWDISKTXT
  554. LOADW STOPTXTD,STOPTXT
  555. RSTDIAL $0E
  556. ;
  557. :QUITRT
  558. DESKTOP
  559. ;
  560. ; *** ╘ITEL + ╞ILE AUSWAEHLEN ***
  561. ;
  562. :KONVERTIEREN
  563. VTXTCONV TITELTXT
  564. VTXTCONV INSERTDISKTXT
  565. VTXTCONV FEHLERMELDUNG
  566. VTXTCONV FILETYP
  567. TXTCONV FEHLERNR
  568. VTXTCONV BILDOKTXT
  569. VTXTCONV SCHNITTOKTXT
  570. VTXTCONV NEWDISKTXT
  571. VTXTCONV STOPTXT
  572. COP $851E,FARBEN
  573. CLS
  574. DIALBOX TITEL      ;╘ITELBOX ANZEIGEN
  575. :NEUEDISK
  576. DIALBOX INSERTDISK ;─ISK EINLEGEN!
  577. LDA R0
  578. CMP #CANCEL        ;ZURUECK ZUR 1. ┬OX ?
  579. BNE WEITER
  580. JMP LANGU
  581. :WEITER
  582. OPENDISK
  583. TXA
  584. BEQ OK1
  585. ERROR NEUEDISK
  586. :OK1
  587. INITGETFILES 0,PUFFER,0
  588. DIALBOX CHOOSEFILES  ;╞ILE AUSWAEHLEN
  589. LDA R0
  590. CMP #CANCEL          ;ANDERE ─ISK?
  591. BNE NICHTZURUECK
  592. JMP NEUEDISK
  593. :NICHTZURUECK
  594. ;
  595. ; *** 1.╘RACK/┬LOCK SUCHEN ***
  596. ;
  597. FINDFILE PUFFER
  598. TXA
  599. BEQ OK1A
  600. ERROR NEUEDISK
  601. :OK1A
  602. COP $8400+1,TRACK
  603. COP $8400+2,BLOCK
  604. LDA $8400       ;AUF ╞ILETYP (╨RG.)
  605. CMP #130        ;PRUEFEN
  606. BEQ TYPRICHTIG
  607. DIALBOX FILETYPEBOX
  608. JMP WEITER      ;NEUES ╞ILE WAEHLEN
  609. :TYPRICHTIG
  610. ;
  611. ; ** ┬ILD LADEN UND ANZEIGEN **
  612. ;
  613. COP TRACK,4
  614. COP BLOCK,5
  615. READ $6000-2,8194  ;┬ILD "ZWISCHEN"LADEN
  616. MOVERAM $6000,$A000,8000 ;UND ANZEIGEN
  617. WAIT 4
  618. :NEUERSCRAP
  619. DIALBOX BILDOK
  620. LDA R0
  621. CMP #YES
  622. BEQ BILDRICHTIG
  623. JMP WEITER         ;ANDERES ╞ILE WAEHLEN
  624. :BILDRICHTIG
  625. DIALBOX AUTOSTOP
  626. LDA R0
  627. CMP #YES
  628. BNE NOSTOP
  629. POKE FLAG1,SET     ;╞LAG SETZEN
  630. JMP VORBEREIT
  631. :NOSTOP
  632. POKE FLAG1,CLEAR   ;╞LAG LOESCHEN
  633. :VORBEREIT
  634. INITIO
  635. POKE 53280,0       ;╥AHMEN SCHWARZ
  636. DONEIO
  637. MOUSEON
  638. MOUSEBORDER 0,199,0,319
  639. LOADW KNOPF1,$84A1 ;╓EKTOR FUER ╞EUERKNOPF
  640. :NICHTSTUN
  641. MAIN NICHTSTUN     ;AUF ╦NOPF WARTEN
  642. :KNOPF1
  643. POKE $2F,%10000000 ;NUR IN SICHTBARE ┬ITMAP SCHREIBEN
  644. TRANSW MOUSEX,X1
  645. TRANSW X1,X2
  646. TRANSW X1,AKTX
  647. TRANSW X1,ALTX
  648. LDA MOUSEY         ;╦OORD. FUER ┬EREICH
  649. STA Y1             ;KOPIEREN
  650. STA Y2
  651. STA AKTY
  652. STA ALTY
  653. STA 6
  654. STA 7
  655. TRANSW X1,R3
  656. TRANSW X1,R4
  657. INVBOX
  658. LOADW TRICK1,$849B ;╥UECKSPRUNGADR. FUER ═┴╔╬
  659. RTS                ;ZURUECK ZU ═┴╔╬
  660. :TRICK1
  661. LOADW TRICK2,$84A1 ;╘RICK
  662. MAIN TRICK1        ;(╟EOS WERTET "╦NOPF LOS-
  663. :TRICK2            ; LASSEN" AUCH ALS AKTI-
  664. LOADW VEKTOR,$849B ; VIERTEN ╞EUERKNOPF)
  665. RTS
  666. ;
  667. ; ** ┬EREICH INVERTIEREN **
  668. ;
  669. :VEKTOR
  670. LOADW KNOPF2,$84A1
  671. POKE PUFFER+10,0 ;╞ARBE SETZEN
  672. POKE FLAG2,CLEAR
  673. POKE FLAG5,CLEAR
  674. LDA FLAG1         ;┴UTOSTOP ?
  675. BEQ WARTESCHLEIFE ;NEIN
  676. ;
  677. ; ** ╟RENZE FUER ═AUS FESTLEGEN **
  678. SEC
  679. LDA ALTY
  680. SBC #143          ;OBERE ╟RENZE
  681. BCS GROESSER1
  682. LDA #0
  683. :GROESSER1
  684. STA BORDO
  685. CLC
  686. LDA ALTY
  687. ADC #143          ;UNTERE ╟RENZE
  688. STA BORDU
  689. BCS UEBERL
  690. CMP #199
  691. BCC KLEINER1
  692. :UEBERL
  693. POKE BORDU,199
  694. :KLEINER1
  695. LOADW 263,ZP1
  696. DSUBTR ALTX,ZP1,BORDL
  697. BCS GROESSER2
  698. LOADW 0,BORDL
  699. :GROESSER2
  700. CLC
  701. LDA ALTX
  702. ADC #<263
  703. STA BORDR
  704. LDA ALTX+1
  705. ADC #>263
  706. STA BORDR+1
  707. LOADW 319,ZP1
  708. DSUBTR BORDR,ZP1,ZP1
  709. BCC WARTESCHLEIFE
  710. LOADW 319,BORDR
  711. ;
  712. ; *** AUF ┬EWEGUNG REAGIEREN ***
  713. :WARTESCHLEIFE
  714. POKE FLAG3,CLEAR ;╞LAG FUER ┘GLEICH LOESCHEN
  715. COP Y1,ZP1       ;╦OORD. SICHERN
  716. COP Y2,ZP1+1     ;(FUER "╩╙╥ ╥┼├╓┬╧╪╥")
  717. TRANSW X1,ZP2
  718. TRANSW X2,ZP3
  719. LDA MOUSEY
  720. CMP AKTY         ;┘ GLEICHGEBLIEBEN ?
  721. BNE YNGLEICH
  722. JMP YGLEICH
  723. :YNGLEICH
  724. STA AKTY         ;NEIN,
  725. :RULO
  726. LDA AKTY         ;UND OBEN BZW.
  727. CMP ALTY         ;UNTEN FESTLEGEN
  728. BCS YGROESSER
  729. COP ALTY,Y2
  730. COP AKTY,Y1
  731. JMP XPRUEFEN
  732. :YGROESSER
  733. COP ALTY,Y1
  734. COP AKTY,Y2
  735. JMP XPRUEFEN
  736. :YGLEICH
  737. POKE FLAG3,SET   ;╞LAG FUER ┘GLEICH
  738. :XPRUEFEN
  739. LDA MOUSEX
  740. CMP AKTX         ;╪ VERAENDERT?
  741. BNE NICHTGLEICH  ;JA
  742. LDA MOUSEX+1
  743. CMP AKTX+1
  744. BNE NICHTGLEICH  ;JA
  745. :XGLEICH
  746. LDA FLAG3
  747. BNE NINVERTIEREN ;WENN NUR ╪ GLEICH,NEUEN ┬.INVERTIEREN
  748. JMP INVERTIEREN
  749. :NINVERTIEREN
  750. MAIN WARTESCHLEIFE
  751. :NICHTGLEICH
  752. TRANSW MOUSEX,AKTX
  753. SEC
  754. LDA AKTX
  755. SBC ALTX          ;LINKS UND RECHTS
  756. LDA AKTX+1        ;FESTLEGEN
  757. SBC ALTX+1
  758. BCS XGROESSER
  759. TRANSW ALTX,X2
  760. TRANSW AKTX,X1
  761. POKE FLAG6,CLEAR  ;┴KTY-LINKS-╞LAG
  762. JMP INVERTIEREN
  763. :XGROESSER
  764. TRANSW ALTX,X1
  765. TRANSW AKTX,X2
  766. POKE FLAG6,SET    ;┴KTY-RECHTS-╞LAG
  767. :INVERTIEREN
  768. POKE FARBE,0
  769. LDA FLAG1       ;WENN ┴UTOSTOP,
  770. BNE AUFRUF      ;DANN UEBERSPRINGEN
  771. SEC             ;╞ARBE DES ┬ILD-
  772. LDA Y2          ;SCHIRMRANDES
  773. SBC Y1          ;BERECHNEN
  774. CMP #144
  775. BCC SCHWARZ
  776. POKE FARBE,2
  777. JMP XFARBE
  778. :SCHWARZ
  779. POKE FARBE,0
  780. :XFARBE
  781. SEC
  782. LDA X2
  783. SBC X1
  784. STA PUFFER+1
  785. LDA X2+1
  786. SBC X1+1
  787. STA PUFFER+2
  788. LDA PUFFER+2
  789. BEQ XSCHWARZ
  790. LDA PUFFER+1
  791. CMP #9
  792. BCC XSCHWARZ
  793. POKE FARBE,2
  794. JMP AUFRUF
  795. :XSCHWARZ
  796. LDA FARBE
  797. BNE AUFRUF
  798. POKE FARBE,0
  799. :AUFRUF
  800. LDA FLAG5
  801. BEQ NKNOPF2
  802. RTS
  803. :NKNOPF2
  804. LDA FARBE
  805. CMP PUFFER+10
  806. BEQ ALTEFARBE
  807. STA PUFFER+10
  808. INITIO
  809. COP FARBE,53280   ;╞ARBE SETZEN
  810. DONEIO
  811. :ALTEFARBE
  812. TRANSW ZP2,R3     ;ALTEN ┬EREICH
  813. TRANSW ZP3,R4     ;WIEDERHERSTELLEN,
  814. COP ZP1,6
  815. COP ZP1+1,7
  816. JSR RECVBOXR
  817. TRANSW X1,R3
  818. TRANSW X2,R4      ;NEUEN ┬EREICH
  819. COP Y1,6          ;INVERTIEREN
  820. COP Y2,7
  821. INVBOX
  822. TRANSW X1,R3
  823. TRANSW X2,R4      ;UND ╥ECHTECK ZEICHNEN
  824. COP Y1,6
  825. COP Y2,7
  826. LDA #%11110000    ;┌EICHENMUSTER
  827. FRAME
  828. MAIN WARTESCHLEIFE ;UND WEITER WARTEN
  829. ;
  830. ; ** AUF 2. ╦NOPFDRUCK REAGIEREN **
  831. ;
  832. :KNOPF2
  833. LOADW ERWEITERN,$849B ;╥UECKSPRUNGADR. FUER ═┴╔╬
  834. RTS                   ;ZURUECK ZU ═┴╔╬
  835. :ERWEITERN
  836. LOADW $E6B9,$84A1  ;ALTEN ╓EKTOR HERSTELLEN
  837. ;
  838. ; ** ╪-╦OORD. AUF "╪/8" ERWEITERN **
  839. ;
  840. TRANSW X1,R3     ;┬ILD
  841. TRANSW X2,R4     ;WIEDERHERSTELLEN
  842. COP Y1,6
  843. COP Y2,7
  844. JSR RECVBOXR
  845. LDA X1           ;BEI ╪1=0
  846. BNE KEINENULL    ;UEBERSPRINGEN
  847. LDA X1+1
  848. BEQ X2ERWEIT
  849. :KEINENULL
  850. TRANSW X1,R0
  851. LOADW 8,R1
  852. DDIV R0,R1       ;╪1/8 STEHT IN R0 (╠OWBYTE)
  853. POKE R0+1,8
  854. BBMULT R0,R1     ;╪1*8,┼RGEBNIS IN R1
  855. TRANSW R1,X1     ;X1 JETZT DURCH 8 TEILBAR
  856. :X2ERWEIT
  857. LDA X2           ;BEI ╪2=0
  858. BNE NONULL       ;UEBERSPRINGEN
  859. LDA X2+1
  860. BNE NONULL
  861. JMP DARSTELLEN
  862. :NONULL
  863. TRANSW X2,R0
  864. DINC R0          ;╪2 ERHOEHEN (0=1,7=8,...)
  865. LOADW 8,R1
  866. DDIV R0,R1       ;╪2/8 STEHT IN R0 (╠OWBYTE)
  867. POKE R0+1,8
  868. BBMULT R0,R1     ;╪2*8,┼RGEBNIS IN R1
  869. DDEC R1          ;╪2 WIEDER -1 (8=7,...)
  870. TRANSW R1,PUFFER ;X2 JETZT DURCH 8 TEILBAR
  871. LDA PUFFER
  872. CMP X2
  873. BEQ KEINREST
  874. CLC              ;AUFRUNDEN
  875. LDA PUFFER       ;(PLUS 8)
  876. ADC #8
  877. STA PUFFER
  878. LDA PUFFER+1
  879. ADC #0
  880. STA PUFFER+1
  881. :KEINREST
  882. TRANSW PUFFER,X2
  883. LDA FLAG1        ;┴UTOSTOP ?
  884. BEQ DARSTELLEN
  885. DSUBTR X2,X1,ZP10
  886. LOADW 264,ZP9
  887. DSUBTR ZP10,ZP9,ZP8
  888. BCC DARSTELLEN
  889. LDA FLAG6
  890. BNE AKTX2
  891. CLC              ;┬REITE HERUNTER-
  892. LDA X1           ;SETZEN
  893. ADC #8           ;(╪1 + 8)
  894. STA X1
  895. LDA X1+1
  896. ADC #0
  897. STA X1+1
  898. JMP DARSTELLEN
  899. :AKTX2
  900. LOADW 8,ZP10      ;╪2 - 8
  901. DSUBTR X2,ZP10,X2 ;(┬REITE HERUNTERSETZEN)
  902. ;
  903. ; ** NEUEN ┬EREICH DARSTELLEN **
  904. ;
  905. :DARSTELLEN
  906. TRANSW X1,R3
  907. TRANSW X2,R4      ;NEUEN ┬EREICH
  908. COP Y1,6          ;INVERTIEREN
  909. COP Y2,7
  910. INVBOX
  911. TRANSW X1,R3
  912. TRANSW X2,R4      ;UND ╥ECHTECK ZEICHNEN
  913. COP Y1,6
  914. COP Y2,7
  915. LDA #%11110000    ;┌EICHENMUSTER
  916. FRAME
  917. ;
  918. ; ** ╞ARBEN FUER ┬EREICHSUEBERSCHREITUNG SETZEN **
  919. ;
  920. POKE FLAG5,SET
  921. POKE FLAG1,CLEAR
  922. JSR INVERTIEREN
  923. INITIO
  924. COP FARBE,53280  ;╞ARBE SETZEN
  925. DONEIO
  926. WAIT 4
  927. DIALBOX AUSSCHNITTOK
  928. LDA R0
  929. CMP #YES
  930. BEQ INORDNUNG
  931. RECVBOX 0,0,319,199
  932. JMP BILDRICHTIG   ;NEUEN ┴USSCHNITT WAEHLEN
  933. :INORDNUNG
  934. INITIO
  935. POKE 53280,0
  936. DONEIO
  937. ;
  938. ; ** ┬ITMAPFORMAT KONVERTIEREN **
  939. ;
  940. MOUSEOFF
  941. CLEARAM $A000,8000 ;┬ITMAP 1 LOESCHEN
  942. POKE $2F,%01000000 ;┬ITMAP 2 AUSLESEN
  943. LOADW $A000,ZP1    ;┌EIGER FESTLEGEN
  944. POKE PUFFER,0      ;  ''      ''
  945. LDA X2           ;╪2 ERHOEHEN
  946. BNE X2NICHTNULL  ;(DURCH 8 TEIL-
  947. LDA X2+1         ; BAR MACHEN)
  948. BEQ GLEICHNULL
  949. :X2NICHTNULL
  950. DINC X2
  951. ; ** ┬REITE UND ╚OEHE FESTHALTEN **
  952. :GLEICHNULL
  953. SEC
  954. LDA Y2
  955. SBC Y1
  956. STA HOEHE        ;WEIL KLEINSTES ┘=0
  957. INC HOEHE        ;MUSS ╚OEHE INCREMENTIERT WERDEN
  958. SEC
  959. LDA X2
  960. SBC X1
  961. STA R0
  962. LDA X2+1
  963. SBC X1+1
  964. STA R0+1
  965. LOADW 8,R1
  966. DDIV R0,R1       ;┬REITE/8 STEHT IN R0 (╠OWBYTE)
  967. COP R0,BREITE
  968. TRANSW X1,ALTX   ;RETTEN
  969. ; ** UND JETZT GEHT'S LOS **
  970. :COPYLOOP
  971. LDX Y1
  972. SCAN
  973. CLC
  974. LDA R5
  975. ADC X1
  976. STA R5
  977. LDA R5+1
  978. ADC X1+1
  979. STA R5+1
  980. LDY #0
  981. LDA (R5),Y
  982. STA (ZP1),Y
  983. DINC ZP1         ;┌IELZEIGER ERHOEHEN
  984. CLC              ;╪-╦OORD. ERHOEHEN
  985. LDA X1           ;(UM 8)
  986. ADC #8
  987. STA X1
  988. LDA X1+1
  989. ADC #0
  990. STA X1+1
  991. LDA X2           ;PRUEFEN,OB ╪1=╪2
  992. CMP X1
  993. BNE COPYLOOP
  994. LDA X2+1
  995. CMP X1+1
  996. BNE COPYLOOP
  997. LDA Y1           ;PRUEFEN,OB LETZTE ┌EILE
  998. CMP Y2
  999. BEQ FERTIG
  1000. INC Y1           ;┘ ERHOEHEN
  1001. TRANSW ALTX,X1   ;┴NFANGSWERT ZURUECK
  1002. JMP COPYLOOP
  1003. ;
  1004. ; ** ┬ITMAP PACKEN **
  1005. ;
  1006. :FERTIG
  1007. LOADW $A000-1,LESE   ;╠ESEZEIGER
  1008. LOADW PUFFER+3,WRITE ;╙CHREIBZEIGER
  1009. LDA HOEHE
  1010. STA R1
  1011. STA PUFFER+1         ;╓ORBEREITUNG FUER SPEICHERN
  1012. LDA BREITE
  1013. STA R2
  1014. STA PUFFER           ;    ''        ''     ''
  1015. POKE PUFFER+2,0      ;    ''        ''     ''
  1016. POKE R2+1,0
  1017. BMULT R1,R2
  1018. TRANSW R2,BYTES   ;┬YTEZAHL
  1019. ; ** NEUES ╦OPFBYTE + 1.┬YTE SCHREIBEN **
  1020. :NEUERKOPF
  1021. LDA #1            ;╦OPFBYTE
  1022. LDY #0            ;─ATENBYTEANZAHL
  1023. LDX #0            ;─UMMY
  1024. STA (WRITE),Y     ;╦OPFBYTE SPEICHERN
  1025. TRANSW WRITE,KOPF ;┌EIGER AUF ╦OPFBYTE
  1026. INY               ;┘=1
  1027. LDA (LESE),Y      ;ERSTES ─ATENBYTE
  1028. STA (WRITE),Y
  1029. PUSHCPU
  1030. DDEC BYTES
  1031. CMP #0            ;LETZTES ┬YTE ?
  1032. BEQ ANZEIGEN1
  1033. POPCPU
  1034. INY               ;┘=2
  1035. LDA (LESE),Y      ;NAECHSTES LESEN
  1036. DEY               ;┘=1 (VORHERIGES ┬YTE)
  1037. CMP (LESE),Y      ;GLEICH ?
  1038. BNE GRUPPE2
  1039. LDY #3
  1040. CMP (LESE),Y      ;3 GLEICHE ┬YTES ?
  1041. BNE GRUPPE2
  1042. LDY #1
  1043. ; ** ╫IEDERHOLUNG **
  1044. :GRUPPE1
  1045. INY               ;┘ WIEDERHERSTELLEN
  1046. TYA
  1047. STA (KOPF),X      ;╦OPFBYTE=─ATENBYTEZAHL
  1048. PUSHCPU
  1049. DDEC BYTES
  1050. CMP #0            ;LETZTES ┬YTE ?
  1051. BEQ ANZEIGEN1
  1052. POPCPU
  1053. INY               ;NAECHSTES ┬YTE LESEN
  1054. LDA (LESE),Y
  1055. DEY               ;┌EIGER 1 ZURUECK
  1056. CMP (LESE),Y      ;GLEICH VORHERIGEM ?
  1057. BNE UNGLEICH1
  1058. CPY #$7F          ;MAXIMALE ┴NZAHL VON
  1059. BNE GRUPPE1       ;╫IEDERHOLUNGEN ?
  1060. ; ** ╫IEDERHOLUNG ZUENDE **
  1061. :UNGLEICH1
  1062. TYA               ;┌EIGER IN ┴KKU
  1063. CLC
  1064. ADC LESE          ;╠ESEZG.=
  1065. STA LESE          ;╠ESEZG.+┬YTEZAHL
  1066. LDA LESE+1
  1067. ADC #0
  1068. STA LESE+1
  1069. DINC WRITE        ;╫RITEZG.=
  1070. DINC WRITE        ;╫RITEZG.+2 (╦OPFBYTE+1 ─ATENB.)
  1071. JMP NEUERKOPF
  1072. ; ** ALLE ┬YTES GEPACKT **
  1073. :ANZEIGEN1
  1074. DINC WRITE
  1075. DINC WRITE
  1076. JMP ANZG
  1077. ; ** KEINE ╨ACKMOEGLICHKEIT **
  1078. :GRUPPE2
  1079. LDY #1
  1080. LDA #$81          ;╦OPFBYTE (┘=1)
  1081. STA (KOPF),X      ;SPEICHERN
  1082. INY
  1083. LDA (LESE),Y      ;ZWEITES
  1084. STA (WRITE),Y     ;─ATENBYTE
  1085. TYA
  1086. ORA #$80
  1087. STA (KOPF),X      ;╦OPFBYE +1 (┬IT 7 GESETZT)
  1088. PUSHCPU
  1089. DDEC BYTES
  1090. CMP #0
  1091. BEQ ANZEIGEN2
  1092. POPCPU
  1093. :WEITERLESEN
  1094. INY               ;NAECHSTES ┬YTE
  1095. LDA (LESE),Y      ;LESEN
  1096. DEY               ;UND MIT
  1097. CMP (LESE),Y      ;VORHERIGEM VERGL.
  1098. BNE UNGLEICH
  1099. INY
  1100. INY
  1101. CMP (LESE),Y      ;3 GLEICHE ?
  1102. PHP               ;╞LAGS RETTEN
  1103. DEY
  1104. DEY
  1105. PLP               ;╞LAGS ZURUECK
  1106. BEQ GLEICH2
  1107. :UNGLEICH
  1108. INY               ;FALLS NICHT GLEICH,
  1109. STA (WRITE),Y     ;SPEICHERN
  1110. PUSHCPU
  1111. DDEC BYTES
  1112. CMP #0            ;ALLE ┬YTES ?
  1113. BEQ ANZEIGEN2
  1114. POPCPU
  1115. TYA
  1116. ORA #$80          ;┬IT 7 SETZEN
  1117. STA (KOPF),X      ;NEUES ╦OPFBYTE SPEICHERN
  1118. CMP #$DB          ;MAXIMAL MOEGLICHE ┴NZAHL ?
  1119. BNE WEITERLESEN
  1120. PUSHCPU
  1121. DDEC BYTES
  1122. POPCPU
  1123. JMP MAXZAHL
  1124. ; ** NEUE ╫IEDERHOLUNG GEFUNDEN **
  1125. :GLEICH2
  1126. DEY
  1127. TYA
  1128. ORA #$80
  1129. STA (KOPF),X      ;╦OPFBYTE -1
  1130. :MAXZAHL
  1131. TYA               ;┌EIGER IN ┴KKU
  1132. CLC
  1133. ADC LESE          ;╠ESEZG.=
  1134. STA LESE          ;╠ESEZG.+┬YTEZAHL
  1135. LDA LESE+1
  1136. ADC #0
  1137. STA LESE+1
  1138. INY               ;─ATENBYTES +1 ╦OPFBYTE
  1139. TYA
  1140. CLC
  1141. ADC WRITE         ;╫RITE PLUS
  1142. STA WRITE         ;─ATENBYTEZAHL
  1143. LDA WRITE+1
  1144. ADC #0
  1145. STA WRITE+1
  1146. DINC BYTES        ;┬YTE WIEDER +1
  1147. JMP NEUERKOPF     ;NEUES ╦OPFBYTE
  1148. ; ** ALLE ┬YTES GEPACKT **
  1149. :ANZEIGEN2
  1150. POPCPU
  1151. TYA
  1152. CLC
  1153. ADC WRITE         ;╫RITE PLUS
  1154. STA WRITE         ;─ATENBYTEZAHL
  1155. LDA WRITE+1
  1156. ADC #0
  1157. STA WRITE+1
  1158. JMP ANZG
  1159. ;
  1160. ; ** ╨ROBEANZEIGEN **
  1161. ;
  1162. :ANZG
  1163. POKE $2F,%10000000
  1164. CLEARAM $A000,8000
  1165. BITMAP PUFFER+3,0,0,BREITE,HOEHE
  1166. WAIT 3
  1167. ;
  1168. ; ** ╞ARBCODES HINTER ┬ITMAP SPEICHERN **
  1169. ;
  1170. ;
  1171. ; * ╨REFERENCES LADEN *
  1172. ;
  1173. :NEUDISK
  1174. DIALBOX NEWDISK     ;┌IELDISK EINLEGEN
  1175. LDA R0
  1176. CMP #OK
  1177. BEQ DISKOEFF
  1178. RECVBOX 0,0,319,199 ;┬ILD WIEDERHERSTELLEN
  1179. JMP NEUERSCRAP      ;UND NEUEN ╙CRAP WAEHLEN
  1180. :DISKOEFF
  1181. OPENDISK
  1182. TXA
  1183. BEQ OK3
  1184. ERROR NEUDISK
  1185. :OK3
  1186. FINDFILE PREF
  1187. TXA
  1188. BNE ANZAHL          ;╨REFERENCES NICHT DA
  1189. COP $8400+1,4       ;╘RACK
  1190. COP $8400+2,5       ;+┬LOCK
  1191. GETBLK $8000        ;╨REF. NACH $8000 EINLESEN
  1192. TXA
  1193. BEQ OK3A
  1194. ERROR NEUDISK
  1195. :OK3A
  1196. LDA $8000+5         ;╞ARBEN ZU EINEM ┬YTE ZUSAMMENFASSEN
  1197. ORA $8000+6
  1198. STA FARBEN
  1199. ;
  1200. ; * ┴NZAHL DER ╞ARBKACHELN BERECHNEN *
  1201. ;
  1202. :ANZAHL
  1203. LSR HOEHE
  1204. LSR HOEHE          ;╚OEHE=╚OEHE/8
  1205. LSR HOEHE
  1206. COP HOEHE,ZP1
  1207. COP BREITE,ZP2
  1208. POKE ZP2+1,0
  1209. BMULT ZP1,ZP2
  1210. TRANSW ZP2,KACHELN ;┴NZAHL DER ╞ARBBYTES
  1211. DINC KACHELN           ;SICHERHEITSHALBER+1
  1212. :FARBKOPF
  1213. LDA #0             ;╦OPFBYTE
  1214. LDY #0
  1215. STA (WRITE),Y
  1216. LDY #1
  1217. LDA FARBEN
  1218. STA (WRITE),Y      ;─ATENBYTE
  1219. LDY #0
  1220. :FARBLOOP
  1221. LDA (WRITE),Y
  1222. TAX
  1223. INX
  1224. TXA
  1225. STA (WRITE),Y
  1226. DDEC KACHELN
  1227. CMP #0
  1228. BEQ FARBFERT
  1229. LDY #0
  1230. LDA (WRITE),Y
  1231. CMP #$7F
  1232. BNE FARBLOOP
  1233. DINC WRITE         ;┌EIGER AUF ─ATENBYTE
  1234. DINC WRITE         ;  ''   AUF NAECHSTEN ╦OPF
  1235. JMP FARBKOPF
  1236. :FARBFERT
  1237. DINC WRITE         ;┌EIGER AUF LETZTES ┬YTE
  1238. DINC WRITE
  1239. ;
  1240. ; ** ╙PEICHERN **
  1241. ;
  1242. :SPEICHERN
  1243. DELETE NEUNAM
  1244. LOADW PUFFER,LADEADR
  1245. TRANSW WRITE,ENDADR
  1246. SAVE INFOBLOCK,1
  1247. RENAME NEUNAM,ALTNAM
  1248. DESKTOP
  1249. ;
  1250. ; ** ─IALOGBOXPARAMETER **
  1251. ;
  1252. :SPRACHE
  1253. STDDIALBOX 1
  1254. TEXTAUS 16,16,SPRTXT
  1255. TEXTAUS 80,34,LANGTX
  1256. TEXTAUS 80,58,LANGTX
  1257. TEXTAUS 80,82,QUITTX
  1258. USRICON 16,24,ENGLIC
  1259. USRICON 16,48,GERMIC
  1260. USRICON 16,72,QUITIC
  1261. B NULL
  1262. ;
  1263. :TITEL
  1264. INITDIALBOX 1,20,170,64,255
  1265. VARTEXTAUS 16,16,TITELTXT
  1266. FELD OK,136,127
  1267. B NULL
  1268. ;
  1269. :INSERTDISK
  1270. STDDIALBOX 1
  1271. VARTEXTAUS 16,16,INSERTDISKTXT
  1272. FELD OK,8,72
  1273. FELD CANCEL,136,72
  1274. B NULL
  1275. ;
  1276. :IOFEHLER
  1277. STDDIALBOX 1
  1278. VARTEXTAUS 16,16,FEHLERMELDUNG
  1279. TEXTAUS 16,52,FEHLERNR
  1280. FELD OK,136,72
  1281. B NULL
  1282. ;
  1283. :CHOOSEFILES
  1284. STDDIALBOX 1
  1285. GETFILES 2,2
  1286. FELD OK,136,8
  1287. FELD CANCEL,136,72
  1288. B NULL
  1289. ;
  1290. :FILETYPEBOX
  1291. STDDIALBOX 1
  1292. VARTEXTAUS 16,16,FEHLERMELDUNG
  1293. VARTEXTAUS 16,52,FILETYP
  1294. FELD OK,136,72
  1295. B NULL
  1296. ;
  1297. :BILDOK
  1298. STDDIALBOX 1
  1299. VARTEXTAUS 16,16,BILDOKTXT
  1300. FELD YES,8,72
  1301. FELD NO,136,72
  1302. B NULL
  1303. ;
  1304. :AUTOSTOP
  1305. STDDIALBOX 1
  1306. VARTEXTAUS 16,16,STOPTXT
  1307. FELD YES,8,72
  1308. FELD NO,136,72
  1309. B NULL
  1310. ;
  1311. :AUSSCHNITTOK
  1312. STDDIALBOX 1
  1313. VARTEXTAUS 16,16,SCHNITTOKTXT
  1314. FELD YES,8,72
  1315. FELD NO,136,72
  1316. B NULL
  1317. ;
  1318. :NEWDISK
  1319. STDDIALBOX 1
  1320. VARTEXTAUS 16,16,NEWDISKTXT
  1321. FELD OK,8,72
  1322. FELD CANCEL,136,72
  1323. B NULL
  1324. ;
  1325. ; *** ╘EXTE, ALLGEMEINE ***
  1326. ;
  1327. :SPRTXT
  1328. B BOLDON,"╨LEASE ╙ELECT ╧PTION:"
  1329. B NULL
  1330. ;
  1331. :LANGTX
  1332. B PLAINTEXT,"LANGUAGE"
  1333. B NULL
  1334. ;
  1335. :QUITTX
  1336. B "TO DESK╘OP"
  1337. B NULL
  1338. ;
  1339. ; *** ╘EXTE, ENGLISCHE ***
  1340. ;
  1341. :TITELTXTE
  1342. B ITALICON,BOLDON,"╟┼╧╙ ┬ITMAP├ONVERTER ╓ 1.44",CR,CR
  1343. GOTOX 80
  1344. B PLAINTEXT,BOLDON,"DESIGNED BY:"
  1345. GOTOX 160
  1346. B PLAINTEXT,OUTLINE,"├ARSTEN",CR
  1347. GOTOX 160
  1348. B "├LASOHM",CR,CR
  1349. GOTOX 80
  1350. B PLAINTEXT,"═ANY THANKS TO ╞LORIAN ═UELLER FOR",CR
  1351. GOTOX 80
  1352. B "SENDING ME THE IDEA FOR THIS PROGRAM",CR
  1353. GOTOX 80
  1354. B "AND FOR WRITING THE BOOK",CR
  1355. GOTOX 80
  1356. B 34,"┴LLES UEBER ╟EOS",34,".",CR,CR
  1357. GOTOX 80
  1358. B BOLDON,"(├) IN 1987 BY ├ARSTEN ├LASOHM",CR,CR
  1359. B NULL
  1360. ;
  1361. :INSERTXTE
  1362. B BOLDON,"╨LEASE INSERT THE DISK",CR,CR
  1363. GOTOX 80
  1364. B "CONTAINING THE BITMAP",CR,CR
  1365. GOTOX 80
  1366. B "TO CONVERT."
  1367. B NULL
  1368. ;
  1369. :FEHLERMELDUNGE
  1370. B BOLDON,"╧PERATION CANCELED DUE TO",CR,CR
  1371. GOTOX 80
  1372. B "DISK ERROR:"
  1373. B NULL
  1374. ;
  1375. :FILETYPE
  1376. B "╞ILE TYPE MISMATCH"
  1377. B NULL
  1378. ;
  1379. :BILDOKTXTE
  1380. B BOLDON,"╔S THIS THE RIGHT PICTURE ?"
  1381. B NULL
  1382. ;
  1383. :STOPTXTE
  1384. B BOLDON,"─O YOU WANT '┴UTOSTOP' ?"
  1385. B NULL
  1386. ;
  1387. :SCHNITTOKTXTE
  1388. B BOLDON,"╔S THIS THE RIGHT SCRAP ?"
  1389. B NULL
  1390. ;
  1391. :NEWDISKTXTE
  1392. B BOLDON,"╨LEASE INSERT A DISK",CR,CR
  1393. GOTOX 80
  1394. B "ON WHICH ╔ CAN SAVE",CR,CR
  1395. GOTOX 80
  1396. B "THE PHOTOSCRAP."
  1397. B NULL
  1398. ;
  1399. ; *** ╘EXTE, DEUTSCHE ***
  1400. ;
  1401. :TITELTXTD
  1402. B ITALICON,BOLDON,"╟┼╧╙ ┬ITMAP├ONVERTER ╓ 1.44",CR,CR
  1403. GOTOX 80
  1404. B PLAINTEXT,BOLDON,"GESCHRIEBEN VON:"
  1405. GOTOX 175
  1406. B PLAINTEXT,OUTLINE,"├ARSTEN",CR
  1407. GOTOX 175
  1408. B "├LASOHM",CR,CR
  1409. GOTOX 80
  1410. B PLAINTEXT,"╓IELEN ─ANK AN ╞LORIAN ═UELLER",CR
  1411. GOTOX 80
  1412. B "FUER DIE ╔DEE ZU DIESEM ╨ROGRAMM",CR
  1413. GOTOX 80
  1414. B "UND FUER DAS ╙CHREIBEN DES ┬UCHES",CR
  1415. GOTOX 80
  1416. B 34,"┴LLES UEBER ╟EOS",34,".",CR,CR
  1417. GOTOX 80
  1418. B BOLDON,"(├) IN 1987 BY ├ARSTEN ├LASOHM",CR,CR
  1419. B NULL
  1420. ;
  1421. :INSERTXTD
  1422. B BOLDON,"┬ITTE DIE ─ISK MIT DER ZU",CR,CR
  1423. GOTOX 80
  1424. B "KONVERTIERENDEN ┬ITMAP",CR,CR
  1425. GOTOX 80
  1426. B "EINLEGEN."
  1427. B NULL
  1428. ;
  1429. :FEHLERMELDUNGD
  1430. B BOLDON,"╧PERATION ABGEBROCHEN",CR,CR
  1431. GOTOX 80
  1432. B "WEGEN ─ISKFEHLER:"
  1433. B NULL
  1434. ;
  1435. :FILETYPD
  1436. B "╞ALSCHER ╞ILETYP"
  1437. B NULL
  1438. ;
  1439. :BILDOKTXTD
  1440. B BOLDON,"╔ST DIES DAS RICHTIGE ┬ILD ?"
  1441. B NULL
  1442. ;
  1443. :STOPTXTD
  1444. B BOLDON,"═OECHTEN ╙IE '┴UTOSTOP' ?"
  1445. B NULL
  1446. ;
  1447. :SCHNITTOKTXTD
  1448. GOTOX 72
  1449. B BOLDON,"╔ST DIES DER RICHTIGE ┴USSCHNITT ?"
  1450. B NULL
  1451. ;
  1452. :NEWDISKTXTD
  1453. B BOLDON,"┬ITTE DIE ─ISK EINLEGEN,",CR,CR
  1454. GOTOX 80
  1455. B "AUF DIE DER ┴USSCHNITT",CR,CR
  1456. GOTOX 80
  1457. B "GESPEICHERT WERDEN SOLL."
  1458. B NULL
  1459. ;
  1460. ; *** ╞ILENAMEN ***
  1461. ;
  1462. :ALTNAM
  1463. B 133,176,18,173,139,254,56,237,3,133,141,139,254,176,9,206,NULL
  1464. ;
  1465. :NEUNAM
  1466. B 80,104,111,116,111,32,83,99,114,97,112,NULL
  1467. ;
  1468. :PREF
  1469. B 80,114,101,102,101,114,101,110,99,101,115,NULL
  1470. ;
  1471. ; *** ╔CONTABELLEN ***
  1472. ;
  1473. :ENGLIC
  1474. ICON ENGLBM,0,0,6,16,ENGLRT
  1475. B NULL
  1476. ;
  1477. :GERMIC
  1478. ICON GERMBM,0,0,7,16,GERMRT
  1479. B NULL
  1480. ;
  1481. :QUITIC
  1482. ICON QUITBM,0,0,6,16,QUITRT
  1483. B NULL
  1484. ;
  1485. ; *** ┬ITMAPS DER ╔CONS ***
  1486. ;
  1487. :ENGLBM
  1488. B $05,$FF,$82
  1489. B $FE,$80,$04,$00,$C9,$02,$BF,$00
  1490. B $01,$CC,$03,$03,$B0,$00,$00,$C0
  1491. B $03,$03,$B0,$7C,$7C,$DC,$F3,$E3
  1492. B $B0,$76,$CC,$CD,$9B,$B3,$BE,$66
  1493. B $CC,$CD,$83,$33,$B0,$66,$CC,$CC
  1494. B $F3,$33,$B0,$66,$CC,$CC,$1B,$33
  1495. B $B0,$66,$CC,$CD,$9B,$33,$BF,$66
  1496. B $7C,$CC,$F3,$33,$80,$00,$0C,$00
  1497. B $00,$03,$80,$00,$CC,$00,$00,$03
  1498. B $80,$00,$78,$00,$00,$03,$06,$FF
  1499. B $81,$3F,$05,$FF
  1500. ;
  1501. :GERMBM
  1502. B $06,$FF,$82
  1503. B $FE,$80,$05,$00,$83,$02,$87,$C0
  1504. B $04,$00,$83,$03,$8C,$60,$04,$00
  1505. B $B3,$03,$8C,$07,$9F,$BE,$E3,$CF
  1506. B $83,$8C,$0C,$DC,$3B,$B6,$6E,$C3
  1507. B $8D,$EC,$D8,$33,$33,$EC,$C3,$8C
  1508. B $6F,$D8,$33,$36,$6C,$C3,$8C,$6C
  1509. B $18,$33,$36,$6C,$C3,$8C,$6C,$D8
  1510. B $33,$36,$6C,$C3,$87,$C7,$98,$33
  1511. B $33,$EC,$C3,$80,$05,$00,$82,$03
  1512. B $80,$05,$00,$82,$03,$80,$05,$00
  1513. B $81,$03,$07,$FF,$81,$3F,$06,$FF
  1514. ;
  1515. :QUITBM
  1516. B $05,$FF,$82
  1517. B $FE,$80,$04,$00,$BE,$02,$80,$0F
  1518. B $80,$19,$80,$03,$80,$18,$C0,$01
  1519. B $80,$03,$80,$18,$D9,$BB,$C0,$03
  1520. B $80,$18,$D9,$99,$80,$03,$80,$18
  1521. B $D9,$99,$80,$03,$80,$18,$D9,$99
  1522. B $80,$03,$80,$18,$D9,$99,$80,$03
  1523. B $80,$1B,$DB,$99,$80,$03,$80,$0F
  1524. B $8F,$98,$E0,$03,$80,$00,$C0,$00
  1525. B $00,$03,$80,$04,$00,$82,$03,$80
  1526. B $04,$00,$81,$03,$06,$FF,$81,$3F
  1527. B $05,$FF
  1528. ;
  1529. ; ** ─ATEN **
  1530. ;
  1531. :FARBEN
  1532. B 0
  1533. :TRACK
  1534. :BREITE
  1535. B 0
  1536. :BLOCK
  1537. :HOEHE
  1538. B 0
  1539. :X1
  1540. B 0,0
  1541. :Y1
  1542. B 0
  1543. :X2
  1544. B 0,0
  1545. :Y2
  1546. B 0
  1547. :AKTX
  1548. B 0,0
  1549. :AKTY
  1550. B 0
  1551. :ALTX
  1552. B 0,0
  1553. :ALTY
  1554. B 0
  1555. :FARBE
  1556. B 0
  1557. :NAME
  1558. :FLAG1    ;┴UTOSTOP ?
  1559. B 0
  1560. :FLAG2    ;┘-┬EREICHSUEBERSCHREITUNG GEBLIEBEN ?
  1561. B 0
  1562. :FLAG3    ;┘ GLEICH GEBLIEBEN ?
  1563. B 0
  1564. :FLAG4    ;╪-┬EREICHSUEBERSCHREITUNG GEBLIEBEN ?
  1565. B 0
  1566. :FLAG5    ;╞REMDAUFRUF DER ╫┴╥╘┼╙├╚╠┼╔╞┼ ?
  1567. B 0
  1568. :FLAG6    ;┴KTY LINKS (0) ODER RECHTS ($FF) ?
  1569. S 11
  1570. :INFOBLOCK
  1571. B 0,255,3,21,191,255,255,255
  1572. B 128,64,1,128,96,1,128,96
  1573. B 1,128,96,13,128,80,53,128
  1574. B 80,217,128,83,33,128,92,193
  1575. B 128,89,1,135,206,1,159,200
  1576. B 1,184,248,1,177,252,1,191
  1577. B 110,1,156,102,1,128,102,1
  1578. B 128,108,1,128,56,1,128,0
  1579. B 1,255,255,255,131,4,0
  1580. :LADEADR
  1581. B 0,0
  1582. :ENDADR
  1583. B 0,0
  1584. B 0,0,80,104,111
  1585. B 116,111,32,83,99,114,97,112
  1586. B 32,86,49,46,48
  1587. S 42
  1588. B 80
  1589. B 104,111,116,111,32,83,99,114
  1590. B 97,112,0,32,119,194,96,169
  1591. B 66,133,3,169,182,133,2,32
  1592. B 0
  1593. :PUFFER
  1594.