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 / CPMUG001.ARK / VBOOT31.ASM < prev    next >
Assembly Source File  |  1984-04-29  |  2KB  |  136 lines

  1. ;*********************************;
  2. ;      BOOTSTRAP LOADER        ;
  3. ;      MODIFIED  03/24/77         ;
  4. ;       BY JEFF KRAVITZ           ;
  5. ;*********************************;
  6.  
  7.     ORG    00H
  8. ;
  9. ;
  10. ;LOAD THE MONITOR AT 2900 PLUS CBASE
  11. MSIZE    EQU    31    ;MEMORY SIZE IN KBYTES
  12. CBASE    EQU    (MSIZE-16)*1024
  13.  
  14. LOADP    EQU    2900H+CBASE    ;LOAD POINT
  15. BCP    EQU    3E00H+CBASE    ;MONITOR
  16. LAST    EQU    26    ;LAST SECTOR ON TRK1 TO LOAD
  17. SKIP    EQU    1    ;NUMBER OF SECTORS TO SKIP
  18. ;
  19. DMAH    EQU    126    ;HIGH ORDER DMA ADDR
  20. DMAL    EQU    125    ;LOW ORDER DMA ADDR
  21. REBOOT    EQU    125    ;REBOOT SYSTEM ON ERROR
  22. INIT0    EQU    (0 SHL 7) OR SKIP+1    ;TRK/SEC INITIALLY
  23. END0    EQU    (0 SHL 7) OR 27    ;END OF FIRST TRK
  24. INIT1    EQU    (1 SHL 7) OR 1    ;TRK/SEC INIT FOR TRK 1
  25. END1    EQU    (1 SHL 7) OR LAST+1    ;LAST POSITION ON TRK 1
  26. ;
  27. T76    EQU    04H    ;TOWARD 76
  28. STT    EQU    02H    ;STEP TRACK
  29. SRF    EQU    02H    ;STEP READY FLAG
  30. DOUT    EQU    7FH    ;DISK OUTPUT PORT
  31. DINP    EQU    7FH    ;DISK INPUT PORT
  32. RDS    EQU    40H    ;READ SECTOR
  33. ERR    EQU    0F0H    ;ERROR CONDITIONS
  34. IOF    EQU    08H    ;IO FINISH 
  35. ;
  36. ;
  37.     NOP        ;SOME DYNAMIC MEMORIES PROHIBIT USE OF
  38.             ;THIS BYTE IN THE BOOTSTRAP
  39. ;    INITIALIZE TRK/SEC AND DMA ADDRESS
  40. START:
  41.     MVI    E,INIT0
  42.     LXI    H,LOADP-3
  43. ;
  44. READL:    ;READ LOOP
  45. ;    SEND DMA ADDRESS
  46.     MOV    A,H
  47.     OUT    DMAH
  48.     MOV    A,L
  49.     OUT    DMAL
  50. ;
  51. ;    GET DATA FROM MEMORY
  52.     MOV    B,M
  53.     INX    H
  54.     MOV    C,M
  55.     INX    H
  56.     MOV    D,M
  57. ;
  58. ;    SET UP TRACK AND SECTOR
  59.     DCX    H
  60.     MOV    A,E
  61.     ANI    11111B    ;SECTOR NUMBER
  62.     MOV    M,A
  63.     ;
  64.     DCX    H
  65.     MOV    A,E
  66.     RAL
  67.     RAL
  68.     ANI    1
  69.     MOV    M,A    ;TRACK NUMBER
  70. ;
  71. ;    PERFORM THE READ
  72.     MVI    A,RDS
  73.     OUT    DOUT
  74. ;
  75. WRD:    IN    DINP
  76.     ANI    ERR
  77.     JZ    NERROR
  78. ;
  79. ;    ERROR, REBOOT
  80.     IN    125    ;REBOOT ON ERROR
  81.     HLT
  82. NERROR:    ;NO ERROR SO FAR
  83.     IN    DINP
  84.     ANI    IOF
  85.     JZ    WRD    ;GO BACK AND WAIT
  86. ;
  87. ;    I/O FINISH, INCREMENT EVERYTHING.
  88. ;    REPLACE DATA BYTES
  89.     MOV    M,B
  90.     INX    H
  91.     MOV    M,C
  92.     INX    H
  93.     MOV    M,D    ;BYTES REPLACED
  94. ;
  95. ;    ADD 126 TO DMA ADDRESS
  96.     LXI    B,126
  97.     DAD    B
  98. ;    INC TRACK/SECTOR
  99.     MOV    A,E
  100.     INR    A
  101.     CPI    END0    ;END OF TRACK 0?
  102.     JNZ    CMP1
  103. ;
  104. ;    STEP TRACK TO TRACK 1
  105.     MVI    A,T76
  106.     OUT    DOUT
  107.     ORI    STT
  108.     OUT    DOUT
  109.     MVI    A,T76
  110.     OUT    DOUT
  111. ;
  112. WST:    ;WAIT FOR STEP AND HEAD SETTLE (18 MSEC)
  113.     MVI    A,18D
  114. WST0:
  115.     MVI    C,82H    ;ONE MILLISEAOND TIMING FOR OUR IMSAI
  116.             ;CAN BE ADJUSTED FOR DIFFERENT MACHINES
  117. WST2:
  118.     DCR    C
  119.     JNZ    WST2
  120.     DCR    A
  121.     JNZ    WST0
  122. ;
  123. ;        TRACK STEPPED
  124.     MVI    A,INIT1
  125. CMP1:    CPI    END1    ;END OF TRACK 1?
  126.     MOV    E,A    ;RESTORE TRK/SEC
  127.     JNZ    READL    ;GO BACK FOR MORE
  128. ;
  129. ;    END OF LOAD
  130. ;SET LOC 4 TO CONTAIN ACTIVE DRIVE=0
  131.     XRA    A
  132.     STA    04H
  133.  
  134.     JMP    BCP
  135.     END
  136.