PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #158)

[PCjs Machine "ibm5160"]

Waiting for machine "ibm5160" to load....

Information about “IBM USERS GROUP #3”

File Descriptions:

???????  NL   Data file (21 files).
ADDRESS  SCR  Data file.
AUTOEXEC BAT  Batch file to automatically start the program.
???????  PIC  Data picture file (10 files).
DESCRIBE      Description about program.
EXPNDTAB ASM  Assembly program to expand tabs.
???????? PRO  Data file (4 files).
MASTHEAD      Information file.
NEWS     EXE  Main program.
PCUGNEWS TOC  Information file.
TESTTAB  PAS  Pascal program to expand tabs.
WEBER    SCR  Article from the author.

CRC.TXT

PC-SIG Disk No. #158, version v1

The following is a list of the file checksums which should be produced by
the CRCK4 program on disk #9 (and others).  If the CRC numbers do not match
you may have a bad file.  To use type:  CRCK4 <filespec>

CRCK4 output for this disk:


CRCK ver 4.2B (MS DOS VERSION )
CTL-S pauses, CTL-C aborts

--> FILE:  ADDRESS .NL          CRC = 93 C9

--> FILE:  ADDRESS .SCR         CRC = ED 59

--> FILE:  AUTOEXEC.BAT         CRC = 00 00

--> FILE:  BECKLEY .NL          CRC = C1 2F

--> FILE:  BYSNC   .NL          CRC = F1 5C

--> FILE:  CHIMENE .NL          CRC = AB 69

--> FILE:  CONSIGLO.NL          CRC = 86 EB

--> FILE:  CUMMING .NL          CRC = 78 55

--> FILE:  CURUGS  .PIC         CRC = 80 14

--> FILE:  DESCRIBE.            CRC = 60 A8

--> FILE:  DW1     .NL          CRC = B3 54

--> FILE:  DW2     .NL          CRC = 4D 1D

--> FILE:  DWLEGAL .NL          CRC = CE 36

--> FILE:  EDITOR  .PIC         CRC = 05 E5

--> FILE:  EDTORIAL.NL          CRC = A7 FC

--> FILE:  EXPNDTAB.ASM         CRC = 27 E2

--> FILE:  FONH    .PIC         CRC = 6B A1

--> FILE:  FONS    .PIC         CRC = 83 35

--> FILE:  GERTRUDE.NL          CRC = 8F FE

--> FILE:  HARRINGT.NL          CRC = EF 32

--> FILE:  IBMCMPCT.PRO         CRC = F8 31

--> FILE:  IBMCOLOR.PRO         CRC = 8A 48

--> FILE:  IBMGRAPH.PRO         CRC = E1 01

--> FILE:  IBMMATRX.PRO         CRC = 00 C9

--> FILE:  MASTHEAD.            CRC = F7 7C

--> FILE:  MINASI  .NL          CRC = D2 0E

--> FILE:  NEWS    .EXE         CRC = B4 CE

--> FILE:  NEWSLOGO.PIC         CRC = B4 A6

--> FILE:  NPANN   .PIC         CRC = CD 1E

--> FILE:  PCUGNEWS.TOC         CRC = BE 49

--> FILE:  PCWRITE .NL          CRC = 19 5A

--> FILE:  PELTO   .NL          CRC = E5 21

--> FILE:  PINTE   .NL          CRC = 98 1D

--> FILE:  SCHIEVE .NL          CRC = 96 F8

--> FILE:  TANDT   .PIC         CRC = 89 87

--> FILE:  TESTTAB .PAS         CRC = 61 84

--> FILE:  UGASK   .PIC         CRC = 82 27

--> FILE:  UGOS    .PIC         CRC = A7 1C

--> FILE:  VANDR   .PIC         CRC = 1D B1

--> FILE:  WEBER   .NL          CRC = 22 DD

--> FILE:  WEBER   .SCR         CRC = 06 CD

--> FILE:  WESTENDP.NL          CRC = 17 DA

--> FILE:  WHITE   .NL          CRC = 48 B9

--> FILE:  WOLPERT .NL          CRC = D3 FF

