Changes

Jump to: navigation, search

Graduate Software

785 bytes added, 16:00, 28 April 2018
/* Notes */
1. Utility ROM 1 has this description: "Graduate (C)1988 CP/M Accessory Rom 1\r\n$VER 2.30 "
2. Code is copied from &c000-&c100 to &3f00-&4000 in RAM.
;; HL = address of directory entry ;; A = rom number 0070 32be3f ld (3fbeh),a;; ROM number store to RAM
0073 e5 push hl
0074 dde1 pop ix
0076 2afefb ld hl,(0fbfeh)
0079 113400 ld de,0034h
007c 19 add hl,de
007d 118c3f ld de,3f8ch;; address to call to load file from ROM
0080 73 ld (hl),e
0081 23 inc hl
0082 72 ld (hl),d
0083 2afefb ld hl,(0fbfeh)
0086 111000 ld de,0010h
0089 0e3b ld c,3bh
008b e9 jp (hl)
008c dd6e00 ld l,(ix+00h);; load address
008f dd6601 ld h,(ix+01h)
0092 dd4e02 ld c,(ix+02h);; length
0095 dd4603 ld b,(ix+03h)
0098 110001 ld de,0100h ;; load address for .COM file 009b cdbf3f call 3fbfh ;; read byte from rom 009e 12 ld (de),a ;; write to memory
009f 13 inc de
00a0 23 inc hl
00a4 20f5 jr nz,009bh
00a6 1eff ld e,0ffh;; error code in H 00a8 0e2d ld c,2dh ;; F_ERRMODE - set action on hardware error
00aa cd0500 call 0005h
00ad 3aaffb ld a,(0fbafh)
00b0 5f ld e,a
00b1 0e0e ld c,0eh;; select disc
00b3 cd0500 call 0005h
00b6 1e00 ld e,00h
00b8 0e2d ld c,2dh;; F_ERRMODE - set action on hardware error
00ba cd0500 call 0005h
00bd c9 ret
00be 00 nop ;; storage for ROM number  ;; read byte from ROM
00bf c5 push bc
00c0 3abe3f ld a,(3fbeh)
00c8 c9 ret
;; HL = address to read from ROM
;; C = rom number
;; BC' = 7F80 port number
00c9 f3 di
00ca c5 push bc
00cb d9 exx
00cc cb99 res 3,c ;; enable upper rom
00ce ed49 out (c),c
00d0 d9 exx
00d1 06df ld b,0dfh;; select ROM
00d3 ed49 out (c),c
00d5 7e ld a,(hl);; read byte from ROM
00d6 d9 exx
00d7 cbd9 set 3,c ;; disable upper rom
00d9 ed49 out (c),c
00db d9 exx
00dd c1 pop bc
00de c9 ret
;; used?;; BC = 7F8x with bit 3 clear. bits 1,0 are mode.;; HL = address to read from ROM 00df ed49 out (c),c;; must enable ROM
00e1 d9 exx
00e2 06df ld b,0dfh;; select ROM
00e4 ed49 out (c),c
00e6 7e ld a,(hl);; read from rom
00e7 d9 exx
00e8 cbd9 set 3,c ;; disable ROM again
00ea ed49 out (c),c
00ec d9 exx
2,541
edits