|
DataMuseum.dkPresents historical artifacts from the history of: Jet Computer Jet80 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Jet Computer Jet80 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 5376 (0x1500) Types: TextFile Names: »MO6OH.MAC«
└─⟦122ca995a⟧ Bits:30005902 Move-IT arbejdsdiskette └─ ⟦this⟧ »MO6OH.MAC«
.Z80 ; DPORT EQU 0 SPORT EQU 1 ASEG ; ; CUSTOM MOV-BIOS SKELETON FOR MOVE-IT (12/1/81) ; ; ; WRITTEN BY: JEFF WOOLF ; WOOLF SOFTWARE SYSTEMS ; 23842 ARCHWOOD ST. ; CANOGA PARK, CA 91307 ORG 100H BIOS EQU $ ;THIS IS THE USER'S BIOS!!! START: JP 0302H ;THE WAY TO THE PROGRAM JP 4000H ;END OF USER SECTION JP INITI ;COMLINE INIT. JP FINISH ;COMLINE DE-INIT. JP INSTA ;COMLINE STATUS JP INDAT ;COMLINE DATA INPUT JP OUTSTA ;COMLINE OUTPUT STATUS JP OUTDAT ;COMLINE OUTPUT DATA JP CNFGMS ;POINT TO THE CONFIGURATION MESSAGE JP DIAL ;AUTO-DIAL/ANSWER SUPPORT ; THE CONFIG MESSAGE IS 80 CHARACTERS LONG, PLUS A CR AND TWO LFS CNFGMS: DB ' ' DB '2 METER INTERFACE BY OZ1CJO & OZ8ET' DB 0DH,0AH,0AH,'$' INITI: ;INIT. COMLINE (NO ENTRY,EXIT PARMS) ; ----- ANY CODE THE SYSTEM NEEDS TO INITIALIZE THE COMLINE ----- ; ----- SHOULD BE ADDED HERE ----- CALL RESRTS CALL HANGUP RET FINISH: ;DE-INIT. COMLINE (NO ENTRY,EXIT PARMS) ; ----- ANY CODE THE SYSTEM NEEDS TO RUN -- INITIALIZE THE COMLINE ----- ; ----- SHOULD BE ADDED HERE ----- CALL RESRTS RET INSTA: ;INPUT STATUS (A=FF IF CHAR READY,0 IF NOT) ; ADD A ROUTINE TO READ THE STATUS OF THE INPUT PORT HERE ; USE ANY REGISTERS YOU LIKE, AND UPON EXIT, SET THE A REG ; TO 0FFH IF A CHARACTER IS WAITING, OR TO 0 IF NOT LD HL,(DIRFLG) ; GET DIRFLG LD A,H ; TEST FOR ZERO OR L JR Z,ISTA ; CHECK STATUS IF SO DEC HL ; DECREMENT DIRFLG IN A,(DPORT) ; LD (DIRFLG),HL ; RESTORE DIRFLG LD A,H ; TEST FOR ZERO NOW! OR L JR NZ,INRDY ; FLAG 'NOT READY' IF NOT CALL RESRTS ; RESET RTS LD A,(RXL) ; LENGTH OF CHECKSTRING LD (FLAG),A ; STORE IN REMAINING LENGTH ISTA: LD A,(FLAG) ; GET REMAINING LENGTH OR A ; ZERO? JR Z,ISTA1 ; YES - GO NORMAL LD C,A ; ELSE MAKE 16 BIT LD B,0 LD HL,RXMSG ; ADDR OF MSG. XOR A ; RESET C-FLAG SBC HL,BC ; SUBTRACT LD A,(RXL) LD C,A ; GET LENGTH LD B,0 ; MAKE 16 BIT ADD HL,BC ; CALCULATE LOCATION OF MSG CALL ISTA1 ; CHECK STATUS OR A ; STATUS RDY? RET Z ; RETURN IF NO IN A,(DPORT) ; GET INPUT CP (HL) ; SAME AS EXPECTED? JR Z,LAB1 ; YES - DECREMENT LD A,(RXL) ; ELSE GET OLD LENGTH LD (FLAG),A ; PUT IN FLAG JR INRDY ; RETURN NOT RDY LAB1: LD A,(FLAG) ; GET REST LENGTH DEC A ; DECREMENT LD (FLAG),A ; RESTORE JR INRDY ; RETURN NOT RDY ISTA1: IN A,(SPORT) BIT 0,A JR Z,INRDY LD A,0FFH RET INRDY: XOR A RET ; ; FLAG: DB MSGEXT-RXMSG RXL: DB MSGEXT-RXMSG RXMSG: DB 0DH,0AH MSGEXT: DB '6OH' CALEND: INDAT: ; RETURN THE CARACTER IN THE A REGISTER (DO NOT CHANGE THE ; CHARACTER IN ANY WAY! IN A,(DPORT) RET OUTSTA: ;OUTPUT STATUS (A=FF IF RDY FOR CHAR, 0 IF NOT) ; ADD A ROUTINE TO READ THE STATUS OF THE OUTPUT PORT HERE. ; USE ANY REGISTERS YOU LIKE, AND, UPON EXIT, SET THE A REG ; TO 0FFH IF THE DATA PORT IS READY TO SEND DATA, OR TO 0 IF ; NOT. LD HL,(DIRFLG) ; GET DIRFLG LD A,H ; TEST FOR ZERO OR L JR NZ,OSTA ; IF NOT - CHECK STATUS CALL SETRTS ; SETRTS LD B,06H ; SET DELAY-VALUE CALL DELAY ; DELAY LD A,(TXL) LD B,A LD HL,TXMSG CALL TXHDR OSTA: LD HL,1000H ; SET DIRFLG-VALUE LD (DIRFLG),HL ; RESTORE DIRFLG IN A,(SPORT) BIT 2,A JR Z,ONRDY LD A,0FFH RET ONRDY: XOR A RET TXHDR: PUSH HL TXH1: CALL OSTA OR A JR Z,TXH1 POP HL LD A,(HL) OUT (DPORT),A INC HL DJNZ TXHDR RET TXL: DB TXMEXT-TXMSG TXMSG: DB 0DH,0DH,0DH,0DH,0DH,0DH,'DE OZ6OH',0DH,0AH TXMEXT: DS 10H,00H OUTDAT: ;OUTPUT DATA (CHAR IN A ON ENTRY) ; ADD A ROUTINE TO OUTPUT THE CHARACTER IN THE A REGISTER TO ; THE DATA PORT. OUT (DPORT),A RET DIRFLG: DW 0 DIAL: ;AUTO DIAL/ANSWER SUPPORT ; ; UPON ENTRY, B=0 FOR DIALING, 1 FOR HANGING UP, ; OR 2 FOR ANSWERING ; ; IF B=0 (DIALING), HL POINTS TO THE DIALING STRING, ; TERMINATED BY A COMMA, CR, OR CONTROL-Z ; LD A,2 CP B JR Z,ANSW DEC A CP B JR Z,HANGUP DIALIN: PUSH HL PUSH HL DIALI0: LD B,10H LD A,(HL) CP '0' JR Z,DIL0 JR C,DIALI1 CP ':' JP C,NLET RES 5,(HL) NLET: INC HL DJNZ DIALI0 DIL0: LD A,TXMEXT-TXMSG LD (TXL),A POP HL POP HL RET DIALI1: POP BC XOR A SBC HL,BC LD B,H LD C,L LD A,TXMEXT-TXMSG ADD A,C LD (TXL),A POP HL LD DE,TXMEXT LDIR CALL ANSW RET HANGUP: LD A,TXMEXT-TXMSG LD (TXL),A LD DE,SRMSG CALL PUTDE LD A,CALEND-RXMSG LD (RXL),A LD (FLAG),A RET ANSW: LD DE,GRMSG CALL PUTDE LD A,MSGEXT-RXMSG LD (RXL),A LD (FLAG),A RET SETRTS: LD A,15H OUT (SPORT),A LD A,0EAH OUT (SPORT),A RET RESRTS: ; RELEASE RTS, AND RETURN. LD A,11H OUT (SPORT),A IN A,(SPORT) BIT 0,A JR Z,RESRTS LD A,15H OUT (SPORT),A LD A,0E8H OUT (SPORT),A RET ; putde: ld c,9 call 5 ld de,crlf ld c,9 jp 5 ; DELAY: PUSH BC LD B,0 DEL1: PUSH BC LD B,40H DEL0: PUSH BC POP BC DJNZ DEL0 POP BC DJNZ DEL1 POP BC DJNZ DELAY RET ; srmsg: db 'Recieve selective.$' grmsg: db 'Recieve general.$' crlf: db 13,10,'$' DS 300H-$ ; END «eof»