DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦1a6f30d92⟧ TextFile

    Length: 28032 (0x6d80)
    Types: TextFile
    Names: »HELP.MAC«

Derivation

└─⟦01b5c9619⟧ Bits:30005906 Microsoft Multiplan v1.05 og HELP
    └─ ⟦this⟧ »HELP.MAC« 

TextFile

	title	CP/M Help data module

	aseg
	.z80 

	ORG	00100H
lf	equ	0ah		;line feed
cr	equ	0dh		;carriage return
bdos	equ	5		;CP/M entry
tab	equ	9		;tabulate
esc	equ	1bh		;escape
cls	equ	esc-1		;clear screen
cur_li	equ	'='		;cursor lead in

buffer	equ	80h

;************************************************
;						*
;	Initialize of program			*
;						*
;************************************************

	CALL	cmd2		;Check for 2. cmd.
	JP	NZ,A0126	;skip if cmd.
warmst:	XOR	A		;clear a
A010D:	ld	sp,100h
	PUSH	AF		;save status
	CALL	scinit		;print sign on
	POP	AF
	OR	A
	CALL	NZ,p_nlok	;error: no look-up word
	CALL	getcmd		;get a command number
	ADD	A,A		;command * 2
	LD	E,A		;move it into DE
	LD	D,0
	LD	HL,cmdtab	;start of command index table
	ADD	HL,DE		;calculate address of routine
	LD	E,(HL)		;get address of routine into DE
	INC	HL
	LD	D,(HL)
	EX	DE,HL		;Move it to HL
	JP	(HL)		;Execute it !
;
;************************************************
;						*
;						*
;						*
;************************************************


A0126:	CALL	lookui		;try to look it up internal
	PUSH	HL
	CALL	rdinxf		;open and read index file
	POP	HL
	CALL	A024E		;find word in index file
	LD	A,1		;set error flag
	JP	NZ,A010D	;error: no look-up word
	LD	(stinxw),HL	;save start of index word
	CALL	A0262		;open data file
	LD	HL,(stinxw)	;get start of index word
	LD	DE,17		;offset for sector in index word
	ADD	HL,DE		;add it
	LD	E,(HL)		;DE = sector address
	INC	HL
	LD	D,(HL)
	INC	HL
	LD	A,(HL)		;get offset from sector start
	LD	(offpnt),A
	DEC	DE		;sector address -1
	LD	(fchman+33),DE
	CALL	A03BC		;read 512 bytes  (4 sectors)
	LD	DE,(offpnt)	;E = offset from sector start
	LD	D,0
	LD	HL,(datpnt)	;address of data buffer (start)
	ADD	HL,DE		;include offset
	LD	(datpnt),HL	;store in pointer
	LD	HL,(rdleng)	;lenght of read
	AND	A
	SBC	HL,DE		;subtract offset
	LD	(rdleng),HL	;save lenght of help word
	CALL	clrhom		;clear screen
	CALL	A0283		;
	LD	HL,txname	;'NAME'
	CALL	ptxt
	CALL	A03F1		;print message
	LD	HL,txsynt	;'SYNTAX'
	CALL	ptxt
	CALL	A03F1		;print message
	LD	HL,txdesc	;'DESCRIPTION'
	CALL	ptxt
	CALL	A03F1		;print message
	LD	HL,txexam	;'EXAMPLE'
	CALL	ptxt
	CALL	A03F1		;print data
	LD	HL,txeror	;'ERROR MESSAGES'
	CALL	ptxt
	CALL	A03F1		;print message
	LD	HL,txextr	;'EXTERNAL REF:'
	CALL	ptxt
	CALL	A03F5		;print message
	JP	warmst		;goto main menu

lookui:	POP	IX		;get return address
	LD	DE,ikntx1	;ikon text 1
	CALL	A01D0		;compare
	JP	Z,ikon		;ikon menu
	LD	DE,ikntx2	;ikon  text 2
	CALL	A01D0		;compare
	JP	Z,ikon		;ikon menu
	LD	DE,martx1	;markør text 1
	CALL	A01D0		;compare
	JP	Z,markor	;markør menu
	LD	DE,komtx1	;komando text 1
	CALL	A01D0		;compare
	JP	Z,comand	;komando menu
	JP	(IX)		;return

;************************************************
;						*
;	compare 2 strings			*
;						*
;	entry:	DE = reference			*
;		HL = data			*
;	exit:	z = they match			*
;		nz = different			*
;************************************************

