home *** CD-ROM | disk | FTP | other *** search
-
- ; ===========================================================
- ;INIT.Z80
- ; initialization for E-Prolog
- ; August 1, 1985
-
- .Z80
- FALSE EQU 0
- TRUE EQU 1
- EMPTY EQU -1
- UNDEF EQU -2
-
- DEBUG EQU FALSE
-
- HT EQU 9
- LF EQU 10
- CR EQU 13
- CTLZ EQU 26
-
- CPM EQU 0000H
- BDOS EQU CPM+0005H
- BDBOT EQU CPM+0006H
- CDMA EQU CPM+0080H
- TPA EQU CPM+0100H
-
- CSEG
-
- INIT::
- ; infile = stdin;
- XOR A
- LD (INF##),A
- ; outfile = stdout;
- LD (OUTF##),A
- ; alldb = (PAIR)empty;
- LD HL,EMPTY
- LD (ALLDB##),HL
- ; alldbe = &alldb;
- LD HL,ALLDB##
- LD (ALLDBE##),HL
- ; inptr = strcpy(indma,cdma+1);
- LD HL,CDMA
- LD DE,RDBUFF##+1
- LD (INP##),DE
- LD BC,127
- LDIR
- CALL INIX##
- ; msg(SIGNON);
- LD HL,SIGNON##
- CALL MSG##
- ; stop = settop(0);
- LD HL,0
- CALL SETTOP##
- ; stop = settop((bdosbot-stop)-stacks);
- EX DE,HL
- LD HL,(BDBOT)
- SBC HL,DE
- LD DE,(STACKS##)
- SBC HL,DE
- CALL SETTOP##
- ; if (stop == NULL)
- ; fatal("\nCannot allocate space.");
- LD A,H
- OR L
- JR NZ,INI1
- LD HL,MSG1
- JP FATAL##
- DSEG
- MSG1: DB CR,LF,"Cannot allocate space.",0
- CSEG
- INI1:
- ; stop = sbot+symbs;
- LD HL,(SBOT##)
- LD DE,(SYMBS##)
- ADD HL,DE
- LD (STOP##),HL
- ; htop = bdosbot-stacks;
- LD HL,(BDBOT)
- LD DE,(STACKS##)
- SBC HL,DE
- LD (HTOP##),HL
- ; hfree = hbot;
- LD HL,(STOP##)
- LD (HFREE##),HL
-
- IF DEBUG
- ; msg("code:");
- LD HL,MSG2
- CALL MSG##
- ; prdec(sbot-0x100);
- LD HL,(SBOT##)
- LD DE,100H
- SBC HL,DE
- CALL PRDEC##
- ; msg(" symb:");
- LD HL,MSG3
- CALL MSG##
- ; prdec(stop-sbot);
- LD HL,(STOP##)
- LD DE,(SBOT##)
- SBC HL,DE
- CALL PRDEC##
- ; msg(" heap:");
- LD HL,MSG4
- CALL MSG##
- ; prdec(htop-hbot);
- LD HL,(HTOP##)
- LD DE,(STOP##)
- SBC HL,DE
- CALL PRDEC##
- ; msg(" stack:");
- LD HL,MSG5
- CALL MSG##
- ; prdec(bdosbot-htop);
- LD HL,(BDBOT)
- LD DE,(HTOP##)
- SBC HL,DE
- CALL PRDEC##
- ; chrout('\n');
- CALL CRLF##
-
- DSEG
- MSG2: DB "code:",0
- MSG3: DB " symb:",0
- MSG4: DB " heap:",0
- MSG5: DB " stack:",0
- CSEG
- ENDIF
- RET
- END