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 >
Text File  |  2002-05-26  |  5KB  |  1 lines

  1. 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 ¢