A01D0:	PUSH	HL		;save entered entry start
	PUSH	DE		;save ref. start
A01D2:	LD	A,(DE)		;get character
	CP	(HL)		;the same ?
	JR	NZ,A01DD	;no => skip
	OR	A		;zero ?
	JR	Z,A01DD		;yes => skip (END)
	INC	DE		;point to next
	INC	HL
	JR	A01D2		;repeat

A01DD:	POP	DE		;restore start of strings
	POP	HL
	RET

;************************************************
;						*
;	Open and read index file		*
;						*
;************************************************

rdinxf:	LD	A,(inxfl1)	;index file read flag
	OR	A		;something allread read ?
	RET	NZ		;yes => skip
	LD	DE,FCHNDX	;file control block for index file
	CALL	opfile
	JR	Z,rderr		;error => skip
	LD	DE,inxwsp	;index file wsp
	LD	B,16		;read 16 sectors
rdinx1:	PUSH	BC
	PUSH	DE
	LD	C,26		;set dma address
	CALL	bdos
	LD	DE,fchndx	;index file control block
	LD	C,20		;read next record
	CALL	bdos
	POP	DE
	POP	BC
	OR	A		;error ?
	JR	NZ,rdinx2	;yes => skip
	LD	HL,128		;sector lenght
	ADD	HL,DE
	EX	DE,HL
	DJNZ	rdinx1		;repeat until done
	LD	A,0
	LD	(inxend),A	;set end of index
rdinx2:	LD	A,1		;set read index flag
	LD	(inxfl1),A
	RET

;************************************************
;						*
;	read / open error			*
;						*
;************************************************

rderr:	LD	hl,lin24
	call	ptxt
	ld	hl,ndxnf	;index file not found
A0221:	call	ptxt
	CALL	getchr
	JP	A04B6

;************************************************
;						*
;	Open file  FCB address in DE		*
;						*
;************************************************

opfile:	PUSH	DE		;try to open it on default drive
	LD	C,15		;open file command
	CALL	bdos
	POP	DE		;restore FCB
	INC	A		;error ?
	RET	NZ		;no => skip
	PUSH	DE		;save FCB
	LD	A,1		;try drive A:
	LD	(DE),A
	LD	C,15		;open file command
	CALL	bdos
	POP	DE		;restore FCB
	INC	A		;error ?
	RET	NZ		;no => skip
	PUSH	DE		;save FCB
	LD	E,0		;set user to  0
	LD	C,32		;set/get user code
	CALL	bdos
	POP	DE		;restore FCB
	LD	C,15		;open file commnad
	CALL	bdos
	INC	A		;set flag
	RET			

;************************************************
;						*
;	look word up in index file		*
;						*
;************************************************

A024E:	EX	DE,HL		;seek word buffer start in DE
	LD	HL,inxwsp	;start of index buffer
	LD	BC,14H		;lenght of a index entry
A0255:	LD	A,(HL)		;get a character
	OR	A		;end of word ?
	JR	Z,A0260		;yes => skip
	CALL	A01D0		;compare (HL) to (DE)
	RET	Z		;the same => skip
	ADD	HL,BC		;else start of next index word
	JR	A0255		;repeat

;************************************************
;						*
;	set end of index file flag		*
;						*
;************************************************

A0260:	DEC	A
	RET
;************************************************
;						*
;	open data file				*
;						*
;************************************************

A0262:	LD	A,(datfl1)	;data file opend ?
	OR	A
	RET	NZ		;yes => skip
	LD	DE,fchman	;else open HELP.MAN
	CALL	opfile
	LD	A,1
	LD	(datfl1),A	;set open flag
	RET	NZ		;return if ok
	XOR	A		;else clear flag
	LD	(datfl1),A
	LD	HL,T06A8	;error HELP.MAN not found
	JP	A0221		;wait for keypress

;************************************************
;						*
;	print help word				*
;						*
;************************************************

A0283:	LD	HL,loktxt	;start of line text
	LD	DE,lokbuf	;buffer start
	LD	BC,78		;lenght
	LDIR
	LD	HL,cmd2bf	;help word
	PUSH	HL
	CALL	A0323		;find lenght
	POP	HL
	PUSH	HL
	LD	C,B
	LD	B,0		;BC = lenght
	PUSH	BC
	LD	DE,lokbuf
	LDIR			;move help word into line text
	POP	BC
	POP	DE
	LD	HL,lokbuf+55	;second place on line
	AND	A
	SBC	HL,BC
	EX	DE,HL
	LDIR			;move it
	LD	HL,lokbuf	;start of buffer
	JP	ptxt		;print it
