home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG025.ARK / FBOOT24.ASM < prev    next >
Assembly Source File  |  1984-04-29  |  2KB  |  84 lines

  1. MSIZE   EQU  24        ;MEMORY SIZE.
  2. DCOM    EQU  0F8H    ;DISK CO]MAND PORT.
  3. DSTAT   EQU  DCOM    ;DISK STATUS PORT.
  4. TRACK    EQU  DCOM+1    ;1771 TRACK REGISTER.
  5. SECT    EQU  DCOM+2    ;1771 SECTOR REGISTER.
  6. DDATA    EQU  DCOM+3    ;1771 DATA PORT.
  7. WAIT    EQU  DCOM+4    ;INPUT = WAIT.
  8. CBASE    EQU  (MSIZE-17)*1024
  9. CPMB    EQU  CBASE+2900H    ;WHERE CPM STARTS.
  10. BOOTE   EQU  CBASE+3E00H    ;WHERE CBIOS STARTS.
  11. NSECTS  EQU  51        ;NUMBER OF SECTORS TO LOAD.
  12.         ORG  0H        ;START OF COLDSTART LOADER.
  13. BOOT:   LXI  SP,100H    ;SET STACK POINTER.
  14. BOOT1:  LXI  B,2    ;SET B=0, C=2.
  15.     MVI  D,NSECTS    ;D = NUMBER OF SECTORS TO LOAD.
  16.     LXI  H,CPMB    ;H&L = CPM STARTING ADDRESS.
  17.         MOV   A,C    ;GET SECTOR NUMBER (2) IN A.
  18. RBLK:   CALL READ    ;READ A SECTOR.
  19. RBLK1:  JNZ  ERROR    ;HOP OUT IF ERROR.
  20.         DCR  D        ;COUNT DOWN NUMBER OF SECTORS.
  21.         JZ   BOOTE    ;HOP OUT IF DONE.
  22.         INR  C        ;INCREMENT SECTOR NUMBER.
  23.         MOV  A,C    ;MOVE IT INTO REGISTER A.
  24.         CPI  27        ;IF IT'S LESS THAN 27,
  25.         JC   RBLK2    ;KEEP ON READING.
  26.     MVI  C,1    ;OTHERWISE SET SECTOR = 1.
  27.         MVI   A,40H
  28.         OUT   DCOM
  29.         IN    WAIT
  30.         MVI   A,1
  31.         OUT   WAIT
  32.         MVI   A,72H
  33.         OUT   WAIT
  34.         IN    WAIT
  35.         MVI   A,0F2H
  36.         OUT   WAIT
  37.         INR  B
  38.         MOV  A,B
  39.         OUT   TRACK
  40.         MOV   A,C
  41.         JMP  RBLK
  42. ;
  43. RBLK2:  MOV  A,C
  44.         CALL READ1
  45.         JMP  RBLK1
  46. ;
  47. ;
  48. READ1:  OUT  SECT
  49.         IN   DSTAT
  50.         RRC
  51.         MVI  A,1
  52.         JC   RERR
  53.         MVI  A,88H
  54.         JMP  READE
  55. ;
  56. READ:   OUT  SECT
  57.         IN   DSTAT
  58.         RRC
  59.         MVI  A,1
  60.         JC   RERR
  61.         MVI  A,8CH
  62. READE:  OUT  DCOM
  63. RLOOP:  IN   WAIT
  64.         ORA  A
  65.         JP   RDONE
  66.         IN   DDATA
  67.         MOV  M,A
  68.         INX  H
  69.         JMP  RLOOP
  70. ;
  71. RDONE:  IN   DSTAT
  72. RERR:   ANI  9DH
  73.         RET
  74. ;
  75. ;
  76. ERROR:  CMA
  77.         OUT  0FFH
  78.         HLT
  79. ;
  80. ;
  81.         ORG  07DH
  82.         JMP  0
  83.         END
  84.