XMODEM, YMODEM, ZMODEM 프로토콜을 이용한 파일 전송 윈도우즈 프로그램

출처: http://www.extraputty.com/features/zmodem.html

sz_tz_zmodem.zip

1990년대 PC통신에 접속해서 파일 업/다운로드 시에 사용된 프로토콜인
XMODEM, YMODEM, ZMODEM 이용한 파일 송/수신 윈도우즈용 프로그램.

C:\Users\user>C:\Temp\rz.exe -help
C:\Temp\rz.exe version
Usage: C:\Temp\rz.exe [options] [filename.if.xmodem]
Receive files with ZMODEM/YMODEM/XMODEM protocol
    (X) = option applies to XMODEM only
    (Y) = option applies to YMODEM only
    (Z) = option applies to ZMODEM only
  -+, --append                append to existing files
  -a, --ascii                 ASCII transfer (change CR/LF to LF)
  -b, --binary                binary transfer
  -B, --bufsize N             buffer N bytes (N==auto: buffer whole file)
  -c, --with-crc              Use 16 bit CRC (X)
  -C, --allow-remote-commands allow execution of remote commands (Z)
  -D, --null                  write all received data to /dev/null
      --delay-startup N       sleep N seconds before doing anything
  -e, --escape                Escape control characters (Z)
  -E, --rename                rename any files already existing
      --errors N              generate CRC error every N bytes (debugging)
  -h, --help                  Help, print this usage message
  -m, --min-bps N             stop transmission if BPS below N
  -M, --min-bps-time N          for at least N seconds (default: 120)
  -O, --disable-timeouts      disable timeout code, wait forever for data
      --o-sync                open output file(s) in synchronous write mode
  -p, --protect               protect existing files
  -q, --quiet                 quiet, no progress reports
  -r, --resume                try to resume interrupted file transfer (Z)
  -R, --restricted            restricted, more secure mode
  -s, --stop-at {HH:MM|+N}    stop transmission at HH:MM or in N seconds
  -S, --timesync              request remote time (twice: set local time)
      --syslog[=off]          turn syslog on or off, if possible
  -t, --timeout N             set timeout to N tenths of a second
  -u, --keep-uppercase        keep upper case filenames
  -U, --unrestrict            disable restricted mode (if allowed to)
  -v, --verbose               be verbose, provide debugging information
  -w, --windowsize N          Window is N bytes (Z)
  -X  --xmodem                use XMODEM protocol
  -y, --overwrite             Yes, clobber existing file if any
      --ymodem                use YMODEM protocol
  -Z, --zmodem                use ZMODEM protocol
카테고리: Application, Programming | 태그: , , , | 댓글 한 개

PCem with MT-32 Emulator

DosBox와는 지향하는 바가 다른 고전 PC 에뮬레이터 PCem 이 날로 발전중임.
아래는 PCem 과 MT-32 Emulator를 이용하여 도스 게임에서 MT-32 음원을 들어보는 방법을 적음.

1. MT-32 Emulator (Munt) 설치

현재 최신버전 1.5.0 (munt-1.5.0-win32.exe) 을 다운받아 설치한다.
http://sourceforge.net/projects/munt/files/munt/1.5.0/Win32/

다음 드라이버 업데이트를 받아 설치한다.
http://sourceforge.net/projects/munt/files/munt/1.5.0-Updates/

64비트 Windows: mt32emu_win32drv-1.1.1-amd64.zip
32비트 Windows: mt32emu_win32drv-1.1.1-win32.zip

1

다음 Munt 를 실행한다.

2

MT-32 롬파일들을 구글링하여 다운 받은후.. 디렉토리를 추가해준다.

3

2. PCem 사운드 카드 셋팅

4

이렇게 사운드 카드를 셋팅후 PCem을 재 부팅하면 윈도우즈 하단에 Munt가 붙었단 메세지가 나옴.

5

3. SoftMPU 설치

이제 도스용 SoftMPU 를 설치함. 아래에서 다운을 받고.
http://bjt42.github.io/softmpu/

다음 PCem 하드로 복사함.
그리고 아래와 같이 Autoexec.bat를 셋팅.

6

다음 PCem을 재부팅하면 아래와 같이 SoftMPU와 Munt가 연결됨.

