z80 iocs spc-1000
작성자 정보
- 삼둡 작성
- 작성일
컨텐츠 정보
- 2,243 조회
- 목록
본문
http://blog.naver.com/mayhouse 오월의집
원본을 가져왔습니다.
;************************************************************
;
; SPC-1000's IOCS Source List v1.2
;
;************************************************************
; dis80sm v1.0
;
; 소스 파일은 : iocs.bin
; 촐력된 파일은 : iocs.asm
; 어쎔블리 기종은 : SPC-1000
; 아스키코드 이외의 문자는 '.'로 하였습니다.
;
; http://blog.naver.com/mayhouse 오월의집
;************************************************************
;
;* 1.0 편집판 - 2010년 6월25일
; - 이 파일은 디스어쎔블 한 후 편집한 것입니다.
; 따라서 편집오류가 있을 수 있지요.
; - 이 파일은1.0판입니다. 만약 수정할거라면 수정내용을 1.1에 적어주세요.
;
;* 1.1 편집판 - 2011년 11월15일
; 00565 03C4 C9 WAITR: RET ;.
; 00566 ;
; 00567 03C5 5A LD E,D ;Z
; 를
; 00565 03C4 3E 5A WAITR: LD A,90 ;>Z
; 00566 ;
; 00567 03C6 3D WAIT2: DEC A ;=
; 로 바꿈.
;
;* 1.2 편집판 - 2012년 12월10일
; 컴퓨터브레인(컴브) '85년4월호를 입수하여 편집하였습니다.
; 한글 설명을 간단히 달았습니다.
; 01416 18 2E JR HOTENT;로 되어있습니다.
;
;
;
00001 ORG 00000h
00002 ;소스외부에 있는 주소용 라벨들
00003 $BASIC EQU 01418h ; HU-BASIC 시작
00004 GMODEF EQU 01C06h ; 컴브에는 0000
00005 CTOUT EQU 04558h ; 컴브에는 0000
00006 $CGBUF EQU 0554Ah ; 컴브에 $CGBUF로 있음.
00007 CGBUF2 EQU 0524Ah ; 컴브에 있음.캐릭터데이터
00008 ;
00009 ;
00010 ;
00011 ; IOCS의 주요 루틴으로 점프하는 테이블
00012 0000 C3 4A 00 JP MAIN ;.J.
00013 0003 C3 A4 06 JP INPUTF ;...
00014 0006 C3 43 08 JP CR1 ;.C.
00015 0009 C3 23 08 JP CR2 ;.#.
00016 000C C3 62 08 JP SPPRT ;.b.
00017 000F C3 02 08 JP TABPRT ;...
00018 0012 C3 64 08 JP ACCPRT ;.d.
00019 0015 C3 F3 07 JP DEPRT ;...
00020 0018 C3 F3 07 JP DEPRT ;...
00021 001B C3 62 0C JP ASCGET ;.b.
00022 001E C3 5B 0C JP BRKEY ;.[.
00023 0021 C3 80 00 JP FSAVE ;...
00024 0024 C3 B6 00 JP MSAVE ;...
00025 0027 C3 14 01 JP FLOAD ;...
00026 002A C3 34 01 JP MLOAD ;.4.
00027 002D C3 B9 01 JP MVRFY ;...
00028 0030 C3 CD 0E JP MUSIC ; MELDY
00029 0033 C3 61 00 JP NOPRET ;.CLKSET
00030 0036 00 00 TICONT: DEFW 00000H ;
00031 0038 C3 74 00 JP COUNTR ; 1/60초마다 인터럽트가 걸려 실행된다.
00032 003B C3 61 00 JP NOPRET ; CLKRD
00033 003E C3 CA 06 JP BELL ;.BELL
00034 0041 C3 95 10 JP XTEMPO ;.TEMPO
00035 0044 C3 99 10 JP SOUNDS ; MSTA
00036 0047 C3 99 10 JP SOUNDS ;.MSTAS
00037 004A 31 00 00 MAIN: LD SP,00000h ; 스위치를 켰을 경우 스택포인터및
00038 004D ED 56 IM 1 ;.텍스트화면을 설정한다.
00039 004F FB EI ;. 인터럽트를 다시 활성화
00040 0050 CD 56 00 CALL INITSB ;.V.
00041 0053 C3 18 14 JP $BASIC ;...
00042 ;
00043 0056 3E 00 INITSB: LD A,000h ;>.
00044 0058 CD 62 00 CALL IO20SB ;.b.
00045 005B CD 6B 00 CALL IO60SB ;.k.
00046 005E CD D5 0A CALL CLR ;...
00047 0061 C9 NOPRET: RET ;.
00048 ;
00049 0062 01 00 20 IO20SB: LD BC,02000h ;..
00050 0065 ED 79 OUT (C),A ;.y
00051 0067 32 EA 11 LD (IO2000),A ;2..
00052 006A C9 RET ;.
00053 ;
00054 006B 01 00 60 IO60SB: LD BC,06000h ;..`
00055 006E ED 79 OUT (C),A ;.y
00056 0070 32 E9 11 LD (IO6000),A ;2..
00057 0073 C9 RET ;.
00058 ;
00059 ;
00060 0074 E5 COUNTR: PUSH HL ; 인터럽트가 걸릴때마다 TICONT버퍼값을 1증가.
00061 0075 2A 36 00 LD HL,(TICONT) ;*6.
00062 0078 23 INC HL ;#
00063 0079 22 36 00 LD (TICONT),HL ;"6.
00064 007C E1 POP HL ;.
00065 007D FB EI ;.
00066 007E ED 4D RETI ;.M
00067 ;
00068 ;
00069 ; 파일의 FIB를 테이프에 수록
00070 ; FILE INFORMATION SAVE
00071 ;
00072 ; START ADR = FILMOD
00073 ; LENGTH = 128 BYTES
00074 ; CARRY FLAG = 1... BREAK IN
00075 ;
00076 0080 F3 FSAVE: DI ;.
00077 0081 D5 PUSH DE ;.
00078 0082 C5 PUSH BC ;.
00079 0083 E5 PUSH HL ;.
00080 0084 16 D7 LD D,0D7h ;..
00081 0086 1E CC LD E,0CCh ;..
00082 0088 21 96 13 LD HL,FILMOD ;!..
00083 008B 01 80 00 LD BC,FSAVE ;...
00084 ;
00085 008E CD 9E 03 FSAVE0: CALL CKSUM ;...
00086 0091 CD E0 02 CALL MOTON ;...
00087 0094 DA 9D 01 JP C,CLOAD4 ;...
00088 0097 7B LD A,E ;{
00089 0098 FE CC CP 0CCh ;..
00090 009A 20 11 JR NZ,FSAVE1 ; .
00091 009C CD 23 08 CALL CR2 ;.#.
00092 009F D5 PUSH DE ;.
00093 00A0 11 75 03 LD DE,WRITEM ;.u.
00094 00A3 CD F3 07 CALL DEPRT ;...
00095 00A6 11 97 13 LD DE,FILNAM ;...
00096 00A9 CD F3 07 CALL DEPRT ;...
00097 00AC D1 POP DE ;.
00098 ;
00099 00AD CD 22 04 FSAVE1: CALL WRMRK ;.".
00100 00B0 CD CE 00 CALL SAVE ;...
00101 00B3 C3 9D 01 JP CLOAD4 ;...
00102 ;
00103 ; MTADRS버퍼값을 시작번지로 하여 MTBYTE버퍼의
00104 ; 값만큼 메모리의 내용을 테이프에 수록
00105 ; BODY SAVE
00106 ;
00107 ; START ADR = (MTADRS=13AAH)
00108 ; LENGTH = (MTBYTE=13A8H)
00109 ; CARRY FLAG = 0... OK
00110 ; CARRY FLAG = 1... BREAK IN
00111 ;
00112 00B6 F3 MSAVE: DI ;.
00113 00B7 D5 PUSH DE ;.
00114 00B8 C5 PUSH BC ;.
00115 00B9 E5 PUSH HL ;.
00116 00BA 16 D7 LD D,0D7h ;..
00117 00BC 1E 53 LD E,053h ;.S
00118 00BE 2A A8 13 LD HL,(MTBYTE) ;*..
00119 00C1 E5 PUSH HL ;.
00120 00C2 C1 POP BC ;.
00121 00C3 2A AA 13 LD HL,(MTADRS) ;*..
00122 00C6 78 LD A,B ;x
00123 00C7 B1 OR C ;.
00124 00C8 CA 10 01 JP Z,SAVE4 ;...
00125 00CB C3 8E 00 JP FSAVE0 ;...
00126 ;
00127 00CE D5 SAVE: PUSH DE ;.HL-시작번지
00128 00CF C5 PUSH BC ;.BC-길이
00129 00D0 E5 PUSH HL ;.메모리에 2번 기록
00130 00D1 16 01 LD D,001h ; (1회)원래값은 002h
00131 00D3 7E SAVE1: LD A,(HL) ;~
00132 00D4 CD 0F 04 CALL WRACC ;...
00133 00D7 3E 80 LD A,080h ;>.
00134 00D9 DB 00 IN A,(000h) ;..
00135 00DB E6 12 AND 012h ;..
00136 00DD 20 04 JR NZ,SAVE0 ; .
00137 00DF 37 SCF ;7
00138 00E0 C3 10 01 JP SAVE4 ;...
00139 ;
00140 00E3 23 SAVE0: INC HL ;#
00141 00E4 0B DEC BC ;.
00142 00E5 78 LD A,B ;x
00143 00E6 B1 OR C ;.
00144 00E7 C2 D3 00 JP NZ,SAVE1 ;...
00145 00EA 2A E3 11 LD HL,(CKSMF1) ;*..
00146 00ED 7C LD A,H ;|
00147 00EE CD 0F 04 CALL WRACC ;...
00148 00F1 7D LD A,L ;}
00149 00F2 CD 0F 04 CALL WRACC ;...
00150 00F5 CD ED 03 CALL WRITEL ;...
00151 00F8 15 DEC D ;.
00152 00F9 C2 00 01 JP NZ,SAVE2 ;...
00153 00FC B7 OR A ;.
00154 00FD C3 10 01 JP SAVE4 ;...
00155 ;
00156 0100 06 00 SAVE2: LD B,000h ;..
00157 0102 CD CB 03 SAVE3: CALL WRITES ;...
00158 0105 05 DEC B ;.
00159 0106 C2 02 01 JP NZ,SAVE3 ;...
00160 0109 E1 POP HL ;.
00161 010A C1 POP BC ;.
00162 010B C5 PUSH BC ;.
00163 010C E5 PUSH HL ;.
00164 010D C3 D3 00 JP SAVE1 ;...
00165 ;
00166 0110 E1 SAVE4: POP HL ;.
00167 0111 C1 POP BC ;.
00168 0112 D1 POP DE ;.
00169 0113 C9 RET ;.
00170 ;
00171 0114 F3 FLOAD: DI ; 테이프에서 읽어 메모리로.
00172 0115 D5 PUSH DE ;.
00173 0116 C5 PUSH BC ;.
00174 0117 E5 PUSH HL ;.
00175 0118 16 D2 LD D,0D2h ;..
00176 011A 1E CC LD E,0CCh ;..
00177 011C 01 80 00 LD BC,FSAVE ;...
00178 011F 21 96 13 LD HL,FILMOD ;!..
00179 ;
00180 0122 CD E0 02 FLOAD1: CALL MOTON ;...
00181 0125 DA B3 01 JP C,CLOAD5 ;...
00182 0128 CD 91 02 CALL MKRD ;...
00183 012B DA B3 01 JP C,CLOAD5 ;...
00184 012E CD 4C 01 CALL CLOAD ;.L.
00185 0131 C3 9D 01 JP CLOAD4 ;...
00186 ;
00187 0134 F3 MLOAD: DI ; FIB에 기록된 시작번지부터 테이프에
00188 0135 D5 PUSH DE ; 수록된 프로그램을 읽어 들인다.
00189 0136 C5 PUSH BC ;.
00190 0137 E5 PUSH HL ;.
00191 0138 16 D2 LD D,0D2h ;..
00192 013A 1E 53 LD E,053h ;.S
00193 013C 2A A8 13 LD HL,(MTBYTE) ;*..
00194 013F E5 PUSH HL ;.
00195 0140 C1 POP BC ;.
00196 0141 2A AA 13 LD HL,(MTADRS) ;*..
00197 0144 78 LD A,B ;x
00198 0145 B1 OR C ;.
00199 0146 CA 9D 01 JP Z,CLOAD4 ;...
00200 0149 C3 22 01 JP FLOAD1 ;.".
00201 ;
00202 014C D5 CLOAD: PUSH DE ; BC - 카운터
00203 014D C5 PUSH BC ; HL - 저장주소
00204 014E E5 PUSH HL ; 프로그램읽기
00205 014F 26 01 LD H,001h ;&.
00206 ;
00207 0151 01 00 40 CLOAD7: LD BC,04000h ;..@
00208 0154 3E 0E LD A,00Eh ;>.
00209 0156 ED 79 OUT (C),A ;.y
00210 ;
00211 0158 CD 30 02 CLOAD0: CALL EDGE ;.0.
00212 015B DA B3 01 JP C,CLOAD5 ;...
00213 015E CD C4 03 CALL WAITR ;...
00214 0161 3E 40 LD A,040h ;>@
00215 0163 DB 01 IN A,(001h) ;..
00216 0165 E6 80 AND 080h ;..
00217 0167 CA 58 01 JP Z,CLOAD0 ;.X.
00218 016A 54 LD D,H ;T
00219 016B 21 00 00 LD HL,00000h ;!..
00220 016E 22 E3 11 LD (CKSMF1),HL ;"..
00221 0171 E1 POP HL ;.
00222 0172 C1 POP BC ;.
00223 0173 C5 PUSH BC ;.
00224 0174 E5 PUSH HL ;.
00225 ;
00226 0175 CD 59 02 CLOAD1: CALL VBLOAD ;.Y.
00227 0178 DA B3 01 JP C,CLOAD5 ;...
00228 017B 77 LD (HL),A ;w
00229 017C 23 INC HL ;#
00230 017D 0B DEC BC ;.
00231 017E 78 LD A,B ;x
00232 017F B1 OR C ;.
00233 0180 C2 75 01 JP NZ,CLOAD1 ;.u.
00234 0183 2A E3 11 LD HL,(CKSMF1) ;*..
00235 0186 CD 59 02 CALL VBLOAD ;.Y.
00236 0189 DA B3 01 JP C,CLOAD5 ;...
00237 018C 5F LD E,A ;_
00238 018D CD 59 02 CALL VBLOAD ;.Y.
00239 0190 DA B3 01 JP C,CLOAD5 ;...
00240 0193 BD CP L ;.
00241 0194 C2 A5 01 JP NZ,CLOAD2 ;...
00242 0197 7B LD A,E ;{
00243 0198 BC CP H ;.
00244 0199 C2 A5 01 JP NZ,CLOAD2 ;...
00245 ;
00246 019C AF CLOAD8: XOR A ;.
00247 ;
00248 019D E1 CLOAD4: POP HL ;.
00249 019E C1 POP BC ;.
00250 019F D1 POP DE ;.
00251 01A0 CD 44 03 CALL MOTCH ;.D.
00252 01A3 FB EI ;.
00253 01A4 C9 RET ;.
00254 ;
00255 01A5 15 CLOAD2: DEC D ;.
00256 01A6 CA AD 01 JP Z,CLOAD3 ;...
00257 01A9 62 LD H,D ;b
00258 01AA C3 51 01 JP CLOAD7 ;.Q.
00259 ;
00260 01AD 3E 01 CLOAD3: LD A,001h ;>.
00261 01AF 37 SCF ;7
00262 01B0 C3 9D 01 JP CLOAD4 ;...
00263 ;
00264 01B3 3E 02 CLOAD5: LD A,002h ;>.
00265 01B5 37 SCF ;7
00266 01B6 C3 9D 01 JP CLOAD4 ;...
00267 ;
00268 01B9 F3 MVRFY: DI ; 메모리내용과 테이프를 비교하여
00269 01BA D5 PUSH DE ; 다르면 캐리플래그 세트.
00270 01BB C5 PUSH BC ;.
00271 01BC E5 PUSH HL ;.
00272 01BD 2A A8 13 LD HL,(MTBYTE) ;*..
00273 01C0 E5 PUSH HL ;.
00274 01C1 C1 POP BC ;.
00275 01C2 2A AA 13 LD HL,(MTADRS) ;*..
00276 01C5 16 D2 LD D,0D2h ;..
00277 01C7 1E 53 LD E,053h ;.S
00278 01C9 78 LD A,B ;x
00279 01CA B1 OR C ;.
00280 01CB CA 9D 01 JP Z,CLOAD4 ;...
00281 01CE CD 9E 03 CALL CKSUM ;...
00282 01D1 CD E0 02 CALL MOTON ;...
00283 01D4 DA B3 01 JP C,CLOAD5 ;...
00284 01D7 CD 91 02 CALL MKRD ;...
00285 01DA DA B3 01 JP C,CLOAD5 ;...
00286 01DD CD E3 01 CALL MVRFY1 ;...
00287 01E0 C3 9D 01 JP CLOAD4 ;...
00288 ;
00289 01E3 D5 MVRFY1: PUSH DE ;.
00290 01E4 C5 PUSH BC ;.
00291 01E5 E5 PUSH HL ;.
00292 01E6 26 02 LD H,002h ;&.
00293 ;
00294 01E8 01 00 40 MVRFYN: LD BC,04000h ;..@
00295 01EB 3E 0E LD A,00Eh ;>.
00296 01ED ED 79 OUT (C),A ;.y
00297 ;
00298 01EF CD 30 02 MVRFY2: CALL EDGE ;.0.
00299 01F2 DA B3 01 JP C,CLOAD5 ;...
00300 01F5 CD C4 03 CALL WAITR ;...
00301 01F8 3E 40 LD A,040h ;>@
00302 01FA DB 01 IN A,(001h) ;..
00303 01FC E6 80 AND 080h ;..
00304 01FE CA EF 01 JP Z,MVRFY2 ;...
00305 0201 54 LD D,H ;T
00306 0202 E1 POP HL ;.
00307 0203 C1 POP BC ;.
00308 0204 C5 PUSH BC ;.
00309 0205 E5 PUSH HL ;.
00310 ;
00311 0206 CD 59 02 MVRFY3: CALL VBLOAD ;.Y.
00312 0209 DA B3 01 JP C,CLOAD5 ;...
00313 020C BE CP (HL) ;.
00314 020D C2 AD 01 JP NZ,CLOAD3 ;...
00315 0210 23 INC HL ;#
00316 0211 0B DEC BC ;.
00317 0212 78 LD A,B ;x
00318 0213 B1 OR C ;.
00319 0214 C2 06 02 JP NZ,MVRFY3 ;...
00320 0217 2A E5 11 LD HL,(CKSMF2) ;*..
00321 021A CD 59 02 CALL VBLOAD ;.Y.
00322 021D BC CP H ;.
00323 021E C2 AD 01 JP NZ,CLOAD3 ;...
00324 0221 CD 59 02 CALL VBLOAD ;.Y.
00325 0224 BD CP L ;.
00326 0225 C2 AD 01 JP NZ,CLOAD3 ;...
00327 0228 15 DEC D ;.
00328 0229 CA 9C 01 JP Z,CLOAD8 ;...
00329 022C 62 LD H,D ;b
00330 022D C3 E8 01 JP MVRFYN ;...
00331 ;
00332 0230 EDGE: ; 테이프에서 1BYTE읽어 A레지로.(230~290)
00333 0230 3E 80 MVRFY4: LD A,080h ;>.
00334 0232 DB 00 IN A,(000h) ;..
00335 0234 E6 12 AND 012h ;..
00336 0236 C2 3B 02 JP NZ,MVRFY5 ;.;.
00337 0239 37 SCF ;7
00338 023A C9 RET ;.
00339 ;
00340 023B 3E 40 MVRFY5: LD A,040h ;>@
00341 023D DB 01 IN A,(001h) ;..
00342 023F E6 80 AND 080h ;..
00343 0241 C2 30 02 JP NZ,MVRFY4 ;.0.
00344 ;
00345 0244 3E 80 MVRFY6: LD A,080h ;>.
00346 0246 DB 00 IN A,(000h) ;..
00347 0248 E6 12 AND 012h ;..
00348 024A C2 4F 02 JP NZ,MVRFY7 ;.O.
00349 024D 37 SCF ;7
00350 024E C9 RET ;.
00351 ;
00352 024F 3E 40 MVRFY7: LD A,040h ;>@
00353 0251 DB 01 IN A,(001h) ;..
00354 0253 E6 80 AND 080h ;..
00355 0255 CA 44 02 JP Z,MVRFY6 ;.D.
00356 0258 C9 RET ;.
00357 ;
00358 0259 C5 VBLOAD: PUSH BC ;.
00359 025A D5 PUSH DE ;.
00360 025B E5 PUSH HL ;.
00361 025C 21 00 08 LD HL,00800h ;!..
00362 025F 01 00 40 LD BC,04000h ;..@
00363 0262 3E 0E LD A,00Eh ;>.
00364 0264 ED 79 OUT (C),A ;.y
00365 0266 CD 30 02 VBLOD1: CALL EDGE ;.0.
00366 0269 DA 8D 02 JP C,VBLOD3 ;...
00367 026C CD C4 03 CALL WAITR ;...
00368 026F 3E 40 LD A,040h ;>@
00369 0271 DB 01 IN A,(001h) ;..
00370 0273 E6 80 AND 080h ;..
00371 0275 CA 82 02 JP Z,VBLOD2 ;...
00372 0278 E5 PUSH HL ;.
00373 0279 2A E3 11 LD HL,(CKSMF1) ;*..
00374 027C 23 INC HL ;#
00375 027D 22 E3 11 LD (CKSMF1),HL ;"..
00376 0280 E1 POP HL ;.
00377 0281 37 SCF ;7
00378 ;
00379 0282 7D VBLOD2: LD A,L ;}
00380 0283 17 RLA ;.
00381 0284 6F LD L,A ;o
00382 0285 25 DEC H ;%
00383 0286 C2 66 02 JP NZ,VBLOD1 ;.f.
00384 0289 CD 30 02 CALL EDGE ;.0.
00385 028C 7D LD A,L ;}
00386 ;
00387 028D E1 VBLOD3: POP HL ;.
00388 028E D1 POP DE ;.
00389 028F C1 POP BC ;.
00390 0290 C9 RET ;.
00391 ;
00392 0291 C5 MKRD: PUSH BC ; 파일헤드인식자 찾기
00393 0292 D5 PUSH DE ;.
00394 0293 E5 PUSH HL ;.
00395 0294 21 28 28 LD HL,02828h ; 갯수
00396 0297 7B LD A,E ;{
00397 0298 FE CC CP 0CCh ;..
00398 029A CA A0 02 JP Z,MKRD1 ;...
00399 029D 21 14 14 LD HL,01414h ; 갯수
00400 ;
00401 02A0 22 E7 11 MKRD1: LD (MKLEN),HL ;"..
00402 02A3 01 00 40 LD BC,04000h ;..@
00403 02A6 3E 0E LD A,00Eh ;>.
00404 02A8 ED 79 OUT (C),A ;.y
00405 02AA 2A E7 11 MKRD4: LD HL,(MKLEN) ;*..
00406 ;
00407 02AD CD 30 02 MKRD5: CALL EDGE ;.0.
00408 02B0 DA DC 02 JP &nbs
관련자료
-
첨부등록일 2024.08.05 11:40
-
이전작성일 2024.08.05 12:05
-
다음