Mirror of CollapseOS
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

60 行
1.6KB

  1. 0xff00 CONSTANT RS_ADDR
  2. 0xfffa CONSTANT PS_ADDR
  3. RS_ADDR 0x80 - CONSTANT RAMSTART
  4. 750 LOAD ( 8086 asm )
  5. 262 LOAD ( xcomp )
  6. 270 LOAD ( xcomp overrides )
  7. 812 829 LOADR
  8. 353 LOAD ( xcomp core low )
  9. CODE (emit) 1 chkPS,
  10. AX POPx, AH 0x0e MOVri, ( print char ) 0x10 INT,
  11. ;CODE
  12. CODE (key)
  13. AH AH XORrr, 0x16 INT, AH AH XORrr, AX PUSHx,
  14. ;CODE
  15. CODE 13H08H ( driveno -- cx dx )
  16. DI POPx, DX PUSHx, ( protect ) DX DI MOVxx, AX 0x800 MOVxI,
  17. DI DI XORxx, ES DI MOVsx,
  18. 0x13 INT, DI DX MOVxx, DX POPx, ( unprotect )
  19. CX PUSHx, DI PUSHx,
  20. DI 0x800 MOVxI, ES DI MOVsx,
  21. ;CODE
  22. CODE 13H ( ax bx cx dx -- ax bx cx dx )
  23. SI POPx, ( DX ) CX POPx, BX POPx, AX POPx,
  24. DX PUSHx, ( protect ) DX SI MOVxx, DI DI XORxx,
  25. 0x13 INT, SI DX MOVxx, DX POPx, ( unprotect )
  26. AX PUSHx, BX PUSHx, CX PUSHx, SI PUSHx,
  27. ;CODE
  28. : FDSPT 0x70 RAM+ ;
  29. : FDHEADS 0x71 RAM+ ;
  30. : _ ( dest secno )
  31. ( AH=read sectors, AL=1 sector, BX=dest,
  32. CH=trackno CL=secno DH=head DL=drive )
  33. 0x0201 ROT ROT ( AX BX sec )
  34. FDSPT C@ /MOD ( AX BX sec trk )
  35. FDHEADS C@ /MOD ( AX BX sec head trk )
  36. 8 LSHIFT ROT OR 1+ ( AX BX head CX )
  37. SWAP 8 LSHIFT 0x03 C@ ( boot drive ) OR ( AX BX CX DX )
  38. 13H 2DROP 2DROP
  39. ;
  40. : FD@
  41. 2 * 16 + ( blkfs starts at sector 16 )
  42. BLK( OVER _ BLK( 0x200 + SWAP 1+ _ ;
  43. : FD! DROP ;
  44. : FD$
  45. ( get number of sectors per track with command 08H. )
  46. 0x03 ( boot drive ) C@ 13H08H
  47. 8 RSHIFT 1+ FDHEADS C!
  48. 0x3f AND FDSPT C!
  49. ;
  50. 380 LOAD ( xcomp core high )
  51. (entry) _
  52. ( Update LATEST )
  53. PC ORG @ 8 + !
  54. ," BLK$ FD$ "
  55. ," ' FD@ BLK@* ! "
  56. ," ' FD! BLK!* ! "
  57. EOT,
  58. ORG @ 256 /MOD 2 PC! 2 PC!
  59. H@ 256 /MOD 2 PC! 2 PC!