7

4. MT-32 지원 도스 게임 플레이.

이제 도스 게임중 MT-32가 지원되는 게임을 찾아 사운드 셋팅을 MT-32 로 변경해서 플레이함.

카테고리: Dos, Emulator | 태그: , , , , , | 댓글 남기기

CentOS 에서 USB 하드 마운트 시키기

우선 USB 하드를 꼽고, fdisk -l을 입력함.

% fdisk -l
...
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x03f92b08

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1      121602   976762528    7  HPFS/NTFS
...

다음 마운트해본다.

% mount /dev/sdb1 /home/usb
mount: unknown filesystem type

ntfs 파일 시스템을 인식못함.

% yum install -y yum-priorities 
% vim /etc/yum/pluginconf.d/priorities.conf
[main]
enabled = 1
check_obsoletes = 1 <-- 추가
priority = 2 <-- 추가

다음 아래 싸이트에 가서 내 시스템에 맞는 rpm을 설치한다.
http://pkgs.repoforge.org/rpmforge-release/

% rpm -ivh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
% yum check-update
% yum install fuse fuse-ntfs-3g dkms dkms-fuse

이제 마운트해본다.

% mount /dev/sdb1 /home/usb
카테고리: Linux | 태그: , , | 댓글 남기기

Luna port to Windows 7 Aero

윈도우즈 XP의 루나 테마를 윈도우즈 7으로 포팅한 테마.

luna_port_to_windows_7__aero__by_satukoro-d29jj6z.rar

카테고리: Windows | 태그: , | 댓글 남기기

리눅스 드라이버의 물리주소와 가상 주소

출처: http://chammoru.egloos.com/v/4168312

다른 프로세스의 메모리 공간 접근
프로세스가 시스템 호출을 통해 커널 모드로 진입하면 프로세스 메모리 공간은 커널의 메모리 공간으로 바뀐다. 커널 모드 상태의 프로세스는 수퍼바이저 권한을 갖기 때문에 시스템 내의 모든 메모리 공간에 접근할 수 있다. 그래서 이 경우에는 다른 프로세스의 메모리 공간에 접근할 수 있는데, 이때 직접 접근은 안 되고, VM에서 제공하는 특정 함수를 통해 접근할 수 있다.

리눅스 메모리 관리
. PGD (Page Directory) : pgt_t
. PMD (Page Mid level Directory) : pmd_t
. PTE (Page Table Entry) : pte_t
* 참고 : PMD는 대부분의 리눅스 시스템에 형식적으로만 존재.

물리 주소 공간을 커널 주소 공간으로 매핑
Memory Mapped I/O 방식의 물리적 주소 공간을 커널에서 사용 가능한 가상 주소로 매핑하거나 해제할 때는 다음과 같은 함수 사용한다.

// 아래 두 함수가 성공적으로 mapping되면 가상 주소의 선두 주소가 반환
void * ioremap(unsigned long offset, unsigned long size); // offset이 물리주소, size는 PAGE_SIZE의 배수
void * ioremap_nocache(unsigned long offset, unsigned long size); // offset이 물리주소, size는 PAGE_SIZE의 배수
void iounmap(void * addr); // addr은 가상주소

I/O 물리 주소와 가상 주소간의 변환 함수
리눅스 커널은 부팅 단계에서 시스템을 제어하기 위해 사용하는 시스템의 모든 I/O 제어 물리 주소나 램 영역의 물리 주소를 MMU 테이블로 미리 작성한다. 이렇게 부팅 단계에서 고정되어 할당된 메모리 주소 영역을 예약 영역(reserved area)이라고 한다. 예약된 물리 주소 영역은 PAGE_OFFSET 매크로 상수값을 이용해 물리 주소와 가상 주소간에 변환을 한다. 상수 연산만으로 물리 주소를 가상 주소로 만들기 위해 사용하는 상수와 매크로는 #include 에 정의된다.

부팅 시 예약된 주소 공간 이외에 ioremap(), kmalloc() 함수에서 반환하는 가상 주소도 PAGE_OFFSET을 이용해 물리 주소와 가상 주소로 변한된다. 이 매크로 상수를 이용하여 주소 변환을 하는 함수들은 다음과 같다.

