mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 09:54:20 +00:00
Upload
Digital Research
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
CP/M ASM86 1.1 SOURCE: BOOT.A86 PAGE 1
|
||||
|
||||
1
|
||||
2 ;****************************************************************
|
||||
3 ;* *
|
||||
4 ;* BOOT SECTOR FOR IBM PC *
|
||||
5 ;* *
|
||||
6 ;****************************************************************
|
||||
7
|
||||
8 00A0 min_mem equ 160 ;minimum memory in K
|
||||
9 2600 load_track_segment equ 2600H ;at 152K mark
|
||||
10
|
||||
11 ;Check for at least 160K being present in the IBM PC.
|
||||
12 ;Use last 8K of 160K minimum memory for loader.
|
||||
13 ;Since track is 4K we have 4K extra past the Loader for
|
||||
14 ;disk buffer space and other unitialized storage
|
||||
15 ;used by the Loader.
|
||||
16
|
||||
17 ;Note: that wherever it is decided to place the loader, the IBM PC
|
||||
18 ;cannot read over a 64K page boundary.
|
||||
19
|
||||
20 ;the command:
|
||||
21 ;GENCMD BOOT 8080
|
||||
22 ;is used for this module
|
||||
23
|
||||
24 B000 bw_video_ram equ 0b000h ;where to print an
|
||||
25 B800 color_video_ram equ 0b800h ;error message
|
||||
26
|
||||
27 2620 cseg load_track_segment + 20H ;add 20H to get to sector 2
|
||||
28 loader: ;where the Loader starts
|
||||
29
|
||||
30 0000 cseg 0
|
||||
31 org 0 ;The IBM ROM sets up
|
||||
32 ;SS=30H and SP is 80H: stack is in
|
||||
33 ;the interrupt vectors.
|
||||
34 0000 CD12 int 12H ;get memory size
|
||||
35 0002 3DA000 cmp ax,min_mem
|
||||
36 0005 7302 0009 jnb get_track_0
|
||||
37 0007 EB1B 0024 jmps mem_error
|
||||
38
|
||||
39 get_track_0:
|
||||
40 0009 33DB xor bx,bx ;set up call to ROM diskette read
|
||||
41 000B B80026 mov ax,load_track_segment
|
||||
42 000E 8EC0 mov es,ax ;ES:BX transfer location
|
||||
43 0010 B80802 mov ax,0208h ;AH=2=read,AL=8=sectors to read
|
||||
44 0013 B90100 mov cx,0001h ;CH=0=track,CL=1=sector
|
||||
45 0016 BA0000 mov dx,0000h ;DH=0=head #,DL=0=drive #
|
||||
46 0019 CD13 int 13H ;call ROM diskette entry
|
||||
47 001B 7302 001F jnc track_ok
|
||||
48 001D EB0D 002C jmps track_error
|
||||
49
|
||||
50 track_ok:
|
||||
51 001F EA00002026 jmpf loader
|
||||
52
|
||||
53 mem_error:
|
||||
CP/M ASM86 1.1 SOURCE: BOOT.A86 PAGE 2
|
||||
|
||||
54
|
||||
55 0024 B92400 mov cx,length mem_msg
|
||||
56 0027 BE5000 mov si,offset mem_msg
|
||||
57 002A EB06 0032 jmps prt_msg
|
||||
58
|
||||
59 track_error:
|
||||
60 002C B91500 mov cx,length trk_msg
|
||||
61 002F BE7400 mov si,offset trk_msg
|
||||
62 ;jmps prt_msg
|
||||
63
|
||||
64 prt_msg:
|
||||
65 0032 B800B0 mov ax,bw_video_ram
|
||||
66 0035 CD11 int 11H ;get equipment information
|
||||
67 0037 2430 and al,00110000b ;get video bits
|
||||
68 0039 3C30 cmp al,30H
|
||||
69 003B 7403 0040 je do_msg
|
||||
70 003D B800B8 mov ax,color_video_ram
|
||||
71 do_msg:
|
||||
72 0040 8EC0 mov es,ax
|
||||
73 0042 8CC8 mov ax,cs
|
||||
74 0044 8ED8 mov ds,ax
|
||||
75 0046 33FF xor di,di
|
||||
76 0048 B407 mov ah,07H ;normal display attribute
|
||||
77 prt_loop:
|
||||
78 004A AC lodsb
|
||||
79 004B AB stosw
|
||||
80 004C E2FC 004A loop prt_loop
|
||||
81 004E FA cli
|
||||
82 004F F4 hlt
|
||||
83
|
||||
84
|
||||
85 0050 last_code_offset equ offset $
|
||||
86 dseg
|
||||
87 org last_code_offset
|
||||
88
|
||||
89 0050 4E6F7420656E mem_msg db 'Not enough memory present for loader'
|
||||
90 6F756768206D
|
||||
91 656D6F727920
|
||||
92 70726573656E
|
||||
93 7420666F7220
|
||||
94 6C6F61646572
|
||||
95 0074 43616E277420 trk_msg db 'Can''t read boot track'
|
||||
96 726561642062
|
||||
97 6F6F74207472
|
||||
98 61636B
|
||||
99
|
||||
100 org 512 - 1 ;force even sector size
|
||||
101 01FF 00 db 0
|
||||
102
|
||||
103
|
||||
104 END OF ASSEMBLY. NUMBER OF ERRORS: 0. USE FACTOR: 1%
|
||||
CP/M ASM86 1.1 SOURCE: BOOT.A86 PAGE 003
|
||||
|
||||
BWVIDEORAM B000 N 24# 65
|
||||
COLORVIDEORAM B800 N 25# 70
|
||||
CS SREG V 73
|
||||
DOMSG 0040 L 69 71#
|
||||
DS SREG V 74
|
||||
ES SREG V 42 72
|
||||
GETTRACK0 0009 L 36 39#
|
||||
LASTCODEOFFSET 0050 N 85# 87
|
||||
LOADER 0000 L 28# 51
|
||||
LOADTRACKSEGMENT 2600 N 9# 27 41
|
||||
MEMERROR 0024 L 37 53#
|
||||
MEMMSG 0050 V 55 56 89#
|
||||
MINMEM 00A0 N 8# 35
|
||||
PRTLOOP 004A L 77# 80
|
||||
PRTMSG 0032 L 57 64#
|
||||
SS SREG V
|
||||
TRACKERROR 002C L 48 59#
|
||||
TRACKOK 001F L 47 50#
|
||||
TRKMSG 0074 V 60 61 95#
|
||||
Reference in New Issue
Block a user