\f


;************************************************
;						*
;	print out text routine			*
;						*
;	entry:	HL = start of text		*
;						*
;	text is terminated with 0 (NULL)	*
;						*
;************************************************

ptxt:	LD	A,(HL)		;get charcter
	OR	A		;end ?
	RET	Z		;yes => skip
	CALL	ptxt1		;print charcter
	INC	HL		;point to next
	JR	ptxt		;repeat

ptxt1:	PUSH	HL
	push	de
	push	bc
	ld	e,a		;character to e
	cp	lf		;is it line feed ?
	jr	nz,ptxt2	;no => skip
	ld	hl,line		;line count
	inc	(hl)		;adv counter
	ld	a,(hl)
	cp	22		;line 22 ?
	jr	c,ptxt2		;no => skip
	call	getpag		;get a command
	xor	a
	ld	(hl),a		;clear counter
ptxt2:	ld	c,2		;console out
	call	bdos
	pop	bc
	pop	de
	pop	hl
	ret

;************************************************
;						*
;	Ask for continue on line 23		*
;						*
;	And check for esc			*
;						*
;************************************************

getpag:	push	hl
	push	de
	push	bc
	ld	hl,lin24
	call	ptxt
	ld	de,esctx1	;ask for a key
	ld	c,9
	call	bdos
	call	getchr		;get charcter
	push	af
	call	clrhom		;clear screen
	pop	af
	pop	bc
	pop	de
	pop	hl
	cp	esc		;escape ?
	ret	nz		;no
	jp	warmst		;warm start


;************************************************
;						*
;	print error no look up word		*
;						*
;************************************************

p_nlok:	LD	HL,cmd2bf	;After 2. cmd buffer
	CALL	A0323
	PUSH	BC
	ld	hl,lin24	;print it on line 24
	call	ptxt
	LD	HL,T05F2	;error: no look up word
	call	ptxt
	POP	BC
	LD	HL,cmd2bf
p_nlo1:	ld	a,(hl)		;get character
	or	a		;zero ?
	ret	z		;yes => skip
	push	bc
	call	ptxt1		;print character
	pop	bc
	inc	hl		;point to next
	djnz	p_nlo1		;repeat
	RET

;************************************************
;						*
;	find lenght of word in command table	*
;						*
;************************************************

A0323:	LD	B,0		;clear counter
A0325:	LD	A,(HL)		;get charcter
	OR	A		;end of text ?
	RET	Z		;yes => skip
	INC	HL		;point to next
	INC	B		;advance counter
	JR	A0325		;repeat until end

;************************************************
;						*
;	Check for and move 2.nd command		*
;						*
;************************************************

cmd2:	LD	HL,buffer+1	;default 2. entry
cmd2l1:	LD	A,(HL)		;get character
	INC	HL		;point to next
	OR	A		;a entry ?
	RET	Z		;no => skip
	CP	'!'		;char less than !
	JR	C,cmd2l1	;Yes => skip
	LD	DE,cmd2bf	;point to destination
	LD	(DE),A		;save drive name
	LD	A,(HL)		;get next character
	INC	HL		;point to next
	CP	':'		;drive terminator ?
	JR	Z,cmd2l1	;yes => skip
	DEC	HL		;no => make a adjust
	INC	DE
	LD	B,001H
cmd2l2:	LD	A,(HL)
	CP	'!'		;letter ?
	JR	C,cmd2te  		;no => skip
	CP	'.'		;decimal point ?
	JR	Z,cmd2te		;yes => skip
	LD	(DE),A		;store character
	INC	HL		;poitn to next
	INC	DE
	INC	B		;increment counter
	LD	A,B		;move it to Acc.
	CP	16		;more than 16 ?
	JR	C,cmd2l2
cmd2te:	XOR	A		;terminate string
	LD	(DE),A
	LD	HL,cmd2bf	;HL = start of buffer
	INC	A		;A = non zero
	RET


;************************************************
;						*
;	print sign on on screen			*
;						*
;************************************************


scinit:	CALL	clrhom		;make frame
	LD	HL,inittx
	JP	ptxt

