DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen RC759 "Piccoline"

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

See our Wiki for more about RegneCentralen RC759 "Piccoline"

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦b842f46ae⟧ TextFile

    Length: 4422 (0x1146)
    Types: TextFile
    Names: »LONGASM.ASM«

Derivation

└─⟦33b70227c⟧ Bits:30003931/GEM_Develop_disk_3_CDOS.imd Disketter indleveret af Steffen Jensen (Piccolo/Piccoline)
    └─⟦this⟧ »LONGASM.ASM« 
└─⟦f18477172⟧ Bits:30003931/GEM_Develop_disk_1_CDOS.imd Disketter indleveret af Steffen Jensen (Piccolo/Piccoline)
    └─⟦this⟧ »SAMP\LONGASM.ASM« 

TextFile

;/*	LONGASM.ASM	2/3/84 - 10/09/84	Lee Jay Lorenzen	*/
;/*	modified for MASM	    01/31/85	Tom Rolander		*/
;/*     for Lattice C ==>  AX=HI, BX=LO
;
PGROUP	GROUP	PROG

DGROUP	GROUP	DATA

DATA	SEGMENT PARA PUBLIC 'DATA'
DATA	ENDS

PROG	SEGMENT	BYTE PUBLIC 'PROG'
	ASSUME	CS:PGROUP
	ASSUME	DS:DGROUP
;
	PUBLIC	LSTRLEN
	PUBLIC	ADDR
	PUBLIC	LLDS
	PUBLIC	LLCS
	PUBLIC	LLSS 
	PUBLIC	LWCOPY
	PUBLIC	LBCOPY
	PUBLIC	LBGET
	PUBLIC	LBSET
	PUBLIC	LWGET
	PUBLIC	LWSET
	PUBLIC	LLGET
	PUBLIC	LLSET
	PUBLIC	LBWMOV
;
;		WORD
;	LSTRLEN(long_addr)
;
LSTRLEN:
	push	bp
	mov	bp,sp
	push	ds
	mov	bx,4ÆbpÅ
	mov	ax,6ÆbpÅ
	mov	ds,ax
	sub	cx,cx
slagain:
	cmp	byte ptr ÆbxÅ,0
	jz	sldone
	inc	bx
	jmp	slagain
sldone:
	mov	ax,bx
	mov	bx,4ÆbpÅ
	sub	ax,bx
	pop	ds
	pop	bp
	ret
;
;		LONG
;	ADDR(shrt_addr)
;
ADDR:
	push	bp
	mov	bp,sp
	mov	bx,4ÆbpÅ
	mov	ax,ds
	pop	bp
	ret
;
;		LONG
;	LLDS()
;
;
LLDS:
	push bp
	mov bp,sp
	sub bx,bx
	mov ax,ds
	pop bp
	ret
;
;		LONG
;	LLCS()
;
;
LLCS:
	push bp
	mov bp,sp
	sub bx,bx
	mov ax,cs
	pop bp
	ret
;
;		LONG
;	LLSS()
;
;
LLSS:
	push bp
	mov bp,sp
	sub bx,bx
	mov ax,ss
	pop bp
	ret
;
;	LWCOPY(pdstoff, pdstseg, psrcoff, psrcseg, numwds)
;
;
LWCOPY:
	push bp
	mov bp,sp
	push di
	push si
	mov di,4ÆbpÅ		; dest off
	mov bx,6ÆbpÅ		; dest seg
	mov si,8ÆbpÅ		; src off
	mov dx,10ÆbpÅ		; src seg
	mov cx,12ÆbpÅ		; count
	cld			; assume forward
	cmp bx,dx		; if !same seg
	jne lwcopy_mov		;     then dont worry about overlap
	cmp si,di		; if src offs < dest offs
				;     then start from end and go back
				; else normal
	ja lwcopy_mov
	  mov ax,cx
	  shl ax,1
	  add si,ax
	  sub si,2
	  add di,ax
	  sub di,2
	  std			;  go backwards
lwcopy_mov:
	push ds
	push es
	mov ds,dx		; src
	mov es,bx		; dest
	rep movsw
	pop es
	pop ds
	

	lea sp,-4ÆbpÅ
	pop si
	pop di
	pop bp
	cld
	ret
;
;
;	LBCOPY(pdstoff, pdstseg, psrcoff, psrcseg, numbytes)
;
;
LBCOPY:
	push bp
	mov bp,sp
	push di
	push si
	mov di,4ÆbpÅ		; dest off
	mov bx,6ÆbpÅ		; dest seg
	mov si,8ÆbpÅ		; src off
	mov dx,10ÆbpÅ		; src seg
	mov cx,12ÆbpÅ		; count
	cld			; assume forward
	cmp bx,dx		; if !same seg
	jne lbcopy_mov		;     then dont worry about overlap
	cmp si,di		; if src offs < dest offs
				;     then start from end and go back
				; else normal
	ja lbcopy_mov
	  add si,cx
	  dec si
	  add di,cx
	  dec di
	  std			;  go backwards
lbcopy_mov:
	push ds
	push es
	mov ds,dx		; src
	mov es,bx		; dest
	rep movsb
	pop es
	pop ds
	

	lea sp,-4ÆbpÅ
	pop si
	pop di
	pop bp
	cld
	ret
;
;	expand from bytes to words until you hit a null also return
;	the number of characters moved
;
;	LBWMOV(pdstoff, pdstseg, psrcoff, psrcseg)
;
;
LBWMOV:
	push bp
	mov bp,sp
	push di
	push si
	mov di,4ÆbpÅ		; dest off
	mov bx,6ÆbpÅ		; dest seg
	mov si,8ÆbpÅ		; src off
	mov dx,10ÆbpÅ		; src seg
	mov cx,0		; count
	cld			; assume forward
lbw_mov:
	push ds
	push es
	mov ds,dx		; src
	mov es,bx		; dest
	mov ah,0
lbw_loop:
	lodsb
	cmp al,0
	je lbw_done
	inc cx
	stosw
	jmp lbw_loop
lbw_done:
	pop es
	pop ds
	

	lea sp,-4ÆbpÅ
	pop si
	pop di
	pop bp
	cld
	mov	ax,cx
	ret
;
;		UBYTE
;	LBGET(lp)
;		LONG		p;
;
LBGET:
	push	bp
	mov	bp,sp
	push	es
	les	bx,DWORD PTR 4ÆbpÅ
	sub	ax,ax
	mov	al,es:ÆbxÅ
	pop	es
	pop	bp
	ret
;
;		UBYTE
;	LBSET(lp, abyte)
;		LONG		p;
;		BYTE		abyte;
;
LBSET:
	push	bp
	mov	bp,sp
	push	es
	les	bx,DWORD PTR 4ÆbpÅ
	mov	ax,8ÆbpÅ
	mov	es:ÆbxÅ,al
	xor	ah,ah
	pop	es
	pop	bp
	ret
;
;		UWORD
;	LWGET(lp)
;		LONG		p;
;
LWGET:
	push	bp
	mov	bp,sp
	push	es
	les	bx,DWORD PTR 4ÆbpÅ
	mov	ax,es:ÆbxÅ
	pop	es
	pop	bp
	ret
;
;		UWORD
;	LWSET(lp, aword)
;		LONG		p;
;		WORD		aword;
;
LWSET:
	push	bp
	mov	bp,sp
	push	es
	les	bx,DWORD PTR 4ÆbpÅ
	mov	ax,8ÆbpÅ
	mov	es:ÆbxÅ,ax
	pop	es
	pop	bp
	ret
;
;		ULONG
;	LLGET(lp)
;		LONG		p;
;
LLGET:
	push	bp
	mov	bp,sp
	push	es
	les	bx,DWORD PTR 4ÆbpÅ
	mov	ax,es:ÆbxÅ
	inc	bx
	inc	bx
	mov	bx,es:ÆbxÅ
	xchg	ax,bx
	pop	es
	pop	bp
	ret
;
;		ULONG
;	LLSET(lp, along)
;		LONG		p;
;		LONG		along;
;
LLSET:
	push	bp
	mov	bp,sp
	push	es
	les	bx,DWORD PTR 4ÆbpÅ
	mov	ax,8ÆbpÅ
	mov	es:ÆbxÅ,ax
	inc	bx
	inc	bx
	mov	cx,10ÆbpÅ
	mov	es:ÆbxÅ,cx
	xchg	ax,cx
	pop	es
	pop	bp
	ret
 
PROG	ENDS

	end
«eof»