home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Serious Magazine 11
/
Serious_Magazine_11_2002_Dial_pl_Disk_2_of_2_Side_B.atr
/
rom_01.lzh
/
DISKOPS.TXT
< prev
next >
Wrap
Text File
|
2002-05-26
|
5KB
|
1 lines
10 ; SAVE #D1:DISKOPS.M65¢20 ;¢30 ;¢40 ; LOAD #D1:PARALLEL.M65¢50 ;¢60 ;¢70 ; *= $C58B¢79 .PAGE "Disk Handler and Boot"¢80 LIST ¢90 .LOCAL ¢050571 INITDOS LDA WARMST If a 0 here¢050573 BEQ ?READD then try to boot¢050575 LDA BOOT? Else on reset &¢050577 AND #1 if no disk boot¢050579 BEQ ?NODISK just rts; else¢050581 JMP ?XPROG goto booted pgm¢050584 ?READD LDA #1 Check status¢050586 STA DUNIT on D1:¢050589 LDA #'S¢050591 STA DCOMND Change to¢050594 JSR DSKINV check all¢050597 BMI ?NODISK¢050599 ?READ1 LDA #0 Read sector 1¢050601 STA DAUX2¢050604 LDA #1¢050606 STA DAUX1¢050609 LDA #0 into page 4¢050611 STA DBUFLO¢050614 LDA #4¢050616 STA DBUFHI¢050619 ?XREAD1 JSR ?GET1 Go read 1st¢050622 BPL ?GOT1ST and exit if ok¢050624 ?ERROR JSR ?NOBOOT¢050627 LDA CASSBT If cassette go¢050630 BEQ ?READ1 try it¢050632 ?NODISK RTS ¢050633 ?GOT1ST LDX #3¢050635 ?COPY4 LDA $0400,X Copy first¢050638 STA DFLAGS,X four bytes to¢050641 DEX DFlags & Bootad¢050642 BPL ?COPY4¢050644 LDA BOOTAD Copy Bootad to¢050647 STA RAMLO Ramlo/hi¢050649 LDA BOOTAD+1¢050652 STA RAMHI¢050654 LDA $0404 Bytes 5 and 6¢050657 STA DOSINI to Dosini¢050659 LDA $0405¢050662 STA DOSINI+1¢050664 ?SAVBUF LDY #127 Boot secs SD¢050666 ?SLOOP LDA $0400,Y ; Copy from¢050669 STA (RAMLO),Y ; page4 to¢050671 DEY ; address in¢050672 BPL ?SLOOP ; Ramlo/hi¢050674 CLC Bump pointer¢050675 LDA RAMLO by 128¢050677 ADC #$80¢050679 STA RAMLO¢050681 LDA RAMHI¢050683 ADC #0¢050685 STA RAMHI¢050687 DEC DBSECT Dec sectors to¢050690 BEQ ?DONE do and¢050692 INC DAUX1 point to next¢050695 ?NEXT JSR ?GET1 Get it and if¢050698 BPL ?SAVBUF ok, move to Ram¢050700 JSR ?NOBOOT Oops¢050703 LDA CASSBT¢050706 BNE ?ERROR¢050708 BEQ ?NEXT Go always¢050710 ?DONE LDA CASSBT¢050713 BEQ ?NOTAPE¢050715 JSR ?GET1¢050718 ?NOTAPE JSR ?XBOOT¢050721 BCS ?ERROR¢050723 JSR ?XPROG¢050726 INC BOOT?¢050728 RTS ¢050729 ?XBOOT CLC Exec boot loader¢050730 LDA BOOTAD¢050733 ADC #6¢050735 STA RAMLO¢050737 LDA BOOTAD+1¢050740 ADC #0¢050742 STA RAMHI¢050744 JMP (RAMLO)¢050747 ?XPROG JMP (DOSINI)¢050750 ?NOBOOT LDX # <MSGBERR Display¢050752 LDY # >MSGBERR boot error¢050754 TXA message¢050755 LDX #0¢050757 STA ICBAL,X¢050760 TYA ¢050761 STA ICBAH,X¢050764 LDA #9¢050766 STA ICCOM,X¢050769 LDA #$FF¢050771 STA ICBLL,X¢050774 JMP CIOV¢050777 ?GET1 LDA CASSBT Get next¢050780 BEQ ?GETSEC block or sector¢050782 JMP RBLOKV¢050785 ?GETSEC LDA #'R¢050787 STA DCOMND¢050790 LDA #1¢050792 STA DUNIT¢050795 JMP DSKINV¢050798 BOOTTAPE LDA WARMST Attempt¢050800 BEQ ?READC cassette boot¢050802 LDA BOOT? If no tape¢050804 AND #2 boot flagged¢050806 BEQ ?CQUIT then exit¢050808 JMP ?XTAPE¢050811 ?READC LDA CKEY Start pressed?¢050814 BEQ ?CQUIT No¢050816 LDA #$80 Continuous¢050818 STA FTYPE records¢050820 INC CASSBT Flag tape boot¢050823 JSR CSOPIV Open cassette¢050826 JSR ?XREAD1 Read first block¢050829 LDA #0¢050831 STA CASSBT Clear¢050834 STA CKEY these¢050837 ASL BOOT? Make Boot?=2¢050839 LDA DOSINI Set¢050841 STA CASINI reset¢050843 LDA DOSINI+1 vector¢050845 STA CASINI+1¢050847 ?CQUIT RTS ¢050848 ?XTAPE JMP (CASINI)¢050851 DSKINI LDA #160 Init Disk i/o¢050853 STA DSKTIM¢050856 LDA #$80 Single density¢050858 STA DSCTLN sector size¢050861 LDA #0¢050863 STA DSCTLN+1¢050866 RTS ¢050867 DODISK LDA #$31 Disk i/o¢050869 STA DDEVIC¢050872 LDA DSKTIM¢050875 LDX DCOMND This is why you¢050878 CPX #'! can't use Dskinv¢050880 BEQ ?TIME to format ED¢050882 LDA #7 Read/Write time¢050884 ?TIME STA DTIMLO¢050887 LDX #$40 From disk¢050889 LDA DCOMND¢050892 CMP #'P¢050894 BEQ ?ISPUT¢050896 CMP #'W¢050898 BNE ?STAT?¢050900 ?ISPUT LDX #$80 To disk¢050902 ?STAT? CMP #'S¢050904 BNE ?NOTS¢050906 LDA # <DVSTAT Read status¢050908 STA DBUFLO¢050911 LDA # >DVSTAT¢050913 STA DBUFHI¢050916 LDY #4¢050918 LDA #0¢050920 BEQ ?XSIO go always¢050922 ?NOTS LDY DSCTLN¢050925 LDA DSCTLN+1¢050928 ?XSIO STX DSTATS¢050931 STY DBYTLO¢050934 STA DBYTHI¢050937 JSR SIOV¢050940 BPL ?CONT¢050942 RTS exit on error¢050943 ?CONT LDA DCOMND¢050946 CMP #'S¢050948 BNE ?REPORT¢050950 JSR ?SETBUF¢050953 LDY #2 Get disk format¢050955 LDA (BUFADR),Y time from¢050957 STA DSKTIM status frame¢050960 ?REPORT LDA DCOMND¢050963 CMP #'!¢050965 BNE ?ENDREP¢050967 JSR ?SETBUF Format report,¢050970 LDY #$FE Want zero so¢050972 ?BUMP2 INY allow for pre-¢050973 INY increment here.¢050974 ?FF? LDA (BUFADR),Y Look for¢050976 CMP #$FF two bytes of $FF¢050978 BNE ?BUMP2¢050980 INY Code designed¢050981 LDA (BUFADR),Y for 810 drive¢050983 INY which returns¢050984 CMP #$FF bad sector list¢050986 BNE ?FF? into buffer.¢050988 DEY Point to byte¢050989 DEY before the $FF's¢050990 STY DBYTLO and report as¢050993 LDA #0 sector size¢050995 STA DBYTHI¢050998 ?ENDREP LDY DSTATS¢051001 RTS ¢051002 ?SETBUF LDA DBUFLO Set buffer¢051005 STA BUFADR address¢051007 LDA DBUFHI¢051010 STA BUFADR+1¢051012 RTS ¢