home *** CD-ROM | disk | FTP | other *** search
/ Flop Magazin 1 / Flop_Magazin_01_1989_10___cs_Side_A.atr / zxin.lst < prev   
File List  |  2023-02-26  |  20KB  |  1 lines

  1. PAGE 1    ¢                                                                 ¢¢¢¢                20 **********************************¢                30 * ZXIN.M65;1¢                40 *    ZX-MINILOADER PRO DISKETU¢                50 *              22.7.1988¢                60 * Petr Vicar,  Roznov p.R¢                70 *¢                80 *Tato verze je urcena pro zavedeni¢                90 *souboru v kodu ZX z datasetu do¢                0100 *operacni pameti VZDY od adresy¢                0110 * $3000¢                0120 *¢                0130 *¢                0180     .INCLUDE #D:SYSADR.M65¢    =0011       30 BRKKEY =  $11     ;stav BREAK klavesy¢    =D01F       40 CONSOL =  $D01F   ;stav pom.klaves¢    =D20A       50 SKRES =   $D20A   ;nuluj statusreg.¢    =D20E       60 IRQEN =   $D20E   ;preruseni IRQ¢    =D20F       70 SKCTL =   $D20F   ;seriovy vstu¢    =D300       80 PORTA =   $D300   ;rizeni portu A¢    =D301       90 PORTB =   $D301   ;rizeni pameti¢    =D302       0100 PACTL = $D302   ;spinani motoru¢    =D303       0110 PBCTL = $D303   ;prepinani vstupu¢    =D400       0120 DMACTL = $D400  ;rizeni DMA¢    =D40E       0130 NMIEN = $D40E   ;nemask.preruseni¢    =C63E       0140 BOOTER = $C63E  ;ERROR¢    =C642       0150 PUTLIN = $C642  ;vypis radek¢    =D9AA       0160 IFP =   $D9AA   ;I  -> FP¢    =D9D2       0170 FPI =   $D9D2   ;FP -> I¢    =DADB       0180 FMUL =  $DADB   ;nasobeni FP¢    =DD98       0190 FLD1R = $DD98   ;FR1 <- (X,Y)¢    =EF94       0200 INITS = $EF94   ;OPEN E:¢    =F2B0       0210 EOUTCH = $F2B0  ;vypis znak¢    =F2F8       0220 KGETCH = $F2F8  ;cti znak¢    =FDFC       0230 BEEP =  $FDFC   ;pipnuti+cekej znak¢                0250 ;¢                0300 ;¢    =0000       0310 SAVEPC = *      ; SAVE CURRENT ORG¢                0320 ;¢0000            0330     *=  $0340   ;START OF SYSTEM IOCBS¢0340            0340 IOCB¢                0350 ;¢0340            0360 ICHID *= *+1    ;DEVICE HANDLER IS (SET BY OS)¢0341            0370 ICDNO *= *+1    ;DEVICE NUMBER (SET BY OS)¢0342            0380 ICCOM *= *+1    ;I/O COMMAND¢0343            0390 ICSTA *= *+1    ;I/O STATUS¢0344            0400 ICBADR *= *+2   ;BUFFER ADDRESS¢0346            0410 ICPUT *= *+2    ;DH PUT ROUTINE (ADR-1)¢0348            0420 ICBLEN *= *+2   ;BUFFER LENGTH¢034A            0430 ICAUX1 *= *+1   ;AUX 1¢034B            0440 ICAUX2 *= *+1   ;AUX 2¢034C            0450 ICAUX3 *= *+1   ;AUX 3¢034D            0460 ICAUX4 *= *+1   ;AUX 4¢034E            0470 ICAUX5 *= *+1   ;AUX 5¢034F            0480 ICAUX6 *= *+1   ;AUX 6¢                0490 ;¢    =0010       0500 IOCBLEN = *-IOCB ;LENGTH OF ONE IOCB¢    =0003       0540 COPN =  3       ;OPEN¢    =0007       0550 CGBINR = 7      ;GET BINARY RECORD¢ PAGE 2    ¢                                                                D:SYSADR.M65¢¢¢¢    =0005       0560 CGTXTR = 5      ;GET TEXT RECORD¢    =000B       0570 CPBINR = 11     ;PUT BINARY RECORD¢    =0009       0580 CPTXTR = 9      ;PUT TEXT RECORD¢    =000C       0590 CCLOSE = 12     ;CLOSE ¢    =000D       0600 CSTAT = 13      ;GET STATUS¢                0610 ;¢                0630 ;¢    =0020       0640 CREN =  32      ;RENAME¢    =0021       0650 CERA =  33      ;ERASE¢    =0023       0660 CPRO =  35      ;PROTECT¢    =0024       0670 CUNP =  36      ;UNPROTECT¢    =0025       0680 CPOINT = 37     ;POINT¢    =0026       0690 CNOTE = 38      ;NOTE¢                0700 ;¢    =0004       0730 OPIN =  4       ;OPEN INPUT¢    =0008       0740 OPOUT = 8       ;OPEN OUTPUT¢    =000C       0750 OPUPD = 12      ;OPEN UPDATE¢    =0009       0760 OPAPND = 9      ;OPEN APPEND¢    =0006       0770 OPDIR = 6       ;OPEN DIRECTORY¢                0780 ;¢    =0080       0830 EXCYES = $80    ; EXECUTE IN PROGRESS¢    =0040       0840 EXCSCR = $40    ; ECHO EXCUTE INPUT TO SCREEN¢    =0010       0850 EXCNEW = $10    ; EXECUTE START UP MODE¢    =0020       0860 EXCSUP = $20    ; COLD START EXEC FLAG¢                0870 ;¢    =000A       0900 CPALOC = $0A    ; POINTER TO CP/A¢    =0008       0910 WARMST = $08    ; WAR, START (0=COLD)¢    =02E7       0920 MEMLO = $02E7   ; AVAIL MEM (LOW) PTR¢    =02E5       0930 MEMTOP = $02E5  ; AVAIL MEM (HIGH) PTR¢    =000E       0940 APPMHI = $0E    ; UPPER LIMIT OF APPLICATION MEMORY¢    =02E2       0950 INITADR = $02E2 ; ATARI LOAD/INIT ADR¢    =02E0       0960 GOADR = $02E0   ; ATARI LOAD/GO ADR¢    =BFFA       0970 CARTLOC = $BFFA ; CARTRIDGE RUN LOCATION¢    =E456       0980 CIO =   $E456   ;CIO ENTRY ADR¢    =009B       0990 EOL =   $9B     ; END OF LINE CHAR¢                1000 ;¢    =0003       1050 CPGNFN = 3      ; GET NEXT FILE NAME¢    =0007       1060 CPDFDV = $07    ; DEFAULT DRIVE (3 BYTES)¢    =000A       1070 CPBUFP = $0A    ; CMD BUFF NEXT CHAR POINTR (1 BYTE)¢    =000B       1080 CPEXFL = $0B    ; EXECUTE FLAG¢    =000C       1090 CPEXFN = $0C    ; EXECUTE FILE NAME (16 BYTES)¢    =001C       1100 CPEXNP = $1C    ; EXECUTE NOTE/POINT VALUES¢    =0021       1110 CPFNAM = $21    ; FILENAME BUFFER¢    =003D       1120 RUNLOC = $3D    ; CP/A LOAD/RUN ADR¢    =003F       1130 CPCMDB = $3F    ; COMMAND BUFFER (60 BYTES)¢    =00F3       1140 CPCMDGO = $F3¢                1150 ;¢0350            1160     *=  SAVEPC  ; RESTORE PC¢                1170 ;¢                0190     .INCLUDE #D:MACRO.M65¢                10 ;hexadecimalni I/O operace¢                20       .MACRO HEXOUT ¢                30       PHA ¢                40       LSR A¢                50       LSR A¢                60       LSR A¢                70       LSR A¢                80       JSR HO1¢ PAGE 3    ¢                                                                D:MACRO.M65¢¢¢¢                90       PLA ¢                0100     AND #$0F¢                0110 HO1 CMP #10¢                0120     BCS HO2¢                0130     ORA #'0¢                0140     BNE HO3¢                0150 HO2 ADC #'A-11¢                0160 HO3 JMP EOUTCH¢                0170     .ENDM ¢                0180 ;¢                0190 ;vstup hexadecimalniho cisla¢                0200     .MACRO HEXIN ¢                0210 H1  STY NZ¢                0220     LDX #0¢                0230     STX HX¢                0240     STX HX+1¢                0250 HI1 JSR KGETCH¢                0260     JSR EOUTCH¢                0270     CMP #'0¢                0280     BCC HI5¢                0290     CMP #'9+1¢                0300     BCC HI2¢                0310     CMP #'A¢                0320     BCC HI5¢                0330     CMP #'F+1¢                0340     BCS HI5¢                0350     SBC #'A-11¢                0360 HI2 DEC NZ¢                0370     BEQ HI7¢                0380     ASL A¢                0390     ASL A¢                0400     ASL A¢                0410     ASL A¢                0420     LDX #4¢                0430 HI3 ASL A¢                0440     ROL HX¢                0450     ROL HX+1¢                0460     DEX ¢                0470     BNE HI3¢                0480     BEQ HI1¢                0490 HI5 LDY $7C¢                0500     CPY #$34¢                0510     BNE HI7¢                0520     INC NZ¢                0530     LDX #4¢                0540 HI6 LSR HX+1¢                0550     ROR HX¢                0560     DEX ¢                0570     BNE HI6¢                0580     BEQ HI1¢                0590 HI7 LDY NZ¢                0600     RTS ¢                0610     .ENDM ¢                0620 * Definice makroinstrukci¢                0630 *¢                0640 ;vystup znaku az po <CR>¢                0650     .MACRO TEXT ¢                0660     LDX # <%1¢ PAGE 4    ¢                                                                D:MACRO.M65¢¢¢¢                0670     LDY # >%1¢                0680     JSR PUTLIN¢                0690     .ENDM ¢                0700 ;¢                0710 ;vystup znaku az po ":"¢                0720     .MACRO TXT ¢                0730     LDX # <%1¢                0740     LDY # >%1¢                0750     JSR OUTT¢                0760     .ENDM ¢                0770 ;¢                0780 ;prenos A do B¢                0790     .MACRO MOVE  ;prenos A do B¢                0800     LDA %1¢                0810     STA %2¢                0820     LDA %1+1¢                0830     STA %2+1¢                0840     .ENDM ¢                0850 ;¢                0860 ;prenos adr A do B¢                0870     .MACRO MOVA ¢                0880     LDA # <%1¢                0890     STA %2¢                0900     LDA # >%1¢                0910     STA %2+1¢                0920     .ENDM ¢                0930 ;¢                0940 ;Scitani 16-ti bitove¢                0950     .MACRO ADDW ¢                0960     .IF %0<2 .OR %0>3¢                0970       .ERROR "Parameters error"¢                0980       .ELSE ¢                0990       CLC ¢                1000       LDA %1¢                1010       ADC %2¢                1020       .IF %0=2¢                1030         STA %2¢                1040         .ELSE ¢                1050         STA %3¢                1060         .ENDIF ¢                1070       LDA %1+1¢                1080       ADC %2+1¢                1090       .IF %0=2¢                1100         STA %2+1¢                1110         .ELSE ¢                1120         STA %3+1¢                1130         .ENDIF ¢                1140       .ENDIF ¢                1150     .ENDM ¢                1160 ;¢                1170 ;¢                1180 ;Odcitani 16-ti bitove¢                1190     .MACRO SUBW ¢                1200     .IF %0<2 .OR %0>3¢                1210       .ERROR "Parameters error"¢                1220       .ELSE ¢                1230       SEC ¢                1240       LDA %1¢ PAGE 5    ¢                                                                D:MACRO.M65¢¢¢¢                1250       SBC %2¢                1260       .IF %0=2¢                1270         STA %2¢                1280         .ELSE ¢                1290         STA %3¢                1300         .ENDIF ¢                1310       LDA %1+1¢                1320       SBC %2+1¢                1330       .IF %0=2¢                1340         STA %2+1¢                1350         .ELSE ¢                1360         STA %3+1¢                1370         .ENDIF ¢                1380       .ENDIF ¢                1390     .ENDM ¢                1395 ;prenes byte¢                1400     .MACRO MOV ¢                1410     LDA %1¢                1420     STA %2¢                1430     .ENDM ¢                1440 ;uloz hodnotu do bytu¢                1450     .MACRO MOVB ¢                1460     LDA #%1¢                1470     STA %2¢                1480     .ENDM ¢                1500 ;increment slova¢                1510     .MACRO INW ¢                1520     INC %1¢                1530     BNE @INC¢                1540     INC %1+1¢                1550 @INC¢                1560     .ENDM ¢                1570 ;pricti byte ke slovu¢                1580     .MACRO ADWB ¢                1590     CLC ¢                1600     LDA #%1¢                1610     ADC %2¢                1620     STA %2¢                1630     LDA #0¢                1640     ADC %2+1¢                1650     STA %2+1¢                1660     .ENDM ¢    =002E       0200 P   =   $2E     ;pomocna adresa¢    =002F       0210 P1  =   $2F     ;   -"-¢    =0030       0220 SW  =   $30     ;stav vystupu¢    =0031       0230 CH  =   $31     ;kontrolni soucet¢    =0032       0240 ZA  =   $32     ;pocatecni adresa¢    =0034       0250 KA  =   $34     ;koncova adresa¢    =0036       0260 TB  =   $36     ;typ bloku¢    =00C8       0270 SPEED = $C8     ;rychlost prenosu¢    =00E3       0280 REFR =  $E3     ;reference 0/1¢    =03C0       0290 HEAD =  $03C0   ;typ souboru¢    =03C1       0300 NZV =   HEAD+1  ;nazev¢    =03CB       0310 ZADR =  HEAD+11 ;zavadeci adr.¢    =03CD       0320 LONG =  HEAD+13 ;delka¢    =03CF       0330 SADR =  HEAD+15 ;start. adresa¢    =03D2       0340 HD  =   HEAD+18 ;hledany nazev¢    =003E       0350 FND =   $3E¢ PAGE 6    ¢                                                                 ¢¢¢¢    =003F       0360 FNX =   $3F¢                0370 ;¢                0380 ;¢                0390 ;¢                0400 *Zacatek vlastniho zavadece¢                0410 *¢0000            0420     *=  $0480¢                0430 * Cinnost po RESETu¢                0440 *¢                0450 RES  TEXT  TXT¢0480 A2D0      M         LDX # <%1¢0482 A005      M         LDY # >%1¢0484 2042C6    M         JSR PUTLIN¢               M         .ENDM ¢0487 A901       0460 MON LDA #1¢0489 20FCFD     0470     JSR BEEP¢048C ADFB02     0480     LDA $02FB¢048F C933       0490     CMP #'3¢0491 D029       0500     BNE LOAD¢0493 A9CA       0510     LDA #$CA¢0495 8D3C05     0520     STA TL2+1¢0498 A9EE       0530     LDA #$EE¢049A 8D4305     0540     STA TL3+1¢049D A9E5       0550     LDA #$E5¢049F 8D4B05     0560     STA TL4+1¢04A2 A9EC       0570     LDA #$EC¢04A4 8D5205     0580     STA TL5+1¢04A7 A9D4       0590     LDA #$D4¢04A9 8D8F05     0600     STA UB1+1¢04AC A9D2       0610     LDA #$D2¢04AE 8D5B05     0620     STA VI1+1¢04B1 8D6A05     0630     STA VI3+1¢04B4 8D7D05     0640     STA VI4+1¢04B7 A9E3       0650     LDA #$E3¢04B9 8D6605     0660     STA VI2+1¢                0670 LOAD  MOVA  HEAD,ZA ;adresa hlavicky¢04BC A9C0      M         LDA # <%1¢04BE 8532      M         STA %2¢04C0 A903      M         LDA # >%1¢04C2 8533      M         STA %2+1¢               M         .ENDM ¢                0680      MOVA  HEAD+17,KA ;i se sumou¢04C4 A9D1      M         LDA # <%1¢04C6 8534      M         STA %2¢04C8 A903      M         LDA # >%1¢04CA 8535      M         STA %2+1¢               M         .ENDM ¢04CC 200A05     0690     JSR RFI     ;cteni hlavicky¢04CF A536       0700     LDA TB      ;typ bloku¢04D1 D0E9       0710     BNE LOAD    ;neni hlavicka¢04D3 209405     0720     JSR EOF1    ;konec bloku¢04D6 ADC103     0730     LDA HEAD+1  ;nazev programu¢04D9 F0E1       0740     BEQ LOAD    ;nenacten¢04DB A930       0790     LDA #$30    1  ;nastaveni¢04DD 8533       0800     STA ZA+1    ;zavadeci adresy¢04DF 18         0810     CLC         ;a vypocet¢04E0 A900       0820     LDA #0      ;koncove adresy¢04E2 8532       0830     STA ZA      ;z delky¢ PAGE 7    ¢                                                                 ¢¢¢¢04E4 6DCD03     0840     ADC LONG    ;uvedene¢04E7 8534       0850     STA KA      ;v hlavicce¢04E9 A533       0860     LDA ZA+1¢04EB 6DCE03     0870     ADC LONG+1¢04EE 8535       0880     STA KA+1¢04F0 A99B       0890     LDA #$9B    ;<CR> vlozit¢04F2 8DCB03     0900     STA ZADR    ;za nazev¢                0910      TEXT  NZV  ;vystup nazvu¢04F5 A2C1      M         LDX # <%1¢04F7 A003      M         LDY # >%1¢04F9 2042C6    M         JSR PUTLIN¢               M         .ENDM ¢04FC 20F8F2     0920 LO1 JSR KGETCH  ;cekani NA ZNAK¢04FF C94C       0930     CMP #'L¢0501 F0B9       0940     BEQ LOAD¢0503 200A05     0950 LO2 JSR RFI     ;cteni programu¢0506 209405     0960     JSR EOF1¢0509 60         0970     RTS         navrat do DOSu¢                0980 *Cteni souboru¢050A 201805     0990 RFI JSR FRST    ;cteni 1.bytu¢050D 8536       1000     STA TB      ;typ bloku¢050F 205C05     1050 RBL JSR RBY     ;cteni bloku¢0512 207605     1060     JSR UB      ;uloz byte¢0515 90F8       1070     BCC RBL     ;konec bloku?¢0517 60         1080     RTS         ;ano¢0518 A9FE       1270 FRST LDA #$FE   ;Cteni 1.bytu¢051A 8D01D3     1280     STA PORTB   ;odpoj OS ROM¢051D A934       1290     LDA #$34¢051F 8D02D3     1300     STA PACTL¢0522 8D03D3     1310     STA PBCTL¢0525 A900       1320     LDA #$00¢0527 8D0ED4     1330     STA NMIEN   ;zakaz vsech¢052A 8D00D4     1340     STA DMACTL  ;typu preruseni¢052D 8D0ED2     1350     STA IRQEN¢0530 8531       1360     STA CH      ;nulovani sumy¢0532 20B905     1370 TL1 JSR RB1     ;cekej na pulz¢0535 90FB       1380     BCC TL1¢0537 A900       1390     LDA #$00    ;musi byt nejmene¢0539 852E       1400     STA P       ;256 pulzu¢053B A0A0       1410 TL2 LDY #$A0    ;zavadeciho¢053D 20B405     1420     JSR RB      ;kmitoctu¢0540 90F0       1430     BCC TL1¢0542 C0C6       1440 TL3 CPY #$C6    ;chyba v zav.km.?¢0544 90EC       1450     BCC TL1     ;ano - znovu¢0546 E62E       1460     INC P¢0548 D0F1       1470     BNE TL2¢054A A0D4       1480 TL4 LDY #$D4    ;cekej synchroni-¢054C 20B905     1490     JSR RB1¢054F 90E1       1500     BCC TL1     ;Chybi¢0551 C0E1       1510 TL5 CPY #$E1    ;je to sync.?¢0553 B0F5       1520     BCS TL4     ;neni-cti dal¢0555 20B905     1530     JSR RB1     ;druha cast syn.pulzu¢0558 90D8       1540     BCC TL1     ;chybi - znovu¢055A A0C8       1550 VI1 LDY #SPEED  ;Cti jeden byte¢055C A901       1560 RBY LDA #$01    ;nastav cteni 8 bitu¢055E 852F       1570     STA P1¢0560 20B405     1580 RBY1 JSR RB     ;cteni jednoho bitu¢0563 902D       1590     BCC EOF     ;konec bloku¢ PAGE 8    ¢                                                                 ¢¢¢¢0565 C0E3       1600 VI2 CPY #REFR   ;v C-bitu je H nebo L¢0567 262F       1610     ROL P1¢0569 A0C8       1620 VI3 LDY #SPEED¢056B 90F3       1630     BCC RBY1    ;konec bytu ?¢056D A531       1640     LDA CH      ;ano¢056F 452F       1650     EOR P1      ;pripocitej¢0571 8531       1660     STA CH      ;ke kontrolni sume¢0573 A52F       1670     LDA P1¢0575 60         1680     RTS ¢0576 A000       1690 UB  LDY #$00    ;Uloz byte¢0578 A52F       1700     LDA P1      ;na ukladaci adresu¢057A 9132       1710     STA (ZA),Y¢057C A0C8       1720 VI4 LDY #SPEED¢057E A532       1730     LDA ZA      ;porovnej s koncovou¢0580 C534       1740     CMP KA      ;adresou¢0582 A533       1750     LDA ZA+1¢0584 E535       1760     SBC KA+1¢0586 B009       1770     BCS UB2     ;dosazena konc.adr¢0588 E632       1780     INC ZA      ;zvys ukladaci¢058A D002       1790     BNE UB1¢058C E633       1800     INC ZA+1    ;adresu¢058E A0CA       1810 UB1 LDY #SPEED+2¢0590 18         1820     CLC         ;cti dale¢0591 60         1830 UB2 RTS ¢0592 68         1840 EOF PLA ¢0593 68         1850     PLA ¢0594 A9FF       1860 EOF1 LDA #$FF¢0596 8D01D3     1870     STA PORTB   ;pripoj OS ROM¢0599 A9C0       1880     LDA #$C0    ;Konec cteni¢059B 8D0ED4     1890     STA NMIEN   ;odblokuj¢059E 8D0ED2     1900     STA IRQEN   ;vsechna preruseni¢05A1 A93C       1910     LDA #$3C¢05A3 8D02D3     1920     STA PACTL¢05A6 8D03D3     1930     STA PBCTL¢05A9 A531       1940     LDA CH      ;kontrolni suma?¢05AB F006       1950     BEQ KON     ;v poradku¢05AD 203EC6     1960     JSR BOOTER  ;BOOT ERROR¢05B0 4C8704     1970     JMP MON¢05B3 60         1980 KON RTS ¢                1990 *Cteni uplneho pulzu¢                2000 *¢05B4 20B905     2010 RB  JSR RB1     ;jedna pulvlna¢05B7 9015       2020     BCC RB5     ;prekroceni casu¢05B9 A20C       2030 RB1 LDX #$0C    ;odstraneni zakmitu¢05BB CA         2040 RB2 DEX ¢05BC D0FD       2050     BNE RB2¢05BE C8         2060 RB3 INY         ;mereni delky pulzu¢05BF F00D       2070     BEQ RB5     ;prekroceni casu¢05C1 AD0FD2     2080     LDA SKCTL   ;cekani na zmenu¢05C4 2910       2090     AND #$10    ;stavu vstupu¢05C6 C530       2100     CMP SW¢05C8 F0F4       2110     BEQ RB3¢05CA 8530       2120     STA SW      ;poznac novy stav¢05CC 38         2130     SEC ¢05CD 60         2140     RTS ¢05CE 18         2150 RB5 CLC ¢05CF 60         2160     RTS ¢                2170     .OPT LIST,NO XREF¢ PAGE 9    ¢                                                                 ¢¢¢¢05D0 7D         2180 TXT .BYTE $7D¢05D1 5A58494E   2190     .BYTE "ZXIN Vi(c)ar 1988"¢05D5 20566928¢05D9 63296172¢05DD 20313938¢05E1 38¢05E2 9B         2200     .BYTE $9B¢                2210 ***********KONEC**************¢¢*** ASSEMBLY ERRORS: 0   17465 BYTES FREE¢