home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol026 / myboot.z80 < prev    next >
Text File  |  1984-04-29  |  2KB  |  81 lines

  1. ;This is the bootstrap that loads at track 0 sector 1
  2. ;it will be put into memory at 80H by the cold boot in the ROM based BIOS
  3. ;then it will be executed and read in the next 51 sectors.
  4. ;Note the ROM BIOS has already figured out density of disk & is stored
  5. ;as bit 6 @ 42H. (eg. for drive A: 40=dd  00=sd)
  6. ;
  7. MSIZE:    EQU    60         ;<-----------------------------
  8. PROM:    EQU    0F800H         ;<-----------------------------
  9. LOADER:    EQU    PROM+39H
  10. ;
  11. CBASE:    EQU    (MSIZE-21)*1024    ;BIAS FOR CPM LARGER THAN 17K <-------
  12.                      ;NOTE I HAVE A 2K "BIOS" TO LEAVE ROOM FOR
  13.                 ;A VDM BOARD AT EC00H (YOU MAY WANT TO CHANGE
  14.                 ;THIS)
  15. CCP:    EQU    CBASE+3400H      ;START OF CCP
  16. BDOS:    EQU    CCP+806H         ;START OF BDOS
  17. BIOS:    EQU    CCP+1600H        ;START OF BIOS
  18. ;
  19. CDISK:    EQU    04H
  20. TADDR:    EQU    40H
  21. UNIT:    EQU    42H
  22. SCTR:    EQU    43H
  23. NREC:    EQU    45H
  24. CBFLAG:    EQU    5AH         ;0 FROM BIOS TO INDICATE WBOOT    
  25. ;
  26. MONITOR:EQU    0F000H
  27. CO:    EQU    MONITOR+9H
  28. ;
  29.     ORG    80H
  30.     LD    SP,80H
  31.     LD    A,0C3H         ;SETUP JUMPS
  32.     LD    (0H),A
  33.     LD    HL,BIOS+3    ;SETUP JUMP TO WBOOT
  34.     LD    (1),HL
  35.     LD    (5),A
  36.     LD    HL,BDOS         ;SETUP JUMP TO BDOS
  37.     LD    (6),HL
  38.     LD    A,02H
  39.     LD    (SCTR),A     ;HAS ALREADY SELECTED DRIVE A: TRACK 0
  40.     LD    A,(CBFLAG)   ;IS IT A COLD BOOT OR WBOOT
  41.     OR    A
  42.     JR    Z,WBOOT
  43.     LD    A,51         ;TRANSFERR 51 SECTORS FOR COLD BOOT
  44.     JR    CBOOT
  45. WBOOT:    LD    A,45         ;NEED TRANSFERR ONLY 45 FOR WARM BOOT
  46. CBOOT:    LD    (NREC),A
  47.     LD    HL,CCP
  48.     LD    (TADDR),HL
  49.     CALL    LOADER         ;TO BIOS TO LOAD IN "N" CONTIGOUS SECTORS
  50.     JR    NZ,ERROR
  51.     LD    A,(CBFLAG)   ;IS IT A COLD BOOT OR WARM BOOT
  52.     OR    A
  53.     JR    Z,WBOOT1     ;IF ZERO THEN NOT A COLD BOOT
  54.     LD    HL,MSG1         ;SIGNON WITH CP/M & ITS SIZE
  55.     CALL    PRINT
  56. WBOOT1:    LD    A,(CDISK)    ;RESTORE CURRENT DISK (OR A: FOR COLD BOOT)
  57.     LD    C,A
  58.     JP    CCP
  59. ;
  60. ERROR:    LD    HL,MSG2
  61.     CALL    PRINT
  62.     HALT
  63. ;
  64. ;
  65. PRINT:    LD    A,(HL)
  66.     OR    A
  67.     RET    Z
  68.     LD    C,A
  69.     CALL    CO
  70.     INC    HL
  71.     JR    PRINT
  72. ;
  73. MSG1:    DB    0DH,07H,1CH,09H,09H,15H
  74.     DB    MSIZE/10 + '0',MSIZE MOD 10 +'0'
  75.     DB    'K CP/M.' 
  76.     DB    11H,0AH,0DH,0H
  77. ;
  78. MSG2:    DB    0DH,0AH,'LD ERROR',0H
  79. FINISH    EQU    $
  80. END:    
  81.