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