unsigned long virt_to_phys(volatile void * address);
void * phys_to_virt(unsigned long address);
unsigned long virt_to_bus(volatile void * address);
void * bus_to_virt(unsigned long address);

virt_to_phys(), phys_to_virt()
virt_to_phys() 함수는 가상 주소를 물리 주소로 바꾸고, phys_to_virt() 함수는 물리 주소를 가상 주소로 바꾼다. 그러나 phys_to_virt() 함수는 ioremap()함수와 같은 기능을 수행하지 않는다. ioremap()함수는 요구된 물리 주소로 시작하는 영역을 커널 모드에서 사용할 수 있도록 가상 주소 공간으로 등록하지만, phys_to_virt()함수는 PAGE_OFFSET과 같은 값을 이용하여 변환 처리만 하기 때문이다. 그래서 virt_to_phys()와 phys_to_virt()함수는 커널에서 사용할 수 있도록 등록된 가상 주소와 물리 주소에 대해 사용해야 한다.

virt_to_phys(), phys_to_virt()
virt_to_phys()와 virt_to_bus() 함수는 대부분의 커널이 동작하는 시스템에 대해 동일한 기능을 수행한다. phys_to_virt()와 bus_to_virt()함수 역시 같은 기능을 수행한다. 그러나 시스템에 따라 두 함수를 구별하여 사용하는 경우는 극히 드물지만 존재한다. 그래서 리눅스에서는 이 두 종류의 함수를 구별하여 사용해야 한다. DMA와 관련된 루틴에서는 virt_to_bus()와 bus_to_virt()함수를 사용하기를 권장하고, 램이나 비디오와 같은 메모리 관련 주소 공간에는 virt_to_phys()와 phys_to_virt() 함수를 사용하기를 권장한다. 가급적 이 규칙을 지켜야 여러 시스템과 호환되는 디바이스 드라이버로 포팅할 수 있다.

카테고리: Linux, Programming | 태그: , , , , , , , , , | 댓글 남기기

LLVM 개념

LLVM 에 대해서 개념이 잘 설명된 블로그가 있음.

1360133737

http://hownote.blogspot.kr/2013/10/llvm-introduction.html

혹시 몰라.. 아래에 pdf로 올려둠.
LLVM Introduction.pdf

카테고리: Programming | 태그: , , | 댓글 남기기

SEH와 SJLJ에 대하여

MinGW 컴파일러를 받을때 버전이 여러가지인데..
그중.. Exception Handling의 처리 방식인 SEH, SJLJ, DW2 에 대해서 아래를 볼것.

MinGW & MinGW-w64 @ klutzy.nanabi.pdf

알고 받고.. 알고 쓰자!

카테고리: Programming | 태그: , , | 댓글 남기기

css 파일

예전.. 초창기 tcltk.co.kr 싸이트 운영시 사용했었던.. css 파일임.

Korea Tcl_Tk Community (Since 2003 _)_files.zip

mingboard

카테고리: Programming, Web | 태그: | 댓글 남기기

libroxml

홈페이지: http://www.libroxml.net/

roxml

C로 제작된 xml 파서이며 사용하기 아주 쉽고.. 속도도 빠르다.
스크립트 언어로 바인딩하기 좋을것 같다.
아래는 특징.

– load / unload XML document from buffers or files.
– navigate throughout an XML tree using simple getter API.
– handle namespace.
– use xpath syntax to access some nodes in the XML tree.
– read nodes contents (text, attributes, comments …)
– create/modify XML trees and save them to a file or buffer.

다운로드: libroxml-2.3.0.tar.gz

카테고리: Programming | 태그: , , | 댓글 남기기

Vanilla

PHP 기반의 바닐라 포럼인데.. 아래와 같은 모습의 포럼임.

ss1_vanilla

요즘 유행타는 포럼인듯…
설치도 WP 만큼 쉽고.. 암튼.. 질/답 게시판 용도로 쓰기 괜찮은듯..

공식 홈페이지는 아래이나..
http://vanillaforums.org/

아래 오픈소스 버전을 받아서 설치하면 됨.
https://github.com/vanilla/vanilla

카테고리: Web | 태그: , , , | 댓글 남기기