clrhom:	ld	e,cls		;clear screen
	ld	c,2		;con out
	call	5		;BDOS
	push	af
	xor	a		;line number
	ld	(line),a
	pop	af
	RET

;************************************************
;						*
;	read data from data file		*
;						*
;************************************************

A03A5:	CALL	A03BC		;read data from data file
A03A8:	LD	HL,(rdleng)	;get read lenght
	LD	A,H		;lenght = zero ?
	OR	L
	JR	Z,A03A5		;yes => repeat
	DEC	HL		;else adjust lenght
	LD	(rdleng),HL
	LD	HL,(datpnt)	;read pointer (data)
	LD	A,(HL)
	INC	HL
	LD	(datpnt),HL
	RET

;************************************************
;						*
;	read 4 sectors from file (random)	*
;						*
;************************************************

A03BC:	PUSH	HL
	PUSH	DE
	PUSH	BC
	LD	B,4		;number of sectors
	LD	DE,datwsp	;start of buffer
	LD	(datpnt),DE	;save in pointer
A03C8:	PUSH	BC		;save number of sectors
	LD	HL,(fchman+33)	;adjust sector address for next sector
	INC	HL
	LD	(fchman+33),HL
	PUSH	DE		;save dma address
	LD	C,26		;set dma address
	CALL	bdos
	LD	DE,fchman	;fcb of HELP.MAN
	LD	C,33		;random read
	CALL	bdos
	POP	DE		;restore dma address
	LD	HL,128		;sector lenght
	ADD	HL,DE
	EX	DE,HL		;hl= next sector
	POP	BC		;restore number of sectors to read
	DJNZ	A03C8		;repeat until done
	LD	HL,200h		;default read lenght (512 bytes)
	LD	(rdleng),HL
	POP	BC
	POP	DE
	POP	HL
	RET

;************************************************
;						*
;	print until ^B is found			*
;						*
;************************************************

A03F1:	LD	B,2		;^B marked words
	JR	A03F7

;************************************************
;						*
;	print until ^S is found			*
;						*
;************************************************

A03F5:	LD	B,013H		;start of a new look-up word
A03F7:	CALL	A03A8		;get a character
	CP	B		;is it one of them we want ?
	JR	Z,A0402		;yes => skip
	CALL	ptxt1		;print charcter
	JR	A03F7		;repeat until done

;************************************************
;						*
;	control charcters is enounced		*
;						*
;************************************************

A0402:	LD	A,B
	CP	2		;was it ^B ?
	RET	Z		;yes => skip

A0406:	ld	hl,lin24	;print on line 24
	call	ptxt
	LD	HL,endtx1	;print end of text
	call	ptxt
	jp	getchr

;************************************************
;						*
;	print out characters			*
;						*
;************************************************



A0456:	CALL	A04CF
	PUSH	DE
	LD	A,(pnt1)
	OR	A
	CALL	Z,A049D
	DEC	A
	LD	(pnt1),A
	LD	A,(pnt2)
	OR	A
	JR	Z,A0471
	DEC	A
	LD	(pnt2),A
	JR	A048C

A0471:	PUSH	HL
	PUSH	BC
;	clear line 24
	POP	BC
	POP	HL
	LD	DE,-80		;line lenght
	ADD	HL,DE
A048C:	LD	A,(pnt3)
	LD	E,A
	XOR	A
	LD	D,A
	LD	(pnt3),A
	SBC	HL,DE
	LD	DE,80		;line lenght
	ADD	HL,DE
	POP	DE
	RET

A049D:	PUSH	HL
	PUSH	DE
	PUSH	BC
	ld	de,lin241	;cursor pos
	ld	de,9
	call	bdos
	LD	DE,esctx1
	ld	c,9		;print text
	call	bdos
	CALL	getchr
	CP	esc
	JR	Z,A04B6
	CP	018H
	JR	NZ,A04BC
A04B6:;	LD	SP,02B71H
	JP	warmst

A04BC:	LD	C,14H
	CP	cr
	JR	NZ,A04C4
	LD	C,1
A04C4:	;clear ?
	LD	A,C
	POP	BC
	POP	DE
	POP	HL
	RET

A04CF:	CALL	A04DC
	RET	Z
	CP	013H
	RET	NZ
getchr:	CALL	A04DC
	JR	Z,getchr
 	RET

