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 / CPMUG040.ARK / PBOOT.ASM < prev    next >
Assembly Source File  |  1984-04-29  |  2KB  |  121 lines

  1. ;        PASCAL BOOT LOADER
  2. ;
  3. ;                S.J.SINGER (714)-780-8853
  4. ;                GEORGE BOLTHOFF
  5. ;
  6. ;This is a modification of TARBELL'S cold start loader.
  7. ;It loads in the PASCAL bios and PINIT ,the PASCAL init
  8. ;program.
  9. ;   The program runs at 0000h and loads 20 sectors from
  10. ;the disk,starting with sector 2.
  11. ;
  12. ;
  13. FALSE    EQU    00        ;LOGICAL FALSE
  14. TRUE    EQU    NOT FALSE
  15. ;
  16. ;    THESE SWITCHES SET TO FORMAT CODE IN LOCATION 7FH
  17. DBLDEN    EQU    FALSE
  18. SEC512    EQU    FALSE
  19. QUAD    EQU    FALSE
  20. ;
  21. ;
  22. MSIZE    EQU    64        ;MEMORY SIZE IN DECIMAL KB.
  23. DISK    EQU    0F8H        ;BASE ADDR FOR DISK I/O PORTS
  24. DCOM    EQU    DISK
  25. DSTAT   EQU    DISK
  26. TRACK   EQU    DISK+1
  27. SECT    EQU    DISK+2
  28. DDATA   EQU    DISK+3
  29. WAIT    EQU    DISK+4
  30. BIOSSZ    EQU    1536        ;12 SECTORS
  31. PINITSZ    EQU    1024        ;8 SECTORS
  32. LOADP    EQU    MSIZE*1024-BIOSSZ-PINITSZ
  33. NSECTS    EQU    20        ;NUMBER OF SECTORS TO LOAD
  34. ;
  35. ;
  36.     ORG    0
  37. ;
  38. BOOT:   LXI    SP,100H
  39. BOOT1:    LXI    B,2        ;B=TRACK, C=SECTOR
  40.     MVI    D,NSECTS    ;D CONTAINS SECTOR COUNT
  41.     LXI    H,LOADP        ;STARTING LOAD ADDR FOR PROGRAM
  42. RBLK    MOV    A,B
  43.     OUT    DDATA
  44.     MVI    A,13H
  45.     OUT    DCOM        ;SEEK TRACK 0
  46.     IN    WAIT
  47.     ORA    A
  48.     MVI    A,1
  49.     JM    ERROR
  50.     IN    DSTAT
  51.     ANI    91H
  52.     JNZ    ERROR
  53.     MOV    A,C
  54.     CALL    READ
  55. RBLK1:    JNZ    ERROR
  56.     DCR    D
  57. HALT:    JZ    LOADP
  58.     INR    C
  59. RBLK2:    MOV    A,C
  60.     CALL    READ1
  61.     JMP    RBLK1
  62. ;
  63. ;
  64. READ1:    OUT    SECT
  65.     IN    DSTAT
  66.     RRC
  67.     MVI    A,1
  68.     JC    RERR
  69.     MVI    A,88H
  70.     JMP    READE
  71. ;
  72. READ:    OUT    SECT
  73.     IN    DSTAT
  74.     RRC
  75.     MVI    A,1
  76.     JC    RERR
  77.     MVI    A,8CH
  78. READE:    OUT    DCOM
  79. RLOOP:    IN    WAIT
  80.     ORA    A
  81.     JP    RDONE
  82.     IN    DDATA
  83.     MOV    M,A
  84.     INX    H
  85.     JMP    RLOOP
  86. ;
  87. RDONE:    IN    DSTAT
  88. RERR:    ANI    9DH
  89.     RET
  90. ;
  91. ;
  92. ERROR:    CMA
  93.     OUT    0FFH
  94.     HLT
  95. ;
  96. ;
  97.     ORG    7DH
  98.     RST    0
  99. ;
  100.     IF    SEC512
  101.     ORG    7FH
  102.     DB    22H
  103.     ENDIF
  104. ;
  105.     IF    DBLDEN
  106.     ORG    7FH
  107.     DB    12H
  108.     ENDIF
  109. ;
  110.     IF    QUAD
  111.     ORG    7FH
  112.     DB    92H
  113.     ENDIF
  114. ;
  115.     IF    NOT DBLDEN AND NOT SEC512 AND NOT QUAD
  116.     ORG    7FH
  117.     DB    20H
  118.     ENDIF
  119. ;
  120.     END
  121.