mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 18:04:07 +00:00
46 lines
1.0 KiB
NASM
46 lines
1.0 KiB
NASM
; Figure 5-14
|
||
;
|
||
; CCPM
|
||
; Check if CP/M
|
||
; This subroutine determines the version number of the
|
||
; Operating System and, if not CP/M version 2, displays
|
||
; an error message and executes a warm boot.
|
||
;
|
||
; Entry and Exit Parameters
|
||
;
|
||
; None
|
||
;
|
||
; Calling sequence
|
||
;
|
||
; CALL CCPM ;Warm boots if not CP/M 2
|
||
;
|
||
B$PRINTS EQU 9 ;Display $-terminated string
|
||
B$GETVER EQU 12 ;Get version number
|
||
BDOS EQU 5 ;BDOS Entry Point
|
||
;
|
||
CR EQU 0DH ;Carriage Return
|
||
LF EQU 0AH ;Line Feed
|
||
;
|
||
CCPMM: DB CR,LF
|
||
DB 'This program can only run under CP/M version 2.'
|
||
DB CR,LF,'$'
|
||
;
|
||
;
|
||
CCPM:
|
||
MVI C,B$GETVER ;Get version number
|
||
CALL BDOS
|
||
MOV A,H ;H must be 0 for CP/M
|
||
ORA A
|
||
JNZ CCPME ;Must be MP/M
|
||
MOV A,L ;L = version number of CP/M
|
||
ANI 0F0H ;Version number in MS Nibble
|
||
CPI 20H ;Check if version 2
|
||
JNZ CCPME ;Must be an earlier version
|
||
RET ;Yes, we under CP/M version 2
|
||
;
|
||
CCPME: ;Error
|
||
MVI C,B$PRINTS ;Display error message
|
||
LXI D,CCPMM
|
||
CALL BDOS
|
||
JMP 0 ;Warm Boot
|
||
|