A04DC:	PUSH	HL
	PUSH	DE
	PUSH	BC
	LD	E,0FFH
	LD	C,006H
	CALL	bdos
	OR	A
	POP	BC
	POP	DE
	POP	HL
	RET

;************************************************
;						*
;	Quit to system  (cmd 0)			*
;						*
;************************************************

quit:	LD	E,cls		;clear screen cmd
	LD	C,2		;print it
	CALL	bdos
	JP	0		;warm boot CP/M

;************************************************
;						*
;	IKON menu				*
;						*
;************************************************

ikon:	CALL	clrhom
	LD	HL,ikontx
	CALL	ptxt
	CALL	A0406
	JP	warmst

;************************************************
;						*
;	MARKØR menu				*
;						*
;************************************************


markor:	CALL	clrhom
	LD	HL,martx2	;start of text area
	CALL	ptxt		;print text
	CALL	A0406		;print line 24 and wait until keypress
	JP	warmst

;************************************************
;						*
;	Kommando menu				*
;						*
;************************************************

comand:	CALL	clrhom
	LD	HL,komtx2	;start of command text area
	CALL	ptxt		;print it
	CALL	A0406		;wait until keypress
	JP	warmst		;goto main menu

;************************************************
;						*
;	Help manual look up words		*
;						*
;************************************************

helpwd:	CALL	rdinxf		;open and read index file
	CALL	clrhom		;clear screen
	LD	HL,hmanup	;manuals key words
	CALL	ptxt		;print index word line
	LD	HL,inxwsp	;start of index buffer
	LD	DE,20		;lenght of a index entry
A0534:	LD	A,cr		;get new line
	CALL	ptxt1
	ld	a,lf
	call	ptxt1
	LD	C,4		;print 4 word on a line
A053B:	LD	A,(HL)		;get character
	OR	A		;end of word
	JR	Z,A055A		;yes => skip
	PUSH	HL		;save source address
	CALL	A0323		;find lenght of word
	POP	HL
	PUSH	HL
	CALL	ptxt		;print next word
	POP	HL
	ADD	HL,DE		;point to next word
	LD	A,19		;19 columns wide
	SUB	B
	LD	B,A
A0550:	LD	A,20h		;space
	CALL	ptxt1
	DJNZ	A0550
	DEC	C		;still same line ?
	JR	NZ,A053B	;yes => skip
	JR	A0534		;print cr,lf

