home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
RCPM
/
MESSAGE.ASM
< prev
next >
Wrap
Assembly Source File
|
2000-06-30
|
3KB
|
88 lines
;
; MESSAGE.ASM - ASCII message typing program for CP/M.
;
; Written 7/24/84 by Al Jewer and released in the public domain.
;
; Copyright (c) 1984 Al Jewer.
;
; THIS PROGRAM MUST NOT BE SOLD !!!!!!!!!!
;
; This file is intended to be used on CP/M systems to generate
; messages in response to typed commands. That is, suppose you
; run an RCPM system, and would like people to know that they
; can use TYPE instead of TYPESQ. This file can be edited to
; contain a message such as:
; TYPESQ no longer needed.... use TYPE instead.
;
; The unique thing about this file is that it contains ONLY ASCII
; characters... that is, the assembled .COM file can be copied
; with, say, WORDSTAR in non-document mode, and the new message
; inserted starting on the second line, and terminated with a
; dollar-sign character. The resultant file can then be run
; directly, WITHOUT assembly or loading!
; You only need a text editor to create a message file!
;
; This is probably the wildest code I've ever written - if you
; can't follow it, don't worry!
; Trust me, it works.
;
; Keep in mind that you really don't need the source code, just
; the .COM file in order to create MESSAGE files.
;
ORG 100H ; CP/M STARTING ADDRESS
;
START: DAD H ;GET 0 IN THE L REGISTER
DAD H
DAD H
DAD H
DAD H
DAD H
DAD H
DAD H
MOV H,L ;ZERO THE HI BYTE OF HL PAIR
MOV D,L ;ZERO HI BYTE OF DE PAIR
INR L ;GET A 1
DAD H ;SHIFT LEFT 2
DAD H
INR L ;SHIFT IN ANOTHER 1
DAD H
INR L ;AND ANOTHER
DAD H ;FINAL SHIFT GIVES US 16H IN L
MOV A,L ;GET VALUE TO A
CMA ;THIS GIVES US 0E9H IN A REGISTER
; (THIS IS A PCHL INSTRUCTION)
MOV L,H ;RE-ZERO THE HL PAIR
INR L ;GET A 1
MOV B,L ;SAVE THE 1 IN THE B REGISTER
DAD H ;GET A 5
DAD H
INR L
MOV E,L ;SAVE THE 5 IN THE E REGISTER
DCR L ;GET A 9
DAD H
INR L
MOV C,L ;GET FUNCTION CODE (9) TO C REGISTER
MOV H,B ;GET HI BYTE OF MESSAGE ADDRESS TO H
MVI L,(ADDRESS AND 0FFH) ;POINT TO OUR PCHL ADDRESS (THIS WILL
;BE AN OFFSET LARGER THAN 20H AND SMALLER
;THAN 7FH, THEREFORE AN ASCII CODE
MOV M,A ;MOVE PCHL INSTRUCTION TO RAM
INR L ;POINT PAST PCHL TO START OF MESSAGE
INR L ;ALSO PAST INITIAL CRLF
INR L
MOV A,L ;SWAP HL & DE (DE MUST POINT TO MESSAGE,
;HL MUST POINT TO LOCATION 5)
MOV B,H
MOV L,E
MOV H,D
MOV D,B
MOV E,A
ADDRESS: DB 'X' ;THIS WILL BE CHANGED TO A PCHL
DB 0DH, 0AH ;INITIAL CRLF
DB 'This is where the message goes', 0DH, 0AH
DB 'Make sure you end the message with a dollar-sign!', 0DH, 0AH
DB '$' ;MESSAGE TERMINATOR
DB 'Z'-40H ;ASCII END OF FILE
;
END START