home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / 92xx / 9205.d64 / amica-shower.src < prev    next >
Text File  |  1995-03-30  |  13KB  |  558 lines

  1.          *= $0810
  2.  
  3. ;--------ASSEMBLER-EINSPRUNG
  4.  
  5. ASSTART  = 36864
  6.  
  7. ;--------ZEROPAGE-ADRESSEN
  8.  
  9. A0       = $02;;
  10. A1       = $04;;
  11. A2       = $06;;
  12. A3       = $08;;
  13. CURSOR   = $0A;;
  14. COLOR    = $0C;;
  15. AMEM     = $10;
  16. XMEM     = $11;
  17. YMEM     = $12;
  18. XP       = $50;
  19. YP       = $51;
  20.  
  21. ;--------SYSTEM-ADRESSEN
  22.  
  23. KEY      = $C6
  24. KEYSTACK = $0277
  25. IRQVEC   = $0314
  26. NMIVEC   = $0318
  27. SCREEN   = $0400
  28. GRAPHIC  = $2000
  29. VIC      = $D000
  30. SID      = $D400
  31. RND      = $D41B
  32. COLORRAM = $D800
  33. JOY1     = $DC00
  34. JOY2     = $DC01
  35.  
  36. ;--------BETRIEBSSYSTEM-ROUTINEN
  37.  
  38. INTOUT   = $BDCD
  39. VICRESET = $E518
  40. CLRHOME  = $E544
  41. FNPAR    = $FDF9
  42. FPAR     = $FE00
  43. CHROUT   = $FFD2
  44. LOAD     = $FFD5
  45. SAVE     = $FFD8
  46. OPEN     = $FFC0
  47. GETIN    = $FFE4
  48.  
  49. ;--------╚AUPTSCHLEIFE
  50.  
  51. MAINROUT JSR INIT
  52.          JSR SHOWDIR
  53.          JSR SLCTFILE
  54.          JMP MAINROUT
  55.  
  56. MAINEND  JMP REINIT
  57.  
  58.  
  59. ;--------╨ROGRAMM INITIALISIEREN
  60.  
  61. INIT     LDA #0      ;VERHINDERT AUSGABE
  62.          STA $9D     ;VON MELDUNGEN DES
  63.                      ;BETRIEBSSYSTEMS
  64.  
  65.          JSR VICRESET;VIC-INIT
  66.          JMP RESET   ;NMI-VECTOR SETZEN
  67.  
  68. ;--------╨ROGRAMM REINITIALISIEREN
  69.  
  70. REINIT   LDA #0      ;TASTATURPUFFER
  71.          STA 198     ;RUECKSETZEN
  72.          JSR VICRESET;VIC-INIT
  73.          JMP ASSTART ;ASSEMBLER STARTEN
  74.  
  75. ;--------NMI-╓ECTOR VERBIEGEN
  76.  
  77. RESET    LDA #<MAINEND ;NMI-VECTOR AUF
  78.          STA NMIVEC    ;MAINEND VERBIE-
  79.          LDA #>MAINEND ;GEN, RESTORE
  80.          STA NMIVEC+1  ;BRICHT IMMER DAS
  81.          RTS           ;PROGRAMM AB UND
  82.                        ;STARTET ╘-┴SS
  83.  
  84. ;--------╞ILE AUSWAEHLEN
  85.  
  86. SLCTFILE LDA #0      ;YPOSITION DES
  87.          STA YMEM    ;CURSORS LOESCHEN
  88.          LDA #40     ;╙CREENADRESSE DES
  89.          STA A0      ;├URSORS NACH A0
  90.          LDA #$04
  91.          STA A0+1
  92.          JSR SETCUR  ;├URSOR INVERTIEREN
  93.  
  94. SFILELP  JSR GETIN   ;╘ASTATUR ABFRAGEN
  95.          CMP #17
  96.          BEQ CRSRDOWN
  97.          CMP #145
  98.          BEQ CRSRUP
  99.          CMP #13
  100.          BEQ RETURN
  101.          JMP SFILELP
  102.  
  103. ;--------├URSOR ─OWN AUSFUEHREN
  104.  
  105. CRSRDOWN JSR SETCUR  ;├URSOR INVERT.
  106.          LDA YMEM    ;Y-╨OSITION = 22?
  107.          CMP #22
  108.          BEQ CDOWNEND;JA => DANN ENDE
  109.          INC YMEM    ;Y-╨OS ERHOEHEN
  110.          CLC         ;├URSORADRESSE AUF
  111.          LDA A0      ;NAECHSTE ┌EILE
  112.          ADC #40     ;STELLEN
  113.          STA A0
  114.          BCC CDOWNEND;KEIN UEBERLAUF?
  115.          INC A0+1
  116. CDOWNEND JSR SETCUR  ;├URSOR INVERT.
  117.          JMP SFILELP ;ZUR ╘ASTATURROUT.
  118.  
  119. ;--------├URSOR ╒P AUSFUEHREN
  120.  
  121. CRSRUP   JSR SETCUR  ;├URSOR INVERT.
  122.          LDA YMEM    ;┘-╨OSITION=0?
  123.          BEQ CUPEND  ;JA => DANN ┼NDE
  124.          DEC YMEM    ;Y-╨OS - 1
  125.          SEC         ;40 VON ├URSORADR.
  126.          LDA A0      ;ABZIEHEN
  127.          SBC #40
  128.          STA A0
  129.          BCS CUPEND  ;╒NTERLAUF?
  130.          DEC A0+1
  131. CUPEND   JSR SETCUR  ;├URSOR INVERT.
  132.          JMP SFILELP ;ZUR ╘ASTATURROUT.
  133.  
  134. ;--------╥ETURN AUSFUEHREN
  135.  
  136. RETURN   JSR SETCUR  ;├URSOR INVERT.
  137.  
  138.          LDY #12     ;12.┌EICHEN DER
  139. RETURNLP LDA (A0),Y  ;┌EILE=AKT.╞ILENAME
  140.          CMP #$C1    ;ZEICHEN FUER ╦OALA
  141.          BEQ KOALAPIC;JA => DANN WEITER
  142.          CMP #$1B    ;ZEICHEN FUER ┴MICA
  143.          BEQ AMICAPIC;JA => DANN WEITER
  144.          PLA         ;RUECKSPRUNGADRESSE
  145.          PLA         ;LOESCHEN
  146.          JMP MAINROUT;NEUSTART
  147.  
  148. ;--------├URSORZEILE INVERTIEREN
  149.  
  150. SETCUR   JSR WAITRAST
  151.          LDY #39     ;40 ┌EICHEN=1 ┌EILE
  152. SCURLP   LDA (A0),Y  ;INVERTIEREN
  153.          EOR #128    ;╙TARTPOSITION
  154.          STA (A0),Y  ;IMMER IN A0
  155.          DEY
  156.          BPL SCURLP
  157.          RTS
  158.  
  159. ;--------╦OALABILD LADEN UND ANZEIGEN
  160.  
  161. ;─ER ╞ILENAME KANN NICHT DIREKT VOM
  162. ;┬ILDSCHIRM GELESEN WERDEN, WEIL ER ERST
  163. ;├HR$-├ODE GEWANDELT WERDEN MUSS. ╔M
  164. ;VORLIEGENDEN ╞ALL WIRD DAVON AUSGEGAN-
  165. ;GEN, DASS KEINE ╟RAPHIK-┌EICHEN ODER
  166. ;╟ROSSBUCHSTABEN VERWENDET WURDEN!
  167.  
  168. KOALAPIC LDX #4        ;KOALA-╨RAEFIX
  169. KOALAPLP LDA KOALAPRF,X;IN ╞ILENAMEN
  170.          STA FILENAME,X;SCHREIBEN
  171.          DEX           ;?PIC+╙PACE
  172.          BPL KOALAPLP
  173.  
  174.          LDX #4        ;┌EIGER ╞ILENAME
  175.          LDY #16       ;┌EIGER ╙CREEN
  176. KOALALP0 LDA (A0),Y    ;HOLEN
  177.          EOR #%00100000;= EOR #32
  178.          CLC
  179.          ADC #$20      ;+ #32
  180.          STA FILENAME,X;SCHREIBEN
  181.          INY
  182.          INX
  183.          CPX #15       ;15 ┬UCHSTABEN?
  184.          BNE KOALALP0  ;NEIN => SCHLEIFE
  185.          LDA #15       ;LAENGE SETZEN
  186.          STA FNLEN
  187.          LDY #0        ;┌EIGER ╠ADEADR.
  188.          JSR LFILE     ;┬ILD LADEN
  189.          JMP SHOWKPIC  ;UND ANZEIGEN
  190.  
  191. ;--------┴MICA-╨AINT ╞ORMAT ANZEIGEN
  192.  
  193. AMICAPIC LDX #2        ;╨RAEFIX IN
  194. AMICAPLP LDA AMICAPRF,X;╞ILENAMEN
  195.          STA FILENAME,X;[B]
  196.          DEX
  197.          BPL AMICAPLP
  198.          LDA #3        ;╠ANGE BEI DIESEM
  199.          STA FNLEN     ;╞ORMAT VARIABEL
  200.          LDX #3        ;┌EIGER ╞ILENAME
  201.          LDY #15       ;┌EIGER ╙CREEN
  202. AMICALP0 LDA (A0),Y    ;HOLEN
  203.          CMP #$22      ;╬AME ZU ┼NDE?
  204.          BEQ AMICAGO   ;JA=>DANN ┼NDE
  205.          EOR #%00100000;WIE OBEN
  206.          CLC
  207.          ADC #$20
  208.          STA FILENAME,X;SCHREIBEN
  209.          INC FNLEN     ;╞ILELAENGE+1
  210.          INY
  211.          INX
  212.          BNE AMICALP0  ;ZUR ╙CHLEIFE
  213. AMICAGO  LDY #2        ;┌EIGER ╠ADEADR.
  214.          JSR LFILE     ;┬ILD LADEN UND
  215.          JMP SHOWAPIC  ;ANZEIGEN
  216.  
  217. ;--------╞ILE LADEN
  218.  
  219. LFILE    LDA REGTAB,Y  ;╠ADEADRESSEN
  220.          STA A0        ;AUS ╘ABELLE
  221.          LDA REGTAB+1,Y;HOLEN
  222.          STA A0+1
  223.          LDA FNLEN
  224.          LDX #<FILENAME
  225.          LDY #>FILENAME;╞ILENAMEN-
  226.          JSR FNPAR     ;PARAMETER SETZEN
  227.          LDA #2
  228.          LDX #8
  229.          LDY #0        ;╞ILEPARAMETER
  230.          JSR FPAR      ;SETZEN
  231.          LDA #$00      ;(1=╓ERIFY)
  232.          LDX A0
  233.          LDY A0+1
  234.          JSR LOAD      ;╞ILE LADEN
  235.          BCC LFILEEND  ;KEIN ╞EHLER =>
  236.  
  237.          PLA           ;╥UECKSPRUNG-
  238.          PLA           ;ADRESSE LOESCHEN
  239.                        ;= ┬ILD NICHT
  240.                        ;ANZEIGEN!
  241. LFILEEND RTS
  242.  
  243. ;--------─IRECTORY ANZEIGEN
  244.  
  245. SHOWDIR  LDA #154      ;╚ELLBLAU
  246.          JSR CHROUT
  247.          JSR CLRHOME
  248.          LDA #13       ;╥ETURN
  249.          JSR CHROUT
  250.          LDA #13       ;╥ETURN
  251.          JSR CHROUT
  252.          LDA #0        ;╘EXTNR 0
  253.          JSR TEXTOUT   ;AUSGEBEN
  254.          JSR OPENFILE  ;╞ILE OEFFNEN
  255.          LDA $BA       ;╙EKUNDAER ┴DR.
  256.          JSR $ED09     ;╔┼├-╧PEN
  257.          LDA $B9       ;╟ERAETENUMMER
  258.          JSR $EDC7     ;╘ALK SENDEN
  259.          JSR GETBYTE   ;=┬YTE VOM ╔┼├-
  260.          JSR GETBYTE   ;┬US LESEN
  261. SHWDIRLP LDX #5        ;5 ╠EERZEICHEN
  262.          JSR TABULATR  ;AUSGEBEN
  263.          JSR SRCHSTRT  ;╙TART SUCHEN
  264.          JSR BLOCKOUT  ;┬LOCKS AUSGEBEN
  265.          JSR FNAMEOUT  ;╞ILENAMEN DRUCK.
  266.          JSR RUNSTOP   ;╥UNSTOP ABFRAGEN
  267.          JMP SHWDIRLP  ;╙CHLEIFE
  268.  
  269. ;--------╞ILE SCHLIESSEN
  270.  
  271. CLOSE    PLA           ;╥UECKSPRUNGADR.
  272.          PLA           ;LOESCHEN
  273.                        ;= ╥╘╙ IM AUFRU-
  274.                        ;FENDEN ╨ROGRAMM
  275.  
  276.          JSR $F528     ;╒NTALK SENDEN
  277.                        ;UND ╞ILECLOSE
  278.          JSR $FFE7     ;┴LLES SCHLIESSEN
  279.          LDA #0        ;╘EXTNUMMER 0
  280.          JSR TEXTOUT
  281.          LDA #1        ;╘EXTNUMMER 1
  282.          JMP TEXTOUT   ;AUSGEBEN
  283.  
  284. ;--------┬YTE VOM ╔┼├-┬US LESEN
  285.  
  286. GETBYTE  JSR $EE13     ;┬YTE LESEN
  287.          PHA           ;MERKEN
  288.          LDA $90       ;╙TATUS
  289.          LSR A
  290.          LSR A
  291.          PLA           ;┬YTE HOLEN
  292.          BCS CLOSE     ;╘IME OUT
  293.          RTS
  294.  
  295. ;--------╥UNSTOP ABFRAGEN
  296.  
  297. RUNSTOP  JSR $FFE1   ;╥UNSTOP?
  298.          BEQ CLOSE   ;JA=>DANN ┼NDE
  299.          RTS
  300.  
  301. ;--------┌EIGER AUF ╙TART DES ─IRECTORY
  302.         ;┼INTRAG SETZEN
  303.  
  304. SRCHSTRT JSR GETBYTE ;┬YTE LESEN
  305.          BEQ SRCHSTGO;=0 DANN NAECHSTES
  306.          CMP #1
  307.          BNE SRCHSTRT;<>1 DANN ╙CHLEIFE
  308. SRCHSTGO JSR GETBYTE ;┬YTE LESEN
  309.          BEQ CLOSE   ;=0 DANN ─IR. ┼NDE
  310.          RTS
  311.  
  312. ;--------┴NZAHL DER ┬LOCKS AUSGEBEN
  313.  
  314. BLOCKOUT JSR GETBYTE ;┬YTE LESEN
  315.          STA AMEM    ;MERKEN
  316.          JSR GETBYTE ;IN ┴KKU HIGH
  317.          LDX AMEM    ;IN X╥EG LOW
  318.          JSR INTOUT  ;╔NTEGER AUSGEBEN
  319.          LDA #32     ;╠EERZEICHEN
  320.          JMP CHROUT  ;AUSGEBEN
  321.  
  322. ;--------╞ILENAME DRUCKEN
  323.  
  324. FNAMEOUT JSR GETBYTE ;┬YTE LESEN
  325.          BEQ FNOUTLP ;=0 DANN ╙TRINGENDE
  326.          JSR CHROUT  ;┌EICHEN AUSGEBEN
  327.          JMP FNAMEOUT;╙CHLEIFE
  328.  
  329. FNOUTLP  LDA #13     ;╥ETURN
  330.          JMP CHROUT  ;AUSGEBEN
  331.  
  332. ;--------╞ILE OEFFNEN
  333.  
  334. OPENFILE LDA #1      ;LOGISCHE ╞ILENR.
  335.          LDX #8      ;╟ERAETEADRESSE
  336.          LDY #0      ;╙EKUNDAERADRESSE
  337.          JSR FPAR    ;SETZEN
  338.          LDA #1      ;╞ILELAENGE
  339.          LDX #<FNAME
  340.          LDY #>FNAME
  341.          JSR FNPAR   ;╞NAME SETZEN
  342.          JMP OPEN    ;╞ILE OEFFNEN
  343.  
  344. FNAME    .TEXT "$"
  345.  
  346. ;--------╘ABULATOR/┴NZAHL ╠EERZEICHEN
  347.         ;IN X╥EG
  348.  
  349. TABULATR LDA #32     ;╠EERZEICHEN
  350.          JSR CHROUT  ;AUSGEBEN
  351.          DEX
  352.          BPL TABULATR
  353.          RTS
  354.  
  355. ;--------╘EXT AUSGEBEN
  356.  
  357. TEXTOUT  ASL A          ;┌EIGER AUF
  358.          TAY            ;╘ABELLE
  359.          LDA TEXTTAB,Y  ;╘EXTADRESSE
  360.          STA A0         ;NACH (A0)
  361.          LDA TEXTTAB+1,Y
  362.          STA A0+1
  363.          LDA TPOSTAB,Y  ;╙CRNADRESSE
  364.          STA A1         ;NACH (A1)
  365.          LDA TPOSTAB+1,Y
  366.          STA A1+1
  367.          LDY #39        ;40 ┌EICHEN
  368. TXTOUTLP LDA (A0),Y     ;LESEN
  369.          AND #63        ;IN ┴╙├áWANDELN
  370.          ORA #128       ;╥EVERS
  371.          STA (A1),Y     ;AUSGEBEN
  372.          DEY
  373.          BPL TXTOUTLP
  374.          RTS
  375.  
  376. ;--------╨ICTURES ANZEIGEN
  377.  
  378.  
  379. SHOWAPIC             ;=┼INSPRUNG FUER
  380.                      ;┴MICA-╨ICTURES
  381.          JSR SETREGS ;╥EGISTER SETZEN
  382.          JSR SCRNOFF ;╙CREEN AUS
  383.          JSR DEPACK  ;ENTPACKEN
  384.  
  385. SHOWKPIC             ;=┼INSPRUNG FUER
  386.                      ;╦OALA-╨ICTURES
  387.          JSR INITCOLS;╞ARBEN KOPIEREN
  388.          JSR SCRNON  ;╙CREEN AN
  389.          JSR GRAPHON ;╟RAPHIC AN
  390.  
  391. SHOWWAIT JSR GETIN   ;AUF ╘ASTENDRUCK
  392.          BEQ SHOWWAIT;WARTEN
  393.          RTS
  394.  
  395. ;--------╥EGISTER SETZEN
  396.  
  397. SETREGS  LDX #3      ;(A0)=┌IEL
  398. SREGSLP  LDA REGTAB,X;(A1)=─ESTINATION
  399.          STA A0,X
  400.          DEX
  401.          BPL SREGSLP
  402.          RTS
  403.  
  404. ;--------╟RAPHIK EINSCHALTEN
  405.  
  406. GRAPHON  LDA #%00111011;╟RAPHIK AN
  407.          STA VIC+17
  408.          LDA #%00011000;╙EITE 1
  409.          STA VIC+24
  410.          STA VIC+22    ;═ULTICOLOR AN
  411.          LDA #0        ;SCHWARZ
  412.          STA VIC+32    ;╥AHMENFARBE
  413.          STA VIC+33    ;╚INTERGRUND
  414.          RTS
  415.  
  416. ;--------┬YTE SCHREIBEN
  417.  
  418. SBYTE    LDX #$00
  419.          STA (A0,X)
  420.          INC A0
  421.          BNE SBYTEND
  422.          INC A0+1
  423. SBYTEND  RTS
  424.  
  425. ;--------┬YTE HOLEN
  426.  
  427. GBYTE    LDX #$00
  428.          LDA (A1,X)
  429.          INC A1
  430.          BNE GBYTEND
  431.          INC A1+1
  432. GBYTEND  RTS
  433.  
  434. ;--------┴MICA-╨ICTURE ENTPACKEN
  435.  
  436. DEPACK   JSR GBYTE   ;┬YTE HOLEN
  437.          CMP #$C2    ;╙TEUERZEICHEN
  438.          BEQ DPACKGO0;JA=>DANN AUSFUEHR.
  439.          JSR SBYTE   ;┬YTE SCHREIBEN
  440.          JMP DEPACK  ;╙CHLEIFE
  441.  
  442. ;--------
  443.  
  444. DPACKGO0 JSR GBYTE   ;┬YTE HOLEN
  445.          CMP #$00    ;= ╞ILE-┼NDE
  446.          BEQ DPACKEND;JA=>DANN ┼NDE
  447.          TAY         ;┴NZAHL ┬YTES
  448.          JSR GBYTE   ;┬YTE HOLEN
  449.          PHA         ;MERKEN
  450.          TYA         ;Y╥EG NACH X╥EG
  451.          TAX
  452.          PLA         ;HOLEN
  453.          LDY #$00
  454. DPACKLP  STA (A0),Y  ;UND SCHREIBEN
  455.          INY
  456.          DEX
  457.          BNE DPACKLP
  458.          TYA         ;├OUNTER ZU ─ESTI-
  459.          CLC         ;NATION ADDIEREN
  460.          ADC A0
  461.          STA A0
  462.          BCC DEPACK  ;ZUR ╙CHLEIFE
  463.          INC A0+1
  464.          JMP DEPACK  ;ZUR ╙CHLEIFE
  465.  
  466. DPACKEND RTS
  467.  
  468. ;--------╞ARBEN KOPIEREN
  469.  
  470. INITCOLS CLC         ;(A0) AUF ╞ARBEN
  471.          LDA REGTAB  ;FUER ╙CREEN SETZEN
  472.          ADC #$40    ;┬ILDANFANG + $1F40
  473.          STA A0
  474.          LDA REGTAB+1
  475.          ADC #$1F
  476.          STA A0+1
  477.  
  478.          CLC         ;(A1) AUF ╞ARBEN
  479.          LDA A0      ;FUER ├OLORRAM
  480.          ADC #$E8    ;(A0) + 1000
  481.          STA A1
  482.          LDA A0+1
  483.          ADC #$03
  484.          STA A1+1
  485.  
  486.          LDA #0      ;(A2)=╙CREEN
  487.          STA A2      ;(A3)=├OLORRAM
  488.          STA A3
  489.          LDA #$04
  490.          STA A2+1
  491.          LDA #$D8
  492.          STA A3+1
  493.  
  494.          LDX #3     ;╦OPIER╙CHLEIFE
  495.          LDY #0     ;FUER 4 ┬LOCKS
  496. ICOLSLP  LDA (A0),Y ;=$0400 ┬YTES
  497.          STA (A2),Y
  498.          LDA (A1),Y
  499.          STA (A3),Y
  500.          INY
  501.          BNE ICOLSLP
  502.          INC A0+1
  503.          INC A1+1
  504.          INC A2+1
  505.          INC A3+1
  506.          DEX
  507.          BPL ICOLSLP
  508.          RTS
  509.  
  510. ;--------╙CREEN ABSCHALTEN
  511.  
  512. SCRNOFF  JSR WAITRAST
  513.          LDA VIC+17
  514.          AND #%11101111
  515.          STA VIC+17
  516.          RTS
  517.  
  518. ;--------╙CREEN EINSCHALTEN
  519.  
  520. SCRNON   JSR WAITRAST
  521.          LDA VIC+17
  522.          ORA #%00010000
  523.          STA VIC+17
  524.          RTS
  525.  
  526. ;--------AUF ╥ASTERSTRAHLPOSITION WARTEN
  527.  
  528. WAITRAST LDA #255
  529.          CMP VIC+18
  530.          BNE WAITRAST
  531.          RTS
  532.  
  533. ;--------
  534.  
  535. REGTAB   .WORD $2000 ;ENTPACKTES ╞ILE
  536.          .WORD $4A00 ;GEPACKTES ╞ILE
  537.  
  538. TEXTTAB  .WORD TEXT00,TEXT01
  539.  
  540. TPOSTAB  .WORD SCREEN
  541.          .WORD SCREEN+(40*24)
  542.  
  543. TEXT00   .TEXT "AMICA-PICTURE-SHOWER"
  544.          .TEXT " BY DARK MIGHTS 1992"
  545.  
  546. TEXT01   .TEXT "MOVE CURSOR TO ANY "
  547.          .TEXT "FILE AND HIT RETURN! "
  548.  
  549. FNLEN    .BYTE 0
  550. FILENAME .TEXT "                "
  551.  
  552.          ;"?PIC "
  553. KOALAPRF .BYTE $3F,$50,$49,$43,$20
  554.  
  555.          ;"[B]"
  556. AMICAPRF .BYTE $5B,$42,$5D
  557.  
  558.