;************************************************
;						*
;	get entry (look-up word			*
;						*
;************************************************

A055A:	LD	HL,hwhcmd	;which word ?
	CALL	ptxt
	LD	B,16		;lenght of word (max)
	LD	HL,cmd2bf
A0565:;	LD	A,20H		;
;	CALL	ptxt1
	CALL	getchr
	CP	esc		;escape ?
	JP	Z,warmst
	CP	18H		;^X ?
	JP	Z,warmst
	CP	lf		;line feed ?
	JR	Z,A05B4
	CP	cr		;carriage return ?
	JR	Z,A05B4
	CP	08H		;backspace ?
	JR	Z,A058E
	CP	7FH		;del ?
	JR	NZ,A059C
A058E:	LD	A,B
	CP	16		;lenght = max ?
	JR	Z,A0565		;yes => skip
	LD	A,08		;del
	CALL	ptxt1
	ld	a,20h		;space
	call	ptxt1
	ld	a,08
	call	ptxt1
	DEC	HL
	INC	B
	JR	A0565

;************************************************
;						*
;	convert to upper case			*
;						*
;************************************************

A059C:	LD	C,A		;move char to C
	LD	A,B		;get lenght
	OR	A		;zero lenght ?
	JR	Z,A0565		;yes => skip (get a new entry)
	DEC	B		;adjust
	LD	A,C		;get character
	CP	'a'		;under lower case ?
	JR	C,A05AD		;yes => skip
	CP	'z'+1		;over z ?
	JR	NC,A05AD	;yes => skip
	AND	0DFH		;make it to upper case
A05AD:	LD	(HL),A		;store charcter in buffer
	INC	HL		;point to next
	CALL	ptxt1		;print character
	JR	A0565		;get a new charcter

;************************************************
;						*
;	Look word up in index			*
;						*
;************************************************

A05B4:	LD	(HL),0		;store a zero in end of text
	LD	HL,cmd2bf	;point to start
	LD	A,(HL)		;get charcater
	OR	A		;zero ?
	JR	NZ,A05DE	;no => skip
	PUSH	HL		;save start
	LD	DE,(pnt4)	
	DEC	DE
	LD	(pnt4),DE
	LD	DE,d_cmd1	;default text (HELP)
A05CA:	LD	A,(DE)		;get character
	OR	A		;end ?
	JR	Z,A05D6		;yes => skip
	LD	(HL),A		;store it
	CALL	ptxt1		;and print it
	INC	HL		;point to next
	INC	DE
	JR	A05CA		;repeat until done

;************************************************
;						*
;	store a zero in end of text		*
;						*
;************************************************

A05D6:	LD	(HL),0
	POP	HL
A05DE:	JP	A0126

;************************************************
;						*
;	default command				*
;						*
;************************************************

d_cmd1:	
	defb	'HELP',0

;************************************************
;						*
;	Get a number betwin 0-4 into a		*
;						*
;************************************************

getcmd:	CALL	getchr
	SUB	'0'
	JR	C,getcmd
	CP	5
	JR	NC,getcmd
	RET

;************************************************
;						*
;	text area				*
;						*
;************************************************

T05F2:	defb	'Inget uppslagsord    ',0
T063E:
T0640:
T0672:
T06A8:	NOP
;************************************************
;						*
;	Default text buffer			*
;						*
;************************************************
lin24:	defb	esc,cur_li,' '+23,' ',0
lin241:	defb	esc,cur_li,' '+23,' ','$'

hwhcmd:	defb	cr,lf,lf,lf,'Vilket upslagsord ønskas ?  ',0

ndxnf:	defb	' HELP.NDX hittas ej, tryck någon tangent før forts.',0

esctx1:	defb	' Tryck <ESC> før att avbryta, annan tangent før forts.$'

endtx1:	defb	'  Uppslagsordet slut, tryck någan tangent før forts.',0

hmanup:	defb	cr,lf,tab,tab,'---  Manualens uppslagsord ---',cr,lf,0

inittx:	defb	cr,lf
	defb	'               ---  HELP v1.0 Huvudmeny ---',cr,lf,lf,lf
	defb	'               1.    IKON-definitioner',cr,lf,lf
	defb	'               2.    MARKØR-styrning',cr,lf,lf
	defb	'               3.    KOMMANDO-radsmetoder',cr,lf,lf
	defb	'               4.    HELP-manualens upslagsord',cr,lf,lf,lf,lf,lf,lf
	defb	'               0.    Læmna HELP-programmet',cr,lf,lf,lf,lf
	defb	'  ---  Vælj ønskat alternativ med tryckning på ''1''-''4'' el. ''0''  ---'
	defb	0		;end of text

;************************************************
;						*
;	Ikon texts				*
;						*
;************************************************

ikontx:	defb	'                      -- IKON-DEFINITIONER --',cr,lf,lf
	defb	'    WS.COM                            TELCOM.COM',cr,lf
	defb	'    ordbehandlare                     telekommunikationsprogram',cr,lf
	defb	'    1                                 6',cr,lf,lf
	defb	'    MP.COM                            TRANSFER.COM',cr,lf
	defb	'    kalkylprogram                     filøverføring (kopiering m m)',cr,lf
	defb	'    2                                 7',cr,lf,lf
	defb	'    SB.COM                            (ERA)',cr,lf
	defb	'    registerprogram                   radera filer',cr,lf
	defb	'    3                                 8',cr,lf,lf
	defb	'    USR.COM                           HELP.COM',cr,lf
	defb	'    anvenændardefinerade komandon     dessa hjælp-skærmar',cr,lf
	defb	'    4                                 9',cr,lf,lf
	defb	'    INIT.COM                          CPM  (CCP)',cr,lf
	defb	'    init. & konfigurera disk CCP      återgå till CP/M CCP',cr,lf
	defb	'    5                                 0',cr,lf
	defb	0			;end of text

;************************************************
;						*
;	Markør menu				*
;						*
;************************************************

martx2:	defb	tab,tab,tab,tab
	defb	'--- Markør-kontroll ---',cr,lf,lf,tab
	defb	'Føljande tangenter anvænds før att styra førflyttningen av markøren i',cr,lf
	defb	'blioteket:',cr,lf,lf,tab,tab,tab
	defb	'    Markør uppåt',cr,lf
	defb	' Filbibliotekets børjan - W',tab,'  E',tab,'  R -Tillbaka an skivenhet',cr,lf,lf
	defb	tab,' Markør vænster - S',tab,tab,'  D - Markør høger',cr,lf,lf
	defb	' Filbibliotekets slut  -  Z',tab,'  X',tab,'  C - Framåt en skivenhet',cr,lf,tab,tab,tab
	defb	'     Markør nedåt',cr,lf,lf,tab
	defb	'For att flytta markøren, tryck samtidigt på <CRTL> och den tangent som',cr,lf
	defb	'svarar mot den ønskade førflyttningen.',cr,lf
	defb	'      <CRTL>  E och W flyttar markøren uppåt respektive nedåt på skærmen.',cr,lf
	defb	'Førsøk att flytta  markøren uppåt på øversta raden medfør att markøren plac-',cr,lf
	defb	'ras i øvre vænstra hørnet. På samma sætt medfør førsøk att flytta nedat på',cr,lf
	defb	'nedersta raden att markøren placeras øver sista filen i filbiblioteket.',cr,lf,tab
	defb	'Om filbiblioteket innehåller øver 64 filer, visas indledningsvis de 64',cr,lf
	defb	' førsta filerna. I detta fall medfør førsøk att førflytta markøren nedat fran',cr,lf
	defb	'nedersta raden att biblioteket rullas uppåt. Upprepad anvænding av <CRTL> X',cr,lf
	defb	'kommer att føra markøren till filbibliotekets slut. På motsvarende',cr,lf
	defb	'sætt, om filnamnet i øvre vænstra hørnet ej ær den førsta filen i filbiblio-',cr,lf
	defb	'teket, medfør <CRTL> E från øversta radan att biblioteket rullas nedåt.',cr,lf
	defb	'     <CRTL> S och D flyttar markøren till vænster resp høger. Vid kanterna',cr,lf
	defb	'førflyttas markøren øver till næsta rad, S mot filbibliotekets børjan, och D',cr,lf
	defb	'mot dess slut. Om denna førflyttning medfør att markøren kommer utanfør den',cr,lf
	defb	'den del av bilioteket som før tillfældet visas på skærmen, erhålls rullning',cr,lf
	defb	'enligt beskrivningen ovan,',cr,lf
	defb	'     <CRTL> W och Z flyttar markøren till filbibliotekets børjan respektive',cr,lf
	defb	'slut',cr,lf
	defb	'     <CRTL> R och C medfør byte av visnad skivenhet.  Om exempelvis enhet B:',cr,lf
	defb	'visas på skærmen, då medfør <CRTL> R att i stællet filbibliotek før enhet A:',cr,lf
	defb	'visas. Observera att detta inte medfør någan ændring betræffande inloggad',cr,lf
	defb	'skivenhet, vilket visas av att namnet på den aktuella skivenhet  (længt',cr,lf
	defb	'till vænster på statusraden) ej ændras. Skivenheternas ordningsføjd ær A:',cr,lf
	defb	'B: M: L:. (Observera att den logiska skivenheten L: kommer sist i denna sek-',cr,lf
	defb	'vens).  Om enhet A: visas på skærmen, medfør alltså en tryckning på <CRTL> C',cr,lf
	defb	'att enhet B: kommer att visas, en tryckning till på <CRTL> C ændrar till en-',cr,lf
	defb	'het M:, och ytterligare en tangentnedtryckning ændrer till skivenhet L:.  En',cr,lf
	defb	'tryckning på <CRTL> C nær L: visas ger ingan effekt.  <CRTL> R kommer nu på',cr,lf
	defb	'liknande sætt att stekvis leda tillbaka till skivenhet A:.'
	defb	0

;************************************************
;						*
;	command help menu			*
;						*
;************************************************

komtx2:	defb	tab,tab,tab
	defb	'--- Kommandoen før exekvering ---',cr,lf
	defb	'	Det finns tre metoder att exekvera et øvergångskommando:',cr,lf,lf
	defb	tab,tab,'(i)	IKON-val',cr,lf
	defb	tab,tab,'(ii)	MARKØR-styrning',cr,lf
	defb	tab,tab,'(iii)	KOMMANDO-radsval',cr,lf,lf
	defb	'		IKON-val',cr,lf
	defb	'	Med varje ikon længst ned på skærmen hør sammen både en ciffra och',cr,lf
	defb	'ett kommando. Exempelvis ær "telefon"-ikonen associerad med siffran 6 och',cr,lf
	defb	'kommandot "TELCOM".  (Før definitionen av ikonerna se uppslagsordet IKON).',cr,lf
	defb	'Før att exekvera det kommando som hør sammen med ikonen, skriv helt enkelt',cr,lf
	defb	'siffran under ikonen, skriv t ex ''6'' før att exekvera TELCOM. Det behøvs',cr,lf
	defb	'alltså bara ett enda tangentnedslag før att køra ett program.',cr,lf,lf
	defb	'		MARKØR-styrning',cr,lf
	defb	'	Nær filbiblioteket kommer upp på skærmen, upptræder en markør i in-',cr,lf
	defb	'verterad video øvre filnamnet i øvre vænstra hørnet.  Denna markør markerar',cr,lf
	defb	'det "gællande" filnamnet. Om detta ær en kommando fil (filtyp.COM), då exe-',cr,lf
	defb	'kveras kommandot genom att helt enkelt trycka på <RETURN>. (Før information',cr,lf
	defb	'om hur markøren førflyttas, se uppslagsordet MARKØR).',cr,lf,lf
	defb	'		KOMMANDO-raden',cr,lf
	defb	'	Vid tryck på en tangent som ger ett skrivbart tecken, intræder Shell',cr,lf
	defb	'i paramertermod. I denna mod kommer alla tecken som skrivs att visas på skær-',cr,lf
	defb	'men, och vid tryck på <RETURN>, kommer Shell att førsøka exekvera denna',cr,lf
	defb	'kommandorad.  Både <BACKSPACE> och <DEL> medfør att det sist skrivna tecknet',cr,lf
	defb	'raderas. En tryckning på <ESC> medfør att raden ignoreras och ikonerne åter-',cr,lf
	defb	'kommer.  En trycknng på <LF> medfør att filnamnet under filmarkøren førs ned',cr,lf
	defb	'till kommandoraden. (OBS att en tryckning på <LF> i ICKE-parametermod medfør',cr,lf
	defb	'att filnamnet under markøren førs ned och Shell intræder i parametermod un-',cr,lf
	defb	'der førudsættning att filnamnet representerar en .COM-fil).',cr,lf
	defb	'	En kommandorad kan vara upp till 77 tecken lang.',cr,lf
	defb	0

;************************************************
;						*
;	Command decode text's			*
;						*
;************************************************

ikntx1:	defb	'IKONER',0
ikntx2:	defb	'IKON',0
martx1:	defb	'MARKØR',0
komtx1:	defb	'KOMMANDO',0
txname:	defb	cr,lf,'NAME',cr,lf,0
txsynt:	defb	'SYNTAX',cr,lf,0
txdesc:	defb	'DESCRIPTION',CR,LF,0
txexam:	defb	'EXAMPLE',cr,lf,0
txeror:	defb	'ERROR MESSAGES',cr,lf,0
txextr:	defb	'EXTERNAL REF.:',cr,lf,0
loktxt:	defb	'                     '
	defb	'--- Manualens upslagsord ---'
	defb	'                     ',0,0

;************************************************
;						*
;	command index table			*
;						*
;************************************************

cmdtab:	defw	quit		;command 0 address (QUIT)
	defw	ikon		;command 1 address (IKON)
	defw	markor		;command 2 address (MARKØR)
	defw	comand		;command 3 address (KOMMANDO)
	defw	helpwd		;command 4 address (HELP)


;************************************************
;						*
;	File control blocks			*
;						*
;************************************************

fchndx:	defb	0		;user / drive
	defb	'HELP    NDX'
	defs	24		;space

fchman:	defb	0		;user / drive
	defb	'HELP    MAN'
	defs	24		;space

;************************************************
;						*
;	work space				*
;						*
;************************************************

stinxw:	defw	0		;start of index word
rdleng:	defb	0		;lenght of read
datfl1:	defb	0		;data file open flag
inxfl1:	defb	0		;indexfile open flag
cmd2bf:	defs	50		;command buffer
pnt1:	defs	1
pnt2:	defs	1
pnt3:	defs	1
pnt4:	defs	2
datpnt:	defs	2		;address of data
offpnt:	defs	2		;offset from start of record
line:	defs	1		;line count
inxwsp:	defs	16*128		;index file workspace
inxend:	defs	1		;end of index
datwsp:	defs	16*128		;read data buffer
lokbuf:	defs	50
	END

«eof»