|
|
DataMuseum.dkPresents historical artifacts from the history of: CR80 Hard and Floppy Disks |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CR80 Hard and Floppy Disks Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 7586 (0x1da2)
Types: TextFile
Names: »HELP.S«
└─⟦f81e11cf7⟧ Bits:30005196 8" CR80 Floppy CR80FD_0194 ( CR/D/2497 TEST-TDX VS0102 Source moduler Att. Holger Bay 820208/AEK )
└─⟦d066df9e9⟧
└─⟦this⟧ »HELP.S«
«ff»
"HELP.S "
"----------------"
FUNCTION GET_PARAM_INDEX(PARAMNAME : NAME_TYPE) : INTEGER;
"**********************************************************************
AUTHOR: TLM
DATE: 810317
***********************************************************************
COMMENTS:
***********************************************************************
CHANGE RECORD:
VERSION AUTHOR/DATE DESCRIPTION OF CHANGE
------- ----------- ---------------------
**********************************************************************"
VAR I : INTEGER;
FOUND : BOOLEAN;
BEGIN
I := 0;
FOUND := FALSE;
IF PARAMETERCOUNT >= 1 THEN
REPEAT
I := SUCC(I);
IF PARAMNAME = FORM_PARAMS[I].NAME THEN
BEGIN
FOUND := TRUE;
GET_PARAM_INDEX := I;
END;
UNTIL FOUND OR (I = PARAMETERCOUNT);
IF NOT FOUND THEN GET_PARAM_INDEX := -1;
END; " GET_PARAM_INDEX "
«ff»
FUNCTION GET_PROCEDURE_ADR(PROCNAME : NAME_TYPE) : INTEGER;
"**********************************************************************
AUTHOR: TLM
DATE: 810317
***********************************************************************
COMMENTS:
***********************************************************************
CHANGE RECORD:
VERSION AUTHOR/DATE DESCRIPTION OF CHANGE
------- ----------- ---------------------
**********************************************************************"
VAR I : INTEGER;
FOUND : BOOLEAN;
BEGIN
I := 0;
FOUND := FALSE;
IF PROCEDURECOUNT >= 1 THEN
REPEAT
I := SUCC(I);
IF PROCNAME = PROCEDURES[I].NAME THEN
BEGIN
GET_PROCEDURE_ADR := PROCEDURES[I].CODE_ADR;
FOUND := TRUE;
END;
UNTIL FOUND OR (I = PROCEDURECOUNT);
IF NOT FOUND THEN GET_PROCEDURE_ADR := -1;
END; " GET_PROCEDURE_ADR "
«ff»
FUNCTION GET_PARAMETER_COUNT(PROCNAME : NAME_TYPE) : INTEGER;
"**********************************************************************
AUTHOR: TLM
DATE: 810402
***********************************************************************
COMMENTS:
***********************************************************************
CHANGE RECORD:
VERSION AUTHOR/DATE DESCRIPTION OF CHANGE
------- ----------- ---------------------
**********************************************************************"
VAR I : INTEGER;
FOUND : BOOLEAN;
BEGIN
I := 0;
FOUND := FALSE;
IF PROCEDURECOUNT >= 1 THEN
REPEAT
I := SUCC(I);
IF PROCNAME = PROCEDURES[I].NAME THEN
BEGIN
GET_PARAMETER_COUNT := PROCEDURES[I].NO_OF_PARAMS;
FOUND := TRUE;
END;
UNTIL FOUND OR (I = PROCEDURECOUNT);
IF NOT FOUND THEN GET_PARAMETER_COUNT := -1;
END; " GET_PARAMETER_COUNT "
«ff»
PROCEDURE GET_FD(CRID : INTEGER; VAR F : FILE);
"**********************************************************************
AUTHOR: TLM
DATE: 810319
***********************************************************************
COMMENTS:
***********************************************************************
CHANGE RECORD:
VERSION AUTHOR/DATE DESCRIPTION OF CHANGE
------- ----------- ---------------------
**********************************************************************"
VAR I : INTEGER;
FOUND : BOOLEAN;
BEGIN
I := 0;
FOUND := FALSE;
F := -1;
REPEAT
I := SUCC(I);
IF CHANNELS[I].OPEN THEN
IF CHANNELS[I].CRID = CRID THEN
BEGIN
FOUND := TRUE;
F := CHANNELS[I].F;
END;
UNTIL FOUND OR (I >= MAX_CHANNEL);
END; " GET_FD "
«ff»
PROCEDURE GET_PARAMETER(VM, PARAMNO, PC, SP : INTEGER; VAR P : INTEGER);
"**********************************************************************
AUTHOR: TLM
DATE: 810319
***********************************************************************
COMMENTS:
This procedure decides whether the parameter is a variable or
a constant.
If it is a variable, it is fetched from the runtime stack,
otherwise it is fetched from the code (relative to current pc)
Parameter description:
VM : variable mask showing if constant or variable
PARAMNO : parameter index in code
PC : current program counter
SP : current runtime stack pointer
P : parameter value (return)
***********************************************************************
CHANGE RECORD:
VERSION AUTHOR/DATE DESCRIPTION OF CHANGE
------- ----------- ---------------------
**********************************************************************"
BEGIN
IF TESTBIT(VM, PARAMNO) THEN
P := STACK[SP + CODE[PC + XPARAMS + PARAMNO] ]
ELSE
P := CODE[PC + XPARAMS + PARAMNO];
END; " GET_PARAMETER "
«ff»
PROCEDURE PERFORM_DUMP(BUFFERNO, PATTERNNO,
STARTADDR, ENDADDR : INTEGER);
"**********************************************************************
AUTHOR: TLM
DATE: 810423
***********************************************************************
COMMENTS:
**********************************************************************"
VAR I, J, W : INTEGER;
START : INTEGER;
BEGIN
CLEARBREAKS;
START := STARTADDR;
IF PATTERNNO = 0 THEN
BEGIN
IF ((BUFFERNO >= 1) AND (BUFFERNO <= MAX_BUFFERS))
AND
((START >= 0) AND (START <= MAX_BUFFER_SIZE))
THEN
BEGIN
START := START - (START MOD 16);
REPEAT
WRITENL;
WRITEHEX(START);
WRITEBYTE('L');
I := 0;
J := 0;
REPEAT
IF ((START + I) <= MAX_BUFFER_SIZE) AND
((START + I) < ENDADDR) THEN
BEGIN
WRITEBYTE(' ');
WRITEHEX(BUFFERS[BUFFERNO].BUFFER[START + I]);
J := SUCC(J);
END;
I := SUCC(I);
UNTIL I = 8;
IF J < 8 THEN
FOR W := J TO 7 DO WRITETEXT(' (:0:)');
I := 0;
REPEAT
IF ((START + I) <= MAX_BUFFER_SIZE) AND
((START + I) < ENDADDR) THEN
BEGIN
IF I = 0 THEN WRITETEXT(' (:0:)');
FOR J := 1 TO 2 DO
BEGIN
W := BUFFERS[BUFFERNO].BUFFER[START + I];
CASE J OF
1 : W := IAND(W, #00FF);
2 : W := RIGHTSHIFT(W, 8)
END;
IF (W >= 32) AND (W < 127) THEN WRITEBYTE(CHR(W))
ELSE WRITEBYTE('.');
END;
END;
I := SUCC(I);
UNTIL I = 8;
START := START + I;
UNTIL BREAKED OR (START >= MAX_BUFFER_SIZE)
OR (START >= ENDADDR);
WRITENL;
END
END
ELSE
IF (PATTERNNO >= 1) AND (PATTERNNO <= MAX_PATTERNS) THEN
BEGIN
FOR I := 0 TO MAX_PATTERN_SIZE - 1 DO
BEGIN
IF (I MOD 8) = 0 THEN
BEGIN
WRITENL;
WRITEHEX(I);
WRITEBYTE('L');
END;
WRITEBYTE(' ');
WRITEHEX(PATTERNS[PATTERNNO].PATTERN[I + 1]);
END;
WRITENL;
END;
END; " PERFORM_DUMP "