MCS-86 MACRO ASSEMBLER SCD PAGE 1 ISIS-II MCS-86 MACRO ASSEMBLER V2.1 ASSEMBLY OF MODULE SCD OBJECT MODULE PLACED IN :F0:SCD.OBJ ASSEMBLER INVOKED BY: :F0: SCD.A86 XREF LOC OBJ LINE SOURCE 1 ; 2 ; Concurrent CP/M-86 v2.0 with BDOS version 3.1 3 ; Interface for PLM-86 with separate code and data 4 ; Code org'd at 0 5 ; Created: 6 ; October 5, 1981 by Danny Horovitz 7 ; Revised: 8 ; 28 Mar 83 by Bill Fitler 9 10 name scd 11 12 dgroup group dats,stack 13 cgroup group code 14 15 assume cs:cgroup, ds:dgroup, ss:dgroup 16 ---- 17 stack segment word stack 'STACK' 0000 18 stack_base label byte ---- 19 stack ends 20 ---- 21 dats segment para public 'DATA' ;CP/M page 0 - LOC86'd at 0H 22 0004 23 org 4 0004 ?? 24 bdisk db ? 0006 25 org 6 0006 ???? 26 maxb dw ? 0050 27 org 50h 0050 ?? 28 cmdrv db ? 0051 ???? 29 pass0 dw ? 0053 ?? 30 len0 db ? 0054 ???? 31 pass1 dw ? 0056 ?? 32 len1 db ? 005C 33 org 5ch 005C (16 34 fcb db 16 dup (?) ?? ) 006C (16 35 fcb16 db 16 dup (?) ?? ) 007C ?? 36 cr db ? 007D ???? 37 rr dw ? 007F ?? 38 ro db ? 0080 (128 39 buff db 128 dup (?) ?? ) 0080 40 tbuff equ buff 0080 41 buffa equ buff 005C 42 fcba equ fcb 43 0100 44 org 100h ;past CPM data space MCS-86 MACRO ASSEMBLER SCD PAGE 2 LOC OBJ LINE SOURCE 0100 0000 45 saveax dw 0 ;save registers for mon functions 0102 0000 46 savebx dw 0 0104 0000 47 savecx dw 0 0106 0000 48 savedx dw 0 49 public bdisk,maxb,cmdrv,pass0,len0 50 public pass1,len1,fcb,fcb16,cr,rr 51 public ro,buff,tbuff,buffa,fcba 52 public saveax,savebx,savecx,savedx 53 ---- 54 dats ends 55 56 ---- 57 code segment public 'CODE' 58 public xdos,mon1,mon2,mon3,mon4 59 extrn plmstart:near 60 0000 61 org 0h ; for separate code and data 0000 EB4B90 62 jmp pastserial ; skip copyright 0003 EB7690 63 jmp patch ; store address of patch routine at start 0006 434F5059524947 64 db 'COPYRIGHT (C) 1983, DIGITAL RESEARCH ' 48542028432920 313938332C2044 49474954414C20 52455345415243 4820 002B 20434F4E435552 65 db ' CONCURRENT CP/M-86 2.0, 03/31/83 ' ; db ' MP/M-86 2.0, 10/5/81 ' 52454E54204350 2F4D2D38362032 2E302C2030332F 33312F383320 004D 66 pastserial: 004D 9C 67 pushf 004E 58 68 pop ax 004F FA 69 cli 0050 8CD9 70 mov cx,ds 0052 8ED1 71 mov ss,cx 0054 8D260000 R 72 lea sp,stack_base 0058 50 73 push ax 0059 9D 74 popf 005A E90000 E 75 jmp plmstart 76 005D 77 xdos proc 005D 55 78 push bp 005E 8BEC 79 mov bp,sp 0060 8B5604 80 mov dx,[bp+4] 0063 8B4E06 81 mov cx,[bp+6] 0066 CDE0 82 int 224 0068 A30001 R 83 mov saveax,ax 006B 891E0201 R 84 mov savebx,bx 006F 890E0401 R 85 mov savecx,cx 0073 89160601 R 86 mov savedx,dx 0077 5D 87 pop bp 0078 C20400 88 ret 4 89 xdos endp 90 MCS-86 MACRO ASSEMBLER SCD PAGE 3 LOC OBJ LINE SOURCE 005D 91 mon1 equ xdos ; no returned value 005D 92 mon2 equ xdos ; returns byte in AL 005D 93 mon3 equ xdos ; returns address or word BX 005D 94 mon4 equ xdos ; returns pointer in BX and ES 95 007B 96 patch: 007B 90 97 nop 007C 90 98 nop 007D 90 99 nop 007E 90 100 nop 0100 101 org 0100h ; leave room for patch area 102 ---- 103 code ends 104 end MCS-86 MACRO ASSEMBLER SCD PAGE 4 XREF SYMBOL TABLE LISTING ---- ------ ----- ------- NAME TYPE VALUE ATTRIBUTES, XREFS ??SEG . . . SEGMENT SIZE=0000H PARA PUBLIC BDISK . . . V BYTE 0004H DATS PUBLIC 24# 49 BUFF. . . . V BYTE 0080H DATS PUBLIC 39# 40 41 51 BUFFA . . . V BYTE 0080H DATS PUBLIC 41# 51 CGROUP. . . GROUP CODE 13# 15 CMDRV . . . V BYTE 0050H DATS PUBLIC 28# 49 CODE. . . . SEGMENT SIZE=0100H PARA PUBLIC 'CODE' 13# 57 103 CR. . . . . V BYTE 007CH DATS PUBLIC 36# 50 DATS. . . . SEGMENT SIZE=0108H PARA PUBLIC 'DATA' 12# 21 54 DGROUP. . . GROUP DATS STACK 12# 15 15 FCB . . . . V BYTE 005CH DATS PUBLIC 34# 42 50 FCB16 . . . V BYTE 006CH DATS PUBLIC 35# 50 FCBA. . . . V BYTE 005CH DATS PUBLIC 42# 51 LEN0. . . . V BYTE 0053H DATS PUBLIC 30# 49 LEN1. . . . V BYTE 0056H DATS PUBLIC 32# 50 MAXB. . . . V WORD 0006H DATS PUBLIC 26# 49 MON1. . . . L NEAR 005DH CODE PUBLIC 58 91# MON2. . . . L NEAR 005DH CODE PUBLIC 58 92# MON3. . . . L NEAR 005DH CODE PUBLIC 58 93# MON4. . . . L NEAR 005DH CODE PUBLIC 58 94# PASS0 . . . V WORD 0051H DATS PUBLIC 29# 49 PASS1 . . . V WORD 0054H DATS PUBLIC 31# 50 PASTSERIAL. L NEAR 004DH CODE 62 66# PATCH . . . L NEAR 007BH CODE 63 96# PLMSTART. . L NEAR 0000H EXTRN 59# 75 RO. . . . . V BYTE 007FH DATS PUBLIC 38# 51 RR. . . . . V WORD 007DH DATS PUBLIC 37# 50 SAVEAX. . . V WORD 0100H DATS PUBLIC 45# 52 83 SAVEBX. . . V WORD 0102H DATS PUBLIC 46# 52 84 SAVECX. . . V WORD 0104H DATS PUBLIC 47# 52 85 SAVEDX. . . V WORD 0106H DATS PUBLIC 48# 52 86 STACK . . . SEGMENT SIZE=0000H WORD STACK 'STACK' STACK_BASE. V BYTE 0000H STACK 18# 72 TBUFF . . . V BYTE 0080H DATS PUBLIC 40# 51 XDOS. . . . L NEAR 005DH CODE PUBLIC 58 77# 89 91 92 93 94 ASSEMBLY COMPLETE, NO ERRORS FOUND