home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / asmutl / z80mr-a.lbr / PHASE1.AZZ / PHASE1.AZM
Encoding:
Text File  |  1988-04-06  |  1.3 KB  |  58 lines

  1.  
  2. ; PHASE1.AZM - Mike Rubenstein
  3. ;
  4.     ORG    100H
  5. ;
  6. OLD    EQU    0
  7. ;
  8.      IF    OLD
  9. SYSPRT    EQU    1CH        Old Kaypro 2's and fours
  10.      ENDIF            OLD
  11. ;
  12.      IF    NOT.OLD
  13. SYSPRT    EQU    14H        Tens, Kaypro 4-84's, 2-84's
  14.      ENDIF            NOT OLD
  15. ;
  16. OFFSET    EQU    8000H        Offset for calculating high addresses
  17. ;
  18.     LD    DE,HISTRT    Destination of the High memory code
  19.     LD    HL,LODEND+1    Source code is just beyond this loader
  20.     LD    BC,HIEND-HISTRT    Nnumber of bytes to move (end - start)
  21.     LDIR            Move it up there
  22.     JP    HISTRT        Jump to it
  23. LODEND     NOP            To calculate end of loader/start of
  24.                   high memory code segment
  25. ;
  26. HISTRT    EQU    $+OFFSET    Begin using offset
  27. ;
  28.     IN    A,(SYSPRT)    Get present sysport data
  29.     SET    7,A        Bank select bit
  30.     OUT    (SYSPRT),A
  31.     CALL    MOVIT        Move the code routine
  32.     IN    A,(SYSPRT)
  33.     RES    7,A        Back to RAM bank
  34.     OUT    (SYSPRT),A
  35.     CALL    TPAMOV        Now move to 100H for save
  36.     JP    0000H        Back to CP/M
  37. ;
  38. MOVIT    EQU    $+OFFSET
  39. ;
  40.     LD    HL,0        Source is at 0 (in ROM)
  41.     LD    DE,OFFSET+1000H    Load above us
  42.     LD    BC,1000H    Pick up 4K (2732)
  43.     LDIR
  44.     RET
  45. ;
  46. TPAMOV    EQU    $+OFFSET
  47. ;
  48.     LD    HL,OFFSET+1000H    Destination becomes source
  49.     LD    DE,100H        Move to TPA start
  50.     LD    BC,1000H    4K bytes to move
  51.     LDIR
  52.     RET
  53. ;
  54. HIEND    EQU    $+OFFSET
  55. ;
  56.     END
  57. ;
  58.