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
/
SIMTEL
/
CPMUG
/
CPMUG042.ARK
/
START.ASM
< prev
next >
Wrap
Assembly Source File
|
1984-04-29
|
5KB
|
94 lines
;**********************************************************************
;* -START.COM- *
;* *
;* A PROGRAM TO INITIONALIZE AN ISC 8001G COLOR TERMINAL, *
;* AND READ COMPU/TIME T102A TIME AND DATE BOARD AND THEN DISPLAY IT. *
;* *
;* BY HARRY KAEMMERER 11/30/1979 TEL. (201)-221-2297 *
;**********************************************************************
;
FG EQU 1DH ;SELECT FORGROUND COLOR
YELLOW EQU 13H ;COLOR IS YELLOW
BG EQU 1EH ;SELECT BACKGROUND COLOR
BLUE EQU 14H ;COLOR IS BLUE
ESC EQU 1BH ;ESC KEY CODE
FF EQU 0CH ;FORM FEED CLEARS SCREEN
BELL EQU 07H ;RING BELL
ENTRY EQU 05H ;TALK TO CP/M
CR EQU 0DH ;CARRAGE RETURN
LF EQU 0AH ;LINE FEED
A7OFF EQU 0FH ;SETS TERMINAL TO 48 LINE FORMAT
;
CLOCK EQU 0C0H ;MY CLOCKS ADDRESS PORT CHANGE AS NEEDED
;
ORG 0100H ;START ASSEMBLY HERE
;
LXI H,0 ;SET UP REGISTERS
DAD SP ;AND STACK POINTER
SHLD OLDSP ;WILE DUING IT SAVE THE OLD ONE
LXI SP,STACK ;AND SET A NEW ONE FOR THIS PGM
;
LXI H,LABEL1+16 ;POINT TO FIRST TIME MEM. LOCATION
MVI A,0 ;TELL CLOCK YOU WANT TEN'S OF HR'S
CALL GETDIG ;GET IT AND PUT IT IN MEM. FOR LATER USE
MVI A,1 ;SAME FOR UNIT' HR'S
CALL GETDIG ;GET IT AND SAVE IT
INX H ;SKIP ':' WE DONT WHANT TO MESS IT UP!!
MVI A,2 ;SAME FOR MINTES TENS
CALL GETDIG ;GET IT
MVI A,3 ;MIN UNITS
CALL GETDIG ;YOU GOT IT .. GET IT AND SAVE AS ABOVE
INX H ;SKIP ':'
MVI A,4 ;NOW THE SECOND'S
CALL GETDIG ;
MVI A,5 ;
CALL GETDIG ;
LXI H,LABEL1+31 ;SET POINTER TO DATE LOCATIONS
MVI A,8 ;SET FOR MONTH TENS
OUT CLOCK ;SEND IT TO THE CLOCKS PORT
CALL DELAY ;WAIST SOME TIME
IN CLOCK ;GET THE DIGIT FROM THE CLOCK
ANI 0FH ;CLEAR SOME BITS
ADI 48 ;MAKE IT ASCII
CPI 63 ;SEE IF IT SHOULD BE A BLANK?
CZ SET1 ;IF SO THEN MAKE IT A BLANK
MOV M,A ;ELSE SEND IT TO ITS MEM. LOCATION
MVI A,9 ;THIS IS FOR MONTH UNITS
CALL GETDIG ;SAME THING AS IN TIME
INX H ;SKIP '/'
MVI A,10 ;DAY TENS
CALL GETDIG ;GET IT
MVI A,11 ;DAY UNITS
CALL GETDIG ;GET IT
LXI H,LABEL1 ;POINT TO START OF MESSAGE
;
LXI D,LABEL1 ;TELL CP/M START OF MESSAGE
MVI C,9 ;SEND IT TO THE TERMINAL
CALL ENTRY ;DO IT
LHLD OLDSP ;PUT THE OLD CP/M STACK POINTER
SPHL ;WHERE IT BELONGS
RET ;AND EXIT THE PROGRAM
;
SET1 MVI A,20H ;SET UP A BLANK FOR THE MONTH TENS DIGIT
RET ;
GETDIG OUT CLOCK ;SEND SELECT CHARACTER TO THE CLOCK
CALL DELAY ;WAIST SOME TIME
IN CLOCK ;GET THE CLOCKS OUTPUT
ANI 0FH ;CLEAR SOME BITS
ADI 48 ;MAKE IT ASCII
INX H ;POINT TO NEXT MEMORY LOCATION
MOV M,A ;PUT IT THERE
RET ;
DELAY LXI D,02FFH ;DELAY CONSTANT
WAIT1 DCR E ;WAIST SOME TIME
JNZ WAIT1 ;
DCR D ;
JNZ WAIT1 ;SEE IF YOU ARE DONE IF SO
RET ;RETURN
LABEL1 DB FG,YELLOW,BG,BLUE,ESC,'K',A7OFF,ESC,'F',FF,BELL
DB CR,'TIME HH:MM:SS DATE MM/DD/1980',CR,LF,'$'
DS 29
OLDSP DS 2
DS 100H
STACK DB 0