home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / turbodos / td-zcpr3.lbr / Z33NIT.MZC / Z33NIT.MAC
Text File  |  1988-12-16  |  2KB  |  111 lines

  1. ;
  2. ;
  3.     .Z80            
  4.     NAME    ('Z33INI')
  5.     cseg
  6. USRIN@::            ;*** insert vector to z3init at warmstart
  7.     LD    A,0C3H
  8.     LD    HL,Z3INIT
  9.     LD    (WARMST##),A
  10.     LD    (WARMST##+01H),HL
  11. ;
  12.     XOR    A        ;*** clear z3flag to force bdos/wboot setup
  13.     LD    (z3flag),A
  14. ;
  15.     LD    A,01H        ;*** install t41 module with 1 function
  16.     LD    HL,usrnam
  17.     RET            
  18. ;
  19. usrnam:    db    'ZCPRINIT'
  20. ;
  21. USRFC@::            ;*** do nothing t41 function
  22.     NOP            
  23.     NOP            
  24.     XOR    A        
  25.     RET            
  26. ;
  27. z3flag:
  28.     db    0
  29. ;
  30. z3init:
  31.     LD    C,0DH        ; reset disk system
  32.     LD    A,0FFH        ; C-Function 13
  33.     CALL    CINTRY##
  34. ;
  35.     LD    C,00H        ; reset operating system
  36.     LD    A,00H        ; T-Function 0
  37.     CALL    CINTRY##
  38. ;
  39.     LD    A,(z3flag)    ;*** get flag
  40.     OR    A        ;*** test
  41.     JP    NZ,z3skip    ;*** is set, skip init code
  42.     DEC    A        ;*** set flag
  43.     LD    (z3flag),A    ;*** store flag
  44. ;
  45.     LD    C,0DH        ; reset disk system
  46.     LD    A,0FFH
  47.     CALL    CINTRY##
  48. ;
  49.     LD    A,0C3H        ; install jumps for wboot & tdos
  50.     LD    (00H),A
  51.     LD    (050H),A
  52. ;
  53.     LD    HL,WBOOTE##    ; install warmboot vector
  54.     LD    (01H),HL
  55. ;
  56.     LD    HL,LTNTRY##    ; install turbodos vector
  57.     LD    (051H),HL
  58. ;
  59.     LD    E,0FFH        ; get current user
  60.     LD    C,020H
  61.     CALL    OCNTRY##
  62. ;
  63.     ADD    A,A        
  64.     ADD    A,A        
  65.     ADD    A,A        
  66.     ADD    A,A        
  67. ;
  68.     PUSH    AF        
  69. ;
  70.     LD    C,019H        ; get current drive
  71.     CALL    OCNTRY##
  72.     LD    C,A        
  73. ;
  74.     POP    AF        
  75. ;
  76.     OR    C        
  77.     LD    (04H),A        ; store drive/user byte in base page
  78. ;
  79.     LD    C,00H
  80.     CALL    OTNTRY##    ; reset operating system
  81. ;
  82.     LD    HL,(MEMBAS##)    ; compute lowest address of os
  83.     LD    DE,(MEMRES##)
  84.     OR    A        
  85.     SBC    HL,DE
  86. ;
  87.     LD    DE,LCNTRY##    ; get pointer to bdos entry point
  88. ;
  89.     LD    A,0C3H        ; install jump to bdos below operating system
  90.     DEC    HL        
  91.     LD    (HL),D        
  92.     DEC    HL        
  93.     LD    (HL),E        
  94.     DEC    HL        
  95.     LD    (HL),A        
  96. ;
  97.     LD    (06H),HL    ; install jump to system base in bdos vector
  98.     LD    (05H),A
  99. ;
  100.     LD    SP,HL        ; set stack pointer to top op tpa
  101. ;
  102.     LD    HL,00H        ; push a zero so that returns will warmboot
  103.     PUSH    HL        
  104. z3skip:
  105.     LD    A,(04H)        ; get drive/user byte from base page
  106.     LD    C,A        
  107.     JP    z3ntry##    ; jump into ZCPR now..........
  108. ;
  109.     END    
  110.  
  111.