MDL 104-106 and Zork executables from Rich Alderson.
[pdp10-muddle.git] / <mdl.int> / pxcore.mid.9
1
2 TITLE .CORE
3
4 RELOCATABLE
5
6 .INSRT MUDDLE >
7
8 .GLOBAL P.CORE,P.TOP,PHIBOT,PURBOT,FRETOP,SQKIL,GCFLG,KILBUF
9
10 ; .CORE AND .SUSET [.RMEMT,,---] FOR PAGED ENVIRONMENT
11
12 P.CORE: PUSH    P,0
13         PUSH    P,A
14         PUSH    P,B
15         PUSH    P,C
16         PUSH    P,D
17         PUSH    P,E
18         SKIPN   GCFLG
19         PUSHJ   P,SQKIL
20         MOVE    A,-4(P)
21         ASH     A,10.           ; CHECK IT
22         CAMLE   A,PURBOT        ; A CAML HERE IS OBSERVED TO LOSE
23         FATAL   BAD ARG TO GET CORE
24         MOVE    A,-4(P)         ; RESTORE A
25         HRRZ    B,P.TOP         ; GET FIRST ADDRESS ABOVE TOP
26         ASH     B,-10.          ; TO BLOCKS
27         CAIG    A,(B)           ; SKIP IF GROWING
28         JRST    P.COR1
29         SUBM    B,A             ; A/ -NUMBER OF BLOCKS TO GET
30         HRLI    B,(A)           ; AOBJN TO BLOCKS
31
32         .CALL   P.CORU          ; TRY
33         JRST    POPBJ           ; LOSE
34         MOVE    A,B
35 P.COR2: ASH     B,10.           ; TO WORDS
36         MOVEM   B,P.TOP         ; NEW TOP
37 POPBJ1: AOS     -6(P)           ; SKIP RETURN ON SUCCESS
38 POPBJ:  POP     P,E
39         POP     P,D
40         POP     P,C
41         POP     P,B
42         POP     P,A
43         POP     P,0
44         POPJ    P,
45
46 ; HERE TO CORE DOWN
47
48 P.COR1: SUBM    A,B
49         JUMPE   B,POPBJ1        ; SUCCESS, YOU ALREADY HAVE WHAT YOU WANT
50         HRLI    A,(B)
51         MOVEI   B,(A)
52         .CALL   P.CORD
53         JRST    POPBJ
54         JRST    P.COR2
55
56 P.CORU: SETZ
57         SIXBIT /CORBLK/
58         1000,,100000
59         1000,,-1
60         B
61         401000,,400001
62
63 P.CORD: SETZ
64         SIXBIT /CORBLK/
65         1000,,0
66         1000,,-1
67         SETZ A
68         
69
70 IMPURE
71
72 P.TOP==FRETOP
73
74 PURE
75         
76 END
77 \f\ 3\f\ 3