--> FILE:  XXX     .            CRC = E0 09

 ---------------------> SUM OF CRCS = 91 FE

DONE

These and other Public Domain and user-supported programs from:

PC Software Interest Group
1125 Stewart Ct  Suite G
Sunnyvale, CA 94086
(408) 730-9291

EXPNDTAB.ASM

page 75,132
codeseg segment para 'code'
	assume cs:codeseg,ds:codeseg,es:codeseg
;=======================================================================
;= EXPAND_TABS							       =
;= -----------							       =
;= Function: Expand tab characters into blanks (TABLINE-->NOTABLINE    =
;=								       =
;= Call: EXPAND_TABS(var TABLINE,NOTABLINE:lstring);		       =
;=	     where  TABLINE   = input line (may have tabs in it).      =
;=		    NOTABLINE = final line			       =
;=								       =
;= Calling parameter offsets (frame contents):			       =
;=		+00,02,04 caller's BP, IP, CS registers                =
;=		+06 address of lstring NOTABLINE		       =
;=		+08 max length of lstring NOTABLINE		       =
;=		+10 address of lstring TABLINE			       =
;=		+12 max length of lstring TABLINE		       =
;=======================================================================
EXPAND_TABS  proc far
	 public EXPAND_TABS	;use from Pascal
	 push	bp		;save callers frame pointer
	 mov	bp,sp		;set frame pointer
	 mov	si,[bp+6]	;SI=A(NOTABLINE)
	 mov	byte ptr [si],0 ;default length of NOTABLINE = 0
	 mov	bx,[bp+10]	;address of TABLINE in caller's DS seg
	 sub	cx,cx		;CX = 0
	 mov	cl,[bx] 	;CX = current TABLINE length
	 inc	bx		;skip TABLINE[0] = lstring length
	 push	es		;save caller's extra seg reg.
	 jcxz	exrtrn		;don't process if nothing in string
				;------ Set ES to DS for 'Scan ------
	 mov	ax,ds		;ES & DS are used by scan(SCAB & SCAW)
	 mov	es,ax		;instructions and must get data that is
				;defined in the caller's DS area.
	 push	cx		;save length of TABLINE
				;------ Are there any tab char? ------
	 mov	di,bx		;DI= offset fo 1st element of TABLINE
	 cld			;clear DF, causing incr thru TABLINE
	 mov	al,09H		;Compare char 9 = TAB
REPNE	 scasb			;scan TABLINE for AX char - repeat CX
	 pop	cx		;CX= length of TABLINE
	 je	yestabs 	;JMP=> tabs found
				;------ Is line all blank? ------
	 mov	di,bx		;DI= offset of 1st element of TABLINE
	 mov	al,20H		;Compare char = blank
REPE	 scasb			;scan TABLINE for non blnk, CX times
	 je	exrtrn		;return if all blank (leave length=0)
	 mov	si,[bp+10]	;------Move TABLINE to NOTABLINE------
	 mov	di,[bp+6]	;A(NOTABLINE)
	 sub	cx,cx		;
	 mov	cl,[si] 	;length of TABLINE
	 inc	cx		;include byte 0 in move
REP	 movsb			;TABLINE -> NOTABLINE
	 jmp	short exrtrn	;exit
				;------ Process tab character ------
yestabs: sub	dx,dx		;DX=last col of TABLINE processed
	 dec	bx		;BX= A(TABLINE[0])
	 mov	di,bx		;DI= A(TABLINE[0])
				;      === GET_BYTE ===
tabloop: inc	dx		;incr TABLINE pointer
	 mov	bx,dx		;get updated pointer
	 mov	al,[bx][di]	;get nxt byte = A(TABLINE)+pointer
				;      =================
	 cmp	al,09H		;is this a tab char?
	 je	tabfound	;jmp if tab
	 call	PUT_BYTE	;put AL to NOTABLINE
	 jmp	short tabend	;
tabfound:sub	ax,ax		;
	 mov	al,[si] 	;AX= col position of nxt char
	 push	cx		;save counter
	 mov	cx,8		;COLUMN/8
	 div	cl		;AX/CL --> AL=Quotient	 AH=Remainder
	 sub	cl,ah		;CX= 8-(COLmod 8) = # blanks to insert
	 mov	al,20H		;blank char
tabblnk: call	PUT_BYTE	;put it into NOTABLINE
	 loop	short tabblnk	;repeat for all blanks to fill in
	 pop	cx		;get length left in NOTABLINE
tabend:  loop	short tabloop	;do all NOTABLINE char
				;---- Return to calling program ----
exrtrn:  pop	es		;restore caller's ES
	 pop	bp		;restore caller's frame pointer
	 ret	8
				;------------ DATA--------------
COL_IN	 db	0		;current col in NOTABLINE
				;(1st chr is length of expanded string)
EXPAND_TABS endp		;
				;========= PUT_BYTE =========
PUT_BYTE proc	near		;Move AL to nxt byte of NOTABLINE
	 inc	byte ptr [si]	;incr NOTABLINE[0] = lstring length
	 sub	bx,bx		;
	 mov	bl,byte ptr [si];pointer to nxt byte
	 add	bx,si		;A(NOTABLINE)+next byte
	 mov	[bx],al 	;save byte
	 ret			;return to calling point
PUT_BYTE endp			;===================================
codeseg  ends			;end segment
	 end			;end assembly

Directory of PC-SIG Library Disk #0158

 Volume in drive A has no label
 Directory of A:\

ADDRESS  NL      11264   3-16-84  12:53a
ADDRESS  SCR     10958   3-16-84  12:48a
AUTOEXEC BAT        66   5-01-84   4:38p
BECKLEY  NL       4096   3-16-84  12:59a
BYSNC    NL       4096   3-16-84   2:50a
CHIMENE  NL       3072   3-16-84   2:44a
CONSIGLO NL       4096   3-16-84   2:48a
CRC      TXT      2674  11-14-84  11:39a
CRCK4    COM      1536  10-21-82   7:54p
CUMMING  NL       3072   3-16-84   2:53a
CURUGS   PIC      2868   2-22-84  12:30a
DESCRIBE           690   5-01-84   4:38p
DW1      NL       6144   3-16-84  12:56a
DW2      NL       7168   3-16-84  12:57a
DWLEGAL  NL       4096   3-16-84   2:49a
EDITOR   PIC      3091   2-22-84  12:24a
EDTORIAL NL       2048   3-16-84   7:57a
EXPNDTAB ASM      3986   5-02-84   9:48a
FONH     PIC       896   3-13-84  12:05a
FONS     PIC      2680   2-22-84  12:29a
GERTRUDE NL       2048   3-16-84  12:41a
HARRINGT NL       2048   3-16-84   2:54a
IBMCMPCT PRO       496   4-19-84   3:57p
IBMCOLOR PRO       563   4-19-84   9:27a
IBMGRAPH PRO       570   4-19-84   1:39p
IBMMATRX PRO       519   4-19-84   9:51a
MASTHEAD          1457   3-16-84   1:03a
MINASI   NL       4096   3-16-84   2:56a
NEWS     EXE     78080   5-01-84   2:59p
NEWSLOGO PIC     16512   2-16-84   9:57a
NPANN    PIC      4533   3-01-84   9:10a
PCUGNEWS TOC      1480   3-16-84  12:50a
PCWRITE  NL       6144   3-16-84  12:54a
PELTO    NL       3072   3-16-84  12:44a
PINTE    NL       5120   3-16-84  12:50a
SCHIEVE  NL       6144   3-16-84  12:52a
TANDT    PIC      2198   2-22-84  12:28a
TESTTAB  PAS      1004   5-02-84   9:15a
UGASK    PIC      2362   2-22-84  12:29a
UGOS     PIC      3038   2-22-84  12:28a
VANDR    PIC      3491   2-22-84  12:28a
WEBER    NL       4096   3-16-84  12:58a
WEBER    SCR      3537   3-16-84  12:16a
WESTENDP NL       4096   3-16-84  12:46a
WHITE    NL      19456   3-16-84   1:03a
WOLPERT  NL       7168   3-16-84   1:01a
XXX               1280   5-20-84   3:55p
       47 file(s)     263205 bytes
                       46080 bytes free