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 / CPM / LANGUAGS / XLISP / XLISP11.ARK / ALLOC.ASM next >
Assembly Source File  |  1986-10-12  |  6KB  |  577 lines

  1.     DSEG
  2. .2:
  3.     DS 4
  4.     CSEG
  5.     DSEG
  6. .3:
  7.     DW 0
  8.     CSEG
  9.     PUBLIC alloc_
  10. alloc_:    CALL .sav##
  11.     DW .4
  12.     LXI H,8-.4
  13.     DAD SP
  14.     MOV E,M
  15.     INX H
  16.     MOV D,M
  17.     XCHG
  18.     INX H
  19.     INX H
  20.     INX H
  21.     LXI D,2
  22.     XCHG
  23.     CALL .ur##
  24.     INX H
  25.     XCHG
  26.     LXI H,0-.4
  27.     DAD SP
  28.     MOV M,E
  29.     INX H
  30.     MOV M,D
  31.     LHLD .3
  32.     XCHG
  33.     LXI H,2-.4
  34.     DAD SP
  35.     MOV M,E
  36.     INX H
  37.     MOV M,D
  38.     MOV A,D
  39.     ORA E
  40.     JNZ .5
  41.     LXI H,.2
  42.     XCHG
  43.     LXI H,2-.4
  44.     DAD SP
  45.     MOV M,E
  46.     INX H
  47.     MOV M,D
  48.     XCHG
  49.     SHLD .3
  50.     SHLD .2
  51.     LXI H,1
  52.     SHLD .2+2
  53. .5:
  54.     LXI H,2-.4
  55.     DAD SP
  56.     MOV E,M
  57.     INX H
  58.     MOV D,M
  59.     XCHG
  60.     MOV E,M
  61.     INX H
  62.     MOV D,M
  63.     MOV B,D
  64.     MOV C,E
  65.     JMP .7
  66. .6:
  67.     MOV H,B
  68.     MOV L,C
  69.     XCHG
  70.     LXI H,2-.4
  71.     DAD SP
  72.     MOV M,E
  73.     INX H
  74.     MOV M,D
  75.     mov h,b
  76.     mov l,c
  77.     MOV E,M
  78.     INX H
  79.     MOV D,M
  80.     MOV B,D
  81.     MOV C,E
  82. .7:
  83.     LXI H,2
  84.     DAD B
  85.     MOV E,M
  86.     INX H
  87.     MOV D,M
  88.     LXI H,0-.4
  89.     DAD SP
  90.     MOV A,M
  91.     INX H
  92.     MOV H,M
  93.     MOV L,A
  94.     CALL .uf##
  95.     JZ .9
  96.     LXI H,2
  97.     DAD B
  98.     MOV E,M
  99.     INX H
  100.     MOV D,M
  101.     LXI H,0-.4
  102.     DAD SP
  103.     MOV A,M
  104.     INX H
  105.     MOV H,M
  106.     MOV L,A
  107.     CALL .eq##
  108.     JZ .10
  109.     mov h,b
  110.     mov l,c
  111.     MOV E,M
  112.     INX H
  113.     MOV D,M
  114.     PUSH D
  115.     LXI H,4-.4
  116.     DAD SP
  117.     MOV E,M
  118.     INX H
  119.     MOV D,M
  120.     XCHG
  121.     POP D
  122.     MOV M,E
  123.     INX H
  124.     MOV M,D
  125.     JMP .11
  126. .10:
  127.     LXI H,0-.4
  128.     DAD SP
  129.     MOV E,M
  130.     INX H
  131.     MOV D,M
  132.     PUSH D
  133.     MOV H,B
  134.     MOV L,C
  135.     INX H
  136.     INX H
  137.     POP D
  138.     PUSH H
  139.     MOV A,M
  140.     INX H
  141.     MOV H,M
  142.     MOV L,A
  143.     XCHG
  144.     CALL .sb##
  145.     XCHG
  146.     POP H
  147.     MOV M,E
  148.     INX H
  149.     MOV M,D
  150.     LXI H,2
  151.     DAD B
  152.     MOV E,M
  153.     INX H
  154.     MOV D,M
  155.     XCHG
  156.     DAD H
  157.     DAD H
  158.     MOV D,B
  159.     MOV E,C
  160.     DAD D
  161.     MOV B,H
  162.     MOV C,L
  163.     LXI H,0-.4
  164.     DAD SP
  165.     MOV E,M
  166.     INX H
  167.     MOV D,M
  168.     LXI H,2
  169.     DAD B
  170.     MOV M,E
  171.     INX H
  172.     MOV M,D
  173. .11:
  174.     LXI H,2-.4
  175.     DAD SP
  176.     MOV E,M
  177.     INX H
  178.     MOV D,M
  179.     XCHG
  180.     SHLD .3
  181.     MOV H,B
  182.     MOV L,C
  183.     LXI D,4
  184.     DAD D
  185.     RET
  186. .9:
  187.     MOV H,B
  188.     MOV L,C
  189.     XCHG
  190.     LHLD .3
  191.     CALL .eq##
  192.     JZ .12
  193.     LXI H,0-.4
  194.     DAD SP
  195.     MOV E,M
  196.     INX H
  197.     MOV D,M
  198.     PUSH D
  199.     FUNC    morecore_
  200.     CALL morecore_
  201.     POP D
  202.     MOV B,H
  203.     MOV C,L
  204.     MOV A,H
  205.     ORA L
  206.     JNZ .13
  207.     LXI H,0
  208.     RET
  209. .13:
  210. .12:
  211.     JMP .6
  212. .8:
  213.     RET
  214. .4 EQU -4
  215.     PUBLIC morecore_
  216. morecore_:    CALL .sav##
  217.     DW .14
  218.     LXI H,8-.14
  219.     DAD SP
  220.     MOV E,M
  221.     INX H
  222.     MOV D,M
  223.     XCHG
  224.     DAD H
  225.     DAD H
  226.     PUSH H
  227.     FUNC    xsbrk_
  228.     CALL xsbrk_
  229.     POP D
  230.     MOV B,H
  231.     MOV C,L
  232.     LXI D,-1
  233.     CALL .eq##
  234.     JZ .15
  235.     LXI H,0
  236.     RET
  237. .15:
  238.     MOV H,B
  239.     MOV L,C
  240.     XCHG
  241.     LXI H,2-.14
  242.     DAD SP
  243.     MOV M,E
  244.     INX H
  245.     MOV M,D
  246.     LXI H,8-.14
  247.     DAD SP
  248.     MOV E,M
  249.     INX H
  250.     MOV D,M
  251.     PUSH D
  252.     LXI H,4-.14
  253.     DAD SP
  254.     MOV E,M
  255.     INX H
  256.     MOV D,M
  257.     XCHG
  258.     INX H
  259.     INX H
  260.     POP D
  261.     MOV M,E
  262.     INX H
  263.     MOV M,D
  264.     LXI H,2-.14
  265.     DAD SP
  266.     MOV E,M
  267.     INX H
  268.     MOV D,M
  269.     LXI H,4
  270.     DAD D
  271.     PUSH H
  272.     FUNC    free_
  273.     CALL free_
  274.     POP D
  275.     LHLD .3
  276.     RET
  277. .14 EQU -2
  278.     PUBLIC free_
  279. free_:    CALL .sav##
  280.     DW .16
  281.     LXI H,8-.16
  282.     DAD SP
  283.     MOV E,M
  284.     INX H
  285.     MOV D,M
  286.     LXI H,-16
  287.     DAD D
  288.     MOV B,H
  289.     MOV C,L
  290.     LHLD .3
  291.     XCHG
  292.     LXI H,2-.16
  293.     DAD SP
  294.     MOV M,E
  295.     INX H
  296.     MOV M,D
  297.     JMP .18
  298. .17:
  299.     LXI H,2-.16
  300.     DAD SP
  301.     MOV E,M
  302.     INX H
  303.     MOV D,M
  304.     XCHG
  305.     MOV E,M
  306.     INX H
  307.     MOV D,M
  308.     LXI H,2-.16
  309.     DAD SP
  310.     MOV M,E
  311.     INX H
  312.     MOV M,D
  313. .18:
  314.     MOV H,B
  315.     MOV L,C
  316.     XCHG
  317.     LXI H,2-.16
  318.     DAD SP
  319.     MOV A,M
  320.     INX H
  321.     MOV H,M
  322.     MOV L,A
  323.     CALL .ug##
  324.     JZ .20
  325.     LXI H,2-.16
  326.     DAD SP
  327.     MOV E,M
  328.     INX H
  329.     MOV D,M
  330.     XCHG
  331.     MOV E,M
  332.     INX H
  333.     MOV D,M
  334.     PUSH D
  335.     MOV H,B
  336.     MOV L,C
  337.     POP D
  338.     XCHG
  339.     CALL .ul##
  340.     JNZ .19
  341. .20:
  342.     LXI H,2-.16
  343.     DAD SP
  344.     MOV E,M
  345.     INX H
  346.     MOV D,M
  347.     XCHG
  348.     MOV E,M
  349.     INX H
  350.     MOV D,M
  351.     PUSH D
  352.     LXI H,4-.16
  353.     DAD SP
  354.     MOV E,M
  355.     INX H
  356.     MOV D,M
  357.     POP H
  358.     CALL .uf##
  359.     JZ .21
  360.     MOV H,B
  361.     MOV L,C
  362.     XCHG
  363.     LXI H,2-.16
  364.     DAD SP
  365.     MOV A,M
  366.     INX H
  367.     MOV H,M
  368.     MOV L,A
  369.     CALL .ug##
  370.     JNZ .19
  371.     LXI H,2-.16
  372.     DAD SP
  373.     MOV E,M
  374.     INX H
  375.     MOV D,M
  376.     XCHG
  377.     MOV E,M
  378.     INX H
  379.     MOV D,M
  380.     PUSH D
  381.     MOV H,B
  382.     MOV L,C
  383.     POP D
  384.     XCHG
  385.     CALL .ul##
  386.     JNZ .19
  387. .21:
  388.     JMP .17
  389. .19:
  390.     LXI H,2-.16
  391.     DAD SP
  392.     MOV E,M
  393.     INX H
  394.     MOV D,M
  395.     XCHG
  396.     MOV E,M
  397.     INX H
  398.     MOV D,M
  399.     PUSH D
  400.     LXI H,2
  401.     DAD B
  402.     MOV E,M
  403.     INX H
  404.     MOV D,M
  405.     XCHG
  406.     DAD H
  407.     DAD H
  408.     MOV D,B
  409.     MOV E,C
  410.     DAD D
  411.     POP D
  412.     CALL .eq##
  413.     JZ .22
  414.     LXI H,2-.16
  415.     DAD SP
  416.     MOV E,M
  417.     INX H
  418.     MOV D,M
  419.     XCHG
  420.     MOV E,M
  421.     INX H
  422.     MOV D,M
  423.     XCHG
  424.     INX H
  425.     INX H
  426.     MOV E,M
  427.     INX H
  428.     MOV D,M
  429.     PUSH D
  430.     MOV H,B
  431.     MOV L,C
  432.     INX H
  433.     INX H
  434.     POP D
  435.     PUSH H
  436.     MOV A,M
  437.     INX H
  438.     MOV H,M
  439.     MOV L,A
  440.     DAD D
  441.     XCHG
  442.     POP H
  443.     MOV M,E
  444.     INX H
  445.     MOV M,D
  446.     LXI H,2-.16
  447.     DAD SP
  448.     MOV E,M
  449.     INX H
  450.     MOV D,M
  451.     XCHG
  452.     MOV E,M
  453.     INX H
  454.     MOV D,M
  455.     XCHG
  456.     MOV E,M
  457.     INX H
  458.     MOV D,M
  459.     mov h,b
  460.     mov l,c
  461.     MOV M,E
  462.     INX H
  463.     MOV M,D
  464.     JMP .23
  465. .22:
  466.     LXI H,2-.16
  467.     DAD SP
  468.     MOV E,M
  469.     INX H
  470.     MOV D,M
  471.     XCHG
  472.     MOV E,M
  473.     INX H
  474.     MOV D,M
  475.     mov h,b
  476.     mov l,c
  477.     MOV M,E
  478.     INX H
  479.     MOV M,D
  480. .23:
  481.     LXI H,2-.16
  482.     DAD SP
  483.     MOV E,M
  484.     INX H
  485.     MOV D,M
  486.     XCHG
  487.     INX H
  488.     INX H
  489.     MOV E,M
  490.     INX H
  491.     MOV D,M
  492.     XCHG
  493.     DAD H
  494.     DAD H
  495.     XCHG
  496.     LXI H,2-.16
  497.     DAD SP
  498.     MOV A,M
  499.     INX H
  500.     MOV H,M
  501.     MOV L,A
  502.     DAD D
  503.     MOV D,B
  504.     MOV E,C
  505.     CALL .eq##
  506.     JZ .24
  507.     LXI H,2
  508.     DAD B
  509.     MOV E,M
  510.     INX H
  511.     MOV D,M
  512.     PUSH D
  513.     LXI H,4-.16
  514.     DAD SP
  515.     MOV E,M
  516.     INX H
  517.     MOV D,M
  518.     XCHG
  519.     INX H
  520.     INX H
  521.     POP D
  522.     PUSH H
  523.     MOV A,M
  524.     INX H
  525.     MOV H,M
  526.     MOV L,A
  527.     DAD D
  528.     XCHG
  529.     POP H
  530.     MOV M,E
  531.     INX H
  532.     MOV M,D
  533.     mov h,b
  534.     mov l,c
  535.     MOV E,M
  536.     INX H
  537.     MOV D,M
  538.     PUSH D
  539.     LXI H,4-.16
  540.     DAD SP
  541.     MOV E,M
  542.     INX H
  543.     MOV D,M
  544.     XCHG
  545.     POP D
  546.     MOV M,E
  547.     INX H
  548.     MOV M,D
  549.     JMP .25
  550. .24:
  551.     MOV H,B
  552.     MOV L,C
  553.     PUSH H
  554.     LXI H,4-.16
  555.     DAD SP
  556.     MOV E,M
  557.     INX H
  558.     MOV D,M
  559.     XCHG
  560.     POP D
  561.     MOV M,E
  562.     INX H
  563.     MOV M,D
  564. .25:
  565.     LXI H,2-.16
  566.     DAD SP
  567.     MOV E,M
  568.     INX H
  569.     MOV D,M
  570.     XCHG
  571.     SHLD .3
  572.     RET
  573. .16 EQU -2
  574.     COMMON /.lnprm/
  575.     DS 4
  